Serialization

提供Julia对象的序列化。

Serialization.serializeFunction
serialize(stream::IO, value)

以不透明格式将任意值写入流,以便可以通过 deserialize 读取回。读取回的值将尽可能与原始值相同,但请注意,Ptr 值被序列化为全零位模式(NULL)。

首先将一个 8 字节的标识头写入流。为了避免写入头,请构造一个 Serializer 并将其作为 serialize 的第一个参数使用。另请参见 Serialization.writeheader

数据格式可能会在小的 (1.x) Julia 版本中发生变化,但由先前 1.x 版本写入的文件将保持可读。主要的例外是当外部包中类型的定义发生变化时。如果发生这种情况,可能需要在您的环境中指定受影响包的显式兼容版本。重命名包内的函数,即使是私有函数,也可能导致现有文件不同步。匿名函数需要特别小心:由于它们的名称是自动生成的,微小的代码更改可能会导致它们被重命名。应避免在用于长期存储的文件中序列化匿名函数。

在某些情况下,读取和写入机器的字长(32 位或 64 位)必须匹配。在更少见的情况下,操作系统或架构也必须匹配,例如在使用包含平台相关代码的包时。

source
serialize(filename::AbstractString, value)

打开一个文件并将给定的值序列化到其中。

Julia 1.1

此方法自 Julia 1.1 起可用。

source
Serialization.deserializeFunction
反序列化(stream)

读取由 serialize 写入的值。deserialize 假设从 stream 读取的二进制数据是正确的,并且已由兼容的 serialize 实现序列化。deserialize 旨在简化和提高性能,因此不验证读取的数据。格式错误的数据可能导致进程终止。调用者必须确保从 stream 读取的数据的完整性和正确性。

source
deserialize(filename::AbstractString)

打开一个文件并反序列化其内容。

Julia 1.1

此方法自 Julia 1.1 起可用。

source
Serialization.writeheaderFunction
Serialization.writeheader(s::AbstractSerializer)

向指定的序列化器写入一个标识头。头由以下8个字节组成:

偏移量描述
0标签字节 (0x37)
1-2签名字节 "JL"
3协议版本
4位 0-1: 字节序: 0 = 小端, 1 = 大端
4位 2-3: 平台: 0 = 32位, 1 = 64位
5-7保留
source