lj Blog

Thinking will not overcome fear but action will.

MySQL 事务

MySQL 事务模型

两个重要的日志 redo log InnoDB 引擎 特有的日志.位于引擎层,物理日志 当有一条记录需要更新的时候,InnoDB 引擎就会先把记录写redo log里面,并更新内存,这个时候更新就算完成了。同时,InnoDB 引擎会在适当的时候,将这个操作记录更新到磁盘里面 InnoDB 的 redo log 是固定大小的,从头开始写,写到末尾就又回到开头循环写 有了 redo l...

spring 事务

spring 事务基础

基础 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元 (unit)。在关系数据库中,一个事务由一组SQL语句组成。事务应该具有4个属性: 原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性 使数据操作单元满足 ACID 以数据库事务为例,追本溯源,如果我们想实现一个事务,首先获取到一个 connection,connection.setAu...

netty 定时任务

netty 定时任务

来源 使用Redis 加分布式锁,如果业务执行时间过长,分布式锁超时了怎么办呢?自动续期 看了这篇文章,除了对看门狗的认识之外就是对于 HashedWheelTimer 的好奇。 HashedWheelTimer netty 提供的调度器 示例 HashedWheelTimer timer = new HashedWheelTimer(); Timer...

优化错误调用

优化错误调用

来源 今天早上在写订单相关的代码 OrderInfo orderInfo = getByOrderNo(payProcessor.getOrderNo()); if (ObjectUtil.isNull(orderInfo)) { throw new BusinessException(CourseErrorCode.ORDER_NO...

使用自定义注解标记加密字段

BASE

简介 最近在处理对接易宝支付。易宝支付有的接口需要传递签名(hmac 字段),但是每个接口的签名字段不一样,所以每个接口都需要传递一个string 数组,用来对数组中的字段进行签名,并且签名字段是有顺序的。 思路 因为每个接口的参数我都封装了对应的DTO,比如下订单接口,我封装了一个TokenDTO,支付接口,我封装了一个PayDTO,想要定义一个自定义注解,注解标记在字段上。通过对应的参...

SpringFactoriesLoader 初识

SpringFactoriesLoader 初识

简介 spring boot starter 原理 springboot starter 一般都是借助 SpringFactoriesLoader 原理,定义 spring.factories , 然后在里面定义诸如 org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.baomidou.dynamic...

分布式事务 CAP

CAP

简介 CAP 定理,又称布鲁尔定理。C、A、P 不可能同时达到,这就是CAP理论 在一个分布式系统(指互相连接并共享数据的节点的集合)中,当涉及读写操作时,只能保证一致性(Consistence)、可用性(Availability)、分区容错性(Partition Tolerance)三者中的两个,另外一个必须被牺牲 C: Consistency 一致性 “A ...

分布式事务-基于可靠消息

基于消息中间件

简介 理论模型是ebay 提出的基于可靠消息的分布式事务解决方案 架构图 架构图来自吴水成老师的教程,感谢老师 图片来源 重点 可查询,一个事务具备唯一的 bizId/txId , 可以跟踪事务的执行,可以查询各个状态的事务,从而推动事务进入下一步流程 重试投递,消费消息失败时,队列可以根据指定的重试策略重试投递,超过重试次数,进入死信队列,报警、人...

spring 事务之 UserTransaction

UserTransaction

信号量限流 //限制3个同时执行线程 Semaphore semaphore = new Semaphore(3); //模拟多线程 for (int i = 0; i < 10; i++) { new Thread(() -> { try { ...

ApplicationEventPublisher 使用

spring 提供的异步框架

初识 需求:对于拥有某个注解的方法,记录其上下文信息,操作日志希望是异步记录 监听器、发布、订阅 使用 定义 ApplicationEventPublisher 对象,可以直接 @Autowired 等。要发布的事件对象可以是普通 Object 或者 ApplicationEvent EventListener 监听事件实现 直接使用...