任何人都可以解釋我,隊列環境中的(線性)環形緩衝區是如何工作的?如何使用環形緩衝區實現隊列?到底有什麼好處呢 ?爲什麼使用環形緩衝區?感謝預期。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. 高效循環緩衝區?