Redisson — 红锁的实现与思考
基于 Redisson 3.16.8版本,深入分析了红锁的设计背景及其在 Redisson 中的实现,最后讨论了红锁的局限性,并介绍了可能的替代方案。同时,还详细的分析了 Redisson 如何通过引入 WAIT 命令来优化普通分布式锁的可靠性
基于 Redisson 3.16.8版本,深入分析了红锁的设计背景及其在 Redisson 中的实现,最后讨论了红锁的局限性,并介绍了可能的替代方案。同时,还详细的分析了 Redisson 如何通过引入 WAIT 命令来优化普通分布式锁的可靠性
深入对比分析了 AT 和 TCC 模式在 网络 I/O 和 锁资源 两个方面的性能差异,并根据分析结果提供了选择建议。最后,讨论了 AT 模式在业务中使用不当可能带来的问题,并提出了相应的解决方案
基于Spring Boot 2.7.x 版本,深入分析了OnBean、OnClass、OnProperty这三类常见Condition的源码实现,在此基础上,探讨了 @Conditional 注解的组合用法(与、或、非逻辑)的处理机制。
同时,分析了Condition匹配结果的debug支持实现,以及 ConfigurationClassPostProcessor 中Condition判断的触发流程,重点关注其通过 importedBy 链支持的 TrackedConditionEvaluator 回溯与剪枝优化策略
最后,提供了逻辑或@Conditional组合与 importedBy路径 skip 判定的测试用例,以验证整体逻辑的正确性
通过举例深入的分析了热加载场景下ThreadLocal使用不当造成的内存泄漏。并剖析了Tomcat通过实现无效的ThreadLocalMap.Entry清除、ThreadLocalLeakPreventionListener回收空闲worker线程和TaskQueue对取任务逻辑的重写来兜底剩余worker线程回收这三种策略来优雅的解决ThreadLocal内存泄漏的问题
基于Netty 4.1.34版本,分析了 Netty 中NIO相关的 EventLoopGroup 与 EventLoop 的核心功能和实现原理,重点涵盖了JDK Selector 的性能瓶颈与 Netty 优化策略、事件循环线程的阻塞与唤醒机制(含空轮询 Bug 修复方案)、IO 事件与任务调度细节,并配套流程图直观展示 EventLoop 工作流程
主要分析了嵌入式 Tomcat 的构建流程,重点对比了它和传统 Tomcat 启动方式的差异,也梳理了 SpringBoot 提供的相关扩展点,比如 ServletContextInitializerBeans 的处理逻辑。最后结合 Tomcat 启动和 Spring 单例 Bean 初始化的整体流程,对延迟绑定端口,以及整个启动顺序背后的依赖关系做了系统性的分析和思考
基于 Spring Boot 2.7.x 版本,深入剖析了 @EnableAutoConfiguration 注解的实现原理,重点解析了其背后通过 DeferredImportSelector 实现的自动配置机制。特别对 @AutoConfigureBefore 与 @AutoConfigureAfter 所涉及的 DFS 拓扑排序逻辑 进行了详细的分析,揭示了自动配置类加载顺序的核心控制机制
最后,还分析了 2.7.0 版本新增的 @AutoConfiguration 注解的特殊语义,包括其与新的 .imports SPI 文件的绑定、默认排除扫描机制(AutoConfigurationExcludeFilter)。并给出了自己的使用建议
从源码分析了Spring AOP的实现逻辑,以及利用arthas对代理class进行反编译以更加清晰的理解源码流程
深入分析了 Seata 的 TCC 模式,通过实际使用案例引出了关键注解的应用。结合 TM、RM 和 TC 的工作流程,剖析了 TccActionInterceptor 在 try 阶段的实现原理,详细讲解了 TCCResourceManager 如何处理 commit 和 rollback 操作。同时,解析了 TCC_FENCE_LOG 表如何保障事务幂等性,并有效解决了悬挂和空回滚等常见问题
本文深入解析了 Seata AT 模式下全局事务的提交与回滚机制,详细讲解了 GlobalTransaction 提交全局事务、分支事务的异步提交以及 全局回滚的执行流程。重点探讨了 事务协调器(TC)和资源管理器(RM)如何协作完成事务提交与回滚。特别是在 并发控制与数据一致性 问题上,展示了 Seata 如何通过 UndoLog校验 机制避免“脏写”问题,并实现强一致性的全局事务回滚