NIO 버퍼 (Buffer)에 대하여 알아보자
Posted 2008/09/18 15:14|
|
|
댓글 하나가 운영자에겐 커다란 힘이 됩니다!
@ Buffer class
- 버퍼는 운영체제에서 커널이 관리하는 시스템 메모리를 직접 접근 할 수 있다.
- 하나의 데이터 형태를 저장하는 컨테이너라고도 볼 수 있음.
- 시작과 끝이 있는 선형 데이터 구조를 가지고 있다.
<계층 구조>
Buffer
|- ByteBuffer - MappedByteBuffer
|- CharBuffer
|- IntBuffer
|- LongBuffer
|- FlooatBuffer
|- DoubleBuffer
Byteorder
(Byteorder : 버퍼, 메모리의 바이트 순서를 조정하여 주기 위해서 사용한다. 주로 자바 네트워킹, 유닉스 OS에서는 빅-엔디안을 사용하고 인터넷 프로토콜(IP)도 빅-엔디안을 사용하므로 사용할 일이 거의 없다. 하지만 윈도우 계열에서는 리틀-엔디안이므로 이를 빅-엔디안과 호환성 있게 하기 위해 바이트의 순서를 잡아줄 필요가 있다. )
@ 버퍼의 네가지 기본 속성(attribution)
1. position
: 버퍼에서 현재 읽거나 쓸 위치값이다. limit보다 클 경우 런타임 예외가 발생한다. 초기값은 0에서 시작한다.
2. limit
: 버퍼에서 읽거나 쓸 수 있는 한계 값이다. capacity보다 클 수 없다. 초기값은 capacity 값과 같다.
3. capacity
: 버퍼의 크기, 즉 메모리의 크기를 나타낸다. 한번 생성되면 변경될 수 없다.
4. mark
: mark() 로 현재의 position을 표기해 둘 때 사용한다. reset() 으로 mark의 위치를 posiotion으로 바꿀 수 있다. 초기값으로 -1을 가진다.
@ 버퍼에서 데이터 읽고 쓰기
(ByteBuffer를 예로 들어서...)
1. 상대적 위치를 이용해서 1바이트씩 읽고 쓰기
데이터 읽기 - public abstract byte get();
데이터 쓰기 - public abstract ByteBuffer put (byte b)
get()이나 put()메서드를 이용해서 Buffer에서 데이터를 읽거나 쓰면 position은 1 증가 하게 된다.
또한, position이 capacity인 상태에서 get() 또는 put()을 호출하면 BufferUnderflowException과 BufferOverflowException이 발생한다.
[출처] NIO 버퍼 (Buffer)에 대하여 알아보자|작성자 nicekkong
위의 정보가 도움이 되셨나요? 그렇다면 댓글 하나만 남겨주세요.
댓글 하나가 운영자에겐 커다란 힘이 됩니다!
- Filed under : 프로그래밍/Java
- Comment Trackback

