Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- DFS
- CS
- 부트캠프
- 패스트캠퍼스
- Javascript
- 코테
- js
- 컴퓨터공학
- html/css/js
- BFS
- 호이스팅
- 자바스크립트
- 국비지원
- 알고리즘
- 국비지원취업
- CSS
- git
- 야놀자
- LinkSnap
- 그리디
- github
- 프론트엔드개발자
- nodejs
- 코딩테스트
- 너비우선탐색
- KAKAO
- 백준
- cpu
- 컴퓨터과학
- computerscience
Archives
- Today
- Total
My Boundary As Much As I Experienced
직렬화(serialization)와 역직렬화(deserialization) 본문
직렬화와 역직렬화는 데이터의 저장 및 전송을 위해 사용되는 중요한 개념이다.
직렬화 (Serialization)
직렬화는 객체나 데이터 구조를 연속적인 바이트 스트림으로 변환하는 과정이랜다..
이렇게 변환된 데이터는 파일에 저장하거나 네트워크를 통해 전송할 수 있다.
직렬화된 데이터는 원본 객체의 상태를 완전히 표현하여, 나중에 이를 역직렬화해서 원본 객체를 복원할 수 있다.
예시
- 파일 저장: 객체를 파일에 저장할 때 직렬화하여 저장하고, 필요할 때 파일을 읽어 역직렬화한다.
- 네트워크 전송: 객체를 네트워크를 통해 전송할 때 직렬화하여 전송하고, 수신 측에서 역직렬화하여 원본 객체를 복원한다.
쉽게 말해, 가장 많이 쓰는 걸로는 JSON.stringify가 있다. 객체 자료구조를 string데이터로 제단(?)한다.
const user = { name: "Alice", age: 25 };
const serializedUser = JSON.stringify(user); // 직렬화: 객체를 JSON 문자열로 변환
console.log(serializedUser); // {"name":"Alice","age":25}
영상이나 이미지를 버퍼로 쪼개서 보내는 것도 직렬화의 한 예시라고 한다.
// JSON 문자열은 UTF-8 바이트 스트림으로 변환될 수 있음
const byteStream = Buffer.from(serializedUser, 'utf-8');
console.log(byteStream); // <Buffer 7b 22 6e 61 6d 65 22 3a 22 41 6c 69 63 65 22 2c 22 61 67 65 22 3a 32 35 7d>
역직렬화 (Deserialization)
역직렬화는 직렬화된 바이트 스트림을 다시 원래의 객체나 데이터 구조로 변환하는 과정이다.
이를 통해 저장된 데이터나 전송된 데이터를 원래의 형태로 복원할 수 있다.
예시
- 파일 읽기: 파일에서 읽은 직렬화된 데이터를 역직렬화하여 원본 객체를 복원한다.
- 네트워크 수신: 네트워크를 통해 수신된 직렬화된 데이터를 역직렬화하여 원본 객체를 복원한다.
const serializedUser = '{"name":"Alice","age":25}';
const user = JSON.parse(serializedUser); // 역직렬화: JSON 문자열을 객체로 변환
console.log(user); // { name: 'Alice', age: 25 }
'BackEnd > Node.js' 카테고리의 다른 글
express) dotenv 라이브러리 세팅 (0) | 2024.08.19 |
---|---|
express로 회원가입 API 만들기 (+ Hashing 적용하기, 접근 권한 적용하기) (0) | 2024.08.11 |
express로 세션(session) 구현하기 (feat. passport, express-session) (0) | 2024.08.05 |
Session, JWT, OAuth이란? (0) | 2024.08.05 |
express로 페이지네이션 구현하기 (0) | 2024.08.03 |