- 博客(12)
- 资源 (23)
- 收藏
- 关注
原创 String字符常量池和intern()
常量池(Constant Pool)指的是在编译期被确定,并被保存在已编译的class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。 JVM在运行的时候,会装进存在于.class文件中的常量池。 常量池在运行中,是可以扩展的,如String.intern()方法:先检查常量池里有没有相同Unicode的常量,没有则添加,然后返回此String的引用。
2013-05-31 00:45:16 1525
原创 初探Tomcat源码 —— 关闭钩子
在Tomcat中,通过Catalina的start()来启动服务器Server等组件;然后监听ShutDown命令来调用stop()关闭。 但是,如果程序没有走上面的流程,非正常关闭,那么stop()的逻辑就没法执行了。幸运的是,和Java的shutdown钩子一样,Tomcat也提供了自己的关闭钩子。JVM的关闭钩子可以参考我的《JVM关闭钩子(2)—— 源码浅析》,主要是
2013-05-22 21:53:54 2746
原创 JDK-Map源码浅析——IdentityHashMap
java.util.IdentityHashMap 类也是一种哈希表实现的Map接口,该类不是 通用 Map 实现。此类实现 Map 接口时,它有意违反 Map的常规协定,比较键/值时使用引用相等性代替对象相等性,不使用hashcode,而只使用Object.equals()。 这里相等性比较的是地址:key1==key2,所以只有两个对象的地址相等才认为相等,是最严格的相等条件
2013-05-16 20:22:08 1521
原创 JVM关闭钩子(2)—— 源码浅析
上一篇《JVM关闭钩子(1)—— 概念和应用》简单解释了什么是钩子,并且举例说明了Java中关闭钩子的使用,现在我们来深入了解,Java中怎么实现这个关闭钩子的。 主要通过java.lang.Shutdown和java.lang.ApplicationShutdownHooks 这两个工具类来实现。Shutdown负责触发钩子,而ApplicationShutdownHook
2013-05-16 03:46:25 3351
原创 JVM关闭钩子(1) —— 概念和应用
Hook-钩子钩子(Hook) ,是一个处理消息的程序段,用于Windows消息处理机制,通过系统调用,把它挂入系统,当特定事件触发的时候执行。 如键盘钩子截获键盘消息,外壳钩子截取、启动和关闭应用程序的消息等。钩子也可以理解为WINDOWS留给我们的后门,通过钩子可以参与到WINDOWS事件的处理。很多木马程序就是通过添加钩子来监视用户的行为。 相当于我们先建立一个事件列表,然
2013-05-16 02:53:53 1783
原创 初探Tomcat源码 (8) —— Session_StandardSession
上一章讨论过Tomcat5.0中Catalina通过Manager来完成session的管理,这章我们来看看Session的标准实现:StandardSession。StandardSession StandardSession除了实现了javax.servlet.http.HttpSession和org.apache.catalina.Session之外,它还实现了
2013-05-08 01:53:23 1823
原创 初探Tomcat源码 (7) —— Session_Manager
HTTP协议本身是无状态的,客户端只需要简单的向服务器请求下载某些文件,无论是客户端还是服务器都没有必要纪录彼此过去的行为,每一次请求之间都是独立的,好比一个顾客和一个自动售货机的关系一样。但是很多时候,我们需求区分用户发来的请求是否来自于同一个浏览器,例如用户只用登陆一次,就可以了,后来的请求都带着这个登陆信息,就不用重复登陆了。所以客户端和服务器端的交互,需要携带一部分的状态信息,Co
2013-05-07 20:43:29 1016
原创 初探Tomcat源码 (6) —— Cookie
HTTP协议本身是无状态的,客户端只需要简单的向服务器请求下载某些文件,无论是客户端还是服务器都没有必要纪录彼此过去的行为,每一次请求之间都是独立的,好比一个顾客和一个自动售货机的关系一样。但是很多时候,我们需求区分用户发来的请求是否来自于同一个浏览器,例如用户只用登陆一次,就可以了,后来的请求都带着这个登陆信息,就不用重复登陆了。所以客户端和服务器端的交互,需要携带一部分的状态信息,Co
2013-05-07 12:43:43 1423
原创 初探Tomcat源码 (4) —— Catalina容器结构
Tomcat是一个由一系列可配置的组件构成的Web容器,而Catalina是Tomcat的servlet容器。Catalina主要组件的结构如下: 如上图所示,Catalina负责管理Server,而Server表示着整个服务器。Server下面有多个服务Service,每个服务都包含着多个连接器组件Connector和一个容器组件Co
2013-05-05 19:58:52 2062 1
原创 初探Tomcat源码 (3) —— SimpleHttpServer
前面分别介绍了Http的请求响应,以及Socket的通信,现在整合起来,看请求响应怎么通过Socket来交互通信。 我们通过下面一个简单ServerSocket的应用,来把Request和Response融入到Socket的传输通信中。 /** * 模拟简单的服务器端 */publicclass SimpleHttpServer { publ
2013-05-05 13:01:58 1042
原创 初探Tomcat源码 (2) —— Socket
网络中进程之间的通信,Request和Response的交互就是通过Socket来是实现的。这需要唯一地标识一个进程。 在本地可以通过进程PID来唯一标识一个进程,但是在网络需要用另一种方式标识:利用三元组(IP地址,协议,端口)来标识网络的进程。网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。因此: Socke
2013-05-05 04:31:23 1180
原创 初探Tomcat源码 (1) —— Http请求和响应
HTTP (HTTP-Hypertext transfer protocol),超文本传输协议,是超媒体系统应用之间的通信协议。是一个让网络客户端和服务器端相互传输交互的协议,是Request和Response的协议,简单来说,就是Client发送请求Request,而Server响应请求Response。 【另外,在HTTP中,服务器端不能主动连接客户端,都是客户端先请求,服务
2013-05-05 04:19:27 1474
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人