- 博客(6)
- 问答 (1)
- 收藏
- 关注
原创 Tomcat源码五部曲(四)、类加载器
在Tomcat中提供了三个基础的类加载器和Web应用类加载器,如下图,绿色是JDK本身类加载器,蓝色则为Tomcat定义的类加载器,这三个类加载器指向的路径和包列表可以由catalina.properties配置,此文件位于Tomcat_Home/conf下。Common他以System为父类加载器,是用于加载Tomcat应用服务器顶层的公用类加载器,其路径为common.loader,默认...
2020-04-28 09:19:49 226
原创 并发ScheduledThreadPoolExecutor源码分析
ScheduledThreadPoolExecutor是一个可以在指定一定延时时间后或者定时进行任务调度的线程池,ScheduledThreadPoolExecutor继承了ThreadPoolExecutor并实现了ScheduledExecutorService接口。线程池的队列是DelayedWorkQueue(他是ScheduledThreadPoolExecutor的一个内部类)。还...
2020-04-27 14:28:16 232
原创 Guava与RateLimiter限流
什么是Guava?Guava是Google的一组核心Java库,提供了很多设计精良、使用方便的工具类,它广泛用于Google的大多数Java项目中,也被许多其他公司广泛使用。其中就包含一款限流工具RateLimiter。首先我们当然要引入他。 <dependency> <groupId>com.google.guava</groupId> ...
2020-04-26 15:27:05 276
原创 Tomcat源码解析五部曲三、请求处理流程
Tomcat处理Http请求又是非常难的一步,在这里只总结一下大概。处理请求主要涉及到这么几个类,Acceptor、Poller、Mapper、CoyoteAdapter、Processor、ProtocolHandler等。还有好多Acceptor:在第一章也提到过,当Connector启动时,也会启动他内部的Endpoint,Endpoint并行运行多个线程,每个线程运行着一个Accept...
2020-04-13 21:39:04 297
原创 Tomcat源码解析五部曲二、Web项目加载过程
在上一章说过,当StandardContext被添加到StandardHost下,会触发StandardContext的start方法进行启动,首先自然是调用StandardContext的initInternal(),接着是startInternal(),initInternal()也没做多少关键的事,而startInternal()又过于多,300的方法实在很难分析,所以,还是只找几个关键的地...
2020-04-06 10:39:06 435
原创 Tomcat源码五部曲一、启动过程
Tomcat源码确实复杂,没个几星期还真是搞不清楚。网上的文章也太水了,大部分只说了下Tomcat各个组件的用途,就连最开始一个很重要的Digester都没讲,很多你想搞清楚的问题的没说,比如Tomcat如何初始化我们编写的Sevlet,又如何把请求映射到指定的Servlet,以及没有找到对应资源又如何处理。这篇主要记录Tomcat的启动流程,以及为后续Web请求处理所做的一些铺垫。同样也来了...
2020-04-02 15:04:49 311
空空如也
Linux c下char[2]为什么能输入9个字符
2021-10-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人