随笔分类 -  IO

摘要:缓冲区(Buffer)对象是面向块的I/O的基础,也是NIO的核心对象之一。在NIO中每一次I/O操作都离不开Buffer,每一次的读和写都是针对Buffer操作的。Buffer在实现上本质是一个数组,其作用是一个存储器,或者分段运输区,并且提供了对数据的结构化访问,而且还可以跟踪系统的读/写进程。对于传统的流I/O,这是一种设计上的进步。 为了方便理解,下面我会主要采用代码示例加注释的方式说明缓冲区比较重要的API和知识点。缓冲区基础 Buffer缓冲区的家谱如下图: 作为所有缓冲区类的父类,Buffer类的包含了下面4个重要属性, // Invariants: mark... 阅读全文
posted @ 2013-07-17 11:31 朱样年华 阅读(1900) 评论(2) 推荐(2) 编辑
摘要:Java NIO的出现 Java语言发展至今,优点大家有目共睹:面向对象的语言、简洁有效、高移植性等等。但是同样也存在很多缺点,C语言程序员口中Java太慢了,.net程序员口中Java太开放了,php程序员说Java太复杂了。 Java为了“一次编写,到处运行”的最大优势,也付出了相应的代价: Java需要运行于虚拟机(即JVM)之上,为了保证Java字节码在各种JVM部署平台上运行效果一致,作些妥协是必须的。既然需要通用于不同的操作系统平台,那么,某种程度上就必须选择各种平台都接受的处理方案。这也就造成了Java不能发挥各种平台的特性和优化的地方。 受到这种机制的影响最突出的莫... 阅读全文
posted @ 2013-07-03 11:37 朱样年华 阅读(4319) 评论(0) 推荐(0) 编辑
摘要:概述 在大部分的行业系统或者功能性需求中,对于程序员来说,接触到io的机会还是比较少的,其中大多也是简单的上传下载、读写文件等简单运用。最近工作中都是网络通信相关的应用,接触io、nio等比较多,所以尝试着深入学习并且描述下来。 io往往是我们忽略但是却又非常重要的部分,在这个讲究人机交互体验的年代,io问题渐渐成了核心问题。Java传统的io是基于流的io,从jdk1.4开始提供基于块的io,即nio,会在后面的文章介绍。流 流的概念可能比较抽象,可以想象一下水流的样子。 io在本质上是单个字节的移动,而流可以说是字节移动的载体和方式,它不停的向目标处移动数据,我们要做的就是根据流的... 阅读全文
posted @ 2013-04-10 15:07 朱样年华 阅读(5431) 评论(3) 推荐(2) 编辑
摘要:最近工作中,接触到了Java网络编程方面的东西:Socket、NIO、MongoDB等,也看了tomcat的源码,也加强了线程方面的知识,也使用了MINA这样的框架。感觉获益良多,原本技术上的薄弱环节也在慢慢提高,很多想写的东西,也在慢慢规划整理。无奈最近在筹备婚礼的事情,显得有些耽搁。 想了很久,决定先写写IO中经常被提到的概念——“同步与异步、阻塞与非阻塞”以及在Java网络编程中的简单运用。 想达到的目的有两个: 1。深入的理解同步与异步、阻塞与非阻塞,这看似烂大街的词汇很多人已经习惯不停的说,但却说不出其中的所以然,包括我。 2。理解各种IO模型在Java网络IO中的运用,... 阅读全文
posted @ 2012-09-28 16:14 朱样年华 阅读(21670) 评论(6) 推荐(6) 编辑

点击右上角即可分享
微信分享提示