<!-- MarkdownTOC -->html
<!-- /MarkdownTOC -->java
(1) 按操做方式分类结构图:面试
(2)按操做对象分类结构图编程
IO流的分类:数组
流的原理浅析:微信
java Io流共涉及40多个类,这些类看上去很杂乱,但实际上颇有规则,并且彼此之间存在很是紧密的联系, Java Io流的40多个类都是从以下4个抽象类基类中派生出来的。网络
经常使用的io流的用法并发
NIO简介:app
Java NIO 是 java 1.4, 以后新出的一套IO接口NIO中的N能够理解为Non-blocking,不单纯是New。异步
NIO的特性/NIO与IO区别:
读数据和写数据方式:
从通道进行数据读取 :建立一个缓冲区,而后请求通道读取数据。
从通道进行数据写入 :建立一个缓冲区,填充数据,并要求通道写入数据。
NIO核心组件简单介绍
Buffer(缓冲区)介绍:
Buffer的常见方法
Buffer的使用方式/方法介绍:
ByteBuffer buf = ByteBuffer.allocate(28);//以ByteBuffer为例子
写数据到Buffer有两种方法:
1.从Channel中写数据到Buffer
int bytesRead = inChannel.read(buf); //read into buffer.
2.经过put写数据:
buf.put(127);
Buffer经常使用方法测试
说实话,NIO编程真的难,经过后面这个测试例子,你可能才能勉强理解前面说的Buffer方法的做用。
Selector(选择器)介绍
Selector(选择器)的使用方法介绍
Selector selector = Selector.open();
channel.configureBlocking(false); SelectionKey key = channel.register(selector, Selectionkey.OP_READ);
SelectionKey介绍
一个SelectionKey键表示了一个特定的通道对象和一个特定的选择器对象之间的注册关系。
从Selector中选择channel(Selecting Channels via a Selector)
选择器维护注册过的通道的集合,而且这种注册关系都被封装在SelectionKey当中.
中止选择的方法
wakeup()方法 和close()方法。
模板代码
有了模板代码咱们在编写程序时,大多数时间都是在模板代码中添加相应的业务代码。
客户端与服务端简单交互实例
一 文件I/O基石:Path:
二 拥抱Files类:
这个功能主要是为了提升大文件的读写速度而设计的。内存映射文件(memory-mappedfile)能让你建立和修改那些大到没法读入内存的文件。有了内存映射文件,你就能够认为文件已经所有读进了内存,而后把它当成一个很是大的数组来访问了。将文件的一段区域映射到内存中,比传统的文件处理速度要快不少。内存映射文件它虽然最终也是要从磁盘读取数据,可是它并不须要将数据读取到OS内核缓冲区,而是直接将进程的用户私有地址空间中的一部分区域与文件对象创建起映射关系,就好像直接从内存中读、写文件同样,速度固然快了。
Java7中新增了AsynchronousFileChannel做为nio的一部分。AsynchronousFileChannel使得数据能够进行异步读写。
AIO是异步IO的缩写,虽然NIO在网络操做中,提供了非阻塞的方法,可是NIO的IO行为仍是同步的。对于NIO来讲,咱们的业务线程是在IO操做准备好时,获得通知,接着就由这个线程自行进行IO操做,IO操做自己是同步的。
欢迎关注个人微信公众号:"Java面试通关手册"(一个有温度的微信公众号,期待与你共同进步~~~坚持原创,分享美文,分享各类Java学习资源):