2012年12月29日

《那些年啊,那些事——一个程序员的奋斗史》十四(完结)

摘要: 125 距离离职交接的一个月时间还剩几天,本来应该是平淡无事的,却没想到最后还是波澜四起。昨天下班前,公司突然停了电。这本是件普通得不能再普通的事情,可没想到过了一会来电了,或许是波峰电压太大,或许是稳压电源做工太糟糕,公司所配的笔记本一闪之后居然再也起不来了!段伏枥想尽办法折腾了一番,最后... 阅读全文

posted @ 2012-12-29 09:25 吴一达 阅读(134) 评论(0) 推荐(0) 编辑

NIO:流(TCP)信道详解

摘要: 流信道有两个变体:SocketChannel和ServerSocketChannel。像其对应的Socket一样,SocketChannel是相互连接的终端进行通信的信道。 SocketChannel:创建,连接和关闭 static SocketChannel open(SocketAddre... 阅读全文

posted @ 2012-12-29 09:09 吴一达 阅读(421) 评论(0) 推荐(0) 编辑

NIO:Buffer 详解

摘要: 如你所见,在NIO中,数据的读写操作始终是与缓冲区相关联的。Channel将数据读入缓冲区,然后我们又从缓冲区访问数据。写数据时,首先将要发送的数据按顺序填入缓冲区。基本上,缓冲区只是一个列表,它的所有元素都是基本数据类型(通常为字节型)。缓冲区是定长的,它不像一些类那样可以扩展容量(例如,L... 阅读全文

posted @ 2012-12-29 09:06 吴一达 阅读(554) 评论(0) 推荐(0) 编辑

NIO:Selector 类用法

摘要: 如本章第1节中提到的,Selector类可用于避免使用非阻塞式客户端中很浪费资源的"忙等"方法。例如,考虑一个即时消息服务器。可能有上千个客户端同时连接到了服务器,但在任何时刻都只有非常少量的(甚至可能没有)消息需要读取和分发。这就需要一种方法阻塞等待,直到至少有一个信道可以进行I/O操作,并... 阅读全文

posted @ 2012-12-29 08:55 吴一达 阅读(282) 评论(0) 推荐(0) 编辑

NIO:与 Buffer 一起使用 Channel

摘要: 如前文所述,Channel实例代表了一个与设备的连接,通过它可以进行输入输出操作。实际上Channel的基本思想与我们见过的普通套接字非常相似。对于TCP协议,可以使用ServerSocketChannel和SocketChannel。还有一些针对其他设备的其他类型信道(如,FileChann... 阅读全文

posted @ 2012-12-29 08:52 吴一达 阅读(178) 评论(0) 推荐(0) 编辑

NIO:为什么需要 NIO?

摘要: 基本的Java套接字对于小规模系统可以很好地运行,但当涉及到要同时处理上千个客户端的服务器时,可能就会产生一些问题。其实在第4章已经可以看到一些迹象:由于创建、维护和切换线程需要的系统开销,一客户一线程方式在系统扩展性方面受到了限制。使用线程池可以节省那种系统开销,同时允许实现者利用并行硬件的... 阅读全文

posted @ 2012-12-29 08:49 吴一达 阅读(544) 评论(0) 推荐(0) 编辑

导航