摘要:
我们在使用Spring状态机的时候,往往需要对于`StateMachine`持久化操作,但是官方为我们提供的基于redis的持久化并不是特别好,一方面是因为只存redis容易导致数据丢失,另一方面因为状态机的特性需要对应的`StateMachine`的数据永久有效,导致redis中的key永不过期。 阅读全文
摘要:
# 环境准备 两个mysql集群,一主一从 我们简单的用docker-compose来快速搭建一个 ```yaml version: '3' services: master1: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: 123456 po 阅读全文
摘要:
前言 我们在日常开发中,经常会用到多数据源,实现的方式有很多种,我这里分享一种通过动态数据源的方式来实现多数据源。通过自定义一个注解DS加上AOP来动态切换数据源。我们的注解可以作用于类、方法、接口、接口方法上。优先级为:类方法>类>接口方法>接口 SpringBoot的动态数据源,实际上就是把多个 阅读全文
摘要:
断言 对象、数组、集合 ObjectUtils StringUtils CollectionUtils 文件、资源、IO 流 FileCopyUtils ResourceUtils StreamUtils 反射、AOP ReflectionUtils [AopUtils] [AopContext] 阅读全文
摘要:
管理类命名 传播类命名 回调类命名 监控类命名 内存管理类命名 过滤检测类命名 结构类命名 常见设计模式命名 解析类命名 网络类命名 CRUD命名 其他 End 日常编码中,代码的命名是个大的学问。能快速的看懂开源软件的代码结构和意图,也是一项必备的能力。那它们有什么规律呢? Java项目的代码结构 阅读全文
摘要:
前言 我们通过kotlin在进行后端开发的时候,大部分时候可以直接调用java的方法,但是有时候会因为各种原因不能够直接使用。本文旨在记录一下,我在使用kotlin进行后端开发中遇到的一些问题。 @Slf4j 我们在平时java开发中经常会用到一个lombok提供的注解@Slf4j,来帮我们快速生成 阅读全文
摘要:
Future vs CompletableFuture 准备工作 为了便于后续更好地调试和学习,我们需要定义一个工具类CommonUtils辅助我们对知识的理解。这个工具类总共四个方法 readFile:读取指定路径的文件内容 sleepMillis:休眠指定的毫秒数 sleepSecond:休眠指 阅读全文
摘要:
启动类 @SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class,args); } } @SpringBootApplicati 阅读全文
摘要:
分布式ID介绍 在分布式系统中,我们经常需要生成全局唯一的标识符,例如订单号,用户id,消息id等。这些标识符通常被称为分布式id。分布式id有以下几个常见的要求: 全局唯一:不同的节点或服务不能生成重复的id。 高性能:生成id的速度要快,不能成为系统的瓶颈。 低延迟:生成id的过程要尽可能简单, 阅读全文
摘要:
BeanFactory与ApplicationContext的区别与联系 在SpringBoot项目中我们通过SpringApplication.run(SpringLearnApplication.class, args);来启动项目,实际上这个方法有一个返回值,类型为 ConfigurableA 阅读全文