공부 기록/개념정리

인코딩 vs 디코딩 , 직렬화(serialization)

코딩걈자 2024. 4. 7. 14:12

인코딩 <-> 디코딩

  • 정보를 변환하거나 해독하는 프로세스

1) 인코딩(Encoding)

  • 데이터를 특정 형식이나 코드로 변환하는 과정 (코드화, 암호화, 부호화)
  • =사람이 인지할 수 있는 형태의 데이터를 약속된 규칙에 의해 컴퓨터가 사용하는 바이너리코드로 변화하는 과정
  • 텍스트를 비트로 변환하거나, 이미지나 음성을 특정형식으로 압축하는 등의 과정
    • 주로 문자열을 특정 인코딩 방식을 명시하여 사용
    • getBytes(), URLEncoder.encode(),,,
  • 데이터 호환성 향상, 보안 강화 , 데이터를 압축하여 저장공간 절약 및 전송시간 단축
  • ex) 문자열 -> 이진코드 , 모스부호, UTF-8, ASCII,,,,

2) 디코딩

  • 인코딩된 데이터를 원래의 형태로 복원하는 과정 (복호화, 역코드화)
  • = 사람이 이해 할 수 있도록 바꿔주는 과정
  • ex) 이진코드 -> 문자열

출처:&nbsp;https://velog.io/@chan33344/Codable-%EC%9D%B8%EC%BD%94%EB%94%A9-%EB%94%94%EC%BD%94%EB%94%A9%EC%9D%B4%EB%9E%80

직렬화(serialization)

  • 데이터 구조나 오브젝트 상태를 동일하거나 다른 컴퓨터 환경에 저장하고, 나중에 재구성할 수 있는 포맷으로 변환하는 과정 = 포맷변화 기술
    • 객체 데이터를 통신하기 쉬운 포맷형태로 만들어주는 작업
    • 객체나 데이터 구조를 메모리나 저장 장치에 저장하거나 네트워크를 통해 전송할 수 있는 형식으로 변환하는 과정
    • 주로 객체의 상태를 저장하고, 나중에 해당 상태를 복원하는 데 사용
  • 객체 상태 저장, 네트워크 통신, 파일 저장, 언어 간 통신, 버전 관리등을 위해 사용
  • 자바 직렬화, CSV , XML , JSON
    • CSV : 표 형태의 다량의 데이터를 저장하거나 전송
    • JSON : 네트워크에서 구조적인 데이터를 송수신 할 때(API) 사용

자바에서의 직렬화

  • 자바의 Object또는 Data를 다른 컴퓨터의 자바시스템에서도 사용 할 수 있도록 바이트 스트림형태로 연속적인 데이털 변환하는 기술
    • 자바는 바이트 스트림과 문자 스트림 두가지를 지원
    • 바이트 스트림으로 직렬화함으로써 다양한 플랫폼에서 자바 애플리케이션을 실행할 때 호환성 문제 없이 객체의 상태를 저장하고 전송할 수 있음
  • 변환된 바이트 스트림은 파일 시스템에 저장하거나 네트워크를 통해 다른 자바 시스템에 전송
  • 다른 컴퓨터에서 이 파일을 가져와 역직렬화를 통해 자바 객체로 변환하여 JVM메모리에 적재
  • 자바의 고유 기술인 만큼 자바시스템에 개발에 최적화
    • 별도의 형변환이나 타입을 맞출 필요없이 역직렬화 시 바로 기존 객체처럼 사용 가능(파싱x) => 자동화, 간편성
  • 여러 레퍼런스 타입에 대해 제약 없이 외부에 내보낼 수 있음 => 유연성
  • 직렬화를 위해서는 primitive type(기본타입)이거나, java.io.Serializable인터페이스 상속이 필요
  • 보안문제나 성능저하가 발생할 수 있음

출처:https://brunch.co.kr/@oemilk/179

 

반응형