摘要: HashMap 可以说是使用频?#39318;?#39640;的处理键值映射的数据结构,它不保证插入顺序,允许插入 null 的键和值。本文采用 JDK8 中的源码,深入分析 HashMap 的原理、实现和优化。首发于微信公众号 顿悟源码 . 1. 基本结构 HashMap 基于散列表实现,使用 拉链法 处理碰撞,在 JDK阅读全文
posted @ 2019-05-22 18:10 wskwbog 阅读(218) 评论(0) 编辑
摘要: 大量的 Web 应用都有 安全 相关的需求,正因如此,Servlet 规范建议容器要有满足这些需求的机制和基础设施,所以容器要对以下安全特性予以支持: 身份验证:验证授权用户的用户名和密码 资源访问控制:限制某些资源只允许部分用户访问 数据完整性:能够证明数据在传输过程中未被第三方修改 机密性或数据阅读全文
posted @ 2019-05-20 08:45 wskwbog 阅读(216) 评论(0) 编辑
摘要: HTTP 是一种 无状态 通信协议,每个请求之间相互独立,服务器不能识别 曾经来过 的请求。而对于 Web 应用,它的活动都是 依?#30340;?#20010;状态 的,比如用户登录,此?#31508;?#29992; HTTP 就需要它在一次登录请求后,有为后续请求提供已登录信息的能力。本文首发于公众号 顿悟源码 . 解决办法就是使用 Cooki阅读全文
posted @ 2019-05-13 08:36 wskwbog 阅读(306) 评论(2) 编辑
摘要: Tomcat 内部定义了多个 ClassLoader,以便应用和容器访问不同存储库中的类和资源,同时达到应用间类隔离的目的。本文首发于公众号: 顿悟源码 。 1. Java 类加载机制 类加载就是把编译生成的 class 文件,加载到 JVM 内存中(永久代/元空间)。 类加载器之所?#38405;?#23454;现 类隔离阅读全文
posted @ 2019-05-09 08:50 wskwbog 阅读(313) 评论(1) 编辑
摘要: Tomcat 中的请求都是由 Servlet 处理,静态资源也不例外。在默认的 web.xml 中,配置了一个 DefaultServlet 用于处理静态资源,它支持缓存和?#31995;?#32493;传。 DefaultServlet 的基本处理过程如下: 1. 查找资源是否存在缓存 2. 检查是否满足可选 If 头域指阅读全文
posted @ 2019-05-07 08:40 wskwbog 阅读(314) 评论(0) 编辑
摘要: 在分析 Tomcat 实现之前,首先看一下 Servlet 规范是如何规定容器怎么把请求映射到一个 servlet。本文首发于(微信公众号: 顿悟源码 ) 1. 使用 URL 路径 收到客户端请求后,容器根据请求 URL 的上下文名称匹配 Web 应用程序,然后根据去除上下文路径和路径参数的路径,按阅读全文
posted @ 2019-05-06 08:59 wskwbog 阅读(207) 评论(0) 编辑
摘要: Digester 是一个依据 xml 配置文件动态构建 Java 对象树的工具,基于 SAX 解析器进行封装,它为 SAX ?#24405;?#30340;处理提供了更高级和友好的接口,?#27599;?#21457;更专注于要执行的处理,隐藏了 XML 元素详细的层次结构信息。 1. 对象堆栈 为了便于实现,内部使用 堆栈 存储创建的对象。当满足元阅读全文
posted @ 2019-05-05 09:04 wskwbog 阅读(228) 评论(0) 编辑
摘要: Tomcat 容器是对 Servlet 规范的实现,也称为 Servlet 引擎。在分析 Tomcat 容器的设计和实现之前,首先简单了解一下 Servlet 规范,弄清楚 Tomcat 究竟要实现什么? 1. Servlet 规?#37117;?#36848; Servlet 是什么?javadoc 中已经明确说明: Se阅读全文
posted @ 2019-04-30 17:43 wskwbog 阅读(338) 评论(0) 编辑
摘要: List 表示的就是线性表,是具有相同特性的数据元素的有限序列。它主要有两种存储结构,顺序存储和链式存储,分别对应着 ArrayList 和 LinkedList 的实现,接下来以 jdk7 代码为例,对这两种实现的核心源码进行分析。 1. ArrayList 源码分析 ArrayList 是基于 阅读全文
posted @ 2019-04-24 13:34 wskwbog 阅读(353) 评论(1) 编辑
摘要: 在《Tomcat 对 HTTP 协议的实现(上)》一文中,对请求的解析进行了分析,接下来对 Tomcat 生成响应的设计和实现继续分析。本文首发于(微信公众号: 顿悟源码 ) 一般 Servlet 生成响应的代码是这样的: 像生成响应头和响应体并写入缓冲区,最后写入通道,这些都由 Tomcat 来做阅读全文
posted @ 2019-04-22 15:48 wskwbog 阅读(274) 评论(0) 编辑
耐克篮球多少钱