面试题答案
一键面试- 初始状态:
position
:0,因为刚开始准备写入数据,从位置0开始。limit
:capacity
,表示最多能写入capacity
个数据。capacity
:缓冲区的总容量,固定不变。
- 写入数据过程:
position
:随着数据写入而增加,每写入一个数据单元(如字节、字符等),position
自增。limit
:保持为capacity
不变。capacity
:依旧保持固定值。
- 切换到读模式:
- 方法:调用
Buffer
的flip()
方法。 - 变化过程:
position
:被重置为0,以便从缓冲区开头读取数据。limit
:被设置为当前position
的值(即写入的数据量),这样就能保证读取的范围是之前写入的数据部分。capacity
:保持不变。
- 方法:调用
- 读模式下:
position
:随着数据读取而增加,每读取一个数据单元,position
自增。limit
:保持为写入数据量的值,限制读取范围。capacity
:保持固定值。