摘要: 如果你想看 Tomcat 源码但又无从入手,不妨从这个项目开始,代码量不多,但包含了 Tomcat 的核心处理流程,并且源码中 有相当丰富的注释 。相信通过此项目你能了解: NIO 基本编程、HTTP 协议的本质、基本的单元测试 Tomcat 应用部署、自定义类加载器的实现、Servlet 的管理和 阅读全文
posted @ 2019-07-04 13:29 小创 阅读(899) 评论(0) 推荐(1) 编辑
摘要: 之前在整理 "《学习排序算法,结合这个方法太容易理解了》" 这篇文章时,发现了一个用 Java Swing 编写的可视化算法工程,真心不错!包含了常用数据结构和算法的动态演示,先来张图感受下: 可以看到既有基本数据结构栈、队列基于数组和链表的元素插入和删除的动态演示,又有二叉查找树、平衡二叉树、B 阅读全文
posted @ 2019-06-12 12:52 小创 阅读(1000) 评论(0) 推荐(0) 编辑
摘要: HashMap 有一个不足之处就是在 迭代 元素时与 插入顺序不一致 。而大多数人都喜欢按顺序做某些事情,所以,LinkedHashMap 就是针对这一点对 HashMap 进行扩展,主要新增了 「两种迭代方式」 : 按插入顺序 保证迭代元素的顺序与插入顺序一致 按访问顺序 一种特殊的迭代顺序,从最 阅读全文
posted @ 2019-06-10 09:46 小创 阅读(1674) 评论(0) 推荐(0) 编辑
摘要: 排序 是一个经典的问题,它以一定的顺序对一个数组或列表中的元素进行重新排序。而排序算法也是各有千秋,每个都有自身的优点和局限性。虽然这些算法平常根本就不用自己去编写,但作为一个有追求的程序员,还是要了解它们从 不同角度 解决排序问题的思想。 学习算法是枯燥的,那怎么高效的理解它的原理呢?显然,如果以 阅读全文
posted @ 2019-06-03 09:43 小创 阅读(2877) 评论(19) 推荐(18) 编辑
摘要: Tomcat 集群是当单台服务器达到性能瓶颈,通过横向扩展的方式提高整体系统性能的有效手段。Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,可以通过简单的配置实现 Tomcat 集群的负载均衡。 本文使用的 Tomcat 是 8.5.35 版本,Nginx 是 1.14.2 版本。 阅读全文
posted @ 2019-05-28 09:25 小创 阅读(1286) 评论(1) 推荐(2) 编辑
摘要: HashMap 可以说是使用频率最高的处理键值映射的数据结构,它不保证插入顺序,允许插入 null 的键和值。本文采用 JDK8 中的源码,深入分析 HashMap 的原理、实现和优化。首发于微信公众号 顿悟源码 . 1. 基本结构 HashMap 基于散列表实现,使用 拉链法 处理碰撞,在 JDK 阅读全文
posted @ 2019-05-22 18:10 小创 阅读(5880) 评论(4) 推荐(1) 编辑
摘要: 大量的 Web 应用都有 安全 相关的需求,正因如此,Servlet 规范建议容器要有满足这些需求的机制和基础设施,所以容器要对以下安全特性予以支持: 身份验证:验证授权用户的用户名和密码 资源访问控制:限制某些资源只允许部分用户访问 数据完整性:能够证明数据在传输过程中未被第三方修改 机密性或数据 阅读全文
posted @ 2019-05-20 08:45 小创 阅读(1799) 评论(0) 推荐(1) 编辑
摘要: HTTP 是一种 无状态 通信协议,每个请求之间相互独立,服务器不能识别 曾经来过 的请求。而对于 Web 应用,它的活动都是 依赖某个状态 的,比如用户登录,此时使用 HTTP 就需要它在一次登录请求后,有为后续请求提供已登录信息的能力。本文首发于公众号 顿悟源码 . 解决办法就是使用 Cooki 阅读全文
posted @ 2019-05-13 08:36 小创 阅读(3961) 评论(2) 推荐(1) 编辑
摘要: Tomcat 内部定义了多个 ClassLoader,以便应用和容器访问不同存储库中的类和资源,同时达到应用间类隔离的目的。本文首发于公众号: 顿悟源码 。 1. Java 类加载机制 类加载就是把编译生成的 class 文件,加载到 JVM 内存中(永久代/元空间)。 类加载器之所以能实现 类隔离 阅读全文
posted @ 2019-05-09 08:50 小创 阅读(1936) 评论(1) 推荐(1) 编辑
摘要: Tomcat 中的请求都是由 Servlet 处理,静态资源也不例外。在默认的 web.xml 中,配置了一个 DefaultServlet 用于处理静态资源,它支持缓存和断点续传。 DefaultServlet 的基本处理过程如下: 1. 查找资源是否存在缓存 2. 检查是否满足可选 If 头域指 阅读全文
posted @ 2019-05-07 08:40 小创 阅读(8012) 评论(0) 推荐(1) 编辑