来面试的都是什么妖魔,中间件都不会

JavaGuide

共 3307字,需浏览 7分钟

 ·

2021-11-15 05:51


大家好,我是Guide!


今天推荐一个质量很高的 Tomcat 相关的极客时间专栏!实话说,这个专栏真心不错,强烈安利!👍


不光可以加深自己对于 Tomcat 的理解,还能提高自己对于系统架构、性能优化等领域的认识。


下面是我自己学习这个专栏的时候做的笔记:




下面是正文。

很多过来人都会告诫新人,编程没有捷径可走,不花费几年时间经过大量实践和刻意练习,怎么能领悟编程的精髓呢?

 

我曾经也是一名“刻苦”的新人,但几年之后我发现,其实在 Java 的学习上,同样逃不开”二八原则“,即掌握 20% 的知识,就能解决 80% 的问题。说实话,这样的思维方式让我在之后的 Java 学习之路上受益很大。

 

想来,实习那会儿我还没搞 Java,后来觉得机会多才转过去,发现上手还挺快,API 比较齐全,也不需要自己来管理内存。毕业后顺利找到了一份 Java 开发工作,主要就是实现一些小模块,很多时候通过代码复制粘贴,再稍微改改就能完成,这样的状态大概持续了一年。

 

这个过程,虽然让我对 Java 语法更加熟悉了,但很少有机会运用一些 Java 的高级特性,那时如果让我独立设计一个系统,我肯定懵逼。Web 框架也一样,我也只是知道这样用是 ok 的,但不知道它背后的原理,更不用提类似「浏览器的请求是怎么跟 Spring 中的代码联系起来的」这样的问题了。

 

这时我才发现,自己在知识体系上的欠缺。但 Java 知识体系很庞大,我该专注于哪一方面呢?

 

后来,一个偶然的机会,我知道了 Tomcat 和 Jetty 这样的 Web 容器,觉得很神奇,只要把 Web 应用打成 WAR 包放到它的目录下,启动起来就能通过浏览器来访问了。

 

那 Web 容器是如何工作的呢?带着这份好奇心,我决定深入研究 Tomcat。在掌握了原理之后,我才知道,Servlet 技术是 Web 开发的原点,几乎所有 Java Web 框架(比如 Spring)都是基于 Servlet 的封装,Spring 应用本身就是一个 Servlet,而 Tomcat 和 Jetty 这样的 Web 容器,就是负责加载和运行 Servlet 的。

 

通过下面这张图,你可以理解 Tomcat/Jetty 在 Web 开发中的位置。



随着学习的深入,我发现 Tomcat 和 Jetty 用到了不少 Java 高级技术,比如 Java 多线程并发编程、Socket 网络编程以及反射等等。之前为了面试,我也背过一些题,但总感觉“知道”和“会用”之间存在一道鸿沟。而通过学习 Tomcat 和 Jetty 源码,让我了解到,该在什么样的场景下去用这些技术,这一点至关重要。

 

在掌握了 Web 容器和 JVM 工作原理后,我开始解决线上的疑难杂症,并尝试对线上的 Tomcat 进行调优。性能的提升是实实在在的成果,我也因此得到了领导的认可。这个过程,让我建立起了自己的知识体系,开始独立设计系统、解决技术难题,逐渐具备了独当一面的能力。

 

如果我能做到,那么,你也可以。为了让你少走弯路,分享一个帮了我不少的专栏《深入拆解 Tomcat & Jetty》,作者是 eBay 技术主管李号双,他在 eBay 负责付款系统的可靠性、稳定性和高可用,系统采用定制版的 Tomcat 运行大规模微服务实例,对 Tomcat 和 Jetty 源码非常了解,具有丰富的容器化上云,线上问题定位和调优经验。


在专栏中,他详细剖析了 Tomcat 和 Jetty 的架构设计和原理,让你深入理解 Java 进阶技术,掌握 Tomcat 和 Jetty 中间件的设计思想。此外,他还解读了 Servlet 最新技术及实际应用,带你熟知让 Web 程序飞起来的性能调优策略,真正解决 Java Web 后端开发的“痛点”。
 

