手把手带你写一个MiniTomcat- 极客时间课程推荐/优惠

手把手带你写一个MiniTomcat--极客时间课程推荐/优惠

6 周搭建一个实用的 Tomcat 框架
郭屹前 Sun Microsystems Java 研发工程师,开源软件 MiniSpring、MiniTomcat 开发者
专栏 | 22讲 | 2422人已学习
优惠价¥59原价:99
官网优惠购买

版权声明

本站非极客时间官网,与官方无任何关系。我们不提供课程下载或详细内容,仅作为课程分享和推荐平台。我们鼓励大家支持正版,尊重创作者的劳动成果,这样不仅能帮助创作者持续产出优质内容,也能让自己获得更好的学习体验。请通过官方渠道购买和学习课程,感谢您的理解与支持。

课程详情

你将获得:

  • 一份完整的 MiniTomcat 开源代码;
  • 解密 Tomcat 的设计思路与内部结构;
  • 深入 Servlet 原理,攻克 Web 开发核心技术;
  • 打造 MiniSpring + MiniTomcat 的核心环境。

课程介绍

众所周知,Tomcat 是应用最广泛的 Web应用服务器,不过在实际使用 Tomcat 过程中,我们总是会遇到各种复杂问题,比如:

  • 如何管理多个 Servlet?
  • 如何支持多个独立的应用?
  • 大量用户请求的性能问题如何解决?
  • 处理高并发请求时的内存泄漏问题怎么处理?
  • ……

这些复杂的问题出现时,如果仅仅是会使用Tomcat是万万不能解决的,我们需要深入Tomcat原理,从底层的视角审视问题,并彻底解决问题。而掌握一项技术最好也是最扎实的方式就是重造轮子。

为此我们邀请了前 Sun Microsystems Java 研发工程师郭屹老师,他会带你一步步剖析源码,深入Tomcat底层原理,并让你从中领悟Tomcat的设计哲学,帮助你在面对复杂的生产问题时快速找到解决方案,同时也为你自己设计系统提供思路与最佳实践。

课程设计

MiniTomcat 的课程大体上分成四大块:HTTP Server、Connector、Container 和扩展部分。熟悉 Tomcat 的人想必更加清楚,Connector + Container 就是 Tomcat 的核心了。学习这些内容,会为进一步的研究打下良好的基础。

第一章 实现一个简单的 Web 应用服务器

Web 应用的核心是对 HTTP 协议的支持,接收浏览器发送的 HTTP 请求,解析 URL,找到资源返回内容,显示在客户浏览器上。这一部分先不引进任何规范,而是自己简单地实现 Request 请求与 Response 响应。虽然它很简单,但是也是一个地道的 Web 应用服务器,不仅支持静态资源,还能运行程序动态返回内容。我们后面的改造都会基于这个简单服务器。

第二章 实现专业的 Connector

基于简单的应用服务器,这部分我们会来重点实现 MiniTomcat 连接层,并且按照 Servlet 规范进行改造。优化代码结构,将第一部分的 Server 拆分为 Connector 与 Processor。之后初步优化性能,引入 Processor 池化技术,支持 Processor 并发执行,提高 Server 的高并发能力。然后,我们就要按照规范行事,实现 Servlet 对请求和响应的接口规范。

这一部分的改造过后,MiniTomcat 的连接层就有模有样了。

第三章 实现专业的 Container

连接层解决后,我们再重点设计实现容器。先引入 Wrapper,实现 Context 与 Wrapper,形成两层容器,将整个框架进一步按照功能拆分成不同模块,每一部分各司其职。最后引入日志、过滤器、监听器等通用组件。这一部分之后,Tomcat 的核心就模仿出来了。

第四章 完成 MiniTomcat 及扩展讨论

这个部分我们将考虑多应用支持,进一步拆分功能,BootStrap 只负责启动服务器,业务代码都在 Context 内运行,支持不同路由转发到不同应用之中,而应用之前相互隔离。这个需求就要求我们改变标准的 Java 类加载机制,自定义加载过程。最后通过 web.xml 各项配置,启动Server,实现完整而基本的 Tomcat。

作为扩展,我们会探讨如何把 MiniSpring 打包放在 MiniTomcat 中运行,形成 Mini 系列的核心环境,还将探讨将网络 I/O 扩展为支持 NIO,以支持高并发场景的方案。

课程目录

开篇词

  • 开篇词|重造轮子,探究Tomcat的秘密

