- 课程目录
- 课程介绍
-
在线阅读:开篇词 | Java程序员如何快速成长?
弄懂了Tomcat和Jetty,Java Web开发对你来说就已经毫无“秘密”可言。
-
01 | Web容器学习路径
作为专栏更新的第1篇文章,我想和你谈谈什么是Web容器,以及怎么学习Web容器。
-
02 | HTTP协议必知必会
如果你想深入理解Tomcat和Jetty的工作原理,我认为理解HTTP协议的工作原理是学习的基础。
-
03 | 你应该知道的Servlet规范和Servlet容器
Servlet、Servlet接口、Servlet容器、Servlet规范,你都搞清楚了吗?
-
04 | 实战:纯手工打造和运行一个Servlet
今天我们抛弃IDE、拒绝框架,自己纯手工编写一个Servlet,并在Tomcat中运行起来。
-
05 | Tomcat系统架构(上): 连接器是如何设计的?
今天我们来分析Tomcat的设计思路,看看Tomcat的设计者们是如何设计它的架构。
-
06 | Tomcat系统架构(下):聊聊多层容器的设计
在Tomcat里,容器就是用来装载Servlet的。那Tomcat的Servlet容器是如何设计的呢?
-
07 | Tomcat如何实现一键式启停?
Tomcat是如何用一种通用的、统一的方法,来管理组件的生命周期,达到汽车“一键启动”那样的效果呢?
-
08 | Tomcat的“高层们”都负责做什么?
今天我们来了解一下Tomcat的“高层”,看看它们如何管理下层组件的生命周期,并且给下层组件分配任务。
-
09 | 比较:Jetty架构特点之Connector组件
Servlet容器并非只有Tomcat一家,你还了解其他的架构设计思路吗?今天我们就来看看Jetty的设计特点。
-
10 | 比较:Jetty架构特点之Handler组件
Jetty的Handler在设计上非常有意思,可以说是Jetty的灵魂,Jetty通过Handler实现了高度可定制化。
-
11 | 总结:从Tomcat和Jetty中提炼组件化设计规范
今天我来总结一些Tomcat和Jetty组件化的设计思想,或许从中我们可以得到一些启发。
-
12 | 实战:优化并提高Tomcat启动速度
今天我针对Tomcat 8.5和9.0版本,给你几条优化并提高Tomcat启动速度的建议,你可以现学现用。
-
13 | 热点问题答疑(1):如何学习源码?
对于Java后端开发来说,有不少经典的开源框架和中间件值得学习,今天我就来聊聊如何学习它们的源码。
-
14 | NioEndpoint组件:Tomcat如何实现非阻塞I/O?
今天我会先说说各种I/O模型的区别,然后重点分析Tomcat的NioEndpoint组件是如何实现非阻塞I/O模型的。
-
15 | Nio2Endpoint组件:Tomcat如何实现异步I/O?
BIO是我们最熟悉的同步阻塞,NIO是同步非阻塞,那NIO.2又是什么呢?NIO已经足够好了,为什么还要NIO.2呢?
-
16 | AprEndpoint组件:Tomcat APR提高I/O性能的秘密
今天我会讲解AprEndpoint组件的工作过程,并在原理的基础上分析APR是如何提升性能的。
-
17 | Executor组件:Tomcat如何扩展Java线程池?
为了提高处理能力和并发度,Tomcat扩展了原生的Java线程池,来满足Web容器高并发的需求。
-
18 | 新特性:Tomcat如何支持WebSocket?
今天我会介绍WebSocket的工作原理,以及作为服务器端的Tomcat是如何支持WebSocket的。
-
19 | 比较:Jetty的线程策略EatWhatYouKill
根据Jetty的官方测试,EatWhatYouKill这个线程策略将吞吐量提高了8倍,你知道它是如何实现的吗?
-
20 | 总结:Tomcat和Jetty中的对象池技术
一个比较大、比较复杂的Java对象,创建、初始化和GC都需要耗费CPU和内存资源,为了减少开销,我们可以使用对象池技术。
-
21 | 总结:Tomcat和Jetty的高性能、高并发之道
Tomcat和Jetty中用到了大量的高性能、高并发的设计,今天我们就来聊聊这些设计的门道。
-
22 | 热点问题答疑(2):内核如何阻塞与唤醒进程?
学习Tomcat连接器组件的设计,最重要的是各种I/O模型及其实现,而I/O模型跟操作系统密切相关。
-
23 | Host容器:Tomcat如何实现热部署和热加载?
要在运行的过程中升级Web应用,如果你不想重启系统,实现的方式有两种:热加载和热部署。
-
24 | Context容器(上):Tomcat如何打破双亲委托机制?
Tomcat通过Context组件来加载管理Web应用,今天我会分析Tomcat的类加载机制以及工作中遇到的加载异常。
-
25 | Context容器(中):Tomcat如何隔离Web应用?
今天我们来学习一下Tomcat的类加载器的设计,以及如何通过设计多层次的类加载器来解决加载问题。
-
26 | Context容器(下):Tomcat如何实现Servlet规范?
Web容器最重要的职能就是把Servlet规范的“三兄弟”创建出来,并在适当的时候调用它们的方法。
-
27 | 新特性:Tomcat如何支持异步Servlet?
假如你的Web应用需要长时间来处理请求,那么Tomcat线程一直不回收,会占用系统资源,在极端情况下会导致“线程饥饿”。
-
28 | 新特性:Spring Boot如何使用内嵌式的Tomcat和Jetty?
我们如何向SpringBoot中的Tomcat注册Servlet或者Filter呢?我们又如何定制内嵌式的Tomcat?
-
29 | 比较:Jetty如何实现具有上下文信息的责任链?
今天我们来分析一下Jetty中ScopedHandler的实现原理,以及如何实现链式调用的“回溯”。
-
30 | 热点问题答疑(3):Spring框架中的设计模式
在专栏的热点问题答疑第三篇,我想跟你分享一些我对设计模式的理解。
-
31 | Logger组件:Tomcat的日志框架及实战
今天我们就来看看Tomcat的日志模块是如何实现的。默认情况下,Tomcat使用自身的JULI作为内部的日志处理系统。
-
32 | Manager组件:Tomcat的Session管理机制解析
今天我们从Session的创建、清理以及事件通知这几个方面来了解Tomcat的Session管理机制。
-
33 | Cluster组件:Tomcat的集群通信原理
今天我们来看看Tomcat集群通信的原理和配置方法,最后通过官网上的一个例子来了解下Tomcat集群到底是如何工作的。
-
特别放送 | 如何持续保持对学习的兴趣?
如果你觉得源码太复杂了,似乎有种学不动的感觉,那一定请你打开今天的文章,看看号双讲如何持续保持对学习的兴趣。
-
34 | JVM GC原理及调优的基本思路
在对GC调优的过程中,我们不仅需要知道GC的原理,更重要的是要熟练使用各种监控和分析工具,具备GC调优的实战能力。
-
35 | 如何监控Tomcat的性能?
专栏上一期我们分析了JVM GC的基本原理以及监控和分析工具,今天我们接着来聊如何监控Tomcat的各种指标。
-
36 | Tomcat I/O和线程池的并发调优
上一期我们谈到了如何监控Tomcat的性能指标,在这个基础上,今天我们接着聊如何对Tomcat进行调优。
-
37 | Tomcat内存溢出的原因分析及调优
作为Java程序员,我们几乎都会碰到OutOfMemoryError异常,你知道有哪些原因可能导致JVM抛出这个异常吗?
-
38 | Tomcat拒绝连接原因分析及网络优化
我们在实际工作中经常碰到网络通信方面的错误和异常,需要理解异常背后的原理,才能更快更精准地定位问题,从而找到解决办法。
-
39 | Tomcat进程占用CPU过高怎么办?
今天我们来看一下Tomcat进程的CPU使用率过高怎么办,以及怎样一步一步找到问题的根因。
-
40 | 谈谈Jetty性能调优的思路
关于Jetty的性能调优,分为操作系统层面和Jetty本身的调优,我们今天来看一看它们具体是怎么做的。
-
41 | 热点问题答疑(4): Tomcat和Jetty有哪些不同?
如果把Tomcat比作一位工作多年的成熟工程师,那Jetty更像是一位年轻的后起之秀,脑子转得很快,可塑性也很强。
-
结束语 | 静下心来,品味经典
从专栏上线发布到现在,不知不觉三个月时间过去了,感谢你的一路陪伴,今天到了说再见的时候。
-
结课测试 | 这些Tomcat&Jetty的知识你都掌握了吗?
《深入拆解Tomcat&Jetty》课程结课了!来做个测试吧!
课程介绍
618 狂欢 | 课程专属口令 你将获得 通过Tomcat&Jetty深入理解Java进阶技术; 掌握了Tomcat&Jetty中间件的设计思想; 解读Servlet最新技术及实际应用; 让Web程序飞起来的性能调优策略。...618 狂欢 | 课程专属口令
你将获得
- 通过Tomcat&Jetty深入理解Java进阶技术;
- 掌握了Tomcat&Jetty中间件的设计思想;
- 解读Servlet最新技术及实际应用;
- 让Web程序飞起来的性能调优策略。
讲师介绍
课程介绍
作为一名Java Web开发工程师,不知道你是否有过下面这些经历:
- 对一些Java技术感觉似懂非懂?
- 不知道怎么把Java技术用到实际的项目中?
- 给你一个业务场景,拿不出靠谱的设计方案?
- Spring框架层面的问题不知道如何定位和修复?
- 性能调优没思路?
这其中的很多问题其实最终都指向经验不足、设计能力有待提高,没有深刻理解Web的工作原理。而Web容器Tomcat或Jetty,作为重要的系统中间件,连接着浏览器和你的Web应用,并且支撑着Web程序的运行,可以说,弄懂了Tomcat和Jetty的原理,Java Web开发对你来说就毫无秘密可言。
那么再换个角度,从一名Java Web开发工程师的成长来看,每个人都会经历:
- 维护老项目;
- 实现一个小模块;
- 独立设计一个子系统;
- 负责整体的架构方案。
你会发现其中个人的成长可能都会从Tomcat或Jetty开始,逐步积累经验,提高设计能力,最终成长为一名架构师。而且作为初学者,想要找准方向突破深度,Tomcat和Jetty也是非常好的选择。
当然,如果你现在是一名运维或者中间件开发乃至架构师,同样的,每天的工作多少都离不开与Tomcat或Jetty打交道,它总是会在不同场合以不同问题的形式出现在我们面前。
所以不管你是初学、已经在使用或是认为自己已经非常熟悉它们,都有必要重新深入进去,掌握其中的设计精髓,并为自己所用。
在这个专栏里,李号双将会详细剖析Tomcat和Jetty的架构设计和原理,梳理实践中经常遇到的问题,深入分析并提供解决方法;还会带你学习大神们如何“用”Java技术,帮你提升设计思维,解决你Java Web后端开发的“痛点”。
专栏分为6个模块。
模块一,帮你重新理解HTTP协议和Servlet规范,为深入学习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的并发调优、内存调优和网络调优等。
课程目录


