繁体   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