Сериализация
Обеспечивает сериализацию объектов Julia.
#
Serialization.serialize
— Function
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
Этот метод впервые реализован в Julia 1.1. |
#
Serialization.deserialize
— Function
deserialize(stream)
Считывает значение, записанное функцией serialize
. Функция deserialize
предполагает, что двоичные данные, считанные из stream
, верны и были сериализированы совместимой реализацией функции serialize
. Функция deserialize
сделана максимально простой и производительной и поэтому не проверяет считываемые данные. Неправильно сформированные данные могут привести к завершению процесса. Вызывающая сторона должна проверять целостность и корректность данных, считываемых из stream
.
deserialize(filename::AbstractString)
Открывает файл и десериализирует его содержимое.
Совместимость: Julia 1.1
Этот метод впервые реализован в Julia 1.1. |
#
Serialization.writeheader
— Function
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 |
зарезервированы |