摘要:Event Stream WebSocket 基于HTTP协议 独立协议 轻量 简单 较为复杂 默认支持断线重连 自己实现 传输文本 传输二进制 HTTP请求、响应头 Content-Type: text/event-stream 数据格式 [field]:value\n 每行数据的格式都是[fie
阅读全文
摘要:面向切面编程AOP-Aspect Oriented Programing,主要用于处理核心业务逻辑外的一些东西, 比如日志和缓存。这个“切面”可以理解为在代码的某个地方切一刀,在其中加一些东西。 装饰器 以日志为例,如果没有使用AOP,那么可以使用装饰来实现类似的代码。 我们使用装饰器模式来实现一下
阅读全文
摘要:SOLID原则 SOLID原则包含五条原则,每条原则取首字母即SOLID。 Single Responsibility Principle 单一责任原则 定义:一个类只应该做一件事情 一个类如果需要做多个事情,那么就要拆分这个类。 public class User { private String
阅读全文
摘要:Java构建线程的方式 集成Thread 实现Runnable 实现CallAble 线程池方式 Java提供了Executors创建(不推荐,不方便进行控制) 推荐手动创建线程池ThreadPoolExecutor。 ThreadPoolExecutor参数 int corePoolSize 核心
阅读全文
摘要:进行自动化测试需要maven-failsafe-plugin进行集成测试和maven-surefire-plugin进行运行单元测试, 引入exec-maven-plugin用来执行一些脚本。 failsafe & surefire <plugin> <!-- for unit test --> <
阅读全文
摘要:没有安装docker的可以通过docker install进行安装。 docker jenkins 运行jenkins 首先创建一个目录存储容器中的信息mkdir jenkins-blue,然后执行命令sudo chown -R 1000:1000 ./jenkins-blue/,否则可能会报错to
阅读全文
摘要:MQ-消息队列简单来说就是将“消息”放到“队列”中,然后慢慢处理队列中的消息。 完成延迟功能总体的思路是将消息放到队列中,为消息设置过期时间,不直接处理这个队列中的消息, 等到消息过期,将它转到另一个队列进行处理,从而完成延迟功能。 基本概念 1. 队列 队列是RabbitMQ的内部对象,用来存储消
阅读全文
摘要:这里使用的是apiv3的0.2.10版本。 <dependency> <groupId>com.github.wechatpay-apiv3</groupId> <artifactId>wechatpay-java</artifactId> <version>0.2.10</version> </d
阅读全文
摘要:配置Checkstyle代码规范检查工具 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <version>3.2.1</version> <c
阅读全文
摘要:本次commit代码 引入依赖 引入shiro <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.5.3</version> </dependency> <d
阅读全文
摘要:初始化项目 使用Spring Initializr 选择依赖 MyBatis Framework JDBC API MySQL Driver Spring Web 填写其他必要信息后,点击GENERATE得到代码。 flyway 引入flyway </dependencies> <dependenc
阅读全文