循环缓存区的实现原理

作者: SunShine__鹏 | 来源:发表于2018-11-07 14:47 被阅读3次

经常会设置一个数组之类的用来存储临时接受的数据,由于数据是临时的,具有不确定性,随机性,如果没及时读取,会造成数据丢失,对工程的运行不利。

我们如何建立一个循环的buf,当有新数据,存储在最新的位置,以便访问。

首先我们假设开辟一个10*32大小的数组a[10][32],假设我们的数据没次是32个byte,那我们可以存10组数据,当然越大越好,但一般小型处理器没有那么多可操作空间。

我们再定义一个wp变量,代表新数据的变量,即为每增加一组数据,wp 加1。

这样我们的数组便知道存储的空间占了多少,还余多少。

每次存新的数据位置在&a[wp][0]。

然后我们在设置一个访问变量 rp,用来读取之前存储的数据。每访问一次rp 加1.

每次访问的地址位置&a[rp][0]。

当没有新数据wp停止更新,等到rp=wp,代表所有数据读取完成。

当wp=10,预先设定的数组满了,再往下存就溢出了,此时就要从头开始存储到a[0][0]的位置。

对于访问也是一样当rp=10,也要返回来访问,不然访问的位置也不是我们存数据的位置了。

相关文章

  • 循环缓存区的实现原理

    经常会设置一个数组之类的用来存储临时接受的数据,由于数据是临时的,具有不确定性,随机性,如果没及时读取,会造成数据...

  • 面试相关问题

    1.常用第三库(原理及优缺) AF GPUImage SDWebimage缓存实现原理?缓存内存结构数据结构?缓存...

  • SDWebImage用法,原理以及实现过程

    简单实现缓存图片的方法: SDWebImage原理图: SDWebImage实现过程: 入口 setImageWi...

  • java基础面试题总结——其他大型框架

    1. 简述mybatis缓存机制的实现原理 mybatis缓存分为一级缓存和二级缓存: 一级缓存 概念:一级缓存即...

  • 循环缓冲区(RingBuffer)

    一、简介 1、循环缓冲区的实现原理 环形缓冲区通常有一个读指针和一个写指针。读指针指向环形缓冲区中可读的数据,写指...

  • Java ArrayDeque 原理之循环数组

    问:谈谈你对 ArrayDeque 主要方法实现原理的认识? 答:即循环数组的实现原理。 从 ArrayDeque...

  • golang作业帮面试

    1.channel实现 go调度原理 select和epoll的区别 redis分布式锁 redis缓存穿透,缓存...

  • Guava缓存

    Guava缓存是谷歌的一种本地缓存,缓存是通过使用本机的内存来存储的,实现原理类似于ConcurrentHashM...

  • 直播(一)(视音频流缓存)

    @TOC 缓存队列实现 源码下载 视频音频缓存队列实现源码demo 1.原理 初始化固定数量的结点装入空闲队列,当...

  • crontab指定时间执行程序(秒)

    crontab 指定秒执行原理: shell脚本for循环 for语句实现循环指定秒数执行。laravel框架 ...

网友评论

    本文标题:循环缓存区的实现原理

    本文链接:https://www.haomeiwen.com/subject/ohcvxqtx.html