一、缓冲区简介
Nio中的 Buffer 是用于存储特定基础类型的一个容器。为了能熟练的使用 Nio中的各种 Buffer , 我们需要理解 Buffer 中的 三个重要 的属性。
1. capacity:表示的是这个缓冲区包含元素的个数,容量不可改变也不可是负数
2. limit:表示的是缓冲区中第一个不可读或写的元素的索引,它不可是负数并且 <= capacity
3. position:表示的是缓冲区中下一个元素可读或可写的元素的索引,它不可是负数并且 <= limit
0 <= position <= limit <= capacity
二、相对操作和绝对操作
相对操作:相对的读或写操作,会根据读取或写入元素的个数会直接修改Buffer 中的 position 的值,比如:buffer.get()
绝对操作:直接根据索引进行操作,不会修改 Buffer 中的 position 的值,比如: buffer.get(索引)。
即:直接根据索引来进行操作的是绝对操作,否则是相对操作。
三、这篇文章中用到的buffer的方法
buffer.put(数据) ===> 向 buffer 中写入数据
buffer.get() ===> 从 buffer 中获取数据
buffer.get(索引) ===> 绝对操作,获取buffer中这个索引所处于的数据,不会修改 `position`的值
buffer.flip() ===> 将 buffer 从写入操作转换成 读取操作
buffer.clear() ===> 将buffer 从读取操作转换成写入操作,`注意:`这个时候buffer中的数据并不会删除,只是修改了 position 、limit、和 mark 的值
四、Buffer 具体操作的实例
四-1、分布详解上图中1 2 3 4各步骤中 position、 limit、和 capacity的变化
1、 分配一个新的 IntBuffer
2、 往 IntBuffer 中写入数据
往buffer中写入数据时,会修改 `position`的值,写入的 `position <= limit`,因为limit为下一个不可读或写元素的索引。
3、 转换成读模式
4、 获取数据
即:
1、容量 `capcaity` 总是不可进行修改的。
2、数据的读取或写入的会修改 `position` 的值,但是不会修改 `limit` 的值 并且 `position <= limit`
3、当写模式变成读模式时需要调用 `flip()`方法
4、`limit` 总是指向缓冲区中的第一个不可读取或写入元素的索引
相关推荐
尚硅谷_NIO_缓冲区(Buffer)的数据存取 ·03. 尚硅谷_NIO_直接缓冲区与非直接缓冲区 ·04. 尚硅谷_NIO_通道(Channel)的原理与获取 ·05. 尚硅谷_NIO_通道的数据传输与内存映射文件 ·06. 尚硅谷_NIO_分散读取与聚集...
在本篇文章中小编给大家分享了关于java8中NIO缓冲区(Buffer)的数据存储的相关知识点,需要的朋友们参考下。
主要介绍了JAVA NIO之Buffer(缓冲区)的相关资料,文中讲解非常细致,帮助大家更好的学习JAVA NIO,感兴趣的朋友可以了解下
Java NIO通道:通道基础、文件通道、Socket通道、工具类 Java NIO缓冲区:基础、缓冲区(Buffer)、创建缓冲区、直接缓冲区(DirectByteBuffer) Java NIO选择器:核心概念、选择器使用、Demo、选择器深入、
标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。 Java NIO: Non-blocking IO(非阻塞IO) Java NIO...
01-Java NIO-课程简介....17-Java NIO-Buffer-缓冲区分片.mp4 18-Java NIO-Buffer-只读缓冲区.mp4 19-Java NIO-Buffer-直接缓冲区.mp4 21-Java NIO-Selector-概述.mp4 23-Java NIO-Selector-示例代码(客户端).mp4 24
标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。 Java NIO: Asynchronous IO(异步IO) Java NIO可以...
NIO_缓冲区(Buffer)的数据存取 缓冲区(Buffer):在 Java NIO 中负责数据的存取。缓冲区就是数组。用于存储不同数据类型的数据 4. NIO_直接缓冲区与非直接缓冲区 非直接缓冲区:通过 allocate() 方法分配缓冲区,将...
nio缓冲区buffer 简介 Buffer是数据的容器,在nio中负责数据的存取,java为不同数据类型提供了相对应的缓冲区类型 如:ByteBuffer、CharBuffer、ShortBuffer、IntBuffer、LongBuffer、FloatBuffer 、DoubleBuffer 等...
主要介绍了Java NIO Buffer过程详解,缓冲区在java nio中负责数据的存储。缓冲区就是数组。用于存储不同数据类型的数据。,需要的朋友可以参考下
缓冲区(buffer)是从即将写入通道... NIO缓冲区特征 · Java NIO的基本组成模块是缓冲区。 · 缓冲区提供一个固定大小的容器来读取数据。 · 每个缓冲区都是可读的,但只有特定缓冲区才是可写的。
以下缓冲区提供了简单的独特行为,这些行为组成时可创建复杂的缓冲策略。 与github.com/djherbis/nio一起用于io.Pipe和io.Copy缓冲实现。 例如: import ( "github.com/djherbis/buffer" "github....
文章目录IO 与 NIO 的比较通道和缓冲区缓冲区(buffer)通道(channel)使用 NIO 完成本地通信使用 NIO 完成网络通信管道 IO 与 NIO 的比较 IO NIO 面向流(Stream Oriented) 面向缓冲区(Buffer Oriented)...
NIO即non-blocking IO,顾名思义是一种非阻塞模型。...3、Buffer,缓冲区。Buffer底层是一个数组,供Channel实现对数据的读写。Buffer的position、limit、capacity分别指当前索引、读/写上限索引、数组容量。
教程视频:NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中
o用法缓冲区接口: type Buffer interface {Len () int64Cap () int64io. ReadWriter} nio的Copy方法同时从io.Reader复制到提供的nio.Buffer,然后从nio.Buffer复制到io.Writer。 这样,阻止写入不会降低io.Reader的...
NIO的核心组件包括Channel(通道)、Buffer(缓冲区)和Selector(选择器)。Channel是数据传输的通道,它替代了传统IO中的流;Buffer是数据的容器,它可以在Channel和程序之间进行数据的读写操作;Selector则用于...
定义新的强制功能缓冲区,字节缓冲区,字符缓冲区,双缓冲区,浮点缓冲区,整数缓冲区,长缓冲区,短缓冲区,通道,可读通道和可写通道。 这些功能已为您期望的许多类实现。 还定义了函数mmap来对文件进行内存映射...
什么是NIO Java NIO(NEW IO)是从Java1.4开始引入的新版IO,用来替代标准的Java IO API ...面向缓冲区(Buffer Oriented) 阻塞IO(Block IO) 无阻塞IO(Non Block IO) 无 Selectors(选择器)
NIO支持面向缓冲区的、基于通道的IO操作。能够更加高效的进行IO操作。NIO同样拥有文件读写,网络通信等IO操作,今天我们来看看NIO中的TCP网络通信的使用方法。 2. Java NIO 三大核心 Java NIO 有三大核心要素:...