秒杀+口令「Tomcat666」
售价 ¥199,直减 ¥80,到手 ¥119
新人首单 ¥68

专栏质量非常高,先从基础知识讲起,搭建总体框架,接着逐步深入到各个组件,循序渐进,每一部分的讲解,都兼顾深度与广度。
 
课程中间还穿插了不少源码剖析,字里行间里都能感受到强大的总结和抽象能力,可见功底。最重要的是,他会教你在真实场景中运用 Java 技术,通过手工打造和运行 Servlet、提高 Tomcat 启动速度等多个实战案例,让你快速增加经验值,体会到大神在设计 Tomcat 和 Jetty 时,是如何思考问题、写代码的。
 
而且,李号双是我见过最负责的一个老师,每个模块结束后他都会写一篇热点问题答疑,回复提问也非常细致耐心。当时对于先看哪个包的什么类,再看什么类不太清楚,就留言说希望老师出一个框架图,不久后老师真的整理了一个,内心还挺感动的。
 
总的来说,学完这个专栏,除了对 Tomcat 和 Jetty 有了更加全面的理解,还能收获方法论和源码学习路线,让你从源码的角度真正搞懂 Java 中间件,真心感谢老师。这两天我已经准备二刷了,还立了个 flag,在二刷的同时总结流程图、下载源码、写注释、跑断点。
 
别的不说,就 Tomcat & Jetty 这块儿,我就没见过比这个讲得更好的资料,不仅限于一二三的步骤,还有方方面面涉及的其他知识点,可谓良心。
 
光我说不算,截了一些留言供你参考:


根据我自己的理解,给大家总结了专栏的整体脉络:
 
第一阶段:重学 Tomcat 和 Jetty 的必备基础:比如操作系统、计算机网络、Java 语言,面向对象设计、HTTP 协议以及 Servlet 规范等,帮你重新理解 HTTP 协议和 Servlet 规范。

 

第二阶段:掌握 Tomcat 和 Jetty 的整体架构:从 Tomcat 的 Jetty 的总体架构全貌逐步深入到各个组件,重点关注组件的工作原理和设计思路,通过源码的剖析,加深你的理解,实战优化 Tomcat 启动速度。

 

第三阶段:深入讲解连接器、容器和通用组件的详细设计和工作原理:

连接器:

  • Tomcat 如何实现非阻塞和异步 I/O 通信、如何扩展 Java 原生线程池、如何支持 WebSocket;
  • 详解 Jetty 的线程策略 EatWhatYouKill;
  • 总结 Tomcat 和 Jetty 的对象池技术以及高并发高性能之道。

容器:

  • 讨论 Tomcat 的热加载热部署、类加载机制、Web 应用的隔离以及如何实现 Servlet 规范、如何实现异步 Servlet;
  • 探讨 Jetty 如何实现带有上下文信息的责任链;
  • 总结 Tomcat 和 Jetty 运用的设计模式。
通用组件:包括日志组件、Session 管理组件和集群通信组件。
 
第四阶段:从实战出发,解决工作中最常见的性能问题:通过实战案例,介绍 JVM 调优的原理、Tomcat 性能监控,以及如何对 Tomcat 进行调优,包括线程池和 I/O 的并发调优、内存调优和网络调优等,让你的 Web 程序飞起来。
 
干货有多少,目录见分晓:


我一直认为,学习可以有捷径,但千万不能浮躁,欲速则不达,我们需要静下心慢慢体会和思考。只要你保持上进心、耐心,以及对知识的好奇心,一定会在技术和视野上有所突破,拥有独当一面的能力。
 

秒杀+口令「Tomcat666」
售价 ¥199,直降 ¥80到手 ¥119
新用户仅 ¥69

👇点击「阅读原文」👇
输入粉丝专享口令「Tomcat666」
手仅 ¥119!新人仅 ¥68!
浏览 59
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报