본문 바로가기
[Effective Java] Serializable 인터페이스를 분별력 있게 구현하자. [Effective Java] Serializable 인터페이스를 분별력 있게 구현하자. - 객체 직렬화(object serialization) API 는 객체를 바이트 스트림으로 인코딩하고, 인코딩된 바이트 스트림으로부터 객체를 복원(디코딩) 하는 프레임워크이다. - 객체를 바이트 스트림으로 인코딩하는 것을 직렬화(serializing)이라 하고, 그 반대의 절차를 역직렬화(deserializing)이라고 한다. - 객체가 일단 직렬화되면, 인코딩된 객체는 향후에 역직렬화 하기 위해 하나의 실행 중인 VM 에서 다른 VM 으로 전송되거나 디스크에 저장될 수 있다. 직렬화는 원격 통신을 위한 표준 통신 회선 수준의 객체 표현을 제공한다. 직렬화 프록시는 effective java 의 직렬화 주제중 가장 .. 2017. 3. 21.
[java] readResolve, writeReplace 뭐 하는 녀석일까? [java] readResolve, writeReplace 뭐 하는 녀석일까? 참조 : http://www.javalobby.org/java/forums/t17491.html singleton 의 경우 serialization 을 하면서 singleton 유지가 안 될 수 있다. Serialization 은 readResolve() 라는 private method 를 통해서 instantiation 을 진행한다. 이 녀석은 serialization 의 결과로 return 되는 object 를 이야기한다. public final class MySingleton {private static final MySingleton INSTANCE = new MySingleton();private MySingleton.. 2016. 11. 3.
[iOS Study] 저장, 읽기, 앱 상태 [iOS Study] 저장, 읽기, 앱 상태 출처 : 아론 힐리가스의 iOS 프로그래밍 -여기서는 iOS 에서 파일 시스템을 통해 읽고 쓰는 데 필요한 개념과 기법을 배운다. -아카이빙은 iOS 에서 모델 객체를 저장하는 가장 흔한 방법 중 하나이다.객체의 아카이빙은 그 객체의 프로퍼티들을 모두 기록하고 파일시스템에 그 내용을 저장하는 것을 포함한다.언아카이빙(unarchiving)은 아카이브한 데이터로부터 객체를 다시 만든다. -인스턴스들을 아카이브하고 언아카이브해야 할 클래스들은 NSCoding 프로토콜을 반드시 따라야 하며, 두 필수 메소드 encodeWithCoder: 와 initWithCoder: 를 구현해야 한다. -encodeWithCoder: 메시지를 받으면, 전달된 인자인 NSCoder .. 2016. 3. 7.
[android] Serialization 을 사용할 때 다음의 예외를 고려하자. [android] Serialization 을 사용할 때 다음의 예외를 고려하자. serialVersionUID 를 명시적으로 주자. serialVersionUID 를 명시적으로 주지 않으면, compiler 가 계산한 값을 부여한다. 환경이 변하지 않으면 좋겠지만, compiler 가 계산한 값은 상황에 따라 값이 달라질 수 있다. serialVersionUID 가 매치하지 않는 경우에 deserialize 하려고 시도하면 InvalidClassException 이 발생한다. 잠재적 위험을 피하기 위해 serialVersionUID 를 명시적으로 주는 것이 좋다. 만~약 이전 버전에 이미 compiler 가 자동으로 할당한 serialVersionUID 값을 사용하게 되었다면, 그 값을 찾아 명시적으로.. 2015. 12. 17.
반응형