 基于 Rust Arrow Flight 的物联网和时序数据传输及转换工具 霍琳贺https://crates.io/crates/flume • Web Service: • Framework: https://crates.io/crates/actix-web • OpenAPI:https://crates.io/crates/utoipa • Metrics: https://crates.io/crates/metrics • Database: https://crates0 码力 | 29 页 | 2.26 MB | 1 年前3 基于 Rust Arrow Flight 的物联网和时序数据传输及转换工具 霍琳贺https://crates.io/crates/flume • Web Service: • Framework: https://crates.io/crates/actix-web • OpenAPI:https://crates.io/crates/utoipa • Metrics: https://crates.io/crates/metrics • Database: https://crates0 码力 | 29 页 | 2.26 MB | 1 年前3
 简谈 Rust 与国密 TLS - 王江桐TLS 指使用国密套件的 TLS 协议,包含如下规范: • GM/T 0024-2014 SSL VPN技术规范:国密 SSL 协议,参考了 TLS 1.0 规范,整个协议握手与加密流程基本 与其一致,但和 TLS 1.0 并不兼容; • GB/T 38636-2020 信息安全技术 传输层密码协议(TLCP):TLCP 协议,参考 TLS 1.2 规范,基本兼容 GM/T 0024-2014 社区其他库: • 社区中国密支持较弱,当前框架未经过审计,提供统一实现可以解决这一问题; • 期望:实现具有统一管理、标准并且通过审核保证规范性的Rust密码库: • 更好地实现社区暂时缺少支持的国密算法以及国密 TLS 协议,补充生态完整性; • 完成公司审计,保证规范性和安全性。 使用 Rust 实现国密算法 Use Rust to Implement Shangmi Algorithms Rust arXiv:2107.04940v1 [cs.CR], https://arxiv.org/abs/2107.04940, 2021年6月11日 • GM/T 0024-2014 SSL VPN技术规范:https://github.com/guanzhi/GM- Standards/blob/master/GMT%E6%AD%A3%E5%BC%8F%E6%A0%87%E5%87%86/GMT%200024-0 码力 | 44 页 | 3.70 MB | 1 年前3 简谈 Rust 与国密 TLS - 王江桐TLS 指使用国密套件的 TLS 协议,包含如下规范: • GM/T 0024-2014 SSL VPN技术规范:国密 SSL 协议,参考了 TLS 1.0 规范,整个协议握手与加密流程基本 与其一致,但和 TLS 1.0 并不兼容; • GB/T 38636-2020 信息安全技术 传输层密码协议(TLCP):TLCP 协议,参考 TLS 1.2 规范,基本兼容 GM/T 0024-2014 社区其他库: • 社区中国密支持较弱,当前框架未经过审计,提供统一实现可以解决这一问题; • 期望:实现具有统一管理、标准并且通过审核保证规范性的Rust密码库: • 更好地实现社区暂时缺少支持的国密算法以及国密 TLS 协议,补充生态完整性; • 完成公司审计,保证规范性和安全性。 使用 Rust 实现国密算法 Use Rust to Implement Shangmi Algorithms Rust arXiv:2107.04940v1 [cs.CR], https://arxiv.org/abs/2107.04940, 2021年6月11日 • GM/T 0024-2014 SSL VPN技术规范:https://github.com/guanzhi/GM- Standards/blob/master/GMT%E6%AD%A3%E5%BC%8F%E6%A0%87%E5%87%86/GMT%200024-0 码力 | 44 页 | 3.70 MB | 1 年前3
 Borsh 安全高效的二进制序列化self-describing • 保证序列化后的二进制唯一性和确定性 • 主要序列化规则 Borsh 规范 • 整数采用低字节序( little endian) 存储 • 对于动态长度的集合,先用一个 u32 存储集合 size • 对于原本无序的集合(如 hashmap ),存储时使用 key 的字典序排序 Borsh 规范 let a: [u32; 5] = [1, 2, 3, 4, 5]; let a0 码力 | 21 页 | 3.35 MB | 1 年前3 Borsh 安全高效的二进制序列化self-describing • 保证序列化后的二进制唯一性和确定性 • 主要序列化规则 Borsh 规范 • 整数采用低字节序( little endian) 存储 • 对于动态长度的集合,先用一个 u32 存储集合 size • 对于原本无序的集合(如 hashmap ),存储时使用 key 的字典序排序 Borsh 规范 let a: [u32; 5] = [1, 2, 3, 4, 5]; let a0 码力 | 21 页 | 3.35 MB | 1 年前3
 Rust API可靠性分析与验证Conf 2021 – 2022, Online, China Rust静态检查与动态检查 静态检查: • 基于所有权和生命周期的内存管理模型:内存安全 • 通过trait来确保代码符合某些规范:Send, Sync, Unpin等 动态检查: • 数组越界 • 整数溢出 • Unicode字符边界 Rust China Conf 2021 – 2022, Online, China0 码力 | 13 页 | 1.68 MB | 1 年前3 Rust API可靠性分析与验证Conf 2021 – 2022, Online, China Rust静态检查与动态检查 静态检查: • 基于所有权和生命周期的内存管理模型:内存安全 • 通过trait来确保代码符合某些规范:Send, Sync, Unpin等 动态检查: • 数组越界 • 整数溢出 • Unicode字符边界 Rust China Conf 2021 – 2022, Online, China0 码力 | 13 页 | 1.68 MB | 1 年前3
 王宜国 - 基于 Rust 编程语⾔构建 Amphitheatre CLI  Desktop  Server 的全平台实践经验Update 模式原理 开启实时更新(Live Update)模式时,当你在⼯程根 ⽬录放置 .devcontainer ⽬录时,Amphitheatre 终端软 件会识别 .devcontainer 规范,借助内置的 Syncthing 将变化的代码增量同步到 Amphitheatre 集群内,让你 可实时构建并预览到效果。 为了加速构建,集群内将直接编译并替换掉当前可执 ⾏的进程,⽽⾮全量构建镜像再发到到镜像仓库,然0 码力 | 34 页 | 10.81 MB | 1 年前3 王宜国 - 基于 Rust 编程语⾔构建 Amphitheatre CLI  Desktop  Server 的全平台实践经验Update 模式原理 开启实时更新(Live Update)模式时,当你在⼯程根 ⽬录放置 .devcontainer ⽬录时,Amphitheatre 终端软 件会识别 .devcontainer 规范,借助内置的 Syncthing 将变化的代码增量同步到 Amphitheatre 集群内,让你 可实时构建并预览到效果。 为了加速构建,集群内将直接编译并替换掉当前可执 ⾏的进程,⽽⾮全量构建镜像再发到到镜像仓库,然0 码力 | 34 页 | 10.81 MB | 1 年前3
 Rust 程序设计语言简体中文版代码中非常普遍。你已经见过语言中最重要的函数之一:main 函数,它是很多 程序的入口点。你也见过 fn 关键字,它用来声明新函数。 Rust 代码中的函数和变量名使用 snake case 规范风格。在 snake case 中,所有字母都是小 写并使用下划线分隔单词。这是一个包含函数定义示例的程序: 文件名:src/main.rs fn main() { println!("Hello 要为类型参数命名,道理和给函数的形参起名一 样。任何标识符都可以作为类型参数的名字。这里选用 T ,因为传统上来说,Rust 的类型参 数名字都比较短,通常仅为一个字母,同时,Rust 类型名的命名规范是首字母大写驼峰式命 名法(UpperCamelCase)。T 作为 “type” 的缩写是大部分 Rust 程序员的首选。 如果要在函数体中使用参数,就必须在函数签名中声明它的名字,好让编译器知道这个名字指 单元测试 单元测试的目的是在与其他部分隔离的环境中测试每一个单元的代码,以便于快速而准确地验 证某个单元的代码功能是否符合预期。单元测试与它们要测试的代码共同存放在位于 src 目录 下相同的文件中。规范是在每个文件中创建包含测试函数的 tests 模块,并使用 cfg(test) 标注模块。 测试模块和 #[cfg(test)] 测试模块的 #[cfg(test)] 注解告诉 Rust 只在执行0 码力 | 600 页 | 12.99 MB | 1 年前3 Rust 程序设计语言简体中文版代码中非常普遍。你已经见过语言中最重要的函数之一:main 函数,它是很多 程序的入口点。你也见过 fn 关键字,它用来声明新函数。 Rust 代码中的函数和变量名使用 snake case 规范风格。在 snake case 中,所有字母都是小 写并使用下划线分隔单词。这是一个包含函数定义示例的程序: 文件名:src/main.rs fn main() { println!("Hello 要为类型参数命名,道理和给函数的形参起名一 样。任何标识符都可以作为类型参数的名字。这里选用 T ,因为传统上来说,Rust 的类型参 数名字都比较短,通常仅为一个字母,同时,Rust 类型名的命名规范是首字母大写驼峰式命 名法(UpperCamelCase)。T 作为 “type” 的缩写是大部分 Rust 程序员的首选。 如果要在函数体中使用参数,就必须在函数签名中声明它的名字,好让编译器知道这个名字指 单元测试 单元测试的目的是在与其他部分隔离的环境中测试每一个单元的代码,以便于快速而准确地验 证某个单元的代码功能是否符合预期。单元测试与它们要测试的代码共同存放在位于 src 目录 下相同的文件中。规范是在每个文件中创建包含测试函数的 tests 模块,并使用 cfg(test) 标注模块。 测试模块和 #[cfg(test)] 测试模块的 #[cfg(test)] 注解告诉 Rust 只在执行0 码力 | 600 页 | 12.99 MB | 1 年前3
 Hello 算法 1.1.0 Rust版hpstory、justin‑tse、krahets、 night‑cruise、nuomi1 和 Reanon 完成(按照首字母顺序排列)。感谢他们付出的时间与精力,正是他们确 保了各语言代码的规范与统一。 在本书的创作过程中,我得到了许多人的帮助。 ‧ 感谢我在公司的导师李汐博士,在一次畅谈中你鼓励我“快行动起来”,坚定了我写这本书的决心; ‧ 感谢我的女朋友泡泡作为本书的首位读者,从 加粗,这类文字值得特别关注。 ‧ 有特指含义的词句会使用“引号”标注,以避免歧义。 ‧ 当涉及编程语言之间不一致的名词时,本书均以 Python 为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 第 0 章 前言 hello‑algo.com 5 /* 标题注释,用于标注函数、类、测试样例等 */ // 在这种情况下,我们通常使用最差时间复杂度作为算法效率的评判标准。 为什么很少看到 Θ 符号? 可能由于 ? 符号过于朗朗上口,因此我们常常使用它来表示平均时间复杂度。但从严格意义上讲,这 种做法并不规范。在本书和其他资料中,若遇到类似“平均时间复杂度 ?(?)”的表述,请将其直接 理解为 Θ(?) 。 2.4 空间复杂度 空间复杂度(space complexity)用于衡量算法占用内存空间0 码力 | 388 页 | 18.50 MB | 1 年前3 Hello 算法 1.1.0 Rust版hpstory、justin‑tse、krahets、 night‑cruise、nuomi1 和 Reanon 完成(按照首字母顺序排列)。感谢他们付出的时间与精力,正是他们确 保了各语言代码的规范与统一。 在本书的创作过程中,我得到了许多人的帮助。 ‧ 感谢我在公司的导师李汐博士,在一次畅谈中你鼓励我“快行动起来”,坚定了我写这本书的决心; ‧ 感谢我的女朋友泡泡作为本书的首位读者,从 加粗,这类文字值得特别关注。 ‧ 有特指含义的词句会使用“引号”标注,以避免歧义。 ‧ 当涉及编程语言之间不一致的名词时,本书均以 Python 为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 第 0 章 前言 hello‑algo.com 5 /* 标题注释,用于标注函数、类、测试样例等 */ // 在这种情况下,我们通常使用最差时间复杂度作为算法效率的评判标准。 为什么很少看到 Θ 符号? 可能由于 ? 符号过于朗朗上口,因此我们常常使用它来表示平均时间复杂度。但从严格意义上讲,这 种做法并不规范。在本书和其他资料中,若遇到类似“平均时间复杂度 ?(?)”的表述,请将其直接 理解为 Θ(?) 。 2.4 空间复杂度 空间复杂度(space complexity)用于衡量算法占用内存空间0 码力 | 388 页 | 18.50 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 Rust 版khoaxuantu、 krahets、night‑cruise、nuomi1、Reanon 和 rongyi 完成(按照首字母顺序排列)。感谢他们付出的时间 与精力,正是他们确保了各语言代码的规范与统一。 在本书的创作过程中,我得到了许多人的帮助。 ‧ 感谢我在公司的导师李汐博士,在一次畅谈中你鼓励我“快行动起来”,坚定了我写这本书的决心; ‧ 感谢我的女朋友泡泡作为本书的首位读者,从 加粗,这类文字值得特别关注。 ‧ 有特指含义的词句会使用“引号”标注,以避免歧义。 ‧ 当涉及编程语言之间不一致的名词时,本书均以 Python 为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 第 0 章 前言 www.hello‑algo.com 5 /* 标题注释,用于标注函数、类、测试样例等 */ 在这种情况下,我们通常使用最差时间复杂度作为算法效率的评判标准。 为什么很少看到 Θ 符号? 可能由于 ? 符号过于朗朗上口,因此我们常常使用它来表示平均时间复杂度。但从严格意义上讲,这 种做法并不规范。在本书和其他资料中,若遇到类似“平均时间复杂度 ?(?)”的表述,请将其直接 理解为 Θ(?) 。 2.4 空间复杂度 空间复杂度(space complexity)用于衡量算法占用内存空间0 码力 | 387 页 | 18.51 MB | 10 月前3 Hello 算法 1.2.0 简体中文 Rust 版khoaxuantu、 krahets、night‑cruise、nuomi1、Reanon 和 rongyi 完成(按照首字母顺序排列)。感谢他们付出的时间 与精力,正是他们确保了各语言代码的规范与统一。 在本书的创作过程中,我得到了许多人的帮助。 ‧ 感谢我在公司的导师李汐博士,在一次畅谈中你鼓励我“快行动起来”,坚定了我写这本书的决心; ‧ 感谢我的女朋友泡泡作为本书的首位读者,从 加粗,这类文字值得特别关注。 ‧ 有特指含义的词句会使用“引号”标注,以避免歧义。 ‧ 当涉及编程语言之间不一致的名词时,本书均以 Python 为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 第 0 章 前言 www.hello‑algo.com 5 /* 标题注释,用于标注函数、类、测试样例等 */ 在这种情况下,我们通常使用最差时间复杂度作为算法效率的评判标准。 为什么很少看到 Θ 符号? 可能由于 ? 符号过于朗朗上口,因此我们常常使用它来表示平均时间复杂度。但从严格意义上讲,这 种做法并不规范。在本书和其他资料中,若遇到类似“平均时间复杂度 ?(?)”的表述,请将其直接 理解为 Θ(?) 。 2.4 空间复杂度 空间复杂度(space complexity)用于衡量算法占用内存空间0 码力 | 387 页 | 18.51 MB | 10 月前3
 Hello 算法 1.0.0 Rust版pstory、justin‑tse、krahets、night‑cruise、 nuomi1 和 Reanon 完成(按照首字母顺序排列)。感谢他们付出的时间与精力,正是他们确保了各语言代 码的规范与统一。 在本书的创作过程中,我得到了许多人的帮助。 ‧ 感谢我在公司的导师李汐博士,在一次畅谈中你鼓励我“快行动起来”,坚定了我写这本书的决心; ‧ 感谢我的女朋友泡泡作为本书的首位读者,从 重要名词、重点内容和总结性语句会 加粗,这类文字值得特别关注。 ‧ 当涉及编程语言之间不一致的名词时,本书均以 Python 为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 第 在这种情况下,我们通常使用最差时间复杂度作为算法效率的评判标准。 � 为什么很少看到 Θ 符号? 可能由于 ? 符号过于朗朗上口,因此我们常常使用它来表示平均时间复杂度。但从严格意义 上讲,这种做法并不规范。在本书和其他资料中,若遇到类似“平均时间复杂度 ?(?)”的表 述,请将其直接理解为 Θ(?) 。 2.4 空间复杂度 「空间复杂度 space complexity」用于衡量算法占用内存空0 码力 | 383 页 | 17.61 MB | 1 年前3 Hello 算法 1.0.0 Rust版pstory、justin‑tse、krahets、night‑cruise、 nuomi1 和 Reanon 完成(按照首字母顺序排列)。感谢他们付出的时间与精力,正是他们确保了各语言代 码的规范与统一。 在本书的创作过程中,我得到了许多人的帮助。 ‧ 感谢我在公司的导师李汐博士,在一次畅谈中你鼓励我“快行动起来”,坚定了我写这本书的决心; ‧ 感谢我的女朋友泡泡作为本书的首位读者,从 重要名词、重点内容和总结性语句会 加粗,这类文字值得特别关注。 ‧ 当涉及编程语言之间不一致的名词时,本书均以 Python 为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 第 在这种情况下,我们通常使用最差时间复杂度作为算法效率的评判标准。 � 为什么很少看到 Θ 符号? 可能由于 ? 符号过于朗朗上口,因此我们常常使用它来表示平均时间复杂度。但从严格意义 上讲,这种做法并不规范。在本书和其他资料中,若遇到类似“平均时间复杂度 ?(?)”的表 述,请将其直接理解为 Θ(?) 。 2.4 空间复杂度 「空间复杂度 space complexity」用于衡量算法占用内存空0 码力 | 383 页 | 17.61 MB | 1 年前3
 Comprehensive Rust(简体中文) 202412Rust type inference, the T was established during the first push call. • “vec![...]”是用来代替“Vec::new()”的规范化宏,它支持向矢量添加初始元素。 • 如需将矢量编入索引,您可以使用“[’ ‘]”方法,但如果超出边界,矢量将会 panic。此外,使用“get” 将返回“Option”。 “pop”函数会移除最后一个元素。 中的入口点调用 该函数。 • _x0 –_x3 表示寄存器 x0-x3 的值,引导加载程序通常使用这些值来传递各种内容(例如将指针传 递到设备树)。根据标准的 aarch64 调用规范(extern "C"指定使用此规范),需要使用寄存器 x0-x7 将前 8 个参数传递给函数,因此 entry.S 无需执行任何特殊操作,只要确保不会更改这些 寄存器。 • 在 QEMU 中,使用 src/bar0 码力 | 359 页 | 1.33 MB | 10 月前3 Comprehensive Rust(简体中文) 202412Rust type inference, the T was established during the first push call. • “vec![...]”是用来代替“Vec::new()”的规范化宏,它支持向矢量添加初始元素。 • 如需将矢量编入索引,您可以使用“[’ ‘]”方法,但如果超出边界,矢量将会 panic。此外,使用“get” 将返回“Option”。 “pop”函数会移除最后一个元素。 中的入口点调用 该函数。 • _x0 –_x3 表示寄存器 x0-x3 的值,引导加载程序通常使用这些值来传递各种内容(例如将指针传 递到设备树)。根据标准的 aarch64 调用规范(extern "C"指定使用此规范),需要使用寄存器 x0-x7 将前 8 个参数传递给函数,因此 entry.S 无需执行任何特殊操作,只要确保不会更改这些 寄存器。 • 在 QEMU 中,使用 src/bar0 码力 | 359 页 | 1.33 MB | 10 月前3
共 13 条
- 1
- 2