第一章 实现一个Web应用服务器

  • 01|持久的传奇:Tomcat的发展历程与框架演进
  • 02|初出茅庐:构造一个极简的HttpServer
  • 03|动态Response:按照规范构造返回流

第二章 连接层的设计

  • 04|各司其职的Server:拆分响应模块与处理模块
  • 05|Server性能提升:设计多个Processor
  • 06|规范化:引入HttpRequest与HttpResponse
  • 07|对内的保护:引入门面模式封装内部实现类
  • 08|解析参数:通过引入Cookie和Session避免反复登录
  • 09|有状态的Response:实现Session传递与Keep-alive

第三章 容器设计

  • 10|Servlet Wrapper:如何维护Servlet生命周期及实现容器管理?
  • 11| 多层容器:如何通过实现Context与Wrapper形成多层容器?
  • 12|Pipeline与Valve:如何实现容器间的调用、事务管理、权限验证?
  • 13|Filter与Listener:如何实现过滤和持续监听?

第四章 完成 MiniTomcat

  • 14|多应用支持:拆分Context、BootStrap与路由转发
  • 15|类加载机制的改变:如何自定义ClassLoader?
  • 16|大功告成:完成MiniTomcat

第五章 扩展讨论

  • 17|更大的框架:MiniSpring与MiniTomcat集成
  • 18|高并发探讨:如何支持 NIO?
  • 19|Servlet与NIO的协同:如何在NIO模式下调用Servlet?

结束语

  • 结课测试|来赴一场满分之约
  • 结束语|像地质学家一样奋力往下挖

作者介绍

郭屹,中国 Java 研发工程师鼻祖之一,曾在 Sun Microsystems 公司 Java 研发中心担任 J2EE 研发工程师,同时他也是 JDBC Driver、Minis 开发者,Norming 软件国际 CTO。 在长达 30 余年的编程生涯中,他经历了Java 技术的飞速发展,积累了丰富的行业经验和技术实践,有 MiniSpring、MiniTomcat、MiniRedis、MiniLanguage 等几款开源作品。除此之外,他还十分乐于分享自己的知识和经验,是技术类书籍《认识编程》和《Java 编程十五讲》的作者,一直以来都在通过写作、讲演等方式推动着编程社区的发展。

作者其他课程

手把手带你写一个MiniSpring - 极客时间课程推荐/分享/优惠/折扣
手把手带你写一个MiniSpring
8周搭建一个可用的Spring框架
郭屹前 Sun Microsystems Java 研发工程师,开源软件 MiniSpring、MiniTomcat 开发者
专栏 | 6740人已学习
优惠价¥59原价:99
官网优惠购买

推荐

Midjourney入门实践课 - 极客时间课程推荐/分享/优惠/折扣
Midjourney入门实践课
零基础小白,无障碍玩转 Midjourney
Jovi某大厂专家委员,高级产品专家
视频课 | 815人已学习
优惠价¥59原价:129
官网优惠购买
大模型应用开发实战 - 极客时间课程推荐/分享/优惠/折扣
大模型应用开发实战
AI 时代下的自然语言编程范式第一课
黄佳新加坡科研局资深研究员
专栏 | 2981人已学习
优惠价¥59原价:99
官网优惠购买
推荐系统三十六式 - 极客时间课程推荐/分享/优惠/折扣
推荐系统三十六式
解决你推荐系统80%的问题
刑无刀“贝壳找房”资深算法专家,8年推荐系统工程师
专栏 | 44186人已学习
优惠价¥59原价:129
官网优惠购买
性能工程高手课 - 极客时间课程推荐/分享/优惠/折扣
性能工程高手课
得性能者得天下
庄振运Facebook性能优化和容量管理高级专家
专栏 | 25302人已学习
优惠价¥59原价:129
官网优惠购买
玩转webpack - 极客时间课程推荐/分享/优惠/折扣
玩转webpack
全方位掌握webpack核心技能和优化策略
程柳锋腾讯高级工程师,IVWEB团队社区和工程化负责人
视频课 | 27687人已学习
优惠价¥68原价:199
官网优惠购买
Vue 3 企业级项目实战课 - 极客时间课程推荐/分享/优惠/折扣
Vue 3 企业级项目实战课
进阶高手的 Vue 3+Node.js 全栈开发训练
杨文坚前阿里前端 Leader,前腾讯 IMWeb 团队高级前端工程师
专栏 | 7882人已学习
优惠价¥59原价:129
官网优惠购买