簡體   English   中英

Java中可用的最佳可調整大小的循環字節緩沖區是什么?

[英]What is the best resizable circular byte buffer available in Java?

我需要Java中的字節緩沖類來實現單線程使用。 我應該能夠在緩沖區的后面插入數據並在前面讀取數據,攤銷成本為O(1)。 緩沖區應該在它滿時調整大小,而不是拋出異常或其他東西。

我自己可以寫一個,但如果在標准的Java包中不存在,我會感到非常驚訝,如果沒有,我希望它存在於一些經過良好測試的公共庫中。

你會推薦什么?

不確定它是否是“最好的”,但你在這里有一個很好的循環字節緩沖區示例。

那些Java Utilities - OstermillerUtils類屬於GPL許可

此循環字節緩沖區實現字節的循環緩沖區生成器/使用者模型。 使用標准Java InputStreams和OutputStreams完成緩沖區的填充和清空。

使用此類是使用PipedInputStream和PipedOutputStream的更簡單的替代方法。
PipedInputStreams和PipedOutputStreams不支持標記操作,不允許您控制它們使用的緩沖區大小,並且具有更復雜的API,需要實例化兩個類並連接它們。

我想知道這個是否運作良好

https://svn.apache.org/repos/asf/etch/releases/release-1.0.0/util/src/main/java/etch/util/CircularByteBuffer.java

我們可能會嘗試這個,因為它是apache許可證。

我在具有類似要求的項目中使用java.util.ArrayDeque<Byte> 請注意,您可以使用java.util.concurrent Queue實現輕松更改實現。

我寫了這樣一個類: ByteRingBuffer

它不會自動調整大小,但有一個resize()方法。

它使用自動測試程序進行了“充分測試”,該程序使用隨機數來測試所有可能的情況。

另一個解決方案是使用JBoss的GrowablePipedOutputStreamGrowablePipedInputStream

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM