Tomcat作为开源的轻量级WEB服务器,虽然不是很适合某些大型项目,但是它开源,读其源代码可以很好的提高我们的编程功底和设计思维.Tomcat中用到了很多比较好的设计模式,其中代码风格也很值得我们去效仿.前阵子看了Tomcat源码分析这本书,特此过来分享分享自己的学习过程记录.说得不好,大神不要喷我. 也不废话了,直入主题上代码.Tomcat是什么,Tomcat是一个web服务器,能够接收请求,作出响应.接收请求,作出响应让我们联想到Socket编程.我们可以起一个线程服务ServerSock…
Tomcat源码学习(1) IntelliJ IDEA 17.3.3 导入 Tomcat 9.0.6源码 下载源码 tomcat_9.0.6 启动 IDEA. 点击 Open,选择刚才下载的文件解压后的路径. 打开后,在项目上右击鼠标,选择Add Framework Support , 然后点击 maven . 设置maven pom 文件. 根据本机jdk版本设置 pom 中的版本 <build> <plugins> <plugin> <artifactId&g…
Tomcat源码学习(一) 转自:http://carllgc.blog.ccidnet.com/blog-htm-do-showone-uid-4092-type-blog-itemid-263093.html 下面我们就开始我们的Tomcat源码学习之旅. 1. 下载Tomcat6.0的源代码 首先,我们得下载Tomcat6.0的源代码.Tomcat源代码的版本控制工具不是CVS,而是Subversion,如果您的机器上没有安装Subversion,请从 http://subversion.…
Tomcat是用java语言开发的一个Web服务器,最近花了差不多两周时间对Tomcat 9.0源码进行了一遍学习,由于知识储备有限,也只是理解了一个大概,下面就由我来给大家分享一下我对Tomcat的构成与实现原理的理解,存在不对的地方希望大家指出.   Tomcat源码阅读存在如下知识点依赖: JMX:Java管理扩展 NIO:Non-Blocking IO 非阻塞IO HTTP:网络协议 多线程及线程池 设计模式 Degister:模板解析   Tomcat整体功能架构:         在…
hashMap作为java开发面试最常考的一个题目之一,有必要花时间去阅读源码,了解底层实现原理. 首先,让我们看看hashMap这个类有哪些属性 // hashMap初始数组容量 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 // 最大容量 static final int MAXIMUM_CAPACITY = 1 << 30; // 装载因子 static final float DEFAULT_LO…
一. 源码下载 PS: 多图预警 在开始阅读源码之前,我们需要先构建一个环境,这样才能便于我们对源码进行调试,具体源码我们可以到官网进行下载(这里我以8.5.63版本为例). 二. 项目导入 下载并解压 apache-tomcat-8.5.63-src.zip. 然后进入 apache-tomcat-8.5.63-src 目录,新增一个 pom.xml 文件 <?xml version="1.0" encoding="UTF-8"?> <proje…
这段时间工作不太忙,所以抽时间学习了TOMCAT, TOMCAT实际就是负责保持TCP连接传递到部署的项目中.浏览器实质就是TCP发送器.将用户的请求封装成TCP发送请求.当然格式是双方协定的.使用的socket连接.请求内容为空格和换行符分割.看了下源码解析请求头,觉得写得好精致啊.讲请求转换为byte数组.然后转化为char值直接比较他们的值大小.如果和换行符或者空格char相同则提出. int ix = 0; int ox = 0; String key = null; String va…
背景 公司业务性能优化,使用java自带的Executors.newFixedThreadPool()方法生成线程池.但是其内部定义的LinkedBlockingQueue容量是Integer.MAX_VALUE.考虑到如果数据库中待处理数据量很大有可能会在短时间内往LinkedBlockingQueue中填充很多数据,导致内存溢出.于是看了一下线程池这块的源码,并在此记录. 类图 Executor是一个顶层接口,在它里面只声明了一个方法execute(Runnable),返回值为void,参数…
redux触发store更新,使用的dispatch(action),在关于createStore的源码解读中可以看到,store.dispatch限制了action必须是一个纯对象.是为了保持reducer的纯净性 只要传入参数相同,返回计算得到的下一个 state 就一定相同.没有特殊情况.没有副作用,没有 API 请求.没有变量修改,单纯执行计算. redux-thunk是redux推荐的一个异步处理middleware,它可以在触发store.dispatch之前完成reducer中不能…
#expected_conditions模块收集了一系列的场景判断方法 #源码地址 # https://seleniumhq.github.io/selenium/docs/api/py/_modules/selenium/webdriver/support/expected_conditions.html #源码通过__call__实现函数调用 #如果类定义了__call__,那么对应的实例,可以直接作为函数使用#个类实例要变成一个可调用对象,只需要实现一个特殊方法__call__() #co…