任何人都可以解释我,队列环境中的(线性)环形缓冲区是如何工作的?如何使用环形缓冲区实现队列?到底有什么好处呢 ?为什么使用环形缓冲区?感谢预期。Java中的环形缓冲区(队列)
1
A
回答
1
循环缓冲区对于FIFO(先入先出)场景很有用,因此对于具有固定最大大小的队列来说是一个很好的实现策略。
您通常有四个指针:
- 一个实际缓冲在存储器
- 一个在存储器中的缓冲区末尾(或:所述缓冲区的大小)
- 一个指针到开始的有效数据(即索引到数组中)
- 一个指向有效数据结束的指针。 (即索引到一个数组)
这里是当你添加一个元素(使用数组)会发生什么:
- 你的
(endindex + 1) % bufferSize
- 位置添加的元素,如果你改写您还需要增加元素
(startIndex + 1) % bufferSize
当您从缓冲区中覆盖或删除元素时,始终对队列中最长的元素执行此操作。
这个概念带有不同的用例:一个例子是内存中的日志。
更多实施细节请参考: http://en.wikipedia.org/wiki/Circular_buffer
0
看看java.util.ArrayDeque中实现。
相关问题
- 1. Java - 环形缓冲区
- 2. C++简单循环缓冲区队列
- 3. 作为“FIFO队列”的Javascript循环缓冲区队列实现
- 4. 为什么我的环形缓冲区/循环缓冲区在java打破?
- 5. 队列缓冲区中的点击OpenAL
- 6. 什么是环形缓冲区/循环队列的真实生活实例?
- 7. Recv环形缓冲区vs简单缓冲区
- 8. Java中的循环缓冲区?
- 9. 如何在C中实现循环列表(环形缓冲区)?
- 10. 比较环形缓冲区的内容
- 11. C上的环形缓冲区
- 12. 在java图形中使用缓冲区
- 13. 满/空缓冲器的区别在循环队列
- 14. 音频队列缓冲区空错误
- 15. debugfs - 环形缓冲区实现-linux
- 16. 等待免费环形缓冲区
- 17. C基本环形缓冲区问题
- 18. 缓解环形缓冲区中轮询效应的策略
- 19. FreeBSD:有关NIC环形缓冲区,mbufs和bpf缓冲区的问题
- 20. C环境中的二维环形缓冲区
- 21. OpenAL中的排队和循环缓冲区
- 22. 在缓冲区列表视图中增加“缓冲区”列宽
- 23. 显示列表作为环形缓冲区
- 24. 如何恢复emacs缓冲区列表中的缓冲区?
- 25. 图形缓冲区分配
- 26. 用于循环/环形缓冲区的npm托管库
- 27. 需要为OpenWRT中的IPC消息队列增加缓冲区
- 28. 如何清除/清除VxWorks中的消息队列缓冲区?
- 29. matlab中多边形的缓冲区
- 30. 高效循环缓冲区?