Serialization
Julia 객체의 직렬화를 제공합니다.
Serialization.serialize
— Functionserialize(stream::IO, value)
임의의 값을 불투명한 형식으로 스트림에 기록하여 deserialize
로 다시 읽을 수 있도록 합니다. 읽어들인 값은 원본과 최대한 동일하지만, Ptr
값은 모두 0 비트 패턴(NULL
)으로 직렬화된다는 점에 유의하십시오.
먼저 8바이트 식별 헤더가 스트림에 기록됩니다. 헤더를 작성하지 않으려면 Serializer
를 구성하고 이를 serialize
의 첫 번째 인수로 사용하십시오. Serialization.writeheader
도 참조하십시오.
데이터 형식은 사소한 (1.x) Julia 릴리스에서 변경될 수 있지만, 이전 1.x 버전에서 작성된 파일은 여전히 읽을 수 있습니다. 주요 예외는 외부 패키지의 유형 정의가 변경될 때입니다. 그런 경우, 영향을 받는 패키지의 호환 가능한 버전을 환경에 명시해야 할 수 있습니다. 패키지 내에서 함수 이름을 바꾸는 것, 심지어 비공식 함수도 기존 파일의 동기화를 방해할 수 있습니다. 익명 함수는 특별한 주의가 필요합니다: 이름이 자동으로 생성되기 때문에 사소한 코드 변경이 이름 변경을 초래할 수 있습니다. 장기 저장을 위한 파일에서는 익명 함수를 직렬화하는 것을 피해야 합니다.
일부 경우, 읽기 및 쓰기 기계의 단어 크기(32비트 또는 64비트)가 일치해야 합니다. 더 드문 경우에는 OS 또는 아키텍처도 일치해야 하며, 예를 들어 플랫폼 종속 코드를 포함하는 패키지를 사용할 때 그렇습니다.
serialize(filename::AbstractString, value)
파일을 열고 주어진 값을 직렬화합니다.
이 메서드는 Julia 1.1부터 사용할 수 있습니다.
Serialization.deserialize
— Functiondeserialize(stream)
serialize
로 작성된 값을 읽습니다. deserialize
는 stream
에서 읽은 이진 데이터가 올바르며 serialize
의 호환 가능한 구현에 의해 직렬화되었다고 가정합니다. deserialize
는 단순성과 성능을 위해 설계되었으며, 읽은 데이터의 유효성을 검사하지 않습니다. 잘못된 데이터는 프로세스 종료를 초래할 수 있습니다. 호출자는 stream
에서 읽은 데이터의 무결성과 정확성을 보장해야 합니다.
deserialize(filename::AbstractString)
파일을 열고 그 내용을 역직렬화합니다.
이 메서드는 Julia 1.1부터 사용할 수 있습니다.
Serialization.writeheader
— FunctionSerialization.writeheader(s::AbstractSerializer)
지정된 직렬화기에 식별 헤더를 작성합니다. 헤더는 다음과 같이 8바이트로 구성됩니다:
오프셋 | 설명 |
---|---|
0 | 태그 바이트 (0x37) |
1-2 | 서명 바이트 "JL" |
3 | 프로토콜 버전 |
4 | 비트 0-1: 엔디안: 0 = 리틀, 1 = 빅 |
4 | 비트 2-3: 플랫폼: 0 = 32비트, 1 = 64비트 |
5-7 | 예약됨 |