¿Cuál es el mejor búfer de bytes circular redimensionable disponible en Java?

StackOverflow https://stackoverflow.com/questions/325602

  •  11-07-2019
  •  | 
  •  

Pregunta

Necesito una clase de búfer de bytes en Java para uso de subproceso único. Debería poder insertar datos en la parte posterior del búfer y leer los datos en la parte delantera, con un costo amortizado de O (1). El búfer debería cambiar de tamaño cuando esté lleno, en lugar de generar una excepción o algo.

Podría escribir uno yo mismo, pero me sorprendería mucho si esto aún no existiera en un paquete estándar de Java, y si no es así, esperaría que exista en una biblioteca pública bien probada .

¿Qué recomendarías?

¿Fue útil?

Solución

No estoy seguro si es " el mejor " ;, pero tiene un buen ejemplo de Búfer circular de bytes aquí .

Esas Java Utilities - OstermillerUtils están en licencia GPL .

  

Este búfer circular de bytes implementa el modelo circular de productor / consumidor de búfer para bytes. El llenado y vaciado del búfer se realiza con Java InputStreams y OutputStreams estándar.

     

Usar esta clase es una alternativa más simple que usar un PipedInputStream y un PipedOutputStream.
  PipedInputStreams y PipedOutputStreams no admiten la operación de marca, no le permiten controlar los tamaños de búfer que usan y tienen una API más complicada que requiere instanciar dos clases y conectarlas.

Otros consejos

Me pregunto si este funciona bien

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

Probablemente probaremos este ya que es una licencia de Apache.

Estoy usando un java.util.ArrayDeque<Byte> en un proyecto con requisitos similares. Tenga en cuenta que puede cambiar fácilmente la implementación utilizando un java.util.concurrent Queue implementación.

He escrito tal clase: ByteRingBuffer

No cambia el tamaño automáticamente, pero hay un método resize ().

Es " bien probado " con un programa de prueba automática, que usa números aleatorios para probar todas las situaciones posibles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top