일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- react native accessible
- 스탠실 버퍼 시작
- html
- node.js
- stencil buffer
- node
- 스탠실 버퍼 튜토리얼
- C++
- javascript
- react native ios 기기 연결
- react native typescript navigation
- c++ 정보은닉
- CSS
- GitHub
- react
- unity stencil buffer
- 리액트 네이티브 설치 오류
- react native typescript
- react native 타입스크립트
- 벡터와 리스트의 차이
- react native mac
- cyworld
- Expo
- 스탠실 버퍼 사용
- 리액트 네이티브 맥
- 싸이월드
- c++ using
- react-native
- react native typescript navigate
- react native
- Today
- Total
혀니의 이거저거 뿌시기
직렬화와 역직렬화 본문
데이터 직렬화(serialization)는 무엇이고 왜 필요한가? (tistory.com)
데이터 직렬화(serialization)는 무엇이고 왜 필요한가?
우선 이 글은 구글링에서 나오는 여러 가지 직렬화에 대한 글들과 설명들을 읽고 제 나름대로 한번 더 이해하기 편하도록 정리한 글입니다. 데이터 직렬화(serialization), 역직렬화(deserialization)는
hub1234.tistory.com
직렬화: 객체에 저장된 데이터를 I/O 스트림에 쓰기(출력) 위해 연속적인(serial) 데이터로 변환하는 것
역직렬화: I/O 스트림에서 데이터를 읽어서(입력) 객체를 만드는 것
객체를 직렬화한다: 객체 상태를 바이트 스트림으로 바꿔서 바이트스트림을 객체의 복사본으로 되돌릴 수 있음을 의미
앞서 얘기한대로 직렬화는 데이터를 저장 혹은 통신에 사용하기 위함인데 데이터를 그냥 사용하면 안 되고 왜 직렬화라는 과정을 거쳐야 할까?
개발 언어로 무엇을 사용하던(C++, C, C#, Java 등,,) 사용하는 데이터들의 메모리 구조는 크게 2가지로 나뉜다.
1. 값 형식 데이터(Value Type) : 우리가 흔히 선언해서 사용하는 int, float, char 등, 값 형식 데이터들은 스택에 메모리가 쌓이고 직접 접근이 가능하다.
2. 참조 형식 데이터(Reference Type) : C#에서 Object 타입 혹은 C++에서 포인터 변수들이 여기에 해당된다. 해당 형식의 변수를 선언하면 힙에 메모리가 할당되고 스택에서는 이 힙 메모리를 참조하는(힙에 메모리 번지 주소를 가지고 있음) 구조로 되어있다.
이 두가지 데이터 중에서 디스크에 저장하거나 통신에는 값 형식 데이터(Value Type)만 가능하다.
참조 형식 데이터(Reference Type)는 실제 데이터 값이 아닌 힙에 할당되어있는 메모리 번지 주소를 가지고 있기 때문에 저장, 통신에 사용할 수 없다.
왜 참조 형식 데이터는 사용할 수 없을까 ?
예를 들자면
포인터 변수 Class A 를 선언하고 객체를 만들어 그 주소 값이 0x00045523라고 가정하자.
그리고 이 값을 파일에 포함하여 저장했다고 해보자.
그 후 프로그램을 종료하고 다시 실행해서 주소값 0x00045523을 가져오더라도 기존 A 객체의 데이터를 가져올 수 없다.(프로그램이 종료되면 기존에 할당되었던 메모리(0x00045523)는 해제되고 없어진다)
직렬화를 하게 되면 각 주소값이 가지는 데이터들을 전부 끌어모아서 값 형식(Value Type)데이터로 변환해준다.
이러한 이유 때문에 데이터를 저장, 통신전에 '데이터 직렬화(Serialization)' 작업이 필요한 것이다!!
요약: 직렬화를 쓰는 이유는 사용하고 있는 데이터들을 파일 저장 혹은 데이터 통신에서 파싱 할 수 있는 유의미한 데이터를 만들기 위함이다.
JQuery serialize( ), serializeArray( ), serializeObject( ) 사용법 (tistory.com)
JQuery serialize( ), serializeArray( ), serializeObject( ) 사용법
프로젝트 하면서 헷갈리는것들 정리 했습니다. 이런 형태의 form이 있을때 serialize JQuery에서 제공하는 기능인 serialize 메서드는 태그 내부의 값을 name=value으로 변경하면서 쿼리 스트링을 만들어준
soso-shs.tistory.com
액체진입에서의 예시
값 참조만 하는 playerData => 바로 ToJson으로
리스트를 많이 포함한 StageData => SerializeObject로 변환
'CS > C# & Unity' 카테고리의 다른 글
C#의 string (0) | 2023.12.12 |
---|---|
const와 readonly의 차이 (+ static) (1) | 2023.12.12 |
스태틱 게임오브젝트와 배칭 (0) | 2023.10.01 |
드로우콜과 배치 (0) | 2023.10.01 |
[C#]박싱 언박싱 (0) | 2023.09.27 |