开发者社区> 问答> 正文

[@小川游鱼][¥20]nio如何创建缓冲区的,核心变量的值是怎么变化的?

nio如何创建缓冲区的,核心变量的值是怎么变化的?

展开
收起
月下丶 2018-12-14 23:42:42 1681 0
1 条回答
写回答
取消 提交回答
  • 创建方式存在两种:

    1. allocate方式
    2. wrap方式
      核心状态变量:

    a) position
    position变量跟踪了向缓冲区中写入了多少数据或者从缓冲区中读取了多少数据。
    更确切的说,当您从通道中读取数据到缓冲区中时,它指示了下一个数据将放到数组的哪一个元素中。比如,如果您从通道中读三个字节到缓冲区中,那么缓冲区的position将会设置为3,指向数组中第4个元素。反之,当您从缓冲区中获取数据进行写通道时,它指示了下一个数据来自数组的哪一个元素。比如,当您从缓冲区写了5个字节到通道中,那么缓冲区的 position 将被设置为5,指向数组的第六个元素。
    b) limit
    limit变量表明还有多少数据需要取出(在从缓冲区写入通道时),或者还有多少空间可以放入数据(在从通道读入缓冲区时)。
    position总是小于或者等于limit。
    c) capacity
    capacity变量表明可以储存在缓冲区中的最大数据容量。实际上,它指定了底层数组的大小—或者至少是指定了准许我们使用的底层数组的容量。
    limit总是小于或者等于capacity。

    2019-07-17 23:21:50
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
动态、高效,蚂蚁动态卡片的内核逻辑 立即下载
数据+算法定义新世界 立即下载
“静态调用链路发现”应用场景分析及实践探索 立即下载