摘要:
缓冲区(Buffer)对象是面向块的I/O的基础,也是NIO的核心对象之一。在NIO中每一次I/O操作都离不开Buffer,每一次的读和写都是针对Buffer操作的。Buffer在实现上本质是一个数组,其作用是一个存储器,或者分段运输区,并且提供了对数据的结构化访问,而且还可以跟踪系统的读/写进程。对于传统的流I/O,这是一种设计上的进步。 为了方便理解,下面我会主要采用代码示例加注释的方式说明缓冲区比较重要的API和知识点。缓冲区基础 Buffer缓冲区的家谱如下图: 作为所有缓冲区类的父类,Buffer类的包含了下面4个重要属性, // Invariants: mark... 阅读全文
摘要:
Java NIO的出现 Java语言发展至今,优点大家有目共睹:面向对象的语言、简洁有效、高移植性等等。但是同样也存在很多缺点,C语言程序员口中Java太慢了,.net程序员口中Java太开放了,php程序员说Java太复杂了。 Java为了“一次编写,到处运行”的最大优势,也付出了相应的代价: Java需要运行于虚拟机(即JVM)之上,为了保证Java字节码在各种JVM部署平台上运行效果一致,作些妥协是必须的。既然需要通用于不同的操作系统平台,那么,某种程度上就必须选择各种平台都接受的处理方案。这也就造成了Java不能发挥各种平台的特性和优化的地方。 受到这种机制的影响最突出的莫... 阅读全文