感性认识: 传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大。使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数量线程的线程池,甚至一个线程来为任意数量的连接服务。由于线程数量小于连接数量,所以每个线程进行IO操作时就不能阻塞,如果阻塞的话,有些连接就得不到处理,NIO提供了这种非阻塞的能力。 小...
分类:
其他好文 时间:
2014-05-10 08:50:29
阅读次数:
365
一下是一个基于AIO实现的简单web服务器,这是一个简单例子...
分类:
Web程序 时间:
2014-05-08 04:48:53
阅读次数:
341
### 背景
银时跟我讲,想从 Netty3迁移到Netty4 。
问其原因是因为 Netty3在容器里会报错,错误堆栈:
java.io.IOException: 无法立即完成一个非阻止性套接字操作。
at sun.nio.ch.SocketDispatcher.close0(Native Method)
at sun.nio.ch.SocketDisp...
分类:
其他好文 时间:
2014-05-07 06:30:21
阅读次数:
425
在高性能爬虫为什么使用定制DNS客户端一文中阐述了DNS解析是网络爬虫的瓶颈。目前主要有两种方法来提高DNS解析效率:1. 基于多线程的DNS 解析2.
基于NIO的DNS解析dnsjava中使用的解析方式就是基于多线程的DNS解析class ResolveThread extends Thread...
分类:
其他好文 时间:
2014-05-04 11:15:14
阅读次数:
300
NIONIO与IO主要的区别区别见下表:IONIO面向流(输入流/输出流)面向缓冲区(各种缓冲区,除了布尔类型之外其他的基本数据类型都有缓冲区跟其对应)阻塞IO非阻塞IO无选择选择器流与缓冲区
IO面向流,NIO面向缓冲区,面向流意味着每次从流中读取一个字节或多个字节,直到把所有字节读完,没有缓冲....
分类:
编程语言 时间:
2014-05-01 10:55:05
阅读次数:
416
BufferBufferMark<=Position
<=Limt<=Capacity状态变量position:在从通道读取时,将所读取的数据放到底层的数组中。position变量跟踪已经写了多少数据。它指定了下一个字节将放到数组的哪一个元素中。因此,如果从通道中读三个字节到缓冲区中,那么缓冲区的p...
分类:
其他好文 时间:
2014-05-01 07:54:06
阅读次数:
326
正在学习《大型网站系统与JAVA中间件实践》,发现对BIO、NIO、AIO的概念很模糊,写一篇博客记录下来。先来说个银行取款的例子:同步 :
自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写)。异步 :
委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO时,Java将IO读...
分类:
编程语言 时间:
2014-05-01 07:46:32
阅读次数:
373
以前一直学习不进去,有实战的时候没有学习研究,可惜了。最近面试要被问到一些netty的问题,重新学习了下。java io
的几种可能存在方式,1.一请求一应答的方式,
弊端:当并发访问量增加后,服务端的线程个数和并发访问数成线性正比。线程膨胀后,系统的性能急剧下降。2.一个线程处理多个socket连...
分类:
Web程序 时间:
2014-04-30 02:22:37
阅读次数:
946
集合运算集合运算就是将两个或者多个结果集组合成为一个结果集。集合运算包括:?
INTERSECT(交集),返回两个查询共有的记录。? UNION ALL(并集),返回各个查询的所有记录,包括重复记录。?
UNION(并集),返回各个查询的所有记录,不包括重复记录。? MINUS(补集),返...
分类:
其他好文 时间:
2014-04-28 07:58:03
阅读次数:
364