How Tomcat works — 一、怎样阅读源码
在编程的道路上,通过阅读优秀的代码来提升自己是很好的办法。一直想阅读一些开源项目,可是没有合适的机会开始。最近做项目的时候用到了shiro,需要做集群的session共享,经过查找发现tomcat的session本身就支持,发现自己对于使用了这么久的东西还是不甚了解,所以就乘此机会来学习学习。
阅读源码已经两周了,之所以没有边读边总结是觉得一开始难以总揽全局,可能会以偏概全,所以在对整体上有所把握之后,来记录一下自己的所学.
方法
其实这些方法是阅读之前就有个雏形,然后参考了别人阅读源码的方式(其实在做一件事之前搞清楚方法总是事半功倍的),再加上自己实践中的心得总结出来的。
- 准备源码,IDE,写一个最简单的例子,使程序正常运行
- 最好准备一些问题,读源码的基础一定是自己使用已经很多了,在使用过程中积累的一些问题可以总结记录下来,在读源码的时候一一解决。
- 第一步不要在意细节,先理清主干。把程序运行起来,逐步调试,画出程序运行的时序图。注意:
- 不要每一个函数都逐步调试进入,对于不重要的先画在时序图里面,简单记录(猜测)功能
- 遇到新的线程先不去仔细查看,先记录,继续
- 经过上面已经明白了整体脉络,接下来就查看自己上面遗留了那些问题,针对每一个问题(分支)再仔细阅读
- 根据第二步理出来的问题逐一解答,再次有针对性的阅读
- 这个时候对于源码已经了解比较深入了,可以考虑学习一些设计模式,关键数据结构,关键算法,优秀的思想,一些关键类,关键方法
工具
不同语言、不同目的阅读源码的方法、工具也不尽相同,对于java我是用了以下工具,特别是断点调试,对于跟踪程序执行顺序有很大帮助,还有UML工具astah——通过绘制时序图等很容易理清源码思路。还有就是有问题或者想法要及时记录,显然haroopad是一款不错的markdown工具。
- IDE为eclipse
- 使用astah绘制时序图
- haroopad记录markdown笔记
本次阅读
我阅读的tomcat源码版本是7.0.69,参考的是《深入剖析tomcat》,书中tomcat的版本是4、5,已经比较老了,有些东西已经变了,不过并不影响对于某些原理的理解和整体的把握。