 Comprehensive Rust(简体中文) 202412微控制器。 使用以下命令运行该示例: cargo embed --bin hal 51.4 Board support crates 为了方便使用,板级支持 crate 为特定开发板提供了更高级别的封装功能。 extern crate panic_halt as _; use cortex_m_rt::entry; use microbit::hal::prelude::*; use microbit::Board; Cortex-A 编写一些代 码。为简单起见,我们只使用 QEMU 的 aarch64 virt 开发板 进行编写。 • 一般来说,微控制器不具备 MMU 或多级特权(例如,Arm CPU 中的异常级别,x86 中的铃声级 别)的功能,而应用处理器则具备这些功能。 • QEMU 支持针对每种架构模拟不同的机器或板级模型。 “虚拟”开发板并不适用于任何特定的真实 硬件,而是专为虚拟机设计的。 53 GiB 给其他设备。这与 QEMU 使用的内存布局一致。 • 我们还设置了异常矢量 (vbar_el1),稍后会对此进行详细介绍。 • 今天下午的所有示例都假定我们将在异常级别 1 (EL1) 下运行。如果您需要在其他异常级别下运 行,则需要修改相应的 entry.S。 53.2 内嵌汇编 有时,如果无法通过 Rust 代码实现某些操作,我们就需要使用汇编来解决。例如,如需发出 HVC (Hypervisor0 码力 | 359 页 | 1.33 MB | 10 月前3 Comprehensive Rust(简体中文) 202412微控制器。 使用以下命令运行该示例: cargo embed --bin hal 51.4 Board support crates 为了方便使用,板级支持 crate 为特定开发板提供了更高级别的封装功能。 extern crate panic_halt as _; use cortex_m_rt::entry; use microbit::hal::prelude::*; use microbit::Board; Cortex-A 编写一些代 码。为简单起见,我们只使用 QEMU 的 aarch64 virt 开发板 进行编写。 • 一般来说,微控制器不具备 MMU 或多级特权(例如,Arm CPU 中的异常级别,x86 中的铃声级 别)的功能,而应用处理器则具备这些功能。 • QEMU 支持针对每种架构模拟不同的机器或板级模型。 “虚拟”开发板并不适用于任何特定的真实 硬件,而是专为虚拟机设计的。 53 GiB 给其他设备。这与 QEMU 使用的内存布局一致。 • 我们还设置了异常矢量 (vbar_el1),稍后会对此进行详细介绍。 • 今天下午的所有示例都假定我们将在异常级别 1 (EL1) 下运行。如果您需要在其他异常级别下运 行,则需要修改相应的 entry.S。 53.2 内嵌汇编 有时,如果无法通过 Rust 代码实现某些操作,我们就需要使用汇编来解决。例如,如需发出 HVC (Hypervisor0 码力 | 359 页 | 1.33 MB | 10 月前3
 Borsh 安全高效的二进制序列化Object Representation Serializer for Hashing • 字节级别确定性 • 执行速度快 Borsh • 轻量级 • 每一个对象与其二进制表示之间都存在一个双射映射 • 不同的对象的二进制表示一定不同 • 便于基于二进制表示进行 Hash 字节级别确定性 • 在 Rust 中, borsh 并没有使用 serde • 全部逻辑原生实现 • 序列化、反序列化速度大幅领先其他解决方案0 码力 | 21 页 | 3.35 MB | 1 年前3 Borsh 安全高效的二进制序列化Object Representation Serializer for Hashing • 字节级别确定性 • 执行速度快 Borsh • 轻量级 • 每一个对象与其二进制表示之间都存在一个双射映射 • 不同的对象的二进制表示一定不同 • 便于基于二进制表示进行 Hash 字节级别确定性 • 在 Rust 中, borsh 并没有使用 serde • 全部逻辑原生实现 • 序列化、反序列化速度大幅领先其他解决方案0 码力 | 21 页 | 3.35 MB | 1 年前3
 新一代分布式高性能图数据库的构建 - 沈游人海致高性能图计算院士专家工作站 海致获得“ 2021 年 CCF 科学技术奖科技进步卓越奖” CCF 科学技术奖被认为是计算机科学与技术领域最具影响力的专业奖项之一, 其中科技进步卓越奖是 CCF 科技进步奖评选中的最高级别奖项,旨在嘉奖在计 算机科学、技术或工程领域具有重要发现、发明、原始创新,在相关领域有一 定国际影响的优秀成果, AtlasGraph 的获奖证明了其技术领先性、创新性、 重要性,在自主可控浪 • 最短路径、全路径分析 • 按实体、边类型匹配查询 • 子图识别、环路识别等在 线图挖掘分析 • 实体、边可视化统计分析 • 树、层次、分组等多种布 局方式 • 基于 D3 自研的万级别实 体展现 可视化图探索分析 AtlasGraph 架构及实现 图技术简介 Takeway AtlasGraph 图数据库关键特性 - 基于 RUST 语言保证性能优势 - 分布式架构性能可线性扩展0 码力 | 38 页 | 24.68 MB | 1 年前3 新一代分布式高性能图数据库的构建 - 沈游人海致高性能图计算院士专家工作站 海致获得“ 2021 年 CCF 科学技术奖科技进步卓越奖” CCF 科学技术奖被认为是计算机科学与技术领域最具影响力的专业奖项之一, 其中科技进步卓越奖是 CCF 科技进步奖评选中的最高级别奖项,旨在嘉奖在计 算机科学、技术或工程领域具有重要发现、发明、原始创新,在相关领域有一 定国际影响的优秀成果, AtlasGraph 的获奖证明了其技术领先性、创新性、 重要性,在自主可控浪 • 最短路径、全路径分析 • 按实体、边类型匹配查询 • 子图识别、环路识别等在 线图挖掘分析 • 实体、边可视化统计分析 • 树、层次、分组等多种布 局方式 • 基于 D3 自研的万级别实 体展现 可视化图探索分析 AtlasGraph 架构及实现 图技术简介 Takeway AtlasGraph 图数据库关键特性 - 基于 RUST 语言保证性能优势 - 分布式架构性能可线性扩展0 码力 | 38 页 | 24.68 MB | 1 年前3
 Hello 算法 1.1.0 Rust版(?) 的一个渐近上界,记为 ?(?) = ?(?(?)) 。 如图 2‑8 所示,计算渐近上界就是寻找一个函数 ?(?) ,使得当 ? 趋向于无穷大时,?(?) 和 ?(?) 处于相同 的增长级别,仅相差一个常数项 ? 的倍数。 第 2 章 复杂度分析 hello‑algo.com 31 图 2‑8 函数的渐近上界 2.3.3 推算方法 渐近上界的数学味儿有点重,如果你感觉没有完全理 size = 100_000; for _ in 0..size { count += 1; } count } 2. 线性阶 ?(?) 线性阶的操作数量相对于输入数据大小 ? 以线性级别增长。线性阶通常出现在单层循环中: // === File: time_complexity.rs === /* 线性阶 */ fn linear(n: i32) -> i32 { let mut 需根据输入数据的类型来具体确定。比如在第一个示例中,变量 ? 为输入数 据大小;在第二个示例中,数组长度 ? 为数据大小。 3. 平方阶 ?(?2) 平方阶的操作数量相对于输入数据大小 ? 以平方级别增长。平方阶通常出现在嵌套循环中,外层循环和内层 循环的时间复杂度都为 ?(?) ,因此总体的时间复杂度为 ?(?2) : // === File: time_complexity.rs ===0 码力 | 388 页 | 18.50 MB | 1 年前3 Hello 算法 1.1.0 Rust版(?) 的一个渐近上界,记为 ?(?) = ?(?(?)) 。 如图 2‑8 所示,计算渐近上界就是寻找一个函数 ?(?) ,使得当 ? 趋向于无穷大时,?(?) 和 ?(?) 处于相同 的增长级别,仅相差一个常数项 ? 的倍数。 第 2 章 复杂度分析 hello‑algo.com 31 图 2‑8 函数的渐近上界 2.3.3 推算方法 渐近上界的数学味儿有点重,如果你感觉没有完全理 size = 100_000; for _ in 0..size { count += 1; } count } 2. 线性阶 ?(?) 线性阶的操作数量相对于输入数据大小 ? 以线性级别增长。线性阶通常出现在单层循环中: // === File: time_complexity.rs === /* 线性阶 */ fn linear(n: i32) -> i32 { let mut 需根据输入数据的类型来具体确定。比如在第一个示例中,变量 ? 为输入数 据大小;在第二个示例中,数组长度 ? 为数据大小。 3. 平方阶 ?(?2) 平方阶的操作数量相对于输入数据大小 ? 以平方级别增长。平方阶通常出现在嵌套循环中,外层循环和内层 循环的时间复杂度都为 ?(?) ,因此总体的时间复杂度为 ?(?2) : // === File: time_complexity.rs ===0 码力 | 388 页 | 18.50 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 Rust 版(?) 的一个渐近上界,记为 ?(?) = ?(?(?)) 。 如图 2‑8 所示,计算渐近上界就是寻找一个函数 ?(?) ,使得当 ? 趋向于无穷大时,?(?) 和 ?(?) 处于相同 的增长级别,仅相差一个常数项 ? 的倍数。 第 2 章 复杂度分析 www.hello‑algo.com 31 图 2‑8 函数的渐近上界 2.3.3 推算方法 渐近上界的数学味儿有点重,如果你感觉没 size = 100_000; for _ in 0..size { count += 1; } count } 2. 线性阶 ?(?) 线性阶的操作数量相对于输入数据大小 ? 以线性级别增长。线性阶通常出现在单层循环中: // === File: time_complexity.rs === /* 线性阶 */ fn linear(n: i32) -> i32 { let mut 需根据输入数据的类型来具体确定。比如在第一个示例中,变量 ? 为输入数 据大小;在第二个示例中,数组长度 ? 为数据大小。 3. 平方阶 ?(?2) 平方阶的操作数量相对于输入数据大小 ? 以平方级别增长。平方阶通常出现在嵌套循环中,外层循环和内层 循环的时间复杂度都为 ?(?) ,因此总体的时间复杂度为 ?(?2) : // === File: time_complexity.rs ===0 码力 | 387 页 | 18.51 MB | 10 月前3 Hello 算法 1.2.0 简体中文 Rust 版(?) 的一个渐近上界,记为 ?(?) = ?(?(?)) 。 如图 2‑8 所示,计算渐近上界就是寻找一个函数 ?(?) ,使得当 ? 趋向于无穷大时,?(?) 和 ?(?) 处于相同 的增长级别,仅相差一个常数项 ? 的倍数。 第 2 章 复杂度分析 www.hello‑algo.com 31 图 2‑8 函数的渐近上界 2.3.3 推算方法 渐近上界的数学味儿有点重,如果你感觉没 size = 100_000; for _ in 0..size { count += 1; } count } 2. 线性阶 ?(?) 线性阶的操作数量相对于输入数据大小 ? 以线性级别增长。线性阶通常出现在单层循环中: // === File: time_complexity.rs === /* 线性阶 */ fn linear(n: i32) -> i32 { let mut 需根据输入数据的类型来具体确定。比如在第一个示例中,变量 ? 为输入数 据大小;在第二个示例中,数组长度 ? 为数据大小。 3. 平方阶 ?(?2) 平方阶的操作数量相对于输入数据大小 ? 以平方级别增长。平方阶通常出现在嵌套循环中,外层循环和内层 循环的时间复杂度都为 ?(?) ,因此总体的时间复杂度为 ?(?2) : // === File: time_complexity.rs ===0 码力 | 387 页 | 18.51 MB | 10 月前3
 Hello 算法 1.0.0 Rust版(?) 的一个渐近上界,记为 ?(?) = ?(?(?)) 。 如图 2‑8 所示,计算渐近上界就是寻找一个函数 ?(?) ,使得当 ? 趋向于无穷大时,?(?) 和 ?(?) 处于相同 的增长级别,仅相差一个常数项 ? 的倍数。 第 2 章 复杂度分析 hello‑algo.com 31 图 2‑8 函数的渐近上界 2.3.3 推算方法 渐近上界的数学味儿有点重,如果你感觉没有完全理 size = 100_000; for _ in 0..size { count += 1; } count } 2. 线性阶 ?(?) 线性阶的操作数量相对于输入数据大小 ? 以线性级别增长。线性阶通常出现在单层循环中: // === File: time_complexity.rs === /* 线性阶 */ fn linear(n: i32) -> i32 { let mut 需根据输入数据的类型来具体确定。比如在第一个示例中,变量 ? 为输入数 据大小;在第二个示例中,数组长度 ? 为数据大小。 3. 平方阶 ?(?2) 平方阶的操作数量相对于输入数据大小 ? 以平方级别增长。平方阶通常出现在嵌套循环中,外层循环和内层 循环的时间复杂度都为 ?(?) ,因此总体的时间复杂度为 ?(?2) : // === File: time_complexity.rs ===0 码力 | 383 页 | 17.61 MB | 1 年前3 Hello 算法 1.0.0 Rust版(?) 的一个渐近上界,记为 ?(?) = ?(?(?)) 。 如图 2‑8 所示,计算渐近上界就是寻找一个函数 ?(?) ,使得当 ? 趋向于无穷大时,?(?) 和 ?(?) 处于相同 的增长级别,仅相差一个常数项 ? 的倍数。 第 2 章 复杂度分析 hello‑algo.com 31 图 2‑8 函数的渐近上界 2.3.3 推算方法 渐近上界的数学味儿有点重,如果你感觉没有完全理 size = 100_000; for _ in 0..size { count += 1; } count } 2. 线性阶 ?(?) 线性阶的操作数量相对于输入数据大小 ? 以线性级别增长。线性阶通常出现在单层循环中: // === File: time_complexity.rs === /* 线性阶 */ fn linear(n: i32) -> i32 { let mut 需根据输入数据的类型来具体确定。比如在第一个示例中,变量 ? 为输入数 据大小;在第二个示例中,数组长度 ? 为数据大小。 3. 平方阶 ?(?2) 平方阶的操作数量相对于输入数据大小 ? 以平方级别增长。平方阶通常出现在嵌套循环中,外层循环和内层 循环的时间复杂度都为 ?(?) ,因此总体的时间复杂度为 ?(?2) : // === File: time_complexity.rs ===0 码力 | 383 页 | 17.61 MB | 1 年前3
 Rust在物理引擎研发中的应用 崔汉青一切为低延迟服务 分布式物理,突破单机算力的瓶颈 关于咪咕项目详细情况请参考:https://mp.weixin.qq.com/s/a_tvBU0wk9IwGYNqVK4EbA 咪咕-星际广场:10万人级别同屏同步元宇宙项目 分布式渲染技术 分布式实时物理技术 10万人 最高同时在线人数超过 12万平米 模拟场地面积达到 全球首个 基于云原生渲染和 物理引擎的应用案例 物理建模 全部用户之间、用户与道具0 码力 | 22 页 | 1.18 MB | 1 年前3 Rust在物理引擎研发中的应用 崔汉青一切为低延迟服务 分布式物理,突破单机算力的瓶颈 关于咪咕项目详细情况请参考:https://mp.weixin.qq.com/s/a_tvBU0wk9IwGYNqVK4EbA 咪咕-星际广场:10万人级别同屏同步元宇宙项目 分布式渲染技术 分布式实时物理技术 10万人 最高同时在线人数超过 12万平米 模拟场地面积达到 全球首个 基于云原生渲染和 物理引擎的应用案例 物理建模 全部用户之间、用户与道具0 码力 | 22 页 | 1.18 MB | 1 年前3
 Rust 程序设计语言 简体中文版 1.85.0included in this project: Os { code: 2, kind: NotFound, message: "No such file or directory" } 在生产级别的代码中,大部分 Rustaceans 选择 expect 而不是 unwrap 并提供更多关于为何操 作期望是一直成功的上下文。如此如果该假设真的被证明是错的,你也有更多的信息来用于调 试。 177/562Rust opt-level = 0 [profile.release] opt-level = 3 opt-level 设置控制 Rust 会对代码进行何种程度的优化。这个配置的值从 0 到 3。越高的优 化级别需要更多的时间编译,所以如果你在进行开发并经常编译,可能会希望在牺牲一些代码 性能的情况下减少优化以便编译得快一些。因此 dev 的 opt-level 默认为 0。当你准备发布 时,花费更多时间在 更快的代码。这正是为什么 release 配置的 opt-level 默认为 3。 我们可以选择通过在 Cargo.toml 增加不同的值来覆盖任何默认设置。比如,如果我们想要在 开发配置中使用级别 1 的优化,则可以在 Cargo.toml 中增加这两行: 文件名:Cargo.toml [profile.dev] opt-level = 1 这会覆盖默认的设置 0。现在运行 cargo0 码力 | 562 页 | 3.23 MB | 26 天前3 Rust 程序设计语言 简体中文版 1.85.0included in this project: Os { code: 2, kind: NotFound, message: "No such file or directory" } 在生产级别的代码中,大部分 Rustaceans 选择 expect 而不是 unwrap 并提供更多关于为何操 作期望是一直成功的上下文。如此如果该假设真的被证明是错的,你也有更多的信息来用于调 试。 177/562Rust opt-level = 0 [profile.release] opt-level = 3 opt-level 设置控制 Rust 会对代码进行何种程度的优化。这个配置的值从 0 到 3。越高的优 化级别需要更多的时间编译,所以如果你在进行开发并经常编译,可能会希望在牺牲一些代码 性能的情况下减少优化以便编译得快一些。因此 dev 的 opt-level 默认为 0。当你准备发布 时,花费更多时间在 更快的代码。这正是为什么 release 配置的 opt-level 默认为 3。 我们可以选择通过在 Cargo.toml 增加不同的值来覆盖任何默认设置。比如,如果我们想要在 开发配置中使用级别 1 的优化,则可以在 Cargo.toml 中增加这两行: 文件名:Cargo.toml [profile.dev] opt-level = 1 这会覆盖默认的设置 0。现在运行 cargo0 码力 | 562 页 | 3.23 MB | 26 天前3
 Rust 程序设计语言简体中文版Error { repr: Os { code: 2, message: "No such file or directory" } }', src/libcore/result.rs:906:4 在生产级别的代码中,大部分 Rustaceans 选择 expect 而不是 unwrap 并提供更多关于为何 操作期望是一直成功的上下文。如此如果该假设真的被证明是错的,你也有更多的信息来用于 调试。 opt-level = 0 [profile.release] opt-level = 3 opt-level 设置控制 Rust 会对代码进行何种程度的优化。这个配置的值从 0 到 3。越高的优 化级别需要更多的时间编译,所以如果你在进行开发并经常编译,可能会希望在牺牲一些代码 性能的情况下减少优化以便编译得快一些。因此 dev 的 opt-level 默认为 0 。当你准备发布 时,花费更多 代码。这正是为什么 release 配置 的 opt-level 默认为 3 。 我们可以选择通过在 Cargo.toml 增加不同的值来覆盖任何默认设置。比如,如果我们想要在 开发配置中使用级别 1 的优化,则可以在 Cargo.toml 中增加这两行: 文件名:Cargo.toml 350/600 Rust 程序设计语言 简体中文版 [profile.dev] opt-level0 码力 | 600 页 | 12.99 MB | 1 年前3 Rust 程序设计语言简体中文版Error { repr: Os { code: 2, message: "No such file or directory" } }', src/libcore/result.rs:906:4 在生产级别的代码中,大部分 Rustaceans 选择 expect 而不是 unwrap 并提供更多关于为何 操作期望是一直成功的上下文。如此如果该假设真的被证明是错的,你也有更多的信息来用于 调试。 opt-level = 0 [profile.release] opt-level = 3 opt-level 设置控制 Rust 会对代码进行何种程度的优化。这个配置的值从 0 到 3。越高的优 化级别需要更多的时间编译,所以如果你在进行开发并经常编译,可能会希望在牺牲一些代码 性能的情况下减少优化以便编译得快一些。因此 dev 的 opt-level 默认为 0 。当你准备发布 时,花费更多 代码。这正是为什么 release 配置 的 opt-level 默认为 3 。 我们可以选择通过在 Cargo.toml 增加不同的值来覆盖任何默认设置。比如,如果我们想要在 开发配置中使用级别 1 的优化,则可以在 Cargo.toml 中增加这两行: 文件名:Cargo.toml 350/600 Rust 程序设计语言 简体中文版 [profile.dev] opt-level0 码力 | 600 页 | 12.99 MB | 1 年前3
共 9 条
- 1













