自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

以码为梦

Talk is cheap. Show me the code

  • 博客(119)
  • 资源 (2)
  • 收藏
  • 关注

转载 初识DDD领域驱动设计

为什么建立一个领域模型是重要的领域驱动设计告诉我们,在通过软件实现一个业务系统时,建立一个领域模型是非常重要和必要的,因为领域模型具有以下特点:领域模型是对具有某个边界的领域的一个抽象,反映了领域内用户业务需求的本质;领域模型是有边界的,只反应了我们在领域内所关注的部分; 领域模型只反映业务,和任何技术实现无关;领域模型不仅能反映领域中的一些实体概念,如货物,书本,应聘记录,地址,等;还能反映领域中的一些过程概念,如资金转账,等; 领域模型确保了我们的软件的业务逻辑都在一个模型中,都在一个地方;

2020-07-31 00:29:11 399

原创 PageHelper踩坑--莫名其妙分页

昨天同事提测的时候,遇到一个问题。明明没有进行分页的查询,被莫名加了limit 1,20今天早上聊起,同事说大概是对象里有两个字段:pageNum和pageSize都被给了初始值造成的(机智boy,定位准确)pageHelper的Page类里也有两个同名字段: pageNum和pageSize ,这其中莫非有什么牵扯?pagehelper除了分页还有个隐式分页?有了线索,查阅资料,发现也有网友遇到类似问题,最终都指向了PageHelper 的supportMethodsArguments。su.

2020-06-30 11:28:16 996 1

原创 spring状态机与自建状态机

状态机是有限状态自动机的简称,是现实事物运行规则抽象而成的一个数学模型。目前网上已经有很多实现方案,可以根据自己需要采用。spring状态机框架:Spring StateMachine在网上看了下关于spring状态机的文章,很多都很相似,好像都来自“程序员DD”的《使用Spring StateMachine框架实现状态机》 一文。但是文中只是简单举了正常的例子,对于异常逻辑没有详细写出。狗尾续貂一下,补充下异常流程的demo。package online.javaadu.statemachin.

2020-05-24 19:10:19 1503

原创 canal环境搭建及基础使用

前段时间有一个实时获取某个表结构数据变动的需求,简单对canal做了个了解,现将当时做demo的过程记录下来。canal工作原理canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议mysql master收到dump请求,开始推送binary log给slave(也就是canal)canal解析binary log对...

2020-04-28 11:59:10 1074

原创 linux中的查找相关命令

1. findLinux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path.....

2020-01-31 12:12:00 231

原创 java8日期类常用方法使用总结

java8已经推出了五六年时间了,项目中也经常用到它的一些特性,但是在日期使用方面,没有进行过较为全面的梳理,临近年关,今日得空整理出来,一来备忘而来分享。日期时间方面的常用类有三个LocalDate、LocalTime 、LocalDateTime ,最为常用当属LocalDateTime以上三种使用方式大同小异,着重记录下LocalDateTime 的使用import org.juni...

2020-01-21 10:26:07 333

原创 记一次线上事故的罪魁祸首--poi的oom

最近发生了一次线上故障,由于poi导出大量数据引发的之前有了解过poi在大数据量读取或导出的时候会存在oom问题,不过因此引发线上bug还是第一次最佳解决方案是exsyexcelJAVA解析Excel工具easyexcel Java解析、生成Excel比较有名的框架有Apachepoi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一...

2019-12-30 18:32:50 963

转载 Hystrix常用配置

Netflix公司开源的Hystrix框架,对延迟和故障可以提供强大的容错能力,在分布式系统中对请求远程系统、服务或者第三方库产生的错误,通过熔断、线程池隔离等手段,可以及时停止系统中的级联错误从而起到自适应调节的作用。Hystrix设计的原则:阻止任何单一的第三方依赖使用掉整个容器的全部用户线程快速失败而不是在队列中积压请求提供fallback错误回调机制任何第三方依赖之间相互隔...

2019-11-14 19:47:47 388

原创 类函数中获取spring-ioc管理的bean

