일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Adapter 패턴
- 스칼라 동시성
- Hyperledger fabric gossip protocol
- Actor
- 주키퍼
- 파이썬 강좌
- Akka
- 플레이프레임워크
- 블록체인
- Play2 로 웹 개발
- akka 강좌
- hyperledger fabric
- 그라파나
- CORDA
- 이더리움
- play2 강좌
- Golang
- 하이브리드앱
- 스위프트
- 파이썬
- 파이썬 머신러닝
- 스칼라
- 안드로이드 웹뷰
- 스칼라 강좌
- 파이썬 데이터분석
- 파이썬 동시성
- play 강좌
- 하이퍼레저 패브릭
- 엔터프라이즈 블록체인
- Play2
- Today
- Total
HAMA 블로그
직렬화(serialization) 에 대한 짧은 이야기 (Q/A) 본문
1. serialize(직렬화) 란?
-> 메모리안의 어떠한 (추상적) 데이터구조를 연속된 bit 로 외부에 보내기위해 정렬하는것.
2. 왜 직렬화를 해야하나?
-> 물리층 자체가 bit 니깐 / 가장 베이스적인 약속으로서 활용
3. 위에서 외부란 ?
-> 파일 / DB / 소켓을 통해 네트워크 외부등
4. 직렬화의 종류는 ?
-> 데이터를 어떤식으로 구조화하냐에 따라서 달라짐. 예) 자바직렬화, 구글 프로토콜버퍼
-> 프로토콜버퍼등은 데이터를 짧고 효율적이게 하는게 주목적.반면 자바직렬화는 낭비가 엄청남
5. 직렬화를 활용하는곳?
-> 소켓통신, 자바객체를 파일에 저장 ( 파워포인트등의 내용을 파일(ppt) 로 저장할때도 객체직렬화)
6. 직렬화 예제
다음은 int 형을 바이트배열로 직렬화하는 코드에요
C++ )
inline static string intDATA(int nData)
{
string value;
value.clear();
value.append("i");
value.append((const char *)&nData, sizeof(nData));
return value;
}
...
byte[] b = value.c_str();
nData 라는 int 형을 직렬화하는데, 일단 제일 앞에 1바이트로 "i" 문자열을 넣습니다.
그리고 int 형 데이터를 넣습니다. 나중에 저 string 에서 바이트배열로 뽑아내서 리모트로 보내면
상대방은 1바이트를 읽어서 "i" 면 다음에 올 배열을 int 형으로 만들수있게 됩니다. :-)
"d" 라면 다음에 올 바이트배열로 double 형을 만들어야할테지요.
Java )
ObjectOutputStream out = new ObjectOutputStream(...);
out.writeInt(10);
out 이라는 객체에 10이라는 int 형을 배열로 담고 있습니다.
마찬가지로 double 형이라면 writeDouble 으로~
writeInt 메소드의 내부에는 이렇게 되어있네요.
public final synchronized void writeInt (int value) throws IOException
{
write ((byte) (0xff & (value >> 24)));
write ((byte) (0xff & (value >> 16)));
write ((byte) (0xff & (value >> 8)));
write ((byte) (0xff & value));
}
7. 직렬화 관련된 GOF 패턴
현상태에 대한 스냅샷적인 저장 (메멘토패턴)
현 상태를 원격지로의 송신 (프록시패턴 // 프록시패턴하고 직접적인 관련은 없음)
'Java' 카테고리의 다른 글
자바 경로 (Path) 및 사용법 정리 (0) | 2015.08.12 |
---|---|
ClassNotFoundException 와 NoClassDefFoundError 차이 (0) | 2015.07.31 |
자바 어노테이션의 모든것 - (4) (0) | 2015.07.05 |
자바 어노테이션의 모든것 - (3) (0) | 2015.07.04 |
자바 어노테이션의 모든것 - (2) (0) | 2015.07.04 |