读书笔记
文章平均质量分 80
sixPence223
这个作者很懒,什么都没留下…
展开
-
《How Tomcat Works》第五章:容器
上一章讲完了复杂的默认连接器,这一章介绍的是容器。容器呢,是用来处理servlet请求并填充返回对象给web客户端的模块。接口Container定义了容器的形式,容器分为这四种:Engine:表示整个Catalina的serlvet引擎Host:表示一个拥有数个上下文(Context)的虚拟主机Context:表示一个Web应用,包含多个包装器(Wrapper)Wrapper:表示一个...原创 2018-07-09 11:31:58 · 145 阅读 · 0 评论 -
装饰者模式详解
让我们首先来看一下装饰者模式的定义: 装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。看到这个定义我们很容易就能想到两个问题:责任是怎么动态地附加在对象上的呢?装饰者模式哪里比继承好?为了得到这两个问题的答案,下面我们就来看看UML图和具体的代码。 从上面的UML图可以看到,concreteComponent和Decorat...原创 2018-07-27 23:40:34 · 439 阅读 · 0 评论 -
设计模式之策略模式
看那本《head first desgin pattern》也有一段时间了,是时候整理一下对刚学习到的设计模式了,这里具体的例子就不举了,就是记录一下自己的理解。 书本开篇第一个模式就是“策略模式”,刚开始对继承提出了问题,继承虽然能够复用代码,但是继承了超类的子类的行为就被定死了,出现了书中“橡皮鸭子”也会飞的笑话,然后自然就想到,我们能不能把超类的行为提取出来呢?然后让子类去继承不就得了?没...原创 2018-07-22 22:31:48 · 99 阅读 · 0 评论 -
工厂方法模式详解
这一章我们来总结一下工厂方法模式与抽象工厂方法模式,接下来的内容分为这三个部分:工厂方法模式是什么?抽象工厂方法模式是什么?上述两种模式的区别是什么?首先来一个工厂方法模式的定义: 工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到了子类。那么工厂方法是具体怎么推迟实例化的呢?下面来看实际的代码 根据上图我们可以看...原创 2018-07-28 23:59:47 · 178 阅读 · 0 评论 -
设计模式之观察者模式
这篇文章来总结一下观察者模式,首先,观察者模式的定义: 观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。 如上图所示,Observer作为观察者,subject主题做为被观察者,打个比方,主题是一家报社,它有注册用户,移除用户,通知用户的功能,而用户作为观察者只需要等待报社定期发报纸就行了(通知)。下面我们结合代码来近...原创 2018-07-25 20:47:37 · 131 阅读 · 0 评论 -
《How TomCat Works》第四章:默认连接器
上篇文章实现的连接器是十分简陋的,这一章就比较复杂了。首先默认连接器这个名字,现在tomcat用的连接器是Coyote,默认连接器由于性能的问题已经弃用了,但是这个连接器仍然是个很好的学习工具。这一章和前一章最大的区别就是加入了多线程,我会用自己的理解试着阐述清楚这个场景。 首先来看一下UML图: connector.initialize();connector.start();...原创 2018-07-04 21:03:34 · 289 阅读 · 1 评论 -
《How Tomcat Works》第三章:连接器
前面第二章讲的是简单的servlet容器,其中HttpServer类负责等待Http请求,然后构建解析request,response,之后再通过ClassLoader调用servlet的service方法或者说直接调用静态资源。到了第三章,就将上一章中的HttpServer类中的等待接受Http请求与解析request,response两大职责拆分了开来,前者成为了HttpConnector...原创 2018-07-04 16:16:54 · 207 阅读 · 0 评论 -
《How Tomcat Works》第七章:日志记录器
这一章介绍的是一个小组件,日志记录器。首先这个组件是由Logger接口定义的,我们来看一下接口定义的日志级别: /** * Verbosity level constants for log messages that may be filtered * by the underlying logger. */ public static final...原创 2018-07-10 22:35:22 · 115 阅读 · 0 评论 -
《How Tomcat Works》第八章:类加载器
这一章的主要内容分为三大部分,第一个部分讲了jvm的“委派模型”,第二部分与第三部分分别是WebappLoader类与WebappClassLoader类。jvm委派模型 在讲这个类加载器的委派模型之前,我们来思考一个问题?到底什么是类加载器呢?我们可以在书中找到这个答案: 虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外...原创 2018-07-16 16:01:35 · 163 阅读 · 0 评论 -
《How Tomcat Works》第六章:生命周期
一个完整的Web容器是由许多组件组成的,在容器启动时,这些组件必须全部要启动,并且初始化,当容器停止时,它们也要清除。(例如servlet要调用destory方法)保持组件启动和停止一致的机制就是通过LifeCycle接口来实现的。 public static final String START_EVENT = "start"; public static final St...原创 2018-07-09 19:52:23 · 141 阅读 · 0 评论 -
《How Tomcat Works》第二章:简单的servlet容器
本章呢是讲解如何开发一个简单的servlet容器,首先所有的servlet必须要实现javax.servlet.Servlet接口,如下:public interface Servlet { void init(ServletConfig var1) throws ServletException; ServletConfig getServletConfig(); ...原创 2018-07-02 23:20:38 · 281 阅读 · 0 评论 -
《How Tomcat Works》第一章:简单的Web容器
TomCat是常用的Web容器,我也使用了快一年了,但是平时出错的时候总是摸不着头脑,错误日志看不懂就抓瞎,所以这次看借着这本经典的书来看一看Tomcat的源码,希望能有所进步。 第一章是搭建一个简单的Web Serverpublic class HttpServer { ... public static void main(String[] args) { ...原创 2018-07-02 22:15:52 · 215 阅读 · 0 评论 -
设计模式之单例模式
单例模式很好理解,就是对象只有一个唯一的实例,实际工程中,有很多例子,比如:线程池、缓存、日志对象等。那么如何实现单例模式呢?我们先来看一下经典的实现方法:public class Singleton { private static Singleton uniqueInstance; private Singleton() {} public static Sin...原创 2018-08-01 21:25:38 · 124 阅读 · 0 评论