文档章节

Java NIO

士别三日
 士别三日
发布于 06/24 22:20
字数 695
阅读 42
收藏 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的内容。

请关注我的公众号:

© 著作权归作者所有

共有 人打赏支持
上一篇: Java动态编程提纲
下一篇: Java NIO之字符集
士别三日

士别三日

粉丝 38
博文 30
码字总数 43081
作品 0
深圳
程序员
私信 提问
Java NIO AsynchronousFileChannel

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

Neil_Hao
01/20
0
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原理 图文分析及代码实现

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编程入门(一)

JAVA NIO编程入门(一) 一、前言 笔者之前接触的NIO编程比较少,所以对这一块的基础也比较弱,NIO作为java编程中一个重要的模块,不能很好的掌握它,感觉自己在java方面就掌握的不够,所以,...

木木匠
09/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Ubuntu常用操作

查看端口号 netstat -anp |grep 端口号 查看已使用端口情况 netstat -nultp(此处不用加端口号) netstat -anp |grep 82查看82端口的使用情况 查找被占用的端口: netstat -tln netstat -tl...

hc321
昨天
0
0
网站cdn的静态资源突然访问变的缓慢,问题排查流程

1.首先我查看了一下是否自己的网络问题,通过对比其他资源的访问速度和下载速度,确认不是 2.通过ping 和 tracert 判断cdn域名能否正常访问,(最后回想感觉这一步可以省略,因为每次最终能访...

小海bug
昨天
0
0
Mybatis 学习笔记四 MyBatis-Plus插件

Mybatis 学习笔记四 MyBatis-Plus插件 maven依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <ve......

晨猫
昨天
2
0
小白带你认识netty(二)之netty服务端启动(下)

承接上一篇小白带你认识netty(二)之netty服务端启动(上),还剩下两步骤:3、注册Selector:将Channel注册到Selector上 和 4、端口的绑定:服务端端口的监听。 3、注册Selector:将Chann...

天空小小
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部