博为峰小博老师:函数
[缓冲区Buffer]code
一个Buffer对象是固定数量的数据的容器。其做用是一个存储器,或者分段运输区,在这里数据可被存储并在以后用于检索。尽管缓冲区做用于它们存储的原始数据类型,但缓冲区十分倾向于处理字节。非字节缓冲区能够在后台执行从字节或到字节的转换,这取决于缓冲区是如何建立的。对象
缓冲区的工做与通道紧密联系。通道是 I/O 传输发生时经过的入口,而缓冲区是这些数据传输的来源或目标。对于离开缓冲区的传输,您想传递出去的数据被置于一个缓冲区,被传送到通道。对于传回缓冲区的传输,一个通道将数据放置在您所提供的缓冲区中。这种在协同对象(一般是您所写的对象以及一到多个 Channel 对象)之间进行的缓冲区数据传递是高效数据处理的关键。blog
如下是一个新建立的ByteBuffer:索引
位置被设为 0,并且容量和上界被设为 10,恰好通过缓冲区可以容纳的最后一个字节。标记最初未定义。容量是固定的,但另外的三个属性能够在使用缓冲区时改变。ip
其中的四个属性的含义分别以下:ci
l 容量(Capacity):缓冲区可以容纳的数据元素的最大数量。这一个容量在缓冲区建立时被设定,而且永远不能改变。get
l 上界(Limit):缓冲区的第一个不能被读或写的元素。或者说,缓冲区中现存元素的计数。it
l 位置(Position):下一个要被读或写的元素的索引。位置会自动由相应的 get( )和 put( )函数更新。io
l 标记(Mark):下一个要被读或写的元素的索引。位置会自动由相应的 get( )和 put( )函数更新。