自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 271 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 224

原创 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 288 1

原创 SQL的WHERE和HAVING比较

最核心的区别:WHERE是针对表的(原始)数据行做筛选,而HAVING是对结果集做筛选。通过以下两点说明。1. 执行效率对比SELECT ownerUserId, sum(amount)FROM PayOrderWHERE ownerUserId =7744GROUP BY ownerUserIdHAVING S

2017-03-23 22:40:52 1310

原创 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 30000 2

原创 java的ThreadLocal简介和示例

EditJava中的ThreadLocal这个类的名字乍看容易让人误解,其实应该叫做ThreadLocalVaraiableKey,这个类的实例是作为key将对应的value存储在当前线程,value才是真正有用的信息。请注意,ThreadLocal对象仅仅是作为线程共享变量map里面的key来使用,其本身并不存储相关信息。一些安全框架如apache shiro和spring secu

2014-11-30 22:11:56 857

原创 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 626

原创 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 3072

原创 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 4919

原创 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 4325

翻译 Javascript - this(节译)

Javascript - this简介同其它语言相比,JavaScript中函数的this关键字略有不同。This在strictmode和non-strict下也有区别。大多数情况下,this的值是由函数如何被调用决定的。This在strictmode下不能在运行期间赋值,每次函数调用可能也不尽相同。·        Global context在全局执行的上下文(不在任何函数

2014-05-20 11:29:57 581

原创 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 17788 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 1847

原创 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 789

原创 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 675

原创 编码方式的简介(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 12690 2

netty的SSL双向认证

netty的client和server端建立SSL连接,并进行双向的证书验证

2015-01-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除