Borsh 安全高效的二进制序列化第三届中国 Rust 开发者大会 安全高效的二进制序列化 Daniel Wang @ NEAR Borsh • 运行、编码效率 • 确定性 • 跨平台兼容性 二进制序列化的问题 Binary Object Representation Serializer for Hashing • 字节级别确定性 • 执行速度快 Borsh • 轻量级 • 每一个对象与其二进制表示之间都存在一个双射映射 中, borsh 并没有使用 serde • 全部逻辑原生实现 • 序列化、反序列化速度大幅领先其他解决方案 执行速度 执行速度 benchmark 执行速度 benchmark 执行速度 benchmark 执行速度 benchmark • 编译后的体积更小 • borsh 序列化后的二进制更精简 轻量级 序列化结果体积对比 Borsh 基本用法 Case Study NEAR NEAR 智能合约 Case Study Solana 智能合约 Case Study • non self-describing • 保证序列化后的二进制唯一性和确定性 • 主要序列化规则 Borsh 规范 • 整数采用低字节序( little endian) 存储 • 对于动态长度的集合,先用一个 u32 存储集合 size • 对于原本无序的集合(如 hashmap ),存储时使用0 码力 | 21 页 | 3.35 MB | 1 年前3
Hello 算法 1.1.0 Rust版attention.”从这个意义上看,这本 书并非完全“免费”。为了不辜负你为本书所付出的宝贵“注意力”,我会竭尽所能,投入最大的“注意力” 来完成本书的创作。 本人自知学疏才浅,书中内容虽然已经过一段时间的打磨,但一定仍有许多错误,恳请各位老师和同学批评 指正。 本书中的代码附有可一键运行的源文件,托管于 github.com/krahets/hello‑algo 仓库。 动画在 PDF 内的展示效果受限,可访问 18 2.2 迭代与递归 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.3 时间复杂度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.4 空间复杂度 . . 参与创作。 前置条件 你需要至少具备任一语言的编程基础,能够阅读和编写简单代码。 0.1.2 内容结构 本书的主要内容如图 0‑1 所示。 ‧ 复杂度分析:数据结构和算法的评价维度与方法。时间复杂度和空间复杂度的推算方法、常见类型、示 例等。 ‧ 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。0 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版attention.”从这个意义上看,这本 书并非完全“免费”。为了不辜负你为本书所付出的宝贵“注意力”,我会竭尽所能,投入最大的“注意力” 来完成本书的创作。 本人自知学疏才浅,书中内容虽然已经过一段时间的打磨,但一定仍有许多错误,恳请各位老师和同学批评 指正。 本书中的代码附有可一键运行的源文件,托管于 github.com/krahets/hello‑algo 仓库。 动画在 PDF 内的展示效果受限,可访问 18 2.2 迭代与递归 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.3 时间复杂度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.4 空间复杂度 . . 参与创作。 前置条件 你需要至少具备任一语言的编程基础,能够阅读和编写简单代码。 0.1.2 内容结构 本书的主要内容如图 0‑1 所示。 ‧ 复杂度分析:数据结构和算法的评价维度与方法。时间复杂度和空间复杂度的推算方法、常见类型、示 例等。 ‧ 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。0 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.0.0 Rust版attention.”从这个意义上看,这本 书并非完全“免费”。为了不辜负你为本书所付出的宝贵“注意力”,我会竭尽所能,投入最大的“注意力” 来完成本书的创作。本人自知学疏才浅,书中内容虽然已经过一段时间的打磨,但一定仍有许多错误,恳请 各位老师和同学批评指正。 本书中的代码附有可一键运行的源文件,托管于 github.com/krahets/hello‑algo 仓库。动画在 PDF 内的 展示效果受限,可访问 18 2.2 迭代与递归 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.3 时间复杂度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.4 空间复杂度 . . 作。 � 前置条件 你需要至少具备任一语言的编程基础,能够阅读和编写简单代码。 0.1.2 内容结构 本书的主要内容如图 0‑1 所示。 ‧ 复杂度分析:数据结构和算法的评价维度与方法。时间复杂度和空间复杂度的推算方法、常见类型、示 例等。 ‧ 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。0 码力 | 383 页 | 17.61 MB | 1 年前3
Comprehensive Rust(简体中文) 2024126 宏 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6.7 练习:考拉兹序列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 6.7.1 解答 . . . . . . . . . 11 第 1 部分 授课 本页供课程讲师使用。 以下是有关 Google 内部开展课程的一些相关背景。 上课时间通常是从上午 9:00 到下午 4:00,中间有 1 小时的午餐休息时间。这样上午和下午就各有 3 小时 上课时间。上下午上课时间段内都有多次休息时间和学生做练习的时间。 在授课之前,你需要完成以下事项: 1. 熟悉课程资料。页面提供了演讲者注释以突出重点(请帮忙多多贡献演讲者备注!)。演讲时,请确保 有序,更好地向全班学员展示课程内容。 2. 决定培训日期。由于课程为期四天,建议将时间安排在两周内。课程学员曾表示,他们认为在课程保 留一些间隙有助于更好地进行理解。 3. 找一间足以容纳全体线下学员的教室。建议的班级人数为 15-25 人。这样少的人数可以让大家能够 更轻松地提问,也可以让仅有一位的讲师有足够时间回答问题。确保教室里有讲师和学生用的桌子, 并能够坐下来使用笔记本电脑。特别地,讲0 码力 | 359 页 | 1.33 MB | 10 月前3
Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 13.2. 使用迭代器处理元素序列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 中,这些错误只能通过广泛的测 试和经验丰富的开发者的仔细审核代码来捕捉。在 Rust 中,编译器充当了守门员的角色,拒 绝编译包含这些难以察觉的错误的代码,包括并发错误。通过与编译器合作,团队可以将时间 集中在程序逻辑上,而不是追踪 bug。 Rust 也为系统编程世界带来了现代化的开发工具: • Cargo 是内置的依赖管理器和构建工具,它能轻松增加、编译和管理依赖,并使依赖在 Rust 生态系统中保持一致。 target/debug 下生成可执行文件。这些优化可以让 Rust 代码运行的更快,不 过启用这些优化也需要消耗更长的编译时间。这也就是为什么会有两种不同的配置:一种是为 了开发,你需要快速且频繁地重新构建;另一种是为用户构建最终程序,它们不会经常重新构 建,并且希望程序运行得越快越好。如果你在基准测试代码的运行时间,请确保运行 cargo build --release 并使用 target/release 下的可执行文件进行测试。0 码力 | 562 页 | 3.23 MB | 27 天前3
Rust 程序设计语言简体中文版闭包:可以捕获其环境的匿名函数 ............................................................................ 319 13.2. 使用迭代器处理元素序列 ........................................................................................... 329 13 中,这些错误只能通过广泛的测试 和经验丰富的开发者的仔细审核代码来捕捉。在 Rust 中,编译器充当了守门员的角色,拒绝 编译包含这些难以察觉的错误的代码,包括并发错误。通过与编译器合作,团队可以将时间集 中在程序逻辑上,而不是追踪 bug。 Rust 也为系统编程世界带来了现代化的开发工具: • Cargo 是内置的依赖管理器和构建工具,它能轻松增加、编译和管理依赖,并使依赖在 Rust 生态系统中保持一致。 target/debug 下生成可执行文件。这些优化可以让 Rust 代码运行的更 快,不过启用这些优化也需要消耗更长的编译时间。这也就是为什么会有两种不同的配置:一 种是为了开发,你需要经常快速重新构建;另一种是为用户构建最终程序,它们不会经常重新 构建,并且希望程序运行得越快越好。如果你在测试代码的运行时间,请确保运行 cargo build --release 并使用 target/release 下的可执行文件进行测试。0 码力 | 600 页 | 12.99 MB | 1 年前3
Rust 语言学习笔记的字符串类型,就不得不先提 go 的字符串类型。 2.4.2.9.1 Golang 中的字符串类型 Go 没有专门的字符类型,存储字符直接使用 byte 来存储,字符串就是一串固 定长度的字符连接起来字符序列。与其他编程语言不同之处在于,Go 的字符串 是字节组成,而其他的编程语言是字符组成。 Go 的字符串可以把它当成字节数组来用,并且是不可变的。 Rust 的字符串底层也是 Vec动态数组,这点和 s 是特定位 置字符串的引用,这就是为什么 s 是&str 类型。 str 生命周期是 static,但是引用是有生命周期限制的。 可以在字符串字面量前加上 r 来避免转义 //没有转义序列 let d: &'static str = r"abc \n abc"; //等价于 let c: &'static str = "abc \\n abc"; 2.4.2.9.2.2 Owner: 资源的所有者 a 2.Borrower: 资源的借用者 x 3.Scope: 作用域,资源被借用/引用的有效期 无论是资源的所有者还是资源的借用/引用,都存在在一个有效的存活时间或区 间,这个时间区间称为生命周期, 也可以直接以 Scope 作用域去理解。 例子: fn main() { let a = 100_i32; { let x 0 码力 | 117 页 | 2.24 MB | 1 年前3
新一代分布式高性能图数据库的构建 - 沈游人图查询及其应用场景 图查询 • 使用图数据库的查询语言进行点边的关联查询,可以快速完成传统数据库难以完成的 多度点边关 联 当前图的典型应用场景 路径识别 群体挖掘 节点识别 相似节点 链接预测 连接强度 一致行动人 同事关系 实际控制人 可能认识的人 上下游 同爱好的人 亲属关系 … 人与人、企业与企业、企业与人之间的 复杂、潜在关系推导和挖掘 为已有的分析模型增加“关系特征”维 • 通过图嵌入将客户关系表示为低维向量,可以结合其 他客户行为特征进行机器学习训练 图卷积神经网络 • 对图结构数据进行卷积计算 • 通过已有的企业数据,通过 GCN 进行半监督学习和分 类,预测企业的违约概率 传统的关系型数据库的存储方式丢失了事物之间的关系信息 Relational Table Real World Multi-Context is Preserved with Graph IO 密集型,且访问的数据随机又分散,拥有内存缓存能起到很 好的加速效果 • 要想让内存缓存发挥最大的作用,就要能在有限的内存中存下尽量多的图数据 • 例如,对于属性的存储,可以通过自行序列化 / 反序列化大幅节省内存 • 而自定义存储格式往往需要内存的精细操作,由于 Rust 允许在 unsafe 下访问裸指针, 可以实现零开销读取 • 将 Unsafe 包裹,对外提供足够的接口 i320 码力 | 38 页 | 24.68 MB | 1 年前3
Rust 在算法交易中的实际应用与积极效应策略中心 北京/成都 分公司 研发中心 自建超算中心 徐州 新加坡/美国 海外 研发中心 Rust 在非凸算法交易服务中的全栈应用实践 内 部 智 能 引 擎 行情服务 总控模块 预测模型 策略模块 数据总线 智 能 特 征 工 程 去量纲:标准化、归一化 缺失值处理:样条插值 降维:PCA A I 信 号 生 成 LSTM 神经网络 BP 全连接网络 XGBoost 结构化多档行情 全行业指数 概念指数 龙头 lead 股票 互联网新闻 外 部 交 互 交易所引擎 Web客户端 下单指令 信息回报 母单/信息上传 统计信息查询等 数据获取 模型训练 信号预测 交易指令 交易指令 1. 低延迟高吞吐的一写多读消息队列 2. 基于共享内存,全用户态,零拷贝(配合 capnproto) 3. 针对 x86_64、AArch64 架构分别优化,CPU Cache 友好 Rust 进程间通信 XSHM Rust 全栈应用实践 - 行情、与API接入 Rust 在非凸算法交易服务中的全栈应用实践 内 部 智 能 引 擎 行情服务 总控模块 预测模型 策略模块 数据总线 智 能 特 征 工 程 去量纲:标准化、归一化 缺失值处理:样条插值 降维:PCA A I 信 号 生 成 LSTM 神经网络 BP 全连接网络 XGBoost0 码力 | 18 页 | 3.49 MB | 1 年前3
共 31 条
- 1
- 2
- 3
- 4













