美文网首页
Java Buffer

Java Buffer

作者: 天之見證 | 来源:发表于2018-06-19 20:41 被阅读0次

1. Buffer是一种数据结构

buffer是一种数据结构,类似于array,其中存储的对象是基本类型,但它的访问形式不同于array,它有一下3个属性,用于访问时使用:

property desc
capacity 表示当前buffer的最大可存放的元素个数
limit 表示当前buffer中第一个不可访问的元素的索引
position 表示当前buffer中下一个将要读到的元素的索引

使用以上3个属性就可以访问这个类array的结构,主要作用是作为一个可复用的一块区域,将整个空间分为可用和不可用两部分

2. Buffer的子类实现规范

每个子类都要实现2种类别的getput方法

  1. Relative

    从当前的position读取数据,读取多少数据,position将变化多少

  2. Absolute

    根据传入的index参数读取数据,不影响position

3. Mark & Reset

mark一般与reset成对出现的,mark是一个标记了的index,reset的时候可以将position恢复到这个特殊的index

mark满足这样的不变式: position>m>0,当position或者limit变化导致设置的mark不满足这个不变式,则此时的mark将会丢弃

4. mark,position,limit,capacity不变式

0<mark<position<limit<capacity

5. 其他操作方式

method desc property的变化
clear makes a buffer ready for a new sequence of channel-read or relative put limit\leftarrow capacity, position\leftarrow 0
flip makes a buffer ready for a new sequence of channel-write or relative get limit \leftarrow position, position\leftarrow 0
rewind makes a buffer ready for re-reading the data that it already contains position\leftarrow 0

code example:

clear:

buf.clear();     // Prepare buffer for reading
in.read(buf);    // Read data

flip:

buf.put(magic);    // Prepend header
in.read(buf);      // Read data into rest of buffer
buf.flip();        // Flip buffer
out.write(buf);    // Write header + data to channel

rewind:

out.write(buf);    // Write remaining data
buf.rewind();      // Rewind buffer
buf.get(array);    // Copy data into array

相关文章

  • NIO之三--Buffer

    Java NIO Buffer Basic Buffer Usage Buffer Capacity, Posit...

  • Java NIO Buffer

    Java NIO Buffer Buffer使用场景 Java NIO buffers 用于和Java chann...

  • Java NIO Buffer

    在Java NIO中,Buffer用于与Channel交互。数据从Channel读入Buffer,并从Buffer...

  • JAVA之道丨文件复制的四种方法

    import java.io.BufferedInputStream; import java.io.Buffer...

  • Buffer

    什么是Buffer java.nio.Buffer 抽象类指的是用于存储特定原始类型数据的容器,Buffer除了它...

  • java NIO---Buffer

    NIO中Buffer简介 java的NIO中buffer至关重要,buffer是读写的中介,主要和NIO的chan...

  • Java Buffer

    1. Buffer是一种数据结构 buffer是一种数据结构,类似于array,其中存储的对象是基本类型,但它的访...

  • NIO框架-Buffer学习

    Buffer是什么? Buffer是java.nio框架下的一个缓冲类,用来存储java的基本类型的数据,比如by...

  • Java NIO三剑客—Buffer、Channel、Selec

    [TOC]Java NIO包含三个核心部分: Buffer Channel Selector Buffer即缓冲区...

  • JAVA NIO

    我们首先看JAVA NIO 中的几个概念 Buffer 一、简单介绍 capacity:整个Buffer 的容量 ...

网友评论

      本文标题:Java Buffer

      本文链接:https://www.haomeiwen.com/subject/qqyzeftx.html