- 博客(99)
- 收藏
- 关注
原创 【借助pf4j实现基于spring-boot的插件化开发
spring-boot结合PF4J实现插件定义、开发、打包、上传、加载、卸载、启动、停止、启用、停用、使用等功能
2023-02-01 17:23:48
3774
2
原创 Spring Cloud Sleuth基于DataSource的链路跟踪
Spring Cloud Sleuth基于DataSource的链路跟踪文章目录Spring Cloud Sleuth基于DataSource的链路跟踪现状p6spy和datasource-proxy原理集成步骤现状最新的spring-cloud-sleuth(3.1.0-M1)已经支持基于datasource/jdbc的链路跟踪了,相关文档请参考:sleuth-jdbc-integration并且spring-cloud-sleuth提供了两套解决方案自由选择:基于JDBC的 p6spy基于
2021-09-27 16:51:15
816
原创 Spring Boot Actuator 2.x 部分metrics指标丢失
文章目录问题解决问题某一次对指标功能扩展后,访问/actuator/metrics或/actuator/prometheus,发现jvm相关指标丢失。解决搜索一段时间后,找到两个相关内容:Spring Boot 2 Actuator doesnt publish jvm metricSpring Actuator JVM metrics not showing when GlobalMethodSecurity is enabled这两个问题最终都指向了一个github issue:So
2021-09-15 15:26:30
2322
原创 maven-assembly-plugin dependencySet 打包多出额外的依赖包
文章目录pom和插件配置问题解决pom和插件配置pom.xml<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration>
2021-08-25 17:39:27
3142
原创 mina-sshd/mina-sftp实现远程执行ssh命令或文件上传
mina-sshd/mina-sftp实现远程执行ssh命令或文件上传文章目录mina-sshd/mina-sftp实现远程执行ssh命令或文件上传场景&需求选型代码使用方法场景&需求系统需要时不时向一台远程主机发送ssh命令,并且需要上传文件希望可以像使用数据库一样使用ssh(配置化)不希望发送一次命令创建一个连接,能实现ssh连接池不使用ganymed-ssh2或jsch,因为这两个工具年代久远,活跃度较低,出现问题解决困难apache mina-ssh活跃度很高,但是工
2021-04-09 17:49:41
4506
原创 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
3353
原创 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
1764
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
3997
原创 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
2214
原创 Checkstyle TokenStreamRecognitionException occurred while parsing file xxx
文章目录问题分析解决问题Jenkins集成Checkstyle插件,扫描到该文件时报错:Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleException: TokenStreamRecognitionException occurred while parsing file使用IDEA Checkstyle插件扫面xxx文件,报错The source file could not be parsed by Checkstyle.
2020-09-19 11:04:30
1477
2
原创 IDEA一键部署插件Alibaba Cloud Toolkit——一键部署java应用到远程服务器
IDEA一键部署插件——一键部署java应用到远程服务器文章目录IDEA一键部署插件——一键部署java应用到远程服务器各种部署方式对比IDEA插件一个简单的例子添加主机新建部署模板执行一键部署各种部署方式对比传统部署:频繁切换各种工具,每个流程操作繁琐;部分集成插件部署:无法实现完全自动化,还是要切换工具,即使所有流程全都使用插件,也会频繁在插件之间切换,还是很繁琐,每次都需要把完整的流程重复操作一次;持续部署:大部分工作可以在一个流程里完成,但是持续部署可能比较冗余,比如代码质量检查、单元
2020-09-18 18:22:54
4114
原创 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
545
原创 Spring Cloud Alibaba Seata + Nacos + Jooq + RestTemplate实现分布式事务
Spring Cloud Alibaba Seata + Nacos + Jooq + RestTemplate实现分布式事务文章目录Spring Cloud Alibaba Seata + Nacos + Jooq + RestTemplate实现分布式事务示例代码环境SeataNacosJOOQGetting Started部署Nacos部署seata server准备数据库构建服务开始验证示例代码本文所有代码均可在github克隆使用:clyoudu/spring-cloud-seata-dem
2020-06-29 10:13:11
1246
1
原创 如何加快CI(maven编译和单元测试)速度
如何加快CI(maven编译和单元测试)速度文章目录如何加快CI(maven编译和单元测试)速度CI速度慢到什么程度会无法接受加快编译速度增量编译模块并行编译加快单元测试速度单元测试并行优化单元测试如何找到执行时间较长的单元测试CI速度慢到什么程度会无法接受CI速度或者单元测试速度一般不会在某一次特定的提交后突然变慢,如果真的是突然变慢,一般来说可以立刻定位到这次提交,问题一般也能解决了,但是就怕没有发现变慢,或者问题不是某一次提交暴露出来的,而是慢慢堆积起来的。根据Jenkins构建历史,可以看到
2020-06-15 15:34:46
2981
原创 Redis(2)API的理解和使用
文章目录通用命令数据结构及内部编码单线程为什么这么快单线程需要注意的问题string通用命令keys <pattern>:查看符合<pattern>的key,其中pattern是一个通配符,keys命令一般不在生产环境中使用,时间复杂度O(n);dbsize:计算所有key的个数,时间复杂度O(1);exists <key …>:判断key列表中的ke...
2020-04-18 15:51:20
318
原创 Redis(1)初识
文章目录RedisRedis特性RedisredisRedis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Has...
2020-04-04 15:40:29
168
原创 springboot @Schedule定时任务你会用吗
springboot @Schedule定时任务文章目录springboot @Schedule定时任务任务间不允许并发且不允许同任务交叠任务间允许并发且允许同任务交叠任务间允许并发且允许同任务交叠和不交迭同时存在任务间允许并发但不允许同任务交叠spring cloud多实例任务不并发总结任务间不允许并发且不允许同任务交叠使用springboot 定时任务很简单,只需在启动类或者配置类上添加...
2020-03-24 16:57:50
1201
原创 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
3807
原创 [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
1885
原创 HttpMessageConverter使用不当导致的问题及其原理、配置
文章目录两个问题HttpMessageConverter作用HttpMessageConverter匹配规则HttpMessageConverter初始化时序图自定义HttpMessageConverter解决问题RestTemplate NPEtext/pain有引号两个问题spring boot RestTemplate在运行一段时间后居然报空指针异常,可以根据StackTrace定位到...
2020-01-11 21:50:03
5719
原创 解决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
6806
2
原创 The bean 'xx.FeignClientSpecification', defined in null, could not be registered
sprinboot升级启动时FeignClient报错文章目录sprinboot升级启动时FeignClient报错问题表现问题分析解决方案问题表现springboot从1.x升级到2.x后,解决了好多好多问题,什么maven依赖、import package变化、包冲突、编译不通过、application.properties配置变更等一系列问题后,终于来到了启动环节,启动后控制台提示Ap...
2019-12-05 17:46:49
2250
原创 Java自定义策略生成随机密码
Java生成随机密码文章目录Java生成随机密码背景代码使用方法背景有需求需要生成随机密码,对密码长度、大小字母写个数、数字个数、特殊字符个数有要求,比如:长度为16,包含至少1个大写字母1个小写字母1个数字1个特殊字符。代码randompassword使用方法package github.clyoudu.randompassword;import lombok.extern.s...
2019-12-02 18:16:14
385
原创 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
1907
原创 【重构】二、重构列表和重构方法速查表
【代码重构】重构列表和重构方法速查表文章目录【代码重构】重构列表和重构方法速查表坏味道重构手段重构和设计模式在线快查:Design Patterns & Refactoring坏味道分类Bad code smellsBloatersBloaters are code, methods and classes that have increased to such gargantua...
2019-12-02 16:58:01
1016
原创 【单元测试】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
937
原创 【单元测试】基于springboot test + jooq + flyway + h2的DAO层测试
文章目录意义集成springboot testpomflywaydatasource/jooq/flyway配置第一个测试问题列表意义如果dao层没有分支和特殊逻辑,测试dao层并不麻烦,一个方法写一个单元测试即可,麻烦的是数据准备。基于jooq的dao层几乎都是sql语句,所以测试dao层就是测试sql语句。暂不讨论if else分支写在dao层是否存在、是否合理,dao层测试有如下意义...
2019-08-11 20:48:13
1720
原创 【单元测试】不同类型的单元测试及其使用场景
文章目录JUnitMockitoPowerMockSpringJunitSpringbootTestSpringbootTest + JUnit 5JUnit参数化测试的讨论JUnit几乎所有测试工具都可以和JUnit集成,以增强JUnit的功能。纯的Junit只能测试较为简单的方法,比如工具类、static方法、上下文无关的方法等。简单的JUnit测试不依赖任何外部资源,不需要加载任何上...
2019-08-11 20:28:56
1184
1
原创 【单元测试】为什么要写单元测试?怎么写?
文章目录为什么不想写单元测试为什么要写单元测试什么时候写单元测试怎么写单元测试为什么不想写单元测试单元测试太浪费时间了。随着系统的复杂度增加,你的一次改动可能引发出5个bug,或者你的bug被发现的时间延后了,堆积到了一起,那么一段时间后,别人加班半小时写单元测试,你会加班到天亮改BUG。有测试人员帮我测,我还写什么单元测试。测试分很多阶段,比如单元测试、集成测试、系统测试、验收测试等...
2019-08-11 20:07:50
2384
1
原创 【重构】一、重构的原则
重构的原则文章目录重构的原则0什么是重构两顶帽子为什么要重构重构改进软件的设计重构使软件更容易理解重构能帮助找到bug重构提高编程速度什么时候重构预备性重构:让添加新功能更容易帮助理解的重构:使代码更容易懂捡垃圾式重构有计划地重构和见机行事的重构长期重构复审代码时重构怎么对leader说何时不应该重构重构的挑战0这个系列是《重构——改善既有代码的设计(第2版)》的读书笔记,没错就是不久前20...
2019-07-29 23:36:20
929
原创 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
4636
原创 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
4771
6
原创 RAP2 详细部署、操作指南
RAP2 详细部署、操作指南文章目录RAP2 详细部署、操作指南什么是RAP2项目地址前后端部署指南后端安装node安装mysql安装redis下载源码修改配置文件MySQL创建schema编译初始化数据库启动后端检查是否启动成功查看后端日志前端RAP2操作指南账号系统权限系统API管理什么是RAP2RAP通过GUI工具帮助WEB工程师更高效的管理接口文档,同时通过分析接口结构自动生成Moc...
2019-06-03 12:00:26
15245
2
原创 基于RAML的API接口文档管理
基于RAML的API接口文档管理文章目录基于RAML的API接口文档管理什么是RAML怎么使用RAML设计构建&测试(mock server)文档扩展一个例子RAML文件文档什么是RAMLRAML(RESTful API Modeling Language),是一种建模语言,RAML定义好API的输入输出等属性后,可以使用不同的工具或方法生成API文档、构建mock server等,...
2019-05-15 17:05:55
3203
原创 【设计模式In Java】十九、状态模式
状态模式文章目录状态模式定义场景UML类图代码总结定义状态模式(State Pattern):允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。场景现在需要异步自动化部署一个应用,部署分为几个状态:开始部署、部署成功、部署失败、开始启动、启动成功、启动失败,其中开始部署阶段需要向...
2019-03-20 16:56:04
384
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人