- 博客(16)
- 资源 (2)
- 收藏
- 关注
原创 从源码解读tomcat的bio和nio
Bio为阻塞式的socket读写,Worker线程组接收socket任务后,便分配一个线程处理该连接,直至处理完成(给客户端response)。两大模块及功能图示如下nio为非阻塞读写,图示如下简要总结如下: bio下的Acceptor接收客户端连接后直接包装成任务提交给Worker线程组,而nio下的Acceptor是包装socket为PollerEvent后添加到Poller的event队列 Nio模式下,1个socket每次有读写事件都会提交给Work...
2021-06-15 23:49:32 303 3
原创 tomcat的filter责任链实现
Tomcat的filter调用主要实现类和方法是ApplicationFilterChain.internalDoFilter(ServletRequestrequest,ServletResponseresponse) throwsIOException,ServletException该类内部维护 一个filter数组 1个servlet 1个int变量pos来记录下一个需要执行的filter在数组中的下标 若pos大于等于filter数组长度(包括...
2021-06-10 13:50:13 260
原创 tomcat java nio是如何关联同一客户socket的多次请求消息的
使用命令行telnet和Mac上的一个tcp通信软件socket debugger,对tomcat8.5的nio模式做了源代码调试,解开了之前自己关于nio模式的一个疑惑:nio模式下tcp通信是非阻塞的,即客户端有信息发往tomcat,对该信息处理完毕后,tomcat便回收工作线程;待tomcat接收到客户端新的消息时,会再次分配工作线程处理客户端消息——那么同一个客户端先后发送的消息是怎么关联到一起的?比如客户端发送了一个post请求如下POST /greet HTTP/1.1Host: l
2021-05-19 11:08:58 301 1
原创 SQL的WHERE和HAVING比较
最核心的区别:WHERE是针对表的(原始)数据行做筛选,而HAVING是对结果集做筛选。通过以下两点说明。1. 执行效率对比SELECT ownerUserId, sum(amount)FROM PayOrderWHERE ownerUserId =7744GROUP BY ownerUserIdHAVING S
2017-03-23 22:40:52 1354
原创 netty中实现双向认证的SSL连接
Edit1. 前期准备工作双向证书认证的双方称为client和server,首先为client和server生成证书。由于仅仅是自己学习使用,因此可以在本地自建一个CA,然后用CA的证书分别签发client和server的证书。CA的创建和签发使用OpenSSL。 在windows环境上安装OpenSSL,然后依据OpenSSL目录下的openssl.cnf中[ C
2015-01-19 12:25:09 30141 2
原创 java的ThreadLocal简介和示例
EditJava中的ThreadLocal这个类的名字乍看容易让人误解,其实应该叫做ThreadLocalVaraiableKey,这个类的实例是作为key将对应的value存储在当前线程,value才是真正有用的信息。请注意,ThreadLocal对象仅仅是作为线程共享变量map里面的key来使用,其本身并不存储相关信息。一些安全框架如apache shiro和spring secu
2014-11-30 22:11:56 872
原创 Spring FAQ
1. How to define a Spring bean using annotation instead of XML? Annotate the class with @Component, and in spring config file, add the package where your spring bean resides to component-scan
2014-08-23 21:46:55 641
原创 http Content-type及Spring的@RequestBody注解
1. content-type 场景:使用JMeter测试spring的REST接口 rest 接口定义如下 @RequestMapping (value = "/client/join" , method = RequestMethod.POST) @ResponseBody
2014-07-04 20:47:14 3090
原创 http Request-Line
以下代码通过jdk自带的HttpURLConnection获取百度对关键字"angry brids"的搜索结果。 URL baiduSearch = new URL("http://www.baidu.com/s?wd=angry birds"); HttpURLConnection connection = (HttpURLConnection) baiduSe
2014-07-04 11:01:52 4953
原创 HashMap的扩容
当HashMap的size达到临界值capacity * loadFactor - 1时,HashMap会进行扩容,将自身容量增加一倍。比如对未指定capacity和loadFactor的HashMap,缺省容量和负载因子分别为16和0.75,因此当map中存储的元素数量达到16 * 0.75 - 1即为11时,该map会将自身容量扩大到2 * 16 = 32。在某些情况下,扩容耗费较多时
2014-06-15 00:17:11 4361
翻译 Javascript - this(节译)
Javascript - this简介同其它语言相比,JavaScript中函数的this关键字略有不同。This在strictmode和non-strict下也有区别。大多数情况下,this的值是由函数如何被调用决定的。This在strictmode下不能在运行期间赋值,每次函数调用可能也不尽相同。· Global context在全局执行的上下文(不在任何函数
2014-05-20 11:29:57 590
原创 eclipse Open Resource(Ctrl+Shift+R) 查找文件时去除class文件的显示
Eclipse中用快捷键Ctrl+Shift+R查找文件时,经常class文件也显示出来,让人感觉很不舒服。可依据下面几个步骤将其从列表中去除。1. 将包含class文件的文件夹设置为Derived。具体是,右击->选择 属性->在弹出窗口中将Derived勾选上2. 此时再次Ctrl+Shift+R, 应该发现.class文件未显示。若扔显示,右击该窗口的
2014-03-29 16:35:19 17973 1
原创 wildcard in servlet/filter url-pattern mapping
From servlet specification,SRV.11.2 Specification of MappingsIn theWeb application deployment descriptor, the following syntax is used to definemappings:• A string beginning with a ‘/’ chara
2014-03-05 11:30:36 1869
原创 avoid jstl in loop
Consider the following jsp snippet that does i18n with jstl fmt:messagec:forEach var= "item" items ="${logs}" varStatus="rowstat" > ... ... fmt:message key= "action.key.${it
2014-02-12 20:09:46 797
原创 git branch -r view the newly created remote branch
git branch -r lists remote branch, it differs from git ls-remote in that the latter figures out what branches are on your remote by actually using the remote related command, so in order to inform
2014-02-12 12:02:33 690
原创 编码方式的简介(ASCII, LATIN-1, UTF-8/16/32)
编码方式的简介1. ASCIIASCII是7比特的字符集,涵盖了英语中的绝大多数字符。编码从0到127.2.ISOLatin-1(the ISO-8859-1 standard)ISO Latin-1是8比特的字符集,定义了256个字符。前128个字符(00000000-01111111)与ASCII完全一致。3. UnicodeUnicode只是定义了字符的编码值
2013-12-30 14:58:27 12900 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人