apache mina 학습(9)---IoBuffer

2928 단어 apache.
mina 에 서 는 자바 nio 의 원생ByteBuffer바 텀 캐 시 흐름 처리 방식 을 직접 사용 하지 않 았 습 니 다.구체 적 인 원인 은 공식 적 으로 다음 과 같 습 니 다.
1.NIO ByteBuffer 는 사용 가능 한 getters 와 putters 를 제공 하지 않 았 습 니 다.
2.고정된 크기 에 가 변 길이 의 데 이 터 를 쓰기 어렵다.
물론 미 나 는 우리 에 게 원생 니 오의 ByteBuffer 를 사용 하지 말 라 는 것 이 아니다.이 점 을 우 리 는 IoBuffer 의 allocat 방법 으로 알 수 있다.
public static IoBuffer allocate(int capacity, boolean direct)
public static IoBuffer allocate(int capacity)
첫 번 째 매개 변 수 는 buffer 의 크기 이 고 두 번 째 매개 변 수 는 true 로 nio 를 표시 합 니 다.
ByteBuffer,false 는 mina 의 buffer 를 사용 합 니 다.
자동 으로 확 장 된 buffer 를 만 들 려 면 nio 의 by tebuffer 는 매우 불편 합 니 다.이것 은 추가 적 인 작업 이 필요 하기 때 문 입 니 다.즉,우 리 는 스스로 작은 플러그 인 을 실현 해 야 합 니 다.물론 mina 의 buffer 를 사용 하면 훨씬 편리 합 니 다.
IoBuffer buffer = IoBuffer.allocate(8);
buffer.setAutoExpand(true);

buffer.putString("12345678", encoder);

// Add more to this buffer
buffer.put((byte)10);

buffer 는 자동 으로 확장 할 수 있 는 것 외 에 도 자동 으로 수축 할 수 있 습 니 다.
package com.test;
import org.apache.mina.core.buffer.IoBuffer;
public class TestOther {
public static void main(String[] args) {
IoBuffer buffer = IoBuffer.allocate(16);
buffer.setAutoShrink(true);
buffer.put((byte)1);
System.out.println("Initial Buffer capacity = "+buffer.capacity());
buffer.shrink();
System.out.println("Initial Buffer capacity after shrink = "+buffer.capacity());
buffer.capacity(32);
System.out.println("Buffer capacity after incrementing capacity to 32 = "+buffer.capacity());
buffer.shrink();
System.out.println("Buffer capacity after shrink= "+buffer.capacity());
}
}
실행:
Initial Buffer capacity = 16
Initial Buffer capacity after shrink = 16
Buffer capacity after incrementing capacity to 32 = 32
Buffer capacity after shrink=16 우 리 는 최소 길이 가 16 이 라 고 정 의 했 기 때문에 16 미 만 일 때 shrink 방법 을 사용 하면 줄 어 들 지 않 습 니 다.크기 가 32 로 설정 되 었 을 때 절반 의 공간 으로 만 저장 되 었 습 니 다.shrink 을 사용 한 후에 남 은 공간 은 방출 되 고 크기 도 반 으로 줄 어 자원 의 충분 한 이용 에 유리 합 니 다.
IoBufferAllocater 인 터 페 이 스 는 buffer 정책 을 분배 하고 관리 합 니 다.기본 값 은 Simple BufferAllocator 입 니 다.즉,매번 새로운 buffer 를 만 듭 니 다.물론 Cached BufferAllocator 는 buffer 를 다시 사용 하여 더 좋 은 성능 을 얻 을 수 있 습 니 다.

좋은 웹페이지 즐겨찾기