文档章节

Java NIO

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

请关注我的公众号:

© 著作权归作者所有

共有 人打赏支持
士别三日

士别三日

粉丝 35
博文 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是在jdk1.4开始使用的,它既可以说成“新IO”,也可以说成非阻塞式I/O。下面是java NIO的工作原理: 由一个专门的线程来处理所有的IO事件,并负责分发。 事件驱动机制:事件到的时候...

柳哥
2015/02/15
0
4
Java NIO原理图文分析及代码实现

Java IO 在Client/Server模型中,Server往往需要同时处理大量来自Client的访问请求,因此Server端需采用支持高并发访问的架构。一种简单而又直接的解决方案是“one-thread-per-connection”。...

只想一个人静一静
2014/02/22
0
1
Java NIO ByteBuffer学习

深入理解Apache Mina (6)---- Java Nio ByteBuffer与Mina ByteBuffer的区别 http://chinaestone.iteye.com/blog/468138 DirectBuffer及内存泄漏 http://blog.csdn.net/zhouhl_cn/article/d......

mj4738
2012/10/15
0
0
对java和c的io速度的进一步比较

针对Java的Stream,BufferedStream,NIO,Scanner对文件的io效率做了一个实验,同时结合c为参考,废话不多说,代码如下: import java.io.FileInputStream;import java.io.FileNotFoundExceptio...

Storm.X
2011/06/03
0
2
Java 使用 happen-before 规则实现共享变量的同步操作

前言 熟悉 Java 并发编程的都知道,JMM(Java 内存模型) 中的 happen-before(简称 hb)规则,该规则定义了 Java 多线程操作的有序性和可见性,防止了编译器重排序对程序结果的影响。按照官方的...

stateIs0
01/20
0
0
Java NIO系列教程(十二) Java NIO与IO

原文地址:http://tutorials.jenkov.com/java-nio/nio-vs-io.html 作者:Jakob Jenkov 当学习了Java NIO和IO的API后,一个问题马上涌入脑海: 我应该何时使用IO,何时使用NIO呢?在本文中,我...

_夏天的风_
2013/07/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
11分钟前
0
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
25分钟前
14
0
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
36分钟前
0
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
42分钟前
0
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
57分钟前
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
今天
0
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
今天
0
0
开发技术瓶颈期,如何突破

前言 读书、学习的那些事情,以前我也陆续叨叨了不少,但总觉得 “学习方法” 就是一个永远在路上的话题。个人的能力、经验积累与习惯方法不尽相同,而且一篇文章甚至一本书都很难将学习方法...

_小迷糊
今天
0
0
安装tensorflow-XXX报错

报错: tensorflow-0.5.0-cp27-none-linux_x86_64.whl is not a supported wheel on this platform. 解决: wget https://bootstrap.pypa.io/get-pip.py sudo python2.7 get-pip.py sudo p......

Yao--靠自己
今天
0
0
JVM学习手册(一):JVM模型

一直从事JAVA开发,天天和JVM打交道,仔细想想对JVM还真的不是特别了解,实在是不应该.周六看了许多资料,也算有点心得,记录一下。 JVM内存模型分为5个区域:方法区,堆,虚拟机栈,本地方法栈,程序计...

勤奋的蚂蚁
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部