序列化
提供 Julia 对象的序列化。
Serialization.serialize
— 函数serialize(stream::IO, value)
将任意值以不透明格式写入流中,以便可以通过 deserialize
读取回。读取回的值将尽可能与原始值相同,但请注意,Ptr
值被序列化为全零位模式(NULL
)。
首先将 8 字节的识别标头写入流。要避免写入标头,请构造一个 Serializer
并将其用作 serialize
的第一个参数。另请参见 Serialization.writeheader
。
数据格式可能会在 Julia 的次要(1.x)版本中更改,但先前 1.x 版本编写的文件将保持可读性。对此的主要例外情况是外部包中类型的定义发生更改时。如果发生这种情况,可能需要在您的环境中指定受影响包的显式兼容版本。即使是私有函数,重命名包内的函数也会使现有文件不同步。匿名函数需要特别注意:由于它们的名称是自动生成的,因此代码的细微更改会导致它们被重命名。应避免将匿名函数序列化到用于长期存储的文件中。
在某些情况下,读取和写入机器的字大小(32 位或 64 位)必须匹配。在更罕见的情况下,操作系统或架构也必须匹配,例如在使用包含平台相关代码的包时。
serialize(filename::AbstractString, value)
打开一个文件并将给定值序列化到其中。
此方法自 Julia 1.1 起可用。
Serialization.deserialize
— 函数deserialize(filename::AbstractString)
打开一个文件并反序列化其内容。
此方法自 Julia 1.1 起可用。
Serialization.writeheader
— 函数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 | 保留 |