import org.springframework.boot.context.event.ApplicationReadyEvent;import org.springframework.context.ApplicationListener;import org.springframework.stereotype.Component;/*** @ClassName: Appl...

2019-10-13 16:46:19 94

原创 guava中的事件总线(观察者模式的应用)

观察者模式:定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,所有依赖它的对象都会得到通知并自动更新。Guava框架中的EventBus(事件总线)是对观察者模式的一种实现。EventBus是在单体架构内实现的松耦合的绝佳方式,通过它可以很简洁的实现事件注册监听和消费。Guava框架中提供了EventBus(同步)和AsyncEventBus(异步,继承于EventBus)两种时...

2019-09-23 21:29:49 1336

原创 nginx监听相同端口通过域名分发到不同的服务

下面的配置主要解决两个问题:通过请求的不同域名分发到不同的服务在后台服务中获取真实的远程ipnginx配置server { listen 80; proxy_set_header X-Real-IP $remote_addr; #记录远程访问ip,方便应用中获取 server_name m.baidu.com; ...

2019-08-08 22:03:21 2740

原创 线程间通信--"wait/notify"机制

"wait/notify"机制:等待/通知机制,wait使线程暂停运行,而notify 使暂停的线程继续运行使用wait ,notify 和 notifyAll 时需要先对调用对象加锁调用wait 方法后,线程状态有 Running 变为 Waiting,并将当前线程放置到对象的 等待队列notify或者 notifyAll 方法调用后, 等待线程依旧不会从 wait 返回,需要调用 no...

2019-07-29 09:33:23 166

原创 docker安装使用命令

安装docker安装一些必要的系统工具:yum install -y yum-utils device-mapper-persistent-data lvm2添加软件源信息:yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo更新 yum 缓存:yu...

2019-06-26 14:36:37 248

转载 你猜一个 TCP 连接上面能发多少个 HTTP 请求

一道经典的面试题是从 URL 在浏览器被被输入到页面展现的过程中发生了什么?大多数回答都是说请求响应之后 DOM 怎么被构建,被绘制出来。但是你有没有想过,收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式、什么顺序、建立了多少连接、使用什么协议被下载下来的呢?要搞懂这个问题,我们需要先解决下面五个问题:现代浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求...

2019-05-29 19:24:30 250

原创 重新认识zookeeper

第一次接触zookeeper是在使用dubbo的时候,它作为服务的注册中心。当时只是简单了解到zookeeper是一个分布式应用程序协调服务,没有深入系统地对它进一步了解。近日,在思考一个分布式锁问题:目前在项目中使用的是基于redis的分布式锁,为了防止主机宕机或网络中断之后造成死锁,需要设置超时时间;那么有没有一种方式,不需要等到超时,只要主机断开或故障,就将锁释放掉呢?zook...

2019-04-25 19:43:09 188

原创 springboot扫描自定义类注解、方法注解

import lombok.Data;import org.springframework.context.ApplicationListener;import org.springframework.context.event.ContextRefreshedEvent;import org.springframework.core.annotation.AnnotationUtils;...

2019-03-26 18:57:39 14899 2

转载 上手dva.js

初始化安装 dva-cli 用于初始化项目:npm install -g dva-cli或yarn global add dva-cli创建项目目录,并进入该目录:mkdir your-projectcd your-project初始化项目:dva init然后运行npm start 或 yarn start即可运行项目。目录结构项目初始化以后,默认的目录结...

2019-03-07 09:14:11 414

原创 使用mybaits将 对象属性-json字符串 相互转化

/** * @ClassName: JsonTypeHandler * @Description: * mapper里json型字段到类的映射。 * 入库:#{jsonDataField, typeHandler=com.yx.smp.basic.handler.JsonTypeHandler} * 出库: * <resultMap type="com.yx.smp.busine...

2019-02-26 10:18:11 2490 1

原创 两个properties文件 比较工具类

文件1:app1.propertiessms.registerTemplate = SMS_123456sms.registerExpireTime = 600billcode.size = 200feign.name.produce = abc-produceyrx.cloud.applicationId = 777888999444555666文件2:app2.propertie...

2019-02-12 09:42:08 1158

原创 自定义注解+redis实现简单易用的分布式锁

最近项目中有的模块功能涉及到并发,为了提高项目中分布式锁的易用性,在之前的一个思路基础上进行了迭代改进。https://blog.csdn.net/yuruixin_china/article/details/79441260这是之前写的一篇关于分布式锁的文章。最近测试了一把之前的这个设计思路,发现有逻辑漏洞如上图中,当finally代码块中释放锁的逻辑执行时,该处切入的方法实际还没有...

2018-12-28 20:35:07 771 1

原创 类生命周期、加载机制、双亲委派模型

类的生命周期:加载、连接(包括验证、准备、解析)、初始化、使用、卸载加载:1、将.class文件的二进制数据读入内存中,并放入运行时数据区的方法区。2、堆区创建一个java.lang.Class对象,用来封装类在方法区内的的数据结构,并提供访问方法区内数据结构的接口。验证:确保被加载类的正确性(文件格式、元数据、字节码、符号引用等)准备:为类的静态变量分配内存并赋初始值(若静态变量被...

2018-11-04 18:22:42 404

原创 服务器cpu飙高-挖矿木马解决方案记录

起因:前几天,开发服务器的Jenkins服务一直会出现偶然性的失败,编译代码的线程经常性被kill掉,需要启动好几次才有机会成功。给开发带来诸多不便。受不了啦,于是在一个午饭时间,决定要彻底搞清楚这个问题。解决问题首先使用top命令,查看cpu占用。不看不知道啊,看了吓一跳!cpu占用一直在98-100%之间,但是却看不到占用大量内存的进程,此时感觉到问题应该是被挖矿木马入侵了。于是cr...

2018-10-29 23:27:49 1532

原创 通过栈(LIFO)实现FIFO

今天偶然看到朋友分享的一个文章,里面提到一个问题。就是如何通过栈实现队列的先进先出特性?栈是一个后进先出的数据结构,而栈是一个先进先出的数据结构。若要达到先进先出的效果,显然一个栈是不够用的。将一个栈里的内容,依次取出,然后放入另一个栈里,此时栈里的元素顺序会发生倒序。代码如下:public class Q<T>{ Stack<T> in = ...

2018-10-27 15:11:40 3396 1

原创 微信开发中form表单提交参数为空

今天在做微信公众号开发时,发现有一个form表单的数据传到后台总是空,使用pc端的chrome调试却可以将参数传到后台,最后怀疑是微信浏览器的问题。上网找答案,果然大家都在吐槽这个坑。出现问题的代码片段如下:<form target="_blank" name="form" method="post" action="">解决方案:将target="_blank"去掉即可,

2018-09-29 10:34:04 1380

原创 线程池

线程池: java.util.concurrent.Executors提供了一个 java.util.concurrent.Executor接口的实现用于创建线程池。线程池可以解决在应用多线程时频繁创建销毁线程带来的性能损耗问题。(多线程技术主要解决处理器单元内多个线程执行的问题,可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力)线程池的组成部分: 1. 线程池管理器(Thread...

2018-08-29 21:32:41 176

原创 CyclicBarrier的简介及应用场景

CyclicBarrier(循环屏障) 直译为可循环使用(Cyclic)的屏障(Barrier)。它可以让一组线程到达一个屏障(同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续工作 CyclicBarrier构造函数 public CyclicBarrier(int parties);//parties表示屏障拦截的线程数量public ...

2018-08-27 20:38:07 4132

原创 Semaphore的简介及应用场景

Semaphore是一个计数信号量,常用于限制可以访问某些资源(物理或逻辑的)线程数目。 常用函数: 信号量的构造函数 非公平:public Semaphore(int permits);//permits就是允许同时运行的线程数目公平(获得锁的顺序与线程启动顺序有关):public Semaphore(int permits,boolean fair);//perm...

2018-08-26 21:40:56 9978 5

原创 CountDownLatch的简介及应用场景

CountDownLatch: 一个可以用来协调多个线程之间的同步,或者说起到线程之间的通信作用的工具类。 它能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成了任务,然后在CountDownLatch上等待的线程就可以恢复执行任务。...

2018-08-26 20:41:26 5662

原创 java中的同步集合与并发集合

同步集合可以简单地理解为通过synchronized来实现同步的集合。如果有多个线程调用同步集合的方法,它们将会串行执行。 arrayList和vector、stack: 1. Vector是线程安全的,源码中有很多的synchronized可以看出,而ArrayList不是。导致Vector效率无法和ArrayList相比 2. ArrayList和Vector都采用线性连续存储空间,当存...

2018-08-26 17:01:14 10692

原创 web应用实现跨域请求的两种常用方式(CORS、JSONP)

什么是跨域?由于浏览器的同源策略,不允许跨域调用其他页面的对象。所谓跨域是指跨域名。同一域名是指协议、域名、端口三者均相同,任一不同都不属于同一域名,举例如下:当网站http://www.domain.com/work.html文件中发起一个ajax请求时,若请求的URL为下列情况时,跨域结果如下: URL 说明 是否跨域 http://www.domai...

2018-07-26 14:15:13 958

原创 idea自动生成方法注释(含参数及返回值)

之前有配置过一个方法注释,不过方法的参数和返回值不能自动生成,昨天偶遇一篇文章,有提到了一种配置方式,今天试了下,经过一番调试,大功告成。效果如图: File->settings->Editor->Live Templates 点击+->选择template group ,然后输入group的name,如annotation。 然后,选中刚

2018-07-05 22:05:59 93936 49

原创 Jenkins权限控制

Jenkins本身是不支持权限控制的,所以需要使用使用插件:Role-based Authorization Strategy,实现Jenkins角色权限控制,具体如下图:

2018-07-03 09:37:31 436

原创 基于Git+Maven+Jenkins的可持续集成及自动化构建

由于项目是采用分布式架构,需要多节点部署,加之对Jenkins的pipeline不是特别熟悉,决定更多的使用shell实现。 创建一个任务 配置参数化构建(使之支持回滚) 配置源码git地址 配置定时触发 配置构建shell(支持回滚)case $deploy_env in deploy) echo "deploy:$deploy_env"...

2018-07-01 21:38:13 1537

原创 linux环境下配置maven环境

1.下载maven包 wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz2.解压 tar zxvf apache-maven-3.5.4-bin.tar.gz3.配置环境变量vim /etc/profileexpo...

2018-07-01 18:38:22 1318

原创 Jenkins快速安装

目前项目应用了dubbo作为分布式框架,随着项目的迭代,服务增至六个。虽然不是太多,但每次发各种环境的版本服务时,都不得不放下手中工作,花费近半小时的时间进行更新。作为一名程序员,怎么能容忍被重复的劳动占用宝贵的开发时间呢!遂决定,引入Jenkins,关于Jenkins的详述,网上很多,不再赘述总之给我的感觉,就像他的logo一样。他就像一个管家,为你工作,减轻你的负担安装Jen...

2018-07-01 18:24:54 267

原创 robots.txt在java项目中分环境打包的具体实现

不同环境环境下的爬虫协议是不同的,尤其测试、开发的数据,不允许被搜索引擎爬虫。所有有了这个需求,最终解决方案: 0. 基于maven的分环境打包 1. 文件放于分环境打包的不同环境目录下 2. 使用maven-resources-plugin插件实现将robots.txt文件复制至war的根目录下<plugin> <artifactId>maven-r...

2018-07-01 18:10:44 882

原创 由一个单例模式引发的对指令重排的思考

先说下单例模式,由于频繁创建对象比较浪费资源,就考虑将所有用到某个类的实例时,公用同一个实例,于是就有了单例模式。单例模式写法有很多,于是我看到了这么一种写法:public class SingletonTest { private SingletonTest() { } private static SingletonTest singletonT...

2018-06-02 18:23:05 4859 2

原创 ThreadLocal原理实现

之前有在项目中应用过ThreadLocal的示例,不过用的时候,也只是大致了解了ThreadLocal的应用场景,对于它的实现原理,并没有去深入看过。正巧在办公桌上的《java高并发程序设计》中看到了,遂了解一番,记录一波。 ThreadLocal是线程的局部变量,线程间无法读取彼此的数据,只能在当前线程访问到数据,是线程安全的。常见的应用场景:管理数据库的Connection。书中的示例代...

2018-05-28 22:36:49 371

原创 java对象的几种引用方式

在看java的ThreadLocal的源码实现时,涉及到了弱引用,对于这种引用方式,并不太常用到,翻看各种博客文档,将java的各种引用总结如下: 1.强引用User user = new User();在我们日常编码中,使用最广的引用方式。 只要强引用还存在,对象就不会被垃圾回收器回收。 可以通过将引用置空的方式,让JVM回收该对象。 2.软引用 S...

2018-05-27 21:48:14 1953

原创 solr安装、使用、配置中文分词器

solr 是基于lucene搜索库的一个搜索引擎框架,它将lucene进行了封装,实现了企业级应用框架。有提供完整集群及索引库优化方案。 solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST 方法向Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引...

2018-04-22 16:25:07 822

solr6.1.0安装包

基于lucene的搜索引擎,完整安装包。即开即用 可以通过http请求,进行交互

2018-04-22

Ikik-analyzer-solr-6.5.1

Ikik-analyzer-solr-6.5.1 中文分词器6.5.1,最高支持到lucene6.5.1版本

2018-04-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除