Java
文章平均质量分 69
CL有毒
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【借助pf4j实现基于spring-boot的插件化开发
spring-boot结合PF4J实现插件定义、开发、打包、上传、加载、卸载、启动、停止、启用、停用、使用等功能原创 2023-02-01 17:23:48 · 5157 阅读 · 3 评论 -
RingUI + JCEF开发IDEA插件
使用RingUI开发IDEA插件,使用JCEF开发IDEA插件,数据库脚本语法转换插件原创 2022-12-29 13:34:18 · 3352 阅读 · 4 评论 -
Spring Cloud Sleuth Servlet和WebFlux获取当前span并添加tag
文章目录Spring Cloud Sleuth Servlet和WebFlux获取当前span并添加tagServlet自定义Span TagWebFlux自定义Span TagSpring Cloud Sleuth Servlet和WebFlux获取当前span并添加tagServlet自定义Span Tag对于普通基于spring mvc的web应用,只需要在任何位置依赖brave.Tracer,就可以拿到当前span,并可给span添加tag:public class MyFilter ext原创 2021-03-17 15:09:13 · 3523 阅读 · 0 评论 -
SOFARegistry + SOFABoot + SOFARPC Demo
文章目录相关文档环境部署注册中心创建SOFABoot项目接口定义provider服务consumer服务相关文档SOFA Stacksofa-registrysofa-rpc环境JDK 1.8Maven 3sofa-boot 3.6.0sofa-registry 5.4.2sofa-rpc 5.7.7部署注册中心选择在Linux上单机快速部署,其他部署方式参考文档:SOFA Registry服务端部署。mkdir -p /opt/sofa-registrycd /opt/so原创 2021-02-26 11:01:24 · 2120 阅读 · 1 评论 -
使用ganymed-ssh2连接linux报错Cannot negotiate, proposals do not match.
文章目录问题发现问题解决问题发现一个项目中使用了ganymed-ssh2作为连接linux机器的工具,在开发环境和大多数测试及线上环境运行良好,但某一次测试环境部署后,对应功能被访问后开始出现如下异常:Caused by: java.io.IOException: There was a problem while talking to 127.0.0.1:22 at ch.ethz.ssh2.Connection.connect(Connection.java:642) at com.ultra原创 2021-01-28 16:28:58 · 4419 阅读 · 0 评论 -
Java Mockito mock对象有多个相同类型的属性
文章目录Java Mockito mock对象有多个相同类型的属性业务类尝试编写测试类Java Mockito mock对象有多个相同类型的属性业务类public class TestServiceImpl { @Autowired @Qualifier("restTemplateA") private RestTemplate restTemplateA; @Autowired @Qualifier("restTemplateB") pri原创 2021-01-28 09:23:46 · 2530 阅读 · 0 评论 -
Java Elasticsearch rest client查询中文失效
Elasticsearch rest client查询中文失效文章目录Elasticsearch rest client查询中文失效环境问题排查解决环境elasticsearch 7.8.0jdk 1.0elasticsearch-rest-client-sniffer 7.0.0问题url:GET /some_index/_search?from=0&size=10body:{ "query": { "bool": { "mu原创 2020-09-08 17:48:19 · 697 阅读 · 0 评论 -
如何加快CI(maven编译和单元测试)速度
如何加快CI(maven编译和单元测试)速度文章目录如何加快CI(maven编译和单元测试)速度CI速度慢到什么程度会无法接受加快编译速度增量编译模块并行编译加快单元测试速度单元测试并行优化单元测试如何找到执行时间较长的单元测试CI速度慢到什么程度会无法接受CI速度或者单元测试速度一般不会在某一次特定的提交后突然变慢,如果真的是突然变慢,一般来说可以立刻定位到这次提交,问题一般也能解决了,但是就怕没有发现变慢,或者问题不是某一次提交暴露出来的,而是慢慢堆积起来的。根据Jenkins构建历史,可以看到原创 2020-06-15 15:34:46 · 3529 阅读 · 0 评论 -
spring boot项目日志撑满Linux系统日志(/var/log/message)
文章目录现象分析原因解决方案现象spring boot 2.1.6CentOS 7.4jdk 1.8logback 1.2.3一个普通的spring boot项目,在一个磁盘空间相对较小的机器上运行一段时间后总会导致磁盘占满分析spring boot使用logback作为日志组件,并且有日志滚动策略,并且日志滚动策略为RollingFileAppender:最多生成10个日志...原创 2020-02-17 10:32:33 · 4408 阅读 · 0 评论 -
[Power]Mockito使用和扩展
文章目录0参数匹配和返回值Mock简单匹配集合匹配对象匹配空对象匹配返回值为空根据不同参数返回不同值断言(验证)扩展0所有代码均可在线查看或本地克隆:mockito-shop环境:jdk 1.8maven 3.3.9sprint boot 2.1.6-RELEASE(junit 4.12 mockito 2.23.4 powemock 2.0.2)IDEA Intellij IDE...原创 2020-01-19 14:46:15 · 2289 阅读 · 0 评论 -
HttpMessageConverter使用不当导致的问题及其原理、配置
文章目录两个问题HttpMessageConverter作用HttpMessageConverter匹配规则HttpMessageConverter初始化时序图自定义HttpMessageConverter解决问题RestTemplate NPEtext/pain有引号两个问题spring boot RestTemplate在运行一段时间后居然报空指针异常,可以根据StackTrace定位到...原创 2020-01-11 21:50:03 · 7030 阅读 · 0 评论 -
解决spring boot logging在两个目录生成日志文件且max-history不生效
解决spring boot logging在两个目录生成日志文件且max-history不生效文章目录解决spring boot logging在两个目录生成日志文件且max-history不生效背景现象排查解决方案新的问题总结背景使用spring boot 2.1.6-RELEASE使用默认的spring-boot-starter-logging (logback 1.2.3)作为日志...原创 2020-01-10 09:54:23 · 7231 阅读 · 2 评论 -
Java自定义策略生成随机密码
Java生成随机密码文章目录Java生成随机密码背景代码使用方法背景有需求需要生成随机密码,对密码长度、大小字母写个数、数字个数、特殊字符个数有要求,比如:长度为16,包含至少1个大写字母1个小写字母1个数字1个特殊字符。代码randompassword使用方法package github.clyoudu.randompassword;import lombok.extern.s...原创 2019-12-02 18:16:14 · 452 阅读 · 0 评论 -
Spring Resource读取classpath文件,支持docker
Spring Resource读取classpath文件,支持jar包和docker镜像文章目录Spring Resource读取classpath文件,支持jar包和docker镜像背景代码使用方法背景有很多场景需要读取classpath文件,一般情况下使用ClassLoader.getSystemResource("").getPath()即可拿到classpath路径,但在不同场景下,...原创 2019-12-02 17:42:14 · 2100 阅读 · 0 评论 -
【设计模式In Java】九、外观模式
外观模式文章目录外观模式定义场景UML类图代码总结定义外观模式(Facade Pattern):为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式中,一个子系统的外部与其内部的通信通过一个统一的外观类进行,外观类将客户类与子系统的内部复杂性分隔开,使得客户类只需要与外观角色打交道,而不需要与子系统内部的很多对象打交道。场景现...原创 2019-03-02 14:44:27 · 371 阅读 · 0 评论 -
【设计模式In Java】十三、解释器模式
解释器模式文章目录解释器模式定义场景UML类图代码总结定义解释器模式(Interpreter Pattern):定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”是指使用规定格式和语法的代码。解释器模式是一种类行为型模式。场景光看定义或名字就能明白,解释其模式就是将一定的文法解释成程序可以理解的结构,然后输出结果,比如输入一个四则运算表达式计算出结果、写一个计算机...原创 2019-03-14 12:00:59 · 295 阅读 · 0 评论 -
【设计模式In Java】十七、备忘录模式
备忘录模式文章目录备忘录模式定义场景UML类图代码总结定义备忘录模式(Memento Pattern):在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。它是一种对象行为型模式,其别名为Token。场景跟CTRL+Z一个意思,那就做一个悔棋和撤销的功能吧。UML类图代码memento示例:public clas...原创 2019-03-09 18:59:08 · 484 阅读 · 0 评论 -
【设计模式In Java】十六、中介者模式
中介者模式文章目录中介者模式定义场景UML类图代码总结定义中介者模式(Mediator Pattern):用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式,它是一种对象行为型模式场景现在有一个Web系的用户管理模块,由于访问量很大,会频繁查询用户表,为了减轻系统压力,决定使用...原创 2019-03-09 17:40:48 · 418 阅读 · 0 评论 -
【设计模式In Java】十五、迭代器模式
迭代器模式文章目录迭代器模式定义场景UML类图代码总结定义迭代器模式(Iterator Pattern):提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标(Cursor)。迭代器模式是一种对象行为型模式。场景Java集合遍历几乎都支持迭代器模式,一切聚合对象的遍历都可以使用迭代器模式,这里用List和Iterator举例。UML类图代码iterator示例...原创 2019-03-08 23:10:48 · 315 阅读 · 0 评论 -
【设计模式In Java】十二、职责链模式
职责链模式文章目录职责链模式定义场景UML类图代码总结定义职责链模式(Chain of Responsibility Pattern):避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。职责链模式是一种对象行为型模式。场景在web应用程序中,一般都会使用到filter,即拦截请求并对请求做一定处理,比如解码...原创 2019-03-02 18:40:26 · 373 阅读 · 0 评论 -
【设计模式In Java】五、适配器模式
适配器模式文章目录适配器模式定义场景代码对象适配器模式类适配器模式双向适配器缺省适配器总结定义适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。在适配器模式定义中所提及的接口是指广义的接口,它可以表示一个方法或者方法的集合。在适...原创 2019-02-26 17:51:55 · 417 阅读 · 0 评论 -
【设计模式In Java】十一、代理模式
代理模式文章目录代理模式定义场景UML类图代码总结定义代理模式(Proxy Pattern):给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问。当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口。根据代理模式的使用目的不同,代理模式又可以分为多种类型,例如保护代理、远程代理...原创 2019-03-02 17:36:17 · 197 阅读 · 0 评论 -
【设计模式In Java】十、享元模式
享元模式文章目录享元模式定义场景UML类图代码总结定义享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,它是一种对象结构型模式。场景现有一个代理程序,接受用户的请求然后连接到目标主机上获取信息,然...原创 2019-03-02 16:12:36 · 260 阅读 · 0 评论 -
【设计模式In Java】十八、观察者模式
观察者模式文章目录观察者模式定义场景UML类图代码总结定义观察者模式(Observer Pattern):定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式的别名包括发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Depend...原创 2019-03-15 11:48:11 · 451 阅读 · 0 评论 -
【设计模式In Java】十三、命令模式
命令模式文章目录命令模式定义场景UML类图代码总结定义命令模式(Command Pattern):将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。场景开发一个Android App,定义了很多手势操作,比如单指左滑右滑、...原创 2019-03-07 21:17:25 · 469 阅读 · 0 评论 -
scala + spingboot + springcloud + spark jackson和slf4j冲突解决
scala + spingboot + springcloud + spark jackson和slf4j冲突解决scala + spingboot + springcloud + spark jackson和slf4j冲突解决环境问题的出现解决过程dependency总结环境jdk:1.8spring-boot:1.5.2scala:2.11.8sp...原创 2018-05-15 16:29:04 · 2864 阅读 · 0 评论 -
【单元测试】JUnit参数化测试的讨论
文章目录JUnit参数化测试的讨论JUnit4参数化测试的局限JUnit4 DataProviderJUnit参数化测试的讨论直接举例,还是用前面测试格式化文件路径的例子: package github.clyoudu.util; import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang.StringUtils;...原创 2019-08-11 20:56:01 · 1118 阅读 · 0 评论 -
【单元测试】TDD——测试驱动开发
深度解读 - TDD(测试驱动开发)转载 2019-08-11 20:50:27 · 425 阅读 · 0 评论 -
【单元测试】不同类型的单元测试及其使用场景
文章目录JUnitMockitoPowerMockSpringJunitSpringbootTestSpringbootTest + JUnit 5JUnit参数化测试的讨论JUnit几乎所有测试工具都可以和JUnit集成,以增强JUnit的功能。纯的Junit只能测试较为简单的方法,比如工具类、static方法、上下文无关的方法等。简单的JUnit测试不依赖任何外部资源,不需要加载任何上...原创 2019-08-11 20:28:56 · 1427 阅读 · 1 评论 -
【单元测试】为什么要写单元测试?怎么写?
文章目录为什么不想写单元测试为什么要写单元测试什么时候写单元测试怎么写单元测试为什么不想写单元测试单元测试太浪费时间了。随着系统的复杂度增加,你的一次改动可能引发出5个bug,或者你的bug被发现的时间延后了,堆积到了一起,那么一段时间后,别人加班半小时写单元测试,你会加班到天亮改BUG。有测试人员帮我测,我还写什么单元测试。测试分很多阶段,比如单元测试、集成测试、系统测试、验收测试等...原创 2019-08-11 20:07:50 · 2538 阅读 · 1 评论 -
Multiple entries with same key: springfox.documentation.spring.web.plugins.PathAndParametersEquiv...
文章目录问题发现解决方案问题发现springboot项目继承了swagger2,项目启动时,偶尔会出现这个问题,然而这是一个幽灵问题,并不是每次都会出现,复现这个问题需要运气,有时候可能会连续出现几次,有时候一周也不出现一次。启动异常时,报错如下:[2019-07-26 15:23:34] [main] [ERROR] [org.springframework.boot.SpringApp...原创 2019-07-26 17:16:08 · 4795 阅读 · 0 评论 -
Java连接proxysql管理端口
Java连接proxysql管理端口原创 2019-07-30 17:46:00 · 2165 阅读 · 1 评论 -
springboot 1.x 2.x tomcat支持特殊字符,URL中有{}[]等报400
springboot 1.x 2.x tomcat支持特殊字符文章目录springboot 1.x 2.x tomcat支持特殊字符原创 2019-07-25 11:46:08 · 5091 阅读 · 6 评论 -
【设计模式In Java】十九、状态模式
状态模式文章目录状态模式定义场景UML类图代码总结定义状态模式(State Pattern):允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。场景现在需要异步自动化部署一个应用,部署分为几个状态:开始部署、部署成功、部署失败、开始启动、启动成功、启动失败,其中开始部署阶段需要向...原创 2019-03-20 16:56:04 · 489 阅读 · 0 评论 -
【设计模式In Java】八、装饰模式
装饰模式文章目录装饰模式定义场景UML类图代码总结定义装饰模式(Decorator Pattern):动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。场景现有一个加密模块,可以对字符串明文加密,有不同的加密方法,不同场景下对加密的级别不同,可能在有些业务场景需要用不同的加密方法多次加密,要求能够以任意组合方式加密。难道...原创 2019-03-02 00:49:39 · 420 阅读 · 0 评论 -
【设计模式In Java】七、组合模式
组合模式文章目录组合模式定义场景UML类图代码总结定义组合模式(Composite Pattern):组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又可以称为“整体—部分”(Part-Whole)模式,它是一种对象结构型模式。组合模式的关键是定义了一个抽象构件类,它既可以代表叶子,又可以代表...原创 2019-03-01 22:20:19 · 349 阅读 · 0 评论 -
【设计模式In Java】四、建造者模式
建造者模式文章目录建造者模式定义场景UML类图代码简化总结定义建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。场景当一个对象的构造过程非常复杂,比如有特别多的属性,或者构造时有特定的顺序,甚至是属性之间有特殊的依赖关系等,这个时候可以使用构建者模式来创建对象。假设现在要创建计算机学院...原创 2019-02-25 23:00:58 · 285 阅读 · 0 评论 -
【Java并发】二、JVM内存模型
JVM内存模型文章目录JVM内存模型什么是Java内存模型线程之间的通信线程之间的同步JAVA的内存模型原子性指令重排可见性有序性JMM的解决方案内存屏障什么是Java内存模型Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。想要理解Java的并...原创 2018-11-17 20:27:38 · 495 阅读 · 0 评论 -
【Java并发】一、为什么需要并行
为什么需要并行文章目录为什么需要并行你真的需要并行吗多核噩梦一些定义你真的需要并行吗我需要并… 不你不需要.jpgLinux之父Linus Torvalds说过一句话:Give it up. The whole “parallel computing is the future” is a bunch of crock.摩尔定律逐渐失效,必须从软件设计上提高并行计算能力,而且互联网...原创 2018-11-14 22:39:45 · 385 阅读 · 0 评论 -
【JAVA拾遗】Java8新特性合辑
【JAVA拾遗】Java8新特性合辑【JAVA拾遗】Java8新特性合辑0. 逼逼126 Lambda Expressions & Virtual Extension Methods138 Autoconf-Based Build System160 Lambda-Form Representation for Method Handles161 Compact ...原创 2018-11-13 20:48:46 · 1961 阅读 · 0 评论
分享