Java에서 사용할 수있는 가장 좋은 원형 바이트 버퍼는 무엇입니까?

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

  •  11-07-2019
  •  | 
  •  

문제

단일 스레드 사용을 위해 Java의 바이트 버퍼 클래스가 필요합니다. 버퍼 뒷면에 데이터를 삽입하고 O (1)의 상각 비용으로 전면에서 데이터를 읽을 수 있어야합니다. 버퍼는 예외 나 무언가를 던지지 않고 가득 차면 크기를 조정해야합니다.

나는 직접 쓸 수 있었지만, 이것이 표준 Java 패키지에 아직 존재하지 않았다면 매우 놀랄 것입니다. 그렇지 않다면, 그것이 잘 테스트 된 공공 도서관에 존재할 것으로 기대합니다.

어떤 것을 권 하시죠?

도움이 되었습니까?

해결책

그것이 "최고"인지 확실하지 않지만 좋은 예가 있습니다. 원형 바이트 버퍼는 여기에 있습니다.

저것들 Java 유틸리티 - Ostermillerutils 수업이 아래에 있습니다 GPL 라이센스.

이 원형 바이트 버퍼는 바이트의 원형 버퍼 생산자/소비자 모델을 구현합니다. 버퍼를 채우고 비우는 것은 표준 Java 입력 스트림 및 출력 스트림으로 수행됩니다.

이 클래스를 사용하는 것은 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 라이센스이기 때문에 이것을 시도 할 것입니다.

나는 a를 사용하고있다 java.util.ArrayDeque<Byte> 유사한 요구 사항이있는 프로젝트에서. java.util.concurrent를 사용하여 구현을 쉽게 변경할 수 있습니다. Queue구현.

나는 그런 수업을 썼습니다.Byteringbuffer

자동으로 크기를 조정하지는 않지만 resize () 메소드가 있습니다.

자동 테스트 프로그램을 사용하여 "잘 테스트"되어 임의의 숫자를 사용하여 가능한 모든 상황을 테스트합니다.

또 다른 해결책은 사용하는 것입니다 GrowablePipedOutputStream 그리고 GrowablePipedInputStream Jboss에 의해.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top