文档章节

Java NIO

士别三日
 士别三日
发布于 06/24 22:20
字数 695
阅读 36
收藏 0

1.目录

  1. Java IO的历史
  2. Java NIO之Channel
  3. Java NIO之Buffer
  4. Java NIO之Selector
  5. Java NIO之文件处理
  6. Java NIO之Charset
  7. Java 可扩展IO

2.简介

“IO的历史”讲述了Java IO API从开始到现在的发展过程,总共经历了三个比较大的版本:IO,NIO,NIO.2。IO操作方面向着多路复用、异步方向发展,文件操作方面向着位置操作和文件操作分离的方向发展。总体趋向于隐藏复杂的细节,适应多核系统架构和大数据处理需求。

“Channel”讲述了各种不同的Channel的具体实现,描述了它们之间的联系和各自的特点。Channel是IO操作的连接器。java.nio中所有IO操作都是通过操作Channel来实现的。

“Buffer”讲述了一种新的数据容器,描述了Buffer的数据结构特点和各种常用操作。ByteBuffer可以和Channel直接进行数据交换。是IO操作中不可缺少的一部分。

“Selector”讲述了java.nio中用一个阻塞对象实现IO多路复用。描述了Selector内部的一些细节和使用规范。IO多路复用是实现可扩展IO的重要基础,也是java.nio最大区别于java.io的地方。

“文件处理”讲述了java.nio中对文件位置操作和对文件操作的细节。相比于java.io,java.nio对这两种操作非常灵活,添加了很多以前不具备的功能,比如遍历目录,监控文件/目录变化,文件锁等等。

“Charset”讲述了字符集编码解码的概念,以及在java.nio中的使用方法。

“可扩展IO”讲述了Socket的原理,PPC/TPC模式,Reactor模式,以及如何用java.nio实现Reactor模式。通过这篇文章可以从整体的视角了解java.nio网络编程的脉络。

本系列文章并没有覆盖Java NIO的所有内容,也没有太多的概念介绍和使用细节,适合有一定基础的读者看。本系列文章试图从理解原理的角度,推导出一些最佳实践。java.nio最大的进步在于支持IO多路复用,以及异步IO处理。其次对于“文件处理”也做了很多增强功能,在架构上也做了很大的优化。java.nio事实上可以完全淘汰java.io,所以这个系列文章没有介绍java.io的内容。

请关注我的公众号:

© 著作权归作者所有

共有 人打赏支持
士别三日

士别三日

粉丝 38
博文 30
码字总数 43081
作品 0
深圳
程序员
分别使用Java IO、NIO、Netty实现的一个Echo Server示例

分别使用Java IO、Java NIO、Netty来实现一个简单的EchoServer(即原样返回客户端的输入信息)。 Java IO int port = 9000;ServerSocket ss = new ServerSocket(port);while (true) {final S...

zgw06629
2015/05/24
0
0
Java NIO AsynchronousFileChannel

原文链接 , 原文作者:Jakob Jenkov, 翻译:Neil Hao 在Java 7,AsynchronousFileChannel 被添加到了Java NIO中。使用AsynchronousFileChannel可以实现异步地读取和写入文件数据。 创建一个A...

Neil_Hao
01/20
0
0
Java NIO原理 图文分析及代码实现

Java NIO原理图文分析及代码实现 前言: 最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术...

囚兔
2015/04/29
0
0
Java NIO原理图文分析及代码实现

前言: 最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。可以参考:http://baik...

SunnyWu
2014/11/05
0
1
java NIO:IO与NIO的区别

一、概念 NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供了两套NIO,一套是针对标...

盼望明天
09/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSX | SafariBookmarksSyncAgent意外退出解决方法

1. 启动系统, 按住⌘-R不松手2. 在实用工具(Utilities)下打开终端,输入csrutil disable, 然后回车; 你就看到提示系统完整性保护(SIP: System Integrity Protection)已禁用3. 输入reboot回车...

云迹
今天
4
0
面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
今天
4
0
读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
今天
4
0
Permissions 0777 for ‘***’ are too open

异常显示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ......

李玉长
今天
5
0
区块链10年了,还未落地,它失败了吗?

导读 几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 几乎每个人,甚...

问题终结者
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部