源码解析
这里是一个长期推进的源码阅读工程:对 Java / Redis / Go / Rust 生态的 48 个开源仓库,逐个产出分册式深度解析,每册覆盖设计取舍、整体架构、核心机制、源码级技术细节、面试重点五个维度。
这个系列和「框架教程」的区别
Section titled “这个系列和「框架教程」的区别”| 框架教程 | 本系列 | |
|---|---|---|
| 回答的问题 | 怎么用 | 为什么这么实现,以及为什么不是别的实现 |
| 证据 | 官方文档 | 精确到 文件:行号 的源码坐标 + commit 记录 |
| 深度标准 | 跑通示例 | 每篇必须有:源码坐标、结构图、被放弃的替代方案、边界与踩坑、可迁移知识 |
每册的 index.md 会固化一个版本快照(分支 + commit + 日期)。行号只在那个 commit 下成立,类名与方法名相对稳定。
已完成 48 / 48 册。
| 阶段 | 内容 | 状态 |
|---|---|---|
| 1 · 打底 | disruptor · xxl-job · mybatis-3 · gin | 4/4 |
| 2 · 网络与事件循环内核 | netty · redis · valkey · hiredis | 4/4 |
| 3 · Spring 全家桶 | spring-framework · spring-boot · tomcat · spring-security · spring-cloud-gateway · spring-cloud-openfeign · spring-data-redis · spring-cloud-alibaba | 8/8 |
| 4 · 中间件与分布式 | rocketmq · dubbo · nacos · redisson · kafka · shardingsphere 等 15 个 | 15/15 |
| 5 · 基础库与多语言 | caffeine · guava · go-zero · etcd · kratos · grpc-go · tokio · axum 等 17 个 | 17/17 |
Java · 网络与基础库
Section titled “Java · 网络与基础库”- Caffeine —— W-TinyLFU、写后维护、过期时间轮、并发读写与异步加载(8 篇)
- Guava —— 不可变集合、LocalCache、EventBus 与 RateLimiter(6 篇)
- Disruptor —— 无锁环形队列、序号栅栏、伪共享填充、内存屏障与多生产者协调(7 篇)
- Netty —— EventLoop、Pipeline、ByteBuf、零拷贝、时间轮与拆包(9 篇)
- Tomcat —— 生命周期、Connector/Container、NIO Endpoint、请求链、Mapper/Valve 与类加载隔离(9 篇)
- ZooKeeper —— ZAB、会话管理、Watcher、数据模型与事务日志快照(7 篇)
Java · RPC 与微服务
Section titled “Java · RPC 与微服务”- XXL-JOB —— DB 锁调度、秒级时间轮、执行器路由、阻塞策略、回调与分片广播(7 篇)
- Dubbo —— SPI、服务导出与引用、集群容错、协议编解码与治理(7 篇)
- Nacos —— Distro、JRaft、配置长轮询、注册发现与健康检查(7 篇)
- Sentinel —— Slot 链、滑动窗口、流控、熔断、系统保护与集群 Token(7 篇)
- Seata —— TM/TC/RM 生命周期、AT undo_log、TCC/Saga/XA、Netty 通信与会话持久化(7 篇)
Java · Spring 生态
Section titled “Java · Spring 生态”- Spring Framework —— IoC 容器、Bean 生命周期、循环依赖、AOP、事务与测试上下文(9 篇)
- Spring Boot —— 启动、自动装配、条件注解、配置绑定、内嵌容器与 Actuator(9 篇)
- Spring Security —— 过滤器链、认证管理、授权决策与 SecurityContext 传播(7 篇)
- Spring Cloud Gateway —— WebFlux、路由、过滤器链、限流与熔断(7 篇)
- Spring Cloud OpenFeign —— 接口注册、代理组装、契约编解码、负载均衡与熔断(7 篇)
- Spring Data Redis —— 连接工厂、RedisTemplate、序列化、Pub/Sub、Stream 与事务(9 篇)
- Spring Cloud Alibaba —— 自动装配、Nacos、Sentinel 与 RocketMQ 适配(7 篇)
Java · 消息中间件
Section titled “Java · 消息中间件”Java · 存储与 ORM
Section titled “Java · 存储与 ORM”- MyBatis-3 —— 配置解析、Mapper 动态代理、执行器、缓存、插件链与结果映射(8 篇)
- ShardingSphere —— JDBC 入口、SQL 解析、路由改写、归并执行、分布式事务与治理(10 篇)
- Druid —— 连接池、JDBC 代理、SQL Parser、Wall 防火墙、统计与 Web 监控(10 篇)
- HikariCP —— 配置初始化、ConcurrentBag、连接借还、代理重置、故障检测与指标(8 篇)
- Jedis —— RESP 编解码、连接生命周期、连接池、Pipeline、Cluster 路由与客户端缓存(8 篇)
- Redisson —— 异步命令管线、分布式锁、watchdog、Lua、RedLock、集合与限流器(8 篇)
- MyBatis-Plus —— 实体元数据、Mapper 注入、Wrapper、插件链、分页与 Spring 集成(8 篇)
Java · 诊断工具
Section titled “Java · 诊断工具”- Arthas —— Instrumentation 与 Agent 挂载、字节码增强、命令管道与终端协议(7 篇)
- SkyWalking —— Agent 无侵入插桩、上下文传播、TraceId、OAP 数据模型与流式聚合(7 篇)
- Gin —— Radix 树路由、Context 池化、中间件链、参数绑定与校验(7 篇)
- go-zero —— 熔断、限流、syncx、缓存、zrpc 与 goctl(9 篇)
- etcd —— Raft、WAL、MVCC、Watch 与 Lease(9 篇)
- Kratos —— 分层、App 生命周期、中间件、注册发现与传输抽象(9 篇)
- grpc-go —— ClientConn、HTTP/2、流控、拦截器、名字解析与负载均衡(9 篇)
- Tokio —— Runtime、Task/Waker、调度器、IO driver、时间轮、同步原语与取消(9 篇)
- Axum —— Tower Service、Handler、Extractor、路由状态与中间件(8 篇)
- Hyper —— HTTP/1 状态机、HTTP/2、Body、单连接 API 与运行时抽象(8 篇)
- Actix Web —— Worker、ServiceFactory、路由、提取器、中间件与 WebSocket Actor(9 篇)
- Serde —— 数据模型、Serializer/Deserializer、derive 与零成本抽象(8 篇)
- Clap —— Command/Arg、解析状态机、类型化取值、derive、帮助与补全(8 篇)
- SQLx —— 编译期 SQL 校验、异步执行器、连接池、driver 与类型映射(8 篇)
- ripgrep —— crate 分层、ignore 遍历、literal prefilter、Searcher 与 Printer(8 篇)
Redis 系
Section titled “Redis 系”- Redis —— ae 事件循环、对象编码、rehash、持久化、复制与过期淘汰(9 篇)
- Valkey —— Redis 分叉兼容、多线程 IO、BIO 与 fork 后台任务(6 篇)
- hiredis —— C 客户端连接、RESP reader、同步命令、异步回调与事件适配(7 篇)
- Java —— 32 个仓库:Spring 生态、消息中间件、RPC、存储与 ORM、网络与基础库、诊断工具
- Go —— 5 个仓库:HTTP 框架、服务治理、共识存储与 RPC
- Rust —— 10 个仓库:异步运行时、网络框架、序列化、CLI、数据库与搜索工具
- Redis —— Redis、Valkey 与 hiredis(已完成 3 / 3 册)