`
shenlvcheng
  • 浏览: 17356 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

Buffer 缓冲

 
阅读更多
Buffer是一个包装了基本数据元素数组的对象。它对数组的访问进行了美化。这种美化是通过状态和访问方法来实现的。



缓冲区任意时刻的状态可以由三个变量来定义:

      capacity

      limit

      position



capacity

   capacity表明了缓冲区的最大数据容量,即它内部数组的大小。这个值是在创建缓冲区对象时指定,以后不会发生变化。



position

     position代表当前位置。有两层含义:第一,如果是读数据则代表下一个要读取的数据在数组中的位置;第二,如果是写数据,则代表下一个数据将放到数组的哪一个元素中。



limit

     limit在从缓冲区读数据时代表还有多少数据需要读取,在往缓冲区中写数据时代表还有多少空间可以放入数据。缓冲区对象创建时limit=capation



访问方法改变position和limit的状态



写入数据到缓冲区

      数据写入到缓冲区中数组的哪个位置是由position决定的,开始position=0,当写入一个数据后position=1。最多写入的数据大小为limit,开始limit=capacity



从缓冲区读取数据

      读取缓冲区数据的开始位置由position决定,读取一个poistion加1。最多读取的数据个数由limit决定。



flip方法

      当我们创建了一个capacity=10的缓冲区时,现在往里面写入5个数据,那么这时position=5,limit=10。如果现在要从这个缓冲区中读取数据,由于position=5所以我们无法读到刚写入的数据,这时我们可以调用flip方法,它把limit设为当前position的值,position设为0,有position=0,limit=5。



clear方法

      它做两件事情。

       1  设值 limit=capacity

       2  设值 position=0



读取缓冲区的方法

     byte get();

    ByteBuffer get( byte dst[] );

   ByteBuffer get( byte dst[], int offset, int length );

   byte get( int index );

      第一个方法获取单个字节。第二和第三个方法将一组字节读到一个数组中。第四个方法从缓冲区中的特定位置获取字节。此外,前三个 get() 操作服从 limit和 position值 — 更明确地说,字节是从当前position读取的,而 position在 get之后会增加。另一方面会忽略 limit和position值,也不会影响它们。  



写入缓冲区的方法和读差不多

分享到:
评论

相关推荐

    Buffer缓冲和页面置换

    在计算机系统中,Buffer缓冲和页面置换是两个关键的内存管理技术,特别是在处理大量数据时,它们对于提高系统性能和优化资源使用具有重要意义。 Buffer缓冲技术主要涉及到I/O操作,尤其是磁盘与内存之间的数据传输...

    linux_buffer_module.rar_buffer缓冲

    标题“linux_buffer_module.rar_buffer缓冲”指的是Linux内核中的缓冲区模块,而描述提及的《嵌入式Linux中的进程同步无竞争态读写》一文则着重讨论了如何在并发环境下通过缓冲区实现进程间的高效通信,防止数据竞争...

    Z_Buffer缓冲器可见面算法

    Z_Buffer缓冲器可见面算法是计算机图形学中的一个重要概念,用于解决三维场景中物体的深度排序问题,确保正确渲染出前景和背景的关系。这个算法由Robert L. Cook在1974年提出,极大地改进了图形渲染的效率和准确性。...

    微信小程序 Buffer缓冲区的详解

    微信小程序 Buffer 缓冲区详解 微信小程序 Buffer 缓冲区是微信小程序中的一种数据存储方式,用于处理二进制数据。在 Node.js 中,Buffer 类是核心库之一,用于创建一个专门存放二进制数据的缓存区。在微信小程序中...

    详解Nginx启用proxy_buffer缓冲

    - proxy_buffering:此指令决定是否启用proxy_buffer缓冲功能。设置为on表示开启缓冲,off则是关闭缓冲。通常,在启用缓冲后,Nginx会将响应保存在内存中,之后再转发给客户端。 - proxy_buffers:此指令定义了...

    php中的buffer缓冲区用法分析

    Buffer缓冲区允许程序将数据暂存到内存中,而不是直接输出到浏览器或其他终端,直到缓冲区满或者通过特定指令触发,才会一次性将所有数据发送出去。 ### 一、Buffer缓冲区的概念 Buffer,即缓冲区,是一种在内存中...

    nodejs基础之buffer缓冲区用法分析

    Node.js中的Buffer类是核心库的一部分,专门用来存储二进制数据。在JavaScript中,没有内置的二进制数据类型,但是通过Buffer类,我们可以在Node.js中创建和操作二进制数据。Buffer类的实例可以看作是整数数组,但...

    node.js中Buffer缓冲器的原理与使用方法分析

    以下是关于Buffer缓冲器的详细解释: 一、Buffer缓冲器 Buffer是一个内置的全局对象,用于存储和操作二进制数据。在Node.js中,当需要处理非文本数据(如图像、音频或加密数据)时,Buffer就显得尤为重要。Buffer...

    buffer应用缓冲区

    在计算机科学领域,Buffer(缓冲区)是一种重要的概念,它在数据处理中起着至关重要的作用。Buffer的应用广泛,特别是在网络编程,尤其是Socket编程中,它扮演着数据传输的桥梁角色。本文将深入探讨Buffer的基本原理...

    操作系统课程设计之多道程序缓冲区协调操作

    java实现生产者消费者进程...有三个buffer缓冲区,有多个put线程不断往第一个buffer缓冲区放入字符,有多个move线程从第一个buffer缓冲区取出字符放入buffer2或buffer3中,有多个get线程从buffer2和buffer3中取出字符。

    supermap 缓冲区分析 Buffer_Query

    SuperMap作为一款强大的GIS软件,提供了“缓冲区分析”功能,即“Buffer_Query”对象,用于创建围绕特定地理特征的区域,这些区域的大小与特征的距离有关。在本篇文章中,我们将深入探讨SuperMap中的缓冲区分析及其...

    CircleBuffer 环形缓冲区

    环形缓冲区(CircleBuffer),又称为循环缓冲区或环形队列,是一种高效的数据结构,常用于在多个线程间共享数据或者处理实时数据流。它的设计思想是利用一个固定大小的数组,通过两个指针(读指针和写指针)来追踪已...

    22. USART_CircleBuffer 串口接收环形缓冲区

    本文将深入探讨如何使用环形缓冲区(Circle Buffer)技术优化STM32的串口接收功能。 串口通信,全称通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART),是一种简单但实用的串行通信协议,...

    Buffer VC++ 进行缓冲区分析

    - 熟悉空间分析函数,如CreateBuffer,理解参数含义和返回结果。 8. **测试与调试**:编写单元测试以验证功能的正确性,使用调试工具如Visual Studio Debugger进行断点调试,检查变量状态和内存使用情况。 通过...

    这是 FPGA 中使用的循环缓冲控制器 Verilog Hardware Circular Buffer Controller

    硬件循环缓冲器控制器 介绍 这是一个用verilog编写的用于FPGA的循环缓冲控制器。 根据wiki:循环缓冲区、循环队列、循环缓冲区或环形缓冲区是一种使用单个固定大小缓冲区的数据结构,就好像它是端到端连接的一样。...

Global site tag (gtag.js) - Google Analytics