NIO
文章平均质量分 91
孙悟空2015
追根溯底,回归本质,挖掘兴趣,激发思考。
展开
-
NIO学习笔记——操作系统与I/O交互简介
为什么使用NIO 在前一段时间我在看dubbo和kafka的源码时发现他们底层很多都是借助于NIO实现的,这些优秀的开源框架为什么使用NIO,相信NIO是一种高效的程序处理方式,从今天我们开始踏入NIO学习的殿堂。作为程序员我们要知道我们代码中的I/O操作相比其他代码要耗时的多的,我们在做I/O操作时要特别注意I/O的优化。现在 JVM 运行字节码的速率已经接近本地编译代码,借助动态运行时优化。这原创 2017-06-18 18:28:05 · 2339 阅读 · 2 评论 -
NIO学习笔记——缓冲区(Buffer)详解
缓冲区是包在一个对象内的基本数据元素数组,Buffer类相比一个简单的数组的优点是它将关于数据的数据内容和信息包含在一个单一的对象中。Buffer的属性容量(capacity):缓冲区能够容纳的数据元素的最大数量。这一容量在缓冲区创建时被设定,并且永远不能被改变 上界(limit):缓冲区的第一个不能被读或写的元素。或者说,缓冲区中现存元素的计数 位置(position):下一个要被读或写的元素原创 2017-06-20 21:40:06 · 8263 阅读 · 2 评论 -
NIO学习笔记——Buffer的创建与复制
Buffer的创建新的缓冲区是由分配或包装操作创建的。分配操作创建一个缓冲区对象并分配一个私有的空间来储存容量大小的数据元素。包装操作创建一个缓冲区对象但是不分配任何空间来储存数据元素。它使用您所提供的数组作为存储空间来储存缓冲区中的数据元素,例如CharBuffer charBuffer = CharBuffer.allocate (100);这段代码隐含地从堆空间中分配了一个 char 型数组作原创 2017-06-21 21:07:21 · 1732 阅读 · 0 评论 -
NIO学习笔记——通道(channel)详解
通道可以形象地比喻为银行出纳窗口使用的气动导管。您的薪水支票就是您要传送的信息,载体(Carrier)就好比一个缓冲区。您先填充缓冲区(将您的支票放到载体上),接着将缓冲“写”到通道中(将载体丢进导管中),然后信息负载就被传递到通道另一侧的 I/O 服务(银行出纳员)。该过程的回应是:出纳员填充缓冲区(将您的收据放到载体上),接着开始一个反方向的通道传输(将载体丢回到导管中)。载体就到了通道的您这一原创 2017-06-25 00:50:16 · 13308 阅读 · 1 评论 -
NIO学习笔记——选择器(selectors)
选择器(Selector) 选择器类管理着一个被注册的通道集合的信息和它们的就绪状态。通道是和选择器一起被注册的,并且使用选择器来更新通道的就绪状态。当这么做的时候,可以选择将被激发的线程挂起,直到有就绪的的通道。 可选择通道(SelectableChannel) 这个抽象类提供了实现通道的可选择性所需要的公共方法。它是所有支持就绪检查的通道类的父类。 FileChannel 对象不是可选择的原创 2017-06-26 22:26:23 · 1737 阅读 · 0 评论