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
JVM可以使用的内存分外2种:堆内存和堆外内存,堆内存完全由JVM负责分配和释放,如果程序没有缺陷代码导致内存泄露,那么就不会遇到java.lang.OutOfMemoryError这个错误。使用堆外内存,就是为了能直接分配和释放内存,提高效率。JDK5.0之后,代码中能直接操作本地内存的方式有2种:使用未公开的Unsafe和NIO包下ByteBuffer。C语言的内存分配和释放函数malloc/free,必须要一一对应,否则就会出现内存泄露或者是野指针的非法访问。java中我们需要手动释放获取的堆外内存吗...
分类:
编程语言 时间:
2014-09-16 22:08:51
阅读次数:
380
Netty是一个传输层的框架,主要的功能就是两个:封装了NIO的操作,封装了CodeC接口,从而使得NIO的开发者只需要关注与业务功能本身的ChannelHandler。
不只是Netty,传输层主要解决的问题就是这两个,处理IO,处理CodeC
CodeC主要处理的问题就是字节流的分帧(Frame),一般有以下几种
按结束符,比如http定长使用消息头消息体的方式,在消...
分类:
Web程序 时间:
2014-09-16 17:32:30
阅读次数:
219
1.常用支持非阻塞通信的类
ServerSocketChannel: ServerSocket 的替代类, 支持阻塞通信与非阻塞通信.SocketChannel: Socket 的替代类, 支持阻塞通信与非阻塞通信.Selector: 为ServerSocketChannel 监控接收连接就绪事件, 为 SocketChannel 监控连接就绪, 读就绪和写就绪事件.SelectionKe...
分类:
编程语言 时间:
2014-09-16 12:39:00
阅读次数:
315
Java NIO非堵塞应用通常适用用在I/O读写等方面,我们知道,系统运行的性能瓶颈通常在I/O读写,包括对端口和文件的操作上,过去,在打开一个I/O通道后,read()将一直等待在端口一边读取字节内容,如果没有内容进来,read()也是傻傻的等,这会影响我们程序继续做其他事情,那么改进做法就是开设...
分类:
编程语言 时间:
2014-09-15 11:14:28
阅读次数:
312