Open sunjun opened 2 years ago
阅读优秀的开源项目
1. 了解开源项目的历史
为了解决什么问题而诞生 大体的发展过程是什么样子的
2. 准备阅读源码需要的前置知识 举个例子 比如阅读memcached源码 需要知道 由于使用了其他开源框架libevent, 所以需要先熟悉学习libevent linux开发知识,c语言基本知识 多线程开发基本知识pthread mutex sem 简单的架构知识,lru算法 操作系统基本知识,如内存碎片 必要时还要学习相关论文知识,比如leveldb
3. 熟悉项目的基本功能 看使用教程都有哪些功能 安装一个,运行下体验下这些功能
4. 开始阅读源码 4.1 先熟悉项目大体脉络,基本架构 从main函数开始 寻找项目主要逻辑,一般大型项目需要有很多错误处理, 和兼容性处理,学会过滤掉它们 找架构图,梳理数据流程图 4.2 深入项目细节 专注看某一块是怎么处理的 必要时需要自己编译项目运行,进行单步跟踪
5. 写总结记录学习过程 主要记录内容 程序采用了什么架构 作者为什么选择这个架构来设计,什么样的问题可以采用类似的架构 使用了哪些设计模式 程序里处理一些细节问题有哪些值得学习的地方
如何提升自己的技术能力?
阅读优秀的开源项目
如何阅读开源项目代码?
1. 了解开源项目的历史
为了解决什么问题而诞生 大体的发展过程是什么样子的
2. 准备阅读源码需要的前置知识 举个例子 比如阅读memcached源码 需要知道 由于使用了其他开源框架libevent, 所以需要先熟悉学习libevent linux开发知识,c语言基本知识 多线程开发基本知识pthread mutex sem 简单的架构知识,lru算法 操作系统基本知识,如内存碎片 必要时还要学习相关论文知识,比如leveldb
3. 熟悉项目的基本功能 看使用教程都有哪些功能 安装一个,运行下体验下这些功能
4. 开始阅读源码 4.1 先熟悉项目大体脉络,基本架构 从main函数开始 寻找项目主要逻辑,一般大型项目需要有很多错误处理, 和兼容性处理,学会过滤掉它们 找架构图,梳理数据流程图 4.2 深入项目细节 专注看某一块是怎么处理的 必要时需要自己编译项目运行,进行单步跟踪
5. 写总结记录学习过程 主要记录内容 程序采用了什么架构 作者为什么选择这个架构来设计,什么样的问题可以采用类似的架构 使用了哪些设计模式 程序里处理一些细节问题有哪些值得学习的地方