Borsh 安全高效的二进制序列化Rust 开发者大会 安全高效的二进制序列化 Daniel Wang @ NEAR Borsh • 运行、编码效率 • 确定性 • 跨平台兼容性 二进制序列化的问题 Binary Object Representation Serializer for Hashing • 字节级别确定性 • 执行速度快 Borsh • 轻量级 • 每一个对象与其二进制表示之间都存在一个双射映射 • 不同的对象的二进制表示一定不同 • 便于基于二进制表示进行 Hash 字节级别确定性 • 在 Rust 中, borsh 并没有使用 serde • 全部逻辑原生实现 • 序列化、反序列化速度大幅领先其他解决方案 执行速度 执行速度 benchmark 执行速度 benchmark 执行速度 benchmark 执行速度 benchmark • 编译后的体积更小 • borsh borsh 序列化后的二进制更精简 轻量级 序列化结果体积对比 Borsh 基本用法 Case Study NEAR 智能合约 Case Study Solana 智能合约 Case Study • non self-describing • 保证序列化后的二进制唯一性和确定性 • 主要序列化规则 Borsh 规范 • 整数采用低字节序( little endian) 存储0 码力 | 21 页 | 3.35 MB | 1 年前3
高性能高可用机票实时搜索系统⾼性能⾼可⽤机票实时搜索系统 去哪⼉⺴ 梁启康 议题 系统诉求 海海量量数据 设计思路路 搜索框架 报价引擎 待解问题 系统诉求 • 全⽹网价最低 • 航线报价最全 • 实时性最好 • 产品最丰富 • 预定最流畅 ⾯面临问题 航班舱位时刻变动 供应商规则调整密集 航司政策各有不不同 供应商的office权限不不⼀一致 运价规则变化繁多 GDS数据成本不不菲 供应商规则量量2亿+ • 运价规则1亿+ • 报价量量 • 国内国际航线28万 * 航班数 * 产品个数 * 供应商个数 * 180天 = 1500亿 + • 搜索量量 • 航线搜索+航班搜索:3k+qps • 每秒计算产品数:搜索qps * 航班数 * 供应商个数 * 产品个数 = 1500万 + 设计思路路 • 最理理想的⽅方式 • 所有的报价都实时计算,填充好 • ⼀一个巨⼤大的哈希表 分级缓存 ⽆无状态 搜索框架 PriceMerger 报价引擎 供应商直连 旗舰店 CacheManager 抓取 App WWW Touch 分销 Cache Redis MQ MQ 航班数据 运价数据 应⽤用层 聚合层 报价源 基础数据 搜索框架 遇到问题 解决⽅方案 • 报价数量量多,内存问题 • 报价源多,不不稳定 • 响应时间要求苛刻 • 搜索条件有热点 •0 码力 | 26 页 | 1.94 MB | 1 年前3
MoonBit月兔编程语言 现代编程思想 第五课 数据类型:树、二叉树、二叉搜索树、AVL树现代编程思想 树 Hongbo Zhang 1 数据结构:树 树 ⼆叉树 ⼆叉搜索树 ⼆叉平衡树 2 ⽣活中的树状图 ⽣活中有很多的数据的结构与⼀颗树相似 谱系图(⼜称,家族树) ⽂件结构 数学表达式 …… 3 树的逻辑结构 数据结构中,树是由有限个节点构成的具有层次关系的集合 节点是存储数据的结构,节点之间存在亲⼦关系:⽗节点和⼦节点 如果树不为空,则它拥有⼀个根节点:根节点没有⽗节点 Int, queue: Queue[IntTree]) -> Bool { 2. match pop(queue) { 3. (None, _) => false // 若队列为空,结束搜索 4. (Some(head), tail) => match head { // 若队列⾮空,对于取出的树进⾏操作 5. Empty => bfs_search(target, 17 数据结构:⼆叉搜索树 为了⽅便搜索,我们将数据从⼩到⼤依次排序,便获得了基于⼆叉树的⼆叉搜索树 (Binary Search Tree) 左⼦树的数据⼩于根节点的数据⼩于右⼦树的数据 中序遍历(左、根、右)能从⼩到⼤遍历排序后的数据 搜索的最坏情况的次数是树的⾼度 + 1,⽽⾮元素总数 ⼆叉搜索树的插⼊与删除需要保证操作结束后的树依然保持着顺序 18 ⼆叉搜索树的插⼊ 对于⼀棵树0 码力 | 29 页 | 1015.26 KB | 1 年前3
Cmake 实践或者包含的版本较旧,建议 你直接从 cmake 官方网站下载安装。 http://www.cmake.org/HTML/Download.html 在这个页面,提供了源代码的下载以及针对各种不同操作系统的二进制下载,可以选择适合 自己操作系统的版本下载安装。因为各个系统的安装方式和包管理格式有所不同,在此就不 再赘述了,相信一定能够顺利安装 cmake。 三,初试 cmake – cmake 的 helloworld 3,在工程目录添加文本文件 COPYRIGHT, README; 4,在工程目录添加一个 runhello.sh 脚本,用来调用 hello 二进制 4,将构建后的目标文件放入构建目录的 bin 子目录; 5,最终安装这些文件:将 hello 二进制与 runhello.sh 安装至/usr/bin,将 doc 目录 的内容以及 COPYRIGHT/README 安装到/usr/share/doc/cmake/t2,将 指令 ADD_SUBDIRECTORY(source_dir [binary_dir] [EXCLUDE_FROM_ALL]) 这个指令用于向当前工程添加存放源文件的子目录,并可以指定中间二进制和目标二进制存 放的位置。EXCLUDE_FROM_ALL 参数的含义是将这个目录从编译过程中排除,比如,工程 的 example,可能就需要工程构建完成后,再进入 example 目录单独进行构建(当然,你0 码力 | 47 页 | 264.27 KB | 1 年前3
Python 标准库参考指南 3.10.15 46 4.7.2 printf 风格的字符串格式化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.8 二进制序列类型 --- bytes, bytearray, memoryview . . . . . . . . . . . . . . . . . . . . . . 55 4.8.1 bytes 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 7 二进制数据服务 161 7.1 struct --- 将字节串解读为打包的二进制数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 7.1.1 函数和异常 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 8.7.2 搜索有序列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 8.7.3 例子0 码力 | 2207 页 | 10.45 MB | 10 月前3
Python 标准库参考指南 3.10.15 . 43 4.7.2 printf 风格的字符串格式化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.8 二进制序列类型 --- bytes, bytearray, memoryview . . . . . . . . . . . . . . . . . . . . 52 4.8.1 bytes 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 7 二进制数据服务 149 7.1 struct --- 将字节串解读为打包的二进制数据 . . . . . . . . . . . . . . . . . . . . . . . . . 149 7.1.1 函数和异常 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 iii 8.7.2 搜索有序列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 8.7.3 例子 .0 码力 | 2072 页 | 10.39 MB | 10 月前3
Python 标准库参考指南 3.11.10 48 4.7.2 printf 风格的字符串格式化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.8 二进制序列类型 --- bytes, bytearray, memoryview . . . . . . . . . . . . . . . . . . . . . . 58 4.8.1 bytes 对象 readline 的补全函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 7 二进制数据服务 171 7.1 struct --- 将字节串解读为打包的二进制数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 7.1.1 函数和异常 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 8.7.2 搜索有序列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 8.7.3 例子0 码力 | 2399 页 | 11.19 MB | 10 月前3
Python 标准库参考指南 3.13 49 4.8.2 printf 风格的字符串格式化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.9 二进制序列类型 --- bytes, bytearray, memoryview . . . . . . . . . . . . . . . . . . . . . . 58 4.9.1 bytes 对象 用于 GNU readline 的补全函数 . . . . . . . . . . . . . . . . . . . . . . . . . 165 7 二进制数据服务 167 7.1 struct --- 将字节串解读为打包的二进制数据 . . . . . . . . . . . . . . . . . . . . . . . . . . 167 7.1.1 函数和异常 . . . . . 性能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 8.7.2 搜索有序列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 8.7.3 例子 .0 码力 | 2246 页 | 11.74 MB | 10 月前3
Python 标准库参考指南 3.13 49 4.8.2 printf 风格的字符串格式化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.9 二进制序列类型 --- bytes, bytearray, memoryview . . . . . . . . . . . . . . . . . . . . . . 58 4.9.1 bytes 对象 用于 GNU readline 的补全函数 . . . . . . . . . . . . . . . . . . . . . . . . . 164 7 二进制数据服务 165 7.1 struct --- 将字节串解读为打包的二进制数据 . . . . . . . . . . . . . . . . . . . . . . . . . . 165 7.1.1 函数和异常 . . . . . 性能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 8.7.2 搜索有序列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 8.7.3 例子 .0 码力 | 2242 页 | 11.73 MB | 10 月前3
Python 标准库参考指南 3.11.10 . 46 4.7.2 printf 风格的字符串格式化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.8 二进制序列类型 --- bytes, bytearray, memoryview . . . . . . . . . . . . . . . . . . . . 55 4.8.1 bytes 对象 . GNU readline 的补全函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 7 二进制数据服务 161 7.1 struct --- 将字节串解读为打包的二进制数据 . . . . . . . . . . . . . . . . . . . . . . . . . 161 7.1.1 函数和异常 . . . . . 性能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 8.7.2 搜索有序列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 8.7.3 例子 .0 码力 | 2248 页 | 11.10 MB | 10 月前3
共 346 条
- 1
- 2
- 3
- 4
- 5
- 6
- 35













