[F-Lab 모각코 챌린지] 10일차(1) - Serializable & NIO

F-Lab 모각코 챌린지 10일차 를 진행 하며 정리 한 내용을 기록합니다 오늘은 자바의 신 27 장을 학습 하였으며, 내용이 길어서 여러 챕터로 나누었습니다.

[F-Lab 모각코 챌린지] 10일차(1) - Serializable & NIO

Serializable & NIO

Serializable

  • Marker interface 중 하나
  • 직렬화가 가능한 오브젝트임을 명시 할 수 있다.
  • transient 키워드를 사용하여 선언 한 변수는 Serializable 의 대상에서 제외됨

serialVersionUID

객체의 버전을 명시하는 데 사용

여러 네트워크에서 객체의 전송 시 객체의 버전을 명시하여 '어떤 객체가 최신 버전인지' 알 수 있게 하기 위해 사용한다

NIO

  • 동기/비동기 방식의 IO 를 위해 만들어진 패키지
    (기존의 Java IO Api 는 블로킹 방식으로 동작)

Channel

String fileName = "파일이름";
byte[] byteData = "파일 데이터";
FileChannel channel = new FileOutputStream(fileName).getChannel();
ByteBuffer buffer = ByteBuffer.wrap(byteData);
channel.write(buffer);
channel.close();
  • 데이터의 입출력을 위해 사용되는 클래스
  • 파일, 소켓, 파이프 등 과 연결되어 데이터를 읽고 쓰는 기능을 제공
  • 논블로킹 방식으로 동작
  • 멀티 플렉싱 지원:
    Selector 를 사용하여 다수의 채널을 단일 스레드로 관리 가능
    Selector 는 여러 채널의 IO 작업 상태를 모니터링 하고 준비된 작업을 처리 할 수 있는 기능을 제공

상속 구현체

  • FileChannel:
    파일 입출력을 위한 채널. 파일 읽기 쓰기 가능
  • SocketChannel:
    네트워크 소켓 입출력 작업을 위한 채널.
    TCP/IP 기반의 네트워크 소켓 연결에서 데이터를 읽고 쓰는 작업 수행
  • ServerSocketChannel:
    네트워크 서버 소켓 입출력 작업을 위한 채널.
    서버 소켓을 생성하고 클라이언트의 요청을 수락하는 작업 수행
  • DatagramChannel:
    UDP 기반의 데이터그램 소켓 입출력 작업을 위한 채널.
    데이터그램 패킷을 수신하고 전송하는 작업을 수행
  • Pipe.SinkChannel & Pipe.SourceChannel:
    파이프를 통해 스레드간 데이터를 전송하기 위한 채널

Buffer

데이터를 임시로 저장하는 공간

입출력 작업을 위해 데이터를 버퍼로 읽고 버퍼에서 데이터를 쓰는 방식

버퍼는 다음의 특징을 갖음

  • 고정 크기
    버퍼는 생성 시 고정된 크기를 갖음.
    이 크기는 버퍼에 저장 할 수 있는 데이터의 최대 양을 나타냄
  • 상대적 위치 지정
    버퍼는 현재 위치와 한계(Limit) 를 가지고 있음.
    현재 위치는 버퍼에서 읽거나 쓸 데이터의 위치를 가리킴
    Limit 은 버퍼에서 읽거나 쓸 수 있는 데이터의 한계를 나타냄

상속 구현체

  • ByteBuffer:
    바이트 데이터를 저장하고 읽어올 수 있는 버퍼 클래스
    파일 IO, 네트워크 통신 등 다양한 입출력에 사용됨
  • CharBuffer:
    문자 데이터를 저장하고 읽어올 수 있는 버퍼 클래스
    문자열 처리, 텍스트 파일 입출력 등 문자열 데이터 입출력에 사용
  • ShortBuffer:
    2 byte 의 부호 없는 정수(short) 데이터 저장 및 읽어올 수 있는 버퍼
  • IntBuffer:
    4 바이트의 부호 없는 정수(int) 데이터 저장 및 읽어올 수 있는 버퍼
  • LongBuffer:
    8 바이트의 부호 없는 정수(long) 데이터 저장 및 읽어올 수 있는 버퍼
  • FloatBuffer:
    4 바이트의 부동 소수점(float) 데이터 저장 및 읽어올 수 있는 버퍼
  • DoubleBuffer:
    8 바이트 부동 소수점(double) 데이터 저장 및 읽어올 수 있는 버퍼