最近在看《深入剖析Tomcat》,希望自己能够通过了解tomcat的实现来吸收一些有价值的设计思想和解决问题的方法。这本书目前看到了三分之一,之前曾经自己尝试着独立的去看tomcat的源代码,自己之前也研究过一些项目的源码,感觉看源码确实是一个非常有效的学习手段,shiro,quartz源码都曾多多少少的看过一些。但现在我想更加系统的更加具体的了解一个项目,备选的项目有很多,Spring,tomcat,还有其他各种优秀的开源项目,当然从兴趣出发,目前来说,我对tomcat的实现最感兴趣,于是决定以它为切入点开始,从启动的脚本开始,发现里面太过庞杂,看其启动类也是各种设置系统参数。tomcat经过多个版本的演变,已经变成了一个成熟的,规模庞大的一个项目,我觉得一个更高效的方式去学习它就是看现有的对源码介绍的书籍。英文版的很有名的《how tomcat works》,当然有两个翻译的版本,都差不多,我就选择了其中一本,看到现在,确实也有大大小小的不少收获。看完这本书后准备看《Java并发编程实战》,然后再去看《深入理解Java虚拟机》。虚拟机这本书是在学校期间好像是在大三的时候从图书馆借过一次,当时反正也是对于学习虚拟机的重要性也没有一个正确的认识,加之自己对java的了解也还不是很深入,囫囵吞枣看完,很快就忘记了,如果面试问到,自己通过死记硬背可能也能应付一点,但毕竟不是自己的东西,所以现在我想把这本书的排序尽量向后。要看的东西其实太多了,给自己排的优先级,Java最高,数据库相关其次,毕竟很多的性能问题其实根源在于对数据库的资源利用不合理。再往后就是操作系统相关了,比如Unix网络编程相关的书籍,tcp/ip相关的,在遇到一些非常有挑战性的性能的问题的时候,这些知识就尤为重要了,就比如网路IO的瓶颈到底出在哪里,通过分析tcp的状态数据,就大体能够定位到一个方向,再比如理解java的NIO就需要对linux的网络传输模型有一个大概的认识。总之,自己的路还很长很长,与君共勉。