【深入剖析Tomcat笔记】第一篇 基础知识储备

基础知识储备

最近突然在想,做了这么久的WEB相关,像tomcat、apache这些服务器究竟是什么东西,恰好碰到《How Tomcat Works》(中文版《深入剖析Tomcat》),阅读这本书时的感觉就像雾霾一周的北京终于放晴。作者一步一步讲解了如何自己写一个ServerContainer,从最基本的ServerSocket + Socket到后边的复杂模型,剥丝抽茧的将ServerContainer的发展以及采用对应的模式的优劣势放大展示,不是像很多书仅仅只是点到一个点。这样深入纹理的剖析,一方面很多改进优化的思路,我们完全可以融入我们自己的业务引擎,另外一方面,教会我们如何分析业务引擎。
初识这本书到今天已经两个月了,因为各种原因没有对这本书做一个整理,最近一段时间,打算结合这本书和读书笔记,做一整套记录。
这本书由浅入深的讲解了Tomcat的实现,感觉英文版的副标题更能突出这本书的主要内容《A Guide to Developing Your Own Java Servlet Container》
这本书适合有 一定代码量的工程师,如果代码量不够不推荐阅读,这本书真正的精华是分析和优化的技巧,代码量不够阅读这本书可能感觉比较枯燥,而且对这本书的理解止于表层。

这本书需要一些一些基础的知识,因为是从头开始写,笔者虽然经常自己做一些读书笔记,但很多也没有整理放到博客上,长篇连载这也是第一次,不足之处希望海涵。此篇是系列文章的开头,用于补充基础知识,所以会不定期更新。

Tomcat和容器

第一次接触Tomcat,apache这些服务器的时候,我们把写好的程序部署到服务器上,服务器就可以直接运行。但实际上我们不知道服务器究竟做了什么事情。

The Apache Tomcat® software is an open source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket technologies. The Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket specifications are developed under the Java Community Process.

官方对于Tomcat解释如上文,tomcat 是一种软件,用于实现Java servlet, JSP , Java语言特性支持和JAVA WebSocket相关。

这么解释比较抽象,更喜欢书上对于Tomcat的解释,Tomcat是一个免费的、开源的、受欢迎的容器

什么是容器?这几年Docker带动这个词火热了起来,Contianer其实是一种封闭,提供特殊环境的软件,我们只需把需要托管的服务放在容器里边,对于资源的控制由容器统一进行管理。其实Tomcat也是这样的一种容器,我们将WEB服务托管于Tomcat,统一的资源调度由Tomcat实现。

Socket

记得在大学的时候,第一次用过程序实现网络连接是通过socket,那时候感觉这个东西很神奇,一个Server端一个Socket端就可以实现相互通信。可惜当时没有深究这个神奇的东西。

A network socket is an endpoint for sending or receiving data at a single node in a computer network.

Socket是一种端点利用网络进行点对点接受或发送信息。Java中实现简单的Socket连接,可以使用ServerSocket 和 Socket进行实现。Socket是基于传输层进行连接,所以在Socket层面进行的是二进制流连接。通过Socket我们可以解决一个容器最基本的连接问题。

HTTP协议

对于Http协议相信大家不陌生,但又不是那么熟悉。现在虽然我们经常能碰到RPC、SMTP等协议,但不可否认Http协议依然是我们适用性最广的一种语言,虽然经历过了SOAP到Restful的设计改变,但Http协议健壮性和易用性确实经历了时间的考验。这点十分佩服Tim Berners-Lee。

以下是一个常见的Http Head

POST /examples/default.jsp HTTP/1.1 
Accept: text/plain; text/html 
Accept-Language: en-gb 
Connection: Keep-Alive 
Host: localhost 
User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98) 
Content-Length: 33 
Content-Type: application/x-www-form-urlencoded 
Accept-Encoding: gzip, deflate 

基本结构如下

Method URI HTTP协议版本
KEY: VALUE

注意空格和回车在HTTP协议里边是语法结构

Method 包括 POST GET DELETE PUT HEAD TRACE OPTIONS CONNECT
URI 这个好理解
HTTP协议版本主要是 1.1

前三项是基于HTTP请求所必须的,后边的K-V都是对于资源的描述

KEY是相关的HTTP Header具体信息大家可以自行参阅附属的RCF
VALUE是Key的值

关于HTTP详细内容大家可以自行参阅

2068 Hypertext Transfer Protocol – HTTP/1.1
2616 Hypertext Transfer Protocol – HTTP/1.1
Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing

附Git项目:
简单服务模型
Servlet服务模型

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值