在讨论如何回收堆外内存的时候,提到“NIO中direct memory的释放并不是通过finalize(),因为finalize不安全而且影响能”。Effective Java一书中也提到:Avoid Finalizers。人都有潜在的叛逆意识,别人给的结论或者制定的规范,除非有足够的理由说服你,除非懂得这么做背后的原因,否则只能是死记硬背,没有形象深入的理解,不能学到真正的东西。本文通过自己的理解和一些实际的例子,和大家一起更形象的理解finalize。还是那句经典的话“talking is cheap,...
分类:
编程语言 时间:
2014-09-21 18:46:11
阅读次数:
322
Mina的各个组件功能:(1.) IoService:这个接口在一个线程上负责套接字的建立,拥有自己的Selector,监听是否有连接被建立。(Mina底层使用JAVA NIO, 因此它是典型的使用Reactor模式架构的,采用事件驱动编程 , Mina运行用户自定义线程模型,可以是单线程、多线程、...
分类:
其他好文 时间:
2014-09-20 15:31:38
阅读次数:
130
Netty3 源码分析 - NIO server接受连接请求过程分析
当服务器端的server Channel绑定某个端口之后,就可以处理来自客户端的连接请求,而且在构建 NioServerSocketChannelFactory
的时候已经生成了对应的 BossPool 和 WorkerPool,前者管理的 NioServerBoss 就是专门用来接受客户端连接的Sele...
分类:
Web程序 时间:
2014-09-19 17:46:06
阅读次数:
306
消息传递有很多种方式,请求/响应(Request/Reply)是最常用的。在前面的博文的例子中,很多都是采用请求/响应的方式,当服务器接收到消息后,会立即write回写一条消息到客户端。HTTP协议也是基于请求/响应的方式。但是请求/响应并不能满足所有的消息传递的需求,有些需求可能需要服务端主动推送消息到客户端,而不是被动的等待请求后再给出响应。发布/订阅(Publish/Subscribe)是一...
分类:
Web程序 时间:
2014-09-19 13:50:45
阅读次数:
203
import?java.io.File;
import?java.nio.charset.Charset;
import?java.util.List;
import?org.apache.http.HttpResponse;
import?org.apache.http.client.HttpClient;
import?org.apache.http.client.meth...
分类:
其他好文 时间:
2014-09-18 11:39:44
阅读次数:
278
Netty3 源码分析 - NIO server绑定过程分析
一个框架封装的越好,越利于我们快速的coding,但是却掩盖了很多的细节和原理,但是源码能够揭示一切。服务器端代码在指定好ChannelFactory,设定好选项,而后Bootstrap.bind操作就会开启server,接受对端的连接。所以有必要对这后面的过程分析清楚,下图是关键流程。先是构建一个默认的Pipe...
分类:
Web程序 时间:
2014-09-17 20:28:12
阅读次数:
221
一、常识了解1.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立;2.java.nio.charset.Charset.defaultCharset()获得平台默认字符编码;3.getBytes() 是通过平台默认字符集进行编码;二、中文乱码出现在学习任何一门技...
分类:
其他好文 时间:
2014-09-17 20:07:02
阅读次数:
208
Java NIO非堵塞技术实际是采取Reactor模式,或者说是Observer模式为我们监察I/O端口, 如果有内容进来,会自动通知我们,这样,我们就不必开启多个线程死等,从外界看,实现了流畅的I/O读写,不堵塞了。 NIO 有一个主要的类Selector,这个类似一个观察者,只要我们把需要...
分类:
编程语言 时间:
2014-09-17 18:34:52
阅读次数:
184
原因是如果NIO被支持的话,Jetty会使用内存映射文件来缓存静态文件,其中包括.js文件。在Windows下面,使用内存映射文件会导致文件被锁定。解决方案是不使用内存映射文件来做缓存。步骤如下:1.在你使用的Jetty版本的jetty.jar中找到webdefault.xml,它在jar文件中的路...
分类:
Web程序 时间:
2014-09-17 11:43:32
阅读次数:
244
tomcat 的org.apache.coyote.http11.Http11NioProtocol Connector 是一个使用 Java NIO 实现的异步 accept 请求的 connector它的作用是不需要为每个请求建立一个线程, 而是使用固定的accept线程 accept 多个请求...
分类:
编程语言 时间:
2014-09-16 23:38:31
阅读次数:
374