nio buffer 工作方式

Nio

首先我们应该说在nio里 channel selector 以及buffer ,buffer可以说是货物,channel 是送货员 当然后面你能发现 他不单单是送货员那么简单,它还可以是为多个地区分拣货物,而每个地区可以有多个channel , 而 selector 就是分拣员 他负责 以下四个状态 OP_ACCEPT ,OP_CONNENT ,OP_READ ,OP_WRITE 用来确定他们是什么状态

image

buffer的工作模式

buffer是个货物 ,货物有多大?

Bytebuffer.allocate(1024)

可以通过allocate 设定 有多大

buffer.flip()

在这之前我需要了解Buffer 是什么东西 ,我们可以认为是一组基本数据类型的元素列表,具体有这几个参数,capacity,position,limit,mark

capacity 是缓冲区数组的总长度,position 是 下一个要操作的数组元素的位置,limit是数组里不可操作元素的下一个位置
Mark 用于缉毒当前position的前一个位置或者是默认0

过程

Bytebuffer.allocate(10)

这个时候 capacity 是10的下个位置 limit 默认为10 的下个位置 position 默认0

这个时候读到了5数据 ,buffer 在 sockerchannel 注册的时候放进去 

capacity 是不变 limit 不变 position 为6


butter.flip();

capacity 还是不变 limit 为6 position 为0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值