你好,我是李号双。今天我们抛开技术本身的内容,来聊聊专栏或者一门新技术的学习方法,我也分享一下自己是如何啃下 Tomcat 和 Jetty 源码的。
专栏如今已经更新完了五个模块,我们学习了 Tomcat 和 Jetty 的整体架构、连接器、容器和通用组件,这些内容可以说是 Tomcat 和 Jetty 的设计核心。在日常工作的使用中,我们使用到了 Tomcat 和 Jetty 提供的功能,我希望通过学习专栏,还能帮你了解这些功能是如何实现的,以及 Tomcat 和 Jetty 在设计时都考虑了哪些地方。
所以在学习专栏时,你不妨思考这样一个问题,假如让你来设计并实现一个 Web 容器,你会怎么做呢?如何合理设计顶层模块?如何考虑方方面面的需求,比如最基本的功能需求是加载和运行 Web 程序,最重要的非功能需求是高性能、高并发。你可以顺着这两条线先思考下你会怎么做,然后再回过头来看看 Tomcat 和 Jetty 是如何做到的。这样的学习方法其实就在有意识地训练自己独立设计一个系统的能力,不管是对于学习这个专栏还是其他技术,带着问题再去学习都会有所帮助。
说完关于专栏的学习方法,下面我必须要鼓励一下坚持学习到现在的你。专栏从第三模块开始,开始讲解连接器、容器和通用组件的设计和原理,有些内容可能比较偏向底层,确实难度比较大,如果对底层源码不熟悉或者不感兴趣,学习起来会有些痛苦。但是,我之所以设计了这部分内容,就是希望能够揭开 Tomcat 和 Jetty 的内部细节,因为任何一个优秀的中间件之所以可以让用户使用比较容易,其内部一定都是很复杂的。这也从侧面传递出一个信号:美好的东西都是有代价的,需要也值得我们去付出时间和精力。