Borsh 安全高效的二进制序列化## RUST CHINA CONF 2023 第三届中国 Rust 开发者大会 6.17-6.18 @Shanghai ## Borsh ## 安全高效的二进制序列化 Daniel Wang @ NEAR ## 二 进制序列化的问题 运行、编码效率 • 确定性 • 跨平台兼容性 Borsh ## Binary Object Representation Serializer for 每一个对象与其二进制表示之间都存在一个双射映射 不同的对象的二进制表示一定不同 • 便于基于二进制表示进行 Hash ## 执行速度 • 在 Rust 中,borsh 并没有使用 serde 全部逻辑原生实现 • 序列化、反序列化速度大幅领先其他解决方案 ## 执行速度 benchmark  ## 轻量级 • 编译后的体积更小 • borsh 序列化后的二进制更精简 ## 序列化结果体积对比 #[derive(BorshSerialize, Borsh Deserialize, Serialize, Deserialize, PartialEq, Debug)]0 码力 | 21 页 | 3.35 MB | 2 年前3
Celery v4.0.1 Documentationnored If True, errors will be stored even if the task is configured to ignore results. ### Task.序列化器 A string identifying the default serialization method to use. Defaults to the task_serializer setting0 码力 | 705 页 | 2.63 MB | 2 年前3
ItsDangerous Documentation (1.1.x)
Release 1.1.00 码力 | 28 页 | 178.96 KB | 2 年前3
Exporting Go0 码力 | 34 页 | 2.29 MB | 2 年前3
Go性能优化概览-曹春晖一定要用自己的真实业务场景做压测 不要相信 readme 里的压测数据 ## 总结一下 ## • CPU 使用太高 • 应用逻辑导致 JSON 序列化 使用优化的 JSON 库替换标准库 使用二进制编码方式替代 JSON 编码 • 同物理节点通信,使用共享内存 IPC,干掉序列化开销 MD5 算 hash 成本太高 -> 使用 cityhash,murmurhash • 其它应用逻辑 -> case0 码力 | 40 页 | 8.69 MB | 2 年前3
IPC性能极致优化方案-RPAL落地实践微服务合并部署(亲和性部署、sidecar 部署) 2.本地基础组件:mesh sidecar、风控 sidecar、分布式网关... ## 方案诞生的背景 微服务合并部署 微服务化拆分: 1. 序列化 2.网络开销 3. 服务治理  1f0ff9d02a06a91/p10_1.jpg) ## 方案诞生的背景 IPC 的性能瓶颈有哪些: 1. 系统特权级切换; 2.异步线程唤醒/休眠(事件通知); 3. 数据拷贝(序列化/反序列化); ## 方案诞生的背景 能不能把库函数调用的高性能优势做到 IPC 里面,降低进程间的事件通知和数据拷贝开销? 以go-go微服务 RPC 通信场景为例,该问题可以抽象为,如何高效地在两个 f9d02a06a91/p12_1.jpg) ## 方案诞生的背景 从性能瓶颈的两点分析: 1. 异步线程唤醒: 关键在于如何最低限度降低线程唤醒的开销,非必要不通知事件。 2.数据序列化/反序列化 需要做到跨进程的虚拟地址空间共享,通过传递指针来传递一切数据。 基于以上问题,我们最终引入了 RPAL(Run Process As Library)方案,基于跨进程虚拟地址共享,复用 epoII0 码力 | 39 页 | 2.98 MB | 2 年前3
Java 应用与开发 - 高级 I/O 编程properties -- password=12345 name=Kevin ## 对象序列化 ## 概念 对象序列化(Object Serialization)是指将对象的状态数据以字节流的形式进行处理,一般用于实现对象的持久性,即长久保存一个对象的状态并在需要时获取该对象的信息以重新构造一个状态完全相同的对象。对象序列化可以理解为使用 I/O “对象流”类型实现对象读/写操作。 ## 基本概念 对象的持久性(Object Persistence)长久保存一个对象的状态并在需要时获取该对象的信息以重新构造一个状态完全相同的对象。 对象序列化(Object Serialization)通过写出对象的状态数据来记录一个对象。 对象序列化的主要任务 写出对象的状态信息,并遍历该对象对其他对象的引用,递归的序列化所有被引用到的其他对象,从而建立一个完整的序列化流。  ## 同步写法存在问题 算法效率低下 计算逻辑和网络io是串行的,不相关的计算逻辑和网络io本可以并行,以提高效率 算法逻辑和网络逻辑耦合 有大量的数据序列化以及异步转同步 的网络流程代码,算法本身不应该关注网络相关逻辑 嵌套调用其他算法复杂 在需要调用其他算法时(OT,SS 等),都需要手动编写一遍类似的流 程,嵌套调用逻辑冗余度比较高 ## 嵌套调用其他算法 executor) 发送ack ## 同步写法存在问题 算法效率低下 计算逻辑和网络io是串行的,不相关的计算逻辑和网络io本可以并行,以提高效率 算法逻辑和网络逻辑耦合 有大量的数据序列化以及异步转同步 的网络流程代码,算法本身不应该关注网络相关逻辑 嵌套调用其他算法复杂 在需要调用其他算法时(OT,SS) 等),都需要手动编写一遍类似的流 程,嵌套调用逻辑冗余度比较高 ## len(resultValues)-1] return resultValues, pErr: nil ## 隐私计算算法框架-网络消息处理 由于元函数的入参中包含由其他参与方发送来的数据,框架需要实现自动将收到的消息反序列化并缓存,否则无法进入到元函数调度流程注并入到元对应函数的入参中 type Msg struct { } func participantMetaFunc(ctx *framework.Context)0 码力 | 37 页 | 6.20 MB | 2 年前3
Redisson-官方文档中文翻译目 录 致谢 介绍 概览 配置 操作执行 数据序列化 数据分区 分布式对象 分布式集合 分布式锁和同步器 其它特性 Redis命令映射 致谢 当前文档 《Redisson 官方文档中文翻译》 由 进击的皇虫 使用 书栈(BookStack.CN)进行构建,生成于 2018-05-11。 书栈(BookStack.CN)仅提供文档编写、整理、归类等功能,以及对文档内容的生成和导出工具。 文档内容由 codec.KryoCodec Kryo 二进制 codec org.redisson.codec.SerializationCodec JDK 序列化 codec org.redisson.codec.FstCodec FST 10倍速且100%JDK序列化兼容的codec org.redisson.codec.LZ4Codec LZ4压缩codec org.redisson.codec.SnappyCodec compareAndSet(10, 91); PublishergetPublisher = longObject.get(); 数据序列化 数据序列化 数据序列化 数据序列化在 Redisson 中广泛地用于解编排在 Redis 服务器连接的网络上接收和发送的字节。 默认有多种流行的解编码器可用: Codec类名 描述 org.redisson0 码力 | 79 页 | 1.51 MB | 1 月前3
Python3 基础教程 - 廖雪峰....240 IO 编程.....245 文件读写.....247 StringIO 和 BytesIO.....251 操作文件和目录.....253 序列化.....257 进程和线程.....263 多进程.....267 多线程.....274 ThreadLocal.....282 进程 vs. 线程.....285 分布式进程 模块编写一个能实现 dir -l 输出的程序。 2. 编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。 ## 参考源码 do dir ## 序列化 在程序运行的过程中,所有的变量都是在内存中,比如,定义一个 dict: d = dict(name='Bob', age=20, score=88) 可以随时修改变量,比如把 name 我们把变量从内存中变成可存储或传输的过程称之为序列化,在 Python 中叫 pickling,在其他语言中也被称之为 serialization,marshalling, flattening 等等,都是一个意思。 序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。 反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即 unpickling。 Python0 码力 | 531 页 | 5.15 MB | 2 年前5
共 363 条
- 1
- 2
- 3
- 4
- 5
- 6
- 37













