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

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

'공부 기록 > 개념정리' 카테고리의 다른 글
[객체 지향] JAVA _ 접근 제어자, static, 객체와 클래스 (0) | 2024.04.19 |
---|---|
박싱 vs 언박싱 , 타입 캐스팅 (0) | 2024.04.07 |
JVM (자바 가상 머신) (0) | 2024.03.30 |
런타임 vs 컴파일 타임 / 컴파일러 vs 인터프리터 (0) | 2024.03.28 |
OOP (객체지향프로그래밍) (0) | 2024.03.28 |