目录 相关概念介绍实现原理介绍源码分析总结参考地址 相关概念介绍 数组采用一段连续的存储单元来存储数据。 线性链表具有链接存储结构的线性表,它用一组地址任意的存储单元存放线性...
一、NIO Reactor模型 1、Reactor模式思想:分而治之+事件驱动 1)分而治之 一个连接里完整的网络处理过程一般分为accept、read、decode、pro...
前言 上一篇中已经分析了ReentrantLock,下面我们来看一下读写锁ReentrantReadWriteLock。在这之前,先看一下其结构图: ReadLock/Wri...
前言 上一篇中已经分析了关键的AQS抽象队列同步器,下面我们来看一下使用AQS来实现的可重入独占锁ReentrantLock。ReentrantLock是可重入的独占锁,同时...
前言 本文是对并发编程中的锁一个系统性总结。 什么是死锁 1. 定义:theadA已经持有了资源2,同时还想申请资源1,theadB已经持有了资源1,同时还想申请资源2,所以...
前言 前面两篇已经介绍了Acceptor、Poller和SocketProcessor的处理流程,下面我们来具体看一下后续流程,如何一步一步的将scoket转换成Reques...
前言 前面已经初步分析请求流程,下面我们继续。 Poller流程处理 从上一篇直到Acceptor接受到请求并注册到Poller中的events缓存栈中,下面来想起看一下Po...
前言 在前面[Tomcat学习笔记之启动分析(Connector)(七)]一文中,介绍了Connector容器的初始化与启动,这里以NioEndpoint为例,详细分析一下请...
前言 在Container启动一篇中设计到很多关于管道的,这里做一篇详细的介绍。 整体结构 在[Tomcat学习笔记之启动分析(Container)(六)]一文中设计到很多P...
前言 上面一篇主要介绍了Container,下面我们来看下Connector容器。 Connector结构图 Connector具体是用ProtocolHandler来处理请...
前言 通过上面一篇的介绍,Service主要启动了Container和Connector,我们先来看Container容器。 Container的子类关系图 Containe...
前言 通过上面一篇的介绍,我们开始分析Service的启动过程。 initInternal()方法 流程比较清晰,不做详细介绍。这里看下几个初始化的容器: EngineEng...
前言 通过上面一篇关于生命周期的介绍,我们知道子类只要实现#initInternal()和#startInternal()方法即可。 initInternal()方法 从上面...
前言 在Catalina启动完成后,接下来就应该是Server的启动分析,但是由于后面的组件都与Lifecycle密不可分,所以这里先介绍Lifecycle机制。 生命周期 ...
Catalina启动分析 1. #load()方法: 主要流程如下: 解析conf/server.xml并创建Server对象,赋值Catalina,Server的相关属性...