⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 http://www.iocoder.cn/Architecture/how-to-read-source-code/ 「芋道源码」欢迎转载,保留摘要,谢谢!


0. 从零开始

一个喝了假酒的视频:

视频传送门
视频传送门
视频传送门

请关注笔者的公众号:芋道源码

  • 专注源码解析三十年!
  • 专注源码解析三十年!
  • 专注源码解析三十年!

1. 调试

通过 IDE 工具调试的方式阅读源码。

1.1 Elastic-Job

  • GitHub地址:https://github.com/dangdangdotcom/elastic-job
    • 开源不易,请点 Star 支持。
    • 个人 Fork,增加部分中文注释 GitHub地址:https://github.com/YunaiV/elastic-job
  • 为什么阅读 Elastic-Job 源码?:http://www.iocoder.cn/Elastic-Job/why-read-Elastic-Job-source-code/
  • 调试方式:com.dangdang.ddframe.job.example.JavaMain 直接 DEBUG 即可。

1.2 Sharding-JDBC

  • GitHub地址:https://github.com/dangdangdotcom/sharding-jdbc
    • 开源不易,请点 Star 支持。
    • 个人 Fork,增加部分中文注释 GitHub地址:https://github.com/YunaiV/sharding-jdbc
      • 基于 Sharding-JDBC V1.5.1 版本,建议阅读最新版本代码,我的可以作为注释补充。
  • 为什么阅读 Sharding-JDBC 源码?:http://www.iocoder.cn/Sharding-JDBC/why-read-Sharding-JDBC-source-code/
  • 调试方式:com.dangdang.ddframe.rdb.sharding.example.jdbc.Main 配置数据源后可以 DEBUG。
  • 拆解图:

1.3 MyCAT

  • GitHub地址:https://github.com/MyCATApache/Mycat-Server
    • 开源不易,请点 Star 支持。
    • 个人 Fork,增加部分中文注释 GitHub地址:https://github.com/YunaiV/Mycat-Server
  • 为什么阅读 MyCAT 源码?:http://www.iocoder.cn/MyCAT/why-read-MyCAT-source-code/
  • 调试方式:http://www.iocoder.cn/MyCAT/build-debugging-environment/

1.4 RocketMQ

  • GitHub地址:https://github.com/apache/incubator-rocketmq
    • 开源不易,请点 Star 支持。
    • 个人 Fork,增加部分中文注释 GitHub地址:https://github.com/YunaiV/incubator-rocketmq
  • 为什么阅读 RocketMQ 源码?:http://www.iocoder.cn/RocketMQ/why-read-RocketMQ-source-code/
  • 调试方式:有点想不起来了。以后补充哈。

1.5 补充

如果源码比较多,你不太清楚按照什么样的功能顺序调试下去,可以参考我写的博客。这个不是广告。确实有朋友是对照着博客顺序调试的。

2. UML图

推荐使用 Astah 社区版。对的,不要考虑破解不破解的。社区版,够!

另外,请不要纠结用什么 UML 工具牛逼!重点先迈出调试源码那一步,其他的,慢慢优化。

推荐画两种图:

  • 类图:对整体、或者某个模块,有系统性的认识。

  • 顺序图:对流程的调用顺序有整体的认识,避免调试,越调试越晕。

如果你不会画 UML 图,直接直接 Google,不要去找什么 UML 的书,先干起来!

恩,笔者不排除看 UML 书,因为,我也看过几本,收获不小,哈哈哈哈。


另外,Processon 也是一个不错的选择,在线 UML 工具,相比 Astash 来说,更加自由一些,例如下图 :

3. 输出

阅读源码,不尝试输出,就是在耍流氓。

推荐三种输出方式:

  1. 写博客。
  2. 团队分享。
  3. 造小轮。

刚开始推荐写博客。对的,不太建议只写自己看得懂的笔记。

知识星球

文章目录
  1. 1. 0. 从零开始
  2. 2. 1. 调试
    1. 2.1. 1.1 Elastic-Job
    2. 2.2. 1.2 Sharding-JDBC
    3. 2.3. 1.3 MyCAT
    4. 2.4. 1.4 RocketMQ
    5. 2.5. 1.5 补充
  3. 3. 2. UML图
  4. 4. 3. 输出