- 博客(7)
- 收藏
- 关注
原创 Tomcat源码学习笔记 - Connector组件(二)
前言上一篇文章讲到Poller处理完之后,交给SocketProcessor执行处理,这篇就详细记录下这个处理过程。SocketProcessorSocketProcessor实现Runnable接口,对外暴露run()方法,内部封装doRun()。protected class SocketProcessor extends SocketProcessorBase<NioChann...
2019-04-30 01:10:13
243
原创 Tomcat源码学习笔记 - Connector组件(一)
Connector组件Tomcat作为一款web容器,响应处理请求,需要与底层数据做交互,而Connector组件就是Service服务与Socket套接字之间的桥梁。Coyote框架是Tomcat默认的Connector,在org.apache.coyote包下,当然我们也可以自己实现自定义的Connector适配。Connector数据结构关于Connector,有两个非常重要的接口,P...
2019-04-30 01:09:43
356
原创 Tomcat源码学习笔记-整体架构
前言Tomcat作为目前非常流行的web容器,其架构设计是非常值得我们借鉴的,它的生命周期管理、多级容器的协调工作,同时在Tomcat中运用了很多设计模式。顶层架构Tomcat的架构设计非常的模块化,从上图可以看出最上层为Server服务器,为Service服务提供一个生存环境,掌握每个Service服务的生命周期,而每个Service则是对外提供的服务。而每个Service包含两个核心...
2019-04-30 01:08:36
208
原创 JDK动态代理-二级缓存实现机制
前言 代理模式为对象提供一种代理以控制对这个对象的访问,而Java动态代理就是代理模式的一种实现,其优势是实现无侵入式的代码扩展,也就是方法的增强,让我们可以在不用修改源码的情况下,增强一些方法,比如在方法的前后做一些日志记录等等。测试代码/** * @Description: 代理的对象必须实现接口 */interface Subject{ void rent();...
2019-03-10 20:29:05
729
原创 深入理解单例模式
前言 单例模式有很多种形式:饿汉式、懒汉式、DCL(双重校验)、静态内部类、容器单例、ThreadLocal单例,具体代码请查看单例模式的7种形式。本文着重记录下序列化、反射攻击对单例的破坏以及相应的解决方案,最后简单介绍下枚举单例在这两个方面的优势以及其实际应用。序列化破坏单例 一个栗子来看序列化对单例的破坏:// 序列化对单例的破坏,以饿汉为例ObjectOutputStream...
2019-01-16 00:26:49
182
原创 用python为Gitalk博客评论插件自动化创建issue
前言 由于Disqus在国内加载比较慢,所以选了Gitalk作为博客的评论插件,支持markdown语法。但是Gitalk 需要手动初始化所有文章的评论或者一个一个点开界面才会创建对应的 issue,非常麻烦。这篇 自动初始化 Gitalk 和 Gitment 评论,解决了这个问题,但是自己不会Ruby,所以用python写一个脚本,顺便记录下自己踩坑的过程。sitemap sitema...
2019-01-16 00:26:08
346
原创 由“String不可变”引发的一些思考
字符串常量池 JVM为了字符串的服用,减少字符串对象的重复创建,特别维护了一个常量池。 jdk1.7之前的版本,常量池存放在方法区,方法区和JAVA堆一样,是各个线程共享的内存区域,用于存储已经被虚拟机加载的类信息、常量、静态常量、JIT编译后的代码等。在java虚拟机规范中将方法区描述为堆的一个逻辑部分,也被叫做Non-Heap(非堆)。经常遇到的一个错误:java.lang.OutOf...
2019-01-16 00:24:57
111
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人