자바 I/O & NIO 네트워크 정리 13 : 버퍼 개요

0

1. 🚀 버퍼

버퍼는 커널이 관리하는 시스템 메모리를 직접 사용 할 수 있고, 어떤 하나의 데이터 형태들을 저장하는 컨테이너이다.

1. Buffer 와 ByteOrder

ByteOrder 클래스에 대해 알아보자면, 컴퓨터 마다 바이트를 저장하는 순서가 다른데,
빅엔디언리틀 엔디언으로 구분할 수 있다.

네트워크로 데이터를 전송할 때 같은 엔디안 시스템을 사용하는 컴퓨터에서는 호환성 문제가 생기지 않는다. 하지만 서로 다른 엔디안을 사용하는 컴퓨터의 경우 컴퓨터가 데이터를 제대로 읽지 못하는 경우가 생길 수 있다.

윈도우에서 C/C++로 네트워크 프로그래밍을 한다면 엔디안 변환을 해서 데이터의 입출력을 맞춰야겠지만,
자바의 경우 빅 엔디안 방식을 사용하므로 바이트 순서에 대한 고려가 필요 없다.

2. 💔 버퍼의 네가지 기본 속성

버퍼는 시작과 끝이 있는 일직선 모양의 데이터 구조를 가지며 상태정보를 4개의 속성값에 저장한다.

속성설명
position현재 읽거나 쓸 위치 값.
limit버퍼에서 읽을수 있는 한계값.
capacity버퍼의 크기를 나타낸다.
mark현재의 위치를 표시해둘때 사용한다. 나중에 reset()메소드를 호출하면 position을 바꿀수있다.

capcity속성은 버퍼의 바이트크기를 정하는 것이 아니라 각 형식 버퍼에 맞는 기본 형식의 데이터를 각각의 기본형 버퍼 클래스에 몇개나 넣을수 있는지 나타내는 것이다.

3. ☪ 버퍼 클래스가 제공하는 유틸리티 메소드

버퍼클래스는 유용한 유틸리티 메소드를 제공한다.

1. clear()

2. rewind()

3. flip()

4. 🔆 버퍼 하위 클래스

1. compact() 메소드

2. duplicate() 메소드

3. asReadOnlyBuffer() 메소드

4. slice 메소드

5. 💢 버퍼 만들기

1.

2.

6. 💟 채널에서 버퍼 사용하기

profile
쉽게 가르칠수 있도록 노력하자

0개의 댓글