网络体系:
OSI IEEE
IO体系
本地(local)IO
字节流:InputStream、OutputStream
字符流:Reader、Writer
网络(远程)IO
NIO与IO区别:

NIO通道和缓冲区:
通道(Channel):表示打开IO设备(例如:文件、套接字Socket)的连接。若需要NIO系统,需要获取用于连接IO设备的通道以及用于容纳数据的缓冲区(Buffer)。然后操作缓冲区,对数据进行处理。
缓冲区(Buffer):一个用于特定基本数据类型的容器。由java.nio包定义的,所有缓冲区都是Buffer抽象类的子类。Java NIO中的Buffer主要用于与NIO通道进行交互,数据是从通道读入缓冲区,从缓冲区写入通道中。
简单说:Channel负责传输,Buffer负责存储
缓冲区:
-
在java NIO中负责数据的存储。缓冲区就是数组。用于存储不同数据类型的数据。
根据数据类型不同,提供相应的数据类型的缓冲区:
ByteBuffer、CharBuffer、ShortBuffer、IntBuffer、LongBuffer、FloatBuffer、DoubleBuffer、
上述缓冲区管理方式几乎一致,通过allocate() 获取缓冲区 -
缓冲区存储数据的两个核心方法:
put() :存入数据到缓冲区中
get() :获取缓冲区中的数据 -
缓冲区的四个核心属性
capacity:容量,表示缓冲区中最大存储数据的容量。一旦声明不能改变。
limit:界限,表示缓冲区中可以操作数据的大小。(limit后数据不能进行读写)
position:位置,表示缓冲区中正在操作数据的位置。
mark : 标记,表示记录当前position的位置。可以通过reset() 恢复到mark的位置。
0 <= mark <= position <= limit <= capacity
API:
allocate : 分配一个指定大小的缓冲区
put : 存入数据到缓冲区
get : 读取缓冲区中数据
flip : 切换读取数据模式
rewind : 可重复读数据
clear : 清空缓冲区,回到最初状态,但是实际上,数据并没有被清空,缓冲区数据依然存在,处于被遗忘状态,四个核心属性重置了。
reset :恢复到mark的位置
mark :标记,表示记录当前position的位置。可以通过reset() 恢复到mark的位置。
hasRemaining :判断缓冲区还有没有可以操作的数据
remaining : 获取缓冲区中可操作的数量

最低0.47元/天 解锁文章
1311

被折叠的 条评论
为什么被折叠?



