Comprehensive Rust(简体中文) 202412255 51.7 probe-rs 和 cargo-embed . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 51.7.1 调试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 51.8 Other projects . Rust 的使用。课程内容 包括在 Chromium 的 gn 编译系统中使用 Rust,引入第三方 crate,以及与 C++ 的互操作性。 您需要能够构建 Chromium。为了提高速度,建议使用调试、组件构建方式,其他构建方式也可以使用。确 保所构建的 Chromium 浏览器可以正常运行。 裸机 Rust 深入探究裸机 Rust 课程为期一天,旨在介绍如何使用 Rust 进行裸机(嵌入式)开发。其中涵盖了微控制 `target/debug/exercise` Edit me! 6. 使用 cargo check 快速检查项目是否存在错误;使用 cargo build 只进行编译,而不运行。你 可以在 target/debug/ 中找到常规调试 build 的输出。使用 cargo build --release 在 target/release/ 中生成经过优化的 发布 build。 7. 可以通过修改 Cargo.toml 为项目添加依赖项。当运行0 码力 | 359 页 | 1.33 MB | 11 月前3
Hello 算法 1.1.0 Rust版克隆仓库与下载代码 第三步:运行源代码。如图 0‑5 所示,对于顶部标有文件名称的代码块,我们可以在仓库的 codes 文件夹内 找到对应的源代码文件。源代码文件可一键运行,将帮助你节省不必要的调试时间,让你能够专注于学习内 容。 图 0‑5 代码块与对应的源代码文件 除了本地运行代码,网页版还支持 Python 代码的可视化运行(基于 pythontutor 实现)。如图 0‑6 所示,你 (?) 的一个渐近上界,记为 ?(?) = ?(?(?)) 。 如图 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 mut0 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版克隆仓库与下载代码 第三步:运行源代码。如图 0‑5 所示,对于顶部标有文件名称的代码块,我们可以在仓库的 codes 文件夹内 找到对应的源代码文件。源代码文件可一键运行,将帮助你节省不必要的调试时间,让你能够专注于学习内 容。 图 0‑5 代码块与对应的源代码文件 除了本地运行代码,网页版还支持 Python 代码的可视化运行(基于 pythontutor 实现)。如图 0‑6 所示,你 (?) 的一个渐近上界,记为 ?(?) = ?(?(?)) 。 如图 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 mut0 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.0.0 Rust版克隆仓库与下载代码 第三步:运行源代码。如图 0‑5 所示,对于顶部标有文件名称的代码块,我们可以在仓库的 codes 文件夹内 找到对应的源代码文件。源代码文件可一键运行,将帮助你节省不必要的调试时间,让你能够专注于学习内 容。 图 0‑5 代码块与对应的源代码文件 除了本地运行代码,网页版还支持 Python 代码的可视化运行(基于 pythontutor 实现)。如图 0‑6 所示,你 (?) 的一个渐近上界,记为 ?(?) = ?(?(?)) 。 如图 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 mut0 码力 | 383 页 | 17.61 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0main.exe main.pdb main.rs 这展示了扩展名为 .rs 的源文件、可执行文件(在 Windows 下是 main.exe,其它平台是 main),以及当使用 CMD 时会有一个包含调试信息、扩展名为 .pdb 的文件。从这里开始运行 main 或 main.exe 文件,如下: $ ./main # Windows 是 .\main.exe 如果这里的 main.rs 是上文所述的 这个命令会创建一个可执行文件 target/debug/hello_cargo (在 Windows 上是 targetdebughello_cargo.exe),而不是放在目前目录下。由于默认的构建方法是调试构建 (debug build),Cargo 会将可执行文件放在名为 debug 的目录中。可以通过这个命令运行可 执行文件: $ ./target/debug/hello_cargo # 或者在 slice 这些概念让 Rust 程序在编译时确保内存安全。Rust 语言提供了跟其他 系统编程语言相同的方式来控制你使用的内存,但拥有数据所有者在离开作用域后自动清除其 数据的功能意味着你无须额外编写和调试相关的控制代码。 所有权系统影响了 Rust 中很多其他部分的工作方式,所以我们还会继续讲到这些概念,这将 贯穿本书的余下内容。让我们开始第五章,来看看如何将多份数据组合进一个 struct 中。0 码力 | 562 页 | 3.23 MB | 1 月前3
Rust 程序设计语言简体中文版main.exe main.pdb main.rs 这展示了扩展名为 .rs 的源文件、可执行文件(在 Windows 下是 main.exe,其它平台是 main),以及当使用 CMD 时会有一个包含调试信息、扩展名为 .pdb 的文件。从这里开始运行 main 或 main.exe 文件,如下: $ ./main # Windows 是 .\main.exe 如果这里的 main.rs 是上文所述的 这个命令会创建一个可执行文件 target/debug/hello_cargo (在 Windows 上是 targetdebughello_cargo.exe),而不是放在目前目录下。由于默认的构建方法是调试构建 (debug build),Cargo 会将可执行文件放在名为 debug 的目录中。可以通过这个命令运行可 执行文件: $ ./target/debug/hello_cargo # 或者在 slice 这些概念让 Rust 程序在编译时确保内存安全。Rust 语言提供了跟其他 系统编程语言相同的方式来控制你使用的内存,但拥有数据所有者在离开作用域后自动清除其 数据的功能意味着你无须额外编写和调试相关的控制代码。 所有权系统影响了 Rust 中很多其他部分的工作方式,所以我们还会继续讲到这些概念,这将 贯穿本书的余下内容。让我们开始第五章,来看看如何将多份数据组合进一个 struct 中。0 码力 | 600 页 | 12.99 MB | 1 年前3
Await-Tree Async Rust 可观测性的灵丹妙药 - 赵梓淇组合嵌套为调度单元: Task • async fn 语法糖 Async Rust 观测与调试的痛点 Async Rust 回顾 • 特性: Future 灵活的可组合性 • 任意定制 Poll 的执行逻辑 (Join / Select / Timeout) • 动态的调用关系 • 痛点:观测与调试工具无法理解灵活的执行逻辑 • Backtrace 不够直观 ( 调用栈 -> 调用树 ) • Tracing 无法追踪调用关系的变化 Async Rust 观测与调试的痛点 Async Rust 回顾 • 特性:用户态调度的无栈协程 • Pending Task 不存在栈空间 • 痛点:观测与调试工具无法还原 Pending Task 的执行状态 • 难以得知 Task 阻塞的位置和原因 • 难以调试 Async Stuck • ? 如何解决? Await-Tree Async0 码力 | 37 页 | 8.60 MB | 1 年前3
秘猿先锋-文愿-Axon 应用链框架的 Rust 开发实践Web3 RPC(以太坊兼容) 6. Storage (KV 数据库) 7. Executor 主要模块 • 高复杂性,组件和子系统较多,相互依赖和交互,整体结构和逻辑非常复杂,开发、 测试、调试难度大 • 可维护性,开发完成后,各个模块需要维护、升级和改进 • 可扩展性 • 高性能 • 高并发 • 高可靠性 • 代码管理 • … 大型项目的开发难点 ■ 抽象 ■ 便于协作开发 代码并编译,得到增加埋点的可执行文件 ■ LLVM IR 插入监控埋点 ■ 优点: 1. 高度灵活 2. 零运行期成本 3. 封装性好,使用方便 ■ 缺点: 1. 学习曲线高 2. 可移植性差 3. 调试难度大(Cargo expand) 过程宏(元编程) ■ 过程宏 async_wait 的展开 metrics_rpc & fut-ret async send_transaction0 码力 | 32 页 | 3.63 MB | 1 年前3
Rust分布式账务系统 - 胡宇分布式账务系统 Fintech 互联网 正确性 bug= 资损 bug 不可怕,快速迭代 可靠性 丢数据 = 资损 允许数据丢失 性能 超低延迟 + 高吞吐 超高吞吐 交易日志 审计,监管 调试使用 分布式账务系统 Fintech 领域中的软件与互联网软件的不同 需求分析 支付处理: ● 转账 ● 冻资 / 解资 ● 账户限额 ● 批处理事务 正确性:无双花或少付 审计监管:交易日志不可篡改,交易历史可回溯 Rust Rust 与原有技术栈的融合 ● Kotlin : 偏业务,适合快速迭代 ● Rust :偏基础架构,适合精心打磨 ● gRPC :跨语言跨平台通讯 心路历程 真刀实枪 – 开发调试部署 IDE JetBrains + Rust 插件 Gitlab CI/CD 心路历程 真刀实枪 – 文档工具 文档生成 CI/CD git page 作为文档 心路历程 吐槽点0 码力 | 27 页 | 12.60 MB | 1 年前3
Borsh 安全高效的二进制序列化Object Representation Serializer for Hashing • 字节级别确定性 • 执行速度快 Borsh • 轻量级 • 每一个对象与其二进制表示之间都存在一个双射映射 • 不同的对象的二进制表示一定不同 • 便于基于二进制表示进行 Hash 字节级别确定性 • 在 Rust 中, borsh 并没有使用 serde • 全部逻辑原生实现 • 序列化、反序列化速度大幅领先其他解决方案0 码力 | 21 页 | 3.35 MB | 1 年前3
共 15 条
- 1
- 2













