Seata — AT模式一阶段全解析
基于 Seata 1.7.1 源码,本篇文章详细拆解了一阶段分布式事务的执行流程,重点包括 降级检查策略、undo log 的生成与管理、非本地事务运行模式下的支持、锁冲突检测及重试机制,以及一阶段事务如何决定提交或回滚,为理解 AT 模式的核心原理提供了全面解析
基于 Seata 1.7.1 源码,本篇文章详细拆解了一阶段分布式事务的执行流程,重点包括 降级检查策略、undo log 的生成与管理、非本地事务运行模式下的支持、锁冲突检测及重试机制,以及一阶段事务如何决定提交或回滚,为理解 AT 模式的核心原理提供了全面解析
基于 Seata 1.7.1 源码,这篇文章算是 AT 模式源码解析的前置内容。文章先从 自动配置类 切入,梳理了客户端核心组件(TM、RM)的职责和初始化流程,接着分析 AT 模式下 DataSource 代理的实现原理,最后再简单介绍了服务端的启动过程以及 TC 的创建逻辑
基于 Redisson 3.16.8,对 RedissonLocalCachedMap 的功能及核心方法进行了深入解析,并重点探讨其关键参数对整体缓存行为的影响,为后续定向优化提供参考
基于 Redisson 3.16.8版本,对互斥型分布式锁的源码做了详细分析,主要包括:Lua 脚本的加解锁逻辑、看门狗机制的背景与实现,以及如何通过 Redis 的 pub/sub 功能配合 JDK Semaphore 来实现线程阻塞与唤醒,从而避免忙等待
另外,也简单分析了一下共享型分布式锁的实现思路,比如 RCountDownLatch 和 RSemaphore
分析了 Netty 的 Future 与 Promise 的实现与设计理念,并在此基础上总结了异步编程概念的应用及个人思考
分析了 Netty 中 ChannelPipeline、ChannelHandler、ChannelHandlerContext 各自的作用和实现原理,重点讲了下解码器基类 ByteToMessageDecoder 是怎么解决粘包/拆包的问题以及在实际使用时该如何考虑。最后用一张流程图总结了这三个核心组件在实际数据处理过程中的组合和协作方式
基于 Netty 4.1.34,从 Channel 的整体架构入手,分析了 Channel 与 Unsafe 的配合机制,以及底层对应的 NIO 实现类。在分析过程中也穿插了对关键方法的说明,最后总结了 Netty Channel 相比原生 JDK Channel 在使用体验和扩展性上的优势。
算是一篇SrpingBoot自动配置原理解析的前置文章。首先从源码角度回顾了早期的 spring.factories SPI 加载机制,接着分析了 Spring Boot 2.7.x 引入的基于注解粒度的 .imports 文件机制,展示了其在自动配置解耦方面的优势。并介绍了两个常被 starter 使用的辅助组件:
最后,结合自定义 starter 的实践,附上了完整的测试用例,验证上述机制在实际开发中的可用性
从案例中分析了NOT_SUPPORTED默认情况下为什么不能进行多数据源切换以及优雅的解决办法,以及给出了自己的思考
基于 Spring Boot 2.7.x,从整体架构角度出发,梳理并串联了 fatjar 模式下的关键组件:Archive、JarFile、JarEntry、Handler、JarURLConnection,重点分析它们在类加载过程中的职责与协作关系。全文不聚焦具体 jar 包结构解析细节,而是深入源码层面解析 fatjar 启动流程及 LaunchedURLClassLoader#loadClass 实现机制,并辅以实际测试用例进行debug和验证。
本文从源码出发,剖析 Tomcat 中 Session 的懒加载、保活与生命周期控制机制,并解析了 StandardManager 如何借助序列化完成热部署场景下的 Session 持久化与自动恢复