Quel est le meilleur tampon d'octets circulaire redimensionnable disponible en Java?

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

  •  11-07-2019
  •  | 
  •  

Question

J'ai besoin d'une classe de tampon d'octets en Java pour une utilisation avec un seul thread. Je devrais pouvoir insérer des données à l’arrière de la mémoire tampon et les lire à l’avant, avec un coût amorti de O (1). Le tampon doit redimensionner lorsqu'il est plein, plutôt que de lancer une exception ou autre chose.

Je pourrais en écrire un moi-même, mais je serais très surpris que cela n'existe pas encore dans un package Java standard. Sinon, je m'attendrais à ce qu'il existe dans une bibliothèque publique bien testée. .

Que recommanderiez-vous?

Était-ce utile?

La solution

Vous n'êtes pas sûr que ce soit & "le meilleur &", mais vous avez un bel exemple de Tampon circulaire en octets ici .

Ces classes Utilitaires Java - OstermillerUtils se trouvent sous Licence GPL .

  

Ce tampon d’octets circulaire implémente le modèle producteur / consommateur de tampon circulaire pour les octets. Le remplissage et la vidange de la mémoire tampon s'effectuent à l'aide des flux Java InputStreams et OutputStreams standard.

     

L’utilisation de cette classe est une alternative plus simple que l’utilisation de PipedInputStream et de PipedOutputStream.
  PipedInputStreams et PipedOutputStreams ne prennent pas en charge l’opération de marquage, ne vous permettent pas de contrôler la taille des tampons qu’ils utilisent et ont une API plus compliquée qui nécessite l’instanciation de deux classes et leur connexion.

Autres conseils

Je me demande si celui-ci fonctionne bien

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

Nous allons probablement essayer celui-ci puisqu'il s'agit d'une licence Apache.

J'utilise un java.util.ArrayDeque<Byte> dans un projet avec des exigences similaires. Notez que vous pouvez facilement changer d’implémentation en utilisant java.util.concurrent Queue mise en œuvre.

J'ai écrit un tel cours: ByteRingBuffer

Cela ne redimensionne pas automatiquement, mais il existe une méthode resize ().

C'est & "Testé bien &"; avec un programme de test automatique, qui utilise des nombres aléatoires pour tester toutes les situations possibles.

Une autre solution consiste à utiliser GrowablePipedOutputStream et GrowablePipedInputStream de JBoss.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top