Rust 程序设计语言 简体中文版 1.85.0
产物:Cargo 只会使用你指定的依赖版本,除非你明确指定其他版本。例如,如果下周 rand crate 的 0.8.6 版本出来了,该版本包含了一个重要的 bug 修复,但同时也引入了一个会破坏 你代码的回归问题。为了解决这个问题,Rust 在你第一次运行 cargo build 时创建了 Cargo.lock 文件,我们现在可以在 guessing_game 目录找到它。 当第一次构建项目时,Cargo 的实现遵循了零开销原则:不使用的功能无需为其付出代价;而已经 使用的功能,也不可能通过手写代码做得更好。 作为另一个例子,以下代码取自一个音频解码器。解码算法使用线性预测数学运算(linear prediction mathematical operation)来根据之前样本的线性函数预测将来的值。这些代码 使用迭代器链对作用域中的三个变量进行某种数学计算:一个叫 buffer 的数据 slice、一个有 12 个元素的数组 让我们开始理解为何消息在全部延迟后立刻一起到达,而不是逐个在延迟后到达。在一个给定 的异步代码块,await 关键字在代码中出现的顺序也就是程序执行时其发生的顺序。 示例 17-10 中只有一个异步代码块,所以所有的代码线性地执行。这里仍然没有并发。所有 tx.send 调用与 trpl::sleep 调用及其相关的 await point 是依次进行的。只有在此之后 while let 循环才开始执行 recv 调用上的0 码力 | 562 页 | 3.23 MB | 8 天前3Hello 算法 1.1.0 Rust版
是该求和函数的流程框图。 第 2 章 复杂度分析 hello‑algo.com 20 图 2‑1 求和函数的流程框图 此求和函数的操作数量与输入数据大小 ? 成正比,或者说成“线性关系”。实际上,时间复杂度描述的就是 这个“线性关系”。相关内容将会在下一节中详细介绍。 2. while 循环 与 for 循环类似,while 循环也是一种实现迭代的方法。在 while 循环中,程序每轮都会先检查条件,如果条 hello‑algo.com 29 // 算法 A 的时间复杂度:常数阶 fn algorithm_A(n: i32) { println!("{}", 0); } // 算法 B 的时间复杂度:线性阶 fn algorithm_B(n: i32) { for _ in 0..n { println!("{}", 0); } } // 算法 C 的时间复杂度:常数阶 fn algorithm_C(n: A 只有 1 个打印操作,算法运行时间不随着 ? 增大而增长。我们称此算法的时间复杂度为“常数 阶”。 ‧ 算法 B 中的打印操作需要循环 ? 次,算法运行时间随着 ? 增大呈线性增长。此算法的时间复杂度被称 为“线性阶”。 ‧ 算法 C 中的打印操作需要循环 1000000 次,虽然运行时间很长,但它与输入数据大小 ? 无关。因此 C 的时间复杂度和 A 相同,仍为“常数阶”。 图 2‑70 码力 | 388 页 | 18.50 MB | 1 年前3Hello 算法 1.2.0 简体中文 Rust 版
www.hello‑algo.com 20 图 2‑1 是该求和函数的流程框图。 图 2‑1 求和函数的流程框图 此求和函数的操作数量与输入数据大小 ? 成正比,或者说成“线性关系”。实际上,时间复杂度描述的就是 这个“线性关系”。相关内容将会在下一节中详细介绍。 2. while 循环 与 for 循环类似,while 循环也是一种实现迭代的方法。在 while 循环中,程序每轮都会先检查条件,如果条 hello‑algo.com 29 // 算法 A 的时间复杂度:常数阶 fn algorithm_A(n: i32) { println!("{}", 0); } // 算法 B 的时间复杂度:线性阶 fn algorithm_B(n: i32) { for _ in 0..n { println!("{}", 0); } } // 算法 C 的时间复杂度:常数阶 fn algorithm_C(n: A 只有 1 个打印操作,算法运行时间不随着 ? 增大而增长。我们称此算法的时间复杂度为“常数 阶”。 ‧ 算法 B 中的打印操作需要循环 ? 次,算法运行时间随着 ? 增大呈线性增长。此算法的时间复杂度被称 为“线性阶”。 ‧ 算法 C 中的打印操作需要循环 1000000 次,虽然运行时间很长,但它与输入数据大小 ? 无关。因此 C 的时间复杂度和 A 相同,仍为“常数阶”。 图 2‑70 码力 | 387 页 | 18.51 MB | 9 月前3Hello 算法 1.0.0 Rust版
复杂度分析 hello‑algo.com 20 图 2‑1 是该求和函数的流程框图。 图 2‑1 求和函数的流程框图 此求和函数的操作数量与输入数据大小 ? 成正比,或者说成“线性关系”。实际上,时间复杂度描述的就是 这个“线性关系”。相关内容将会在下一节中详细介绍。 2. while 循环 与 for 循环类似,while 循环也是一种实现迭代的方法。在 while 循环中,程序每轮都会先检查条件,如果条 hello‑algo.com 29 // 算法 A 的时间复杂度:常数阶 fn algorithm_A(n: i32) { println!("{}", 0); } // 算法 B 的时间复杂度:线性阶 fn algorithm_B(n: i32) { for _ in 0..n { println!("{}", 0); } } // 算法 C 的时间复杂度:常数阶 fn algorithm_C(n: A 只有 1 个打印操作,算法运行时间不随着 ? 增大而增长。我们称此算法的时间复杂度为“常数 阶”。 ‧ 算法 B 中的打印操作需要循环 ? 次,算法运行时间随着 ? 增大呈线性增长。此算法的时间复杂度被称 为“线性阶”。 ‧ 算法 C 中的打印操作需要循环 1000000 次,虽然运行时间很长,但它与输入数据大小 ? 无关。因此 C 的时间复杂度和 A 相同,仍为“常数阶”。 图 2‑70 码力 | 383 页 | 17.61 MB | 1 年前3Rust 程序设计语言简体中文版
• 本贾尼·斯特劳斯特卢普 “Foundations of C++” 作为另一个例子,这里有一些取自于音频解码器的代码。解码算法使用线性预测数学运算 (linear prediction mathematical operation)来根据之前样本的线性函数预测将来的值。这 些代码使用迭代器链对作用域中的三个变量进行某种数学计算:一个叫 buffer 的数据 slice、 一个有 12 个元素的数组 版本进行测试能够帮助 Rust 发现可能的回归缺陷(regression)。同时,每天仍产生 nightly 发布: 598/600 Rust 程序设计语言 简体中文版 nightly: * - - * - - * - - * - - * | beta: * 比如我们发现了一个回归缺陷。好消息是在这些缺陷流入稳定发布之前还有一些时间来测试0 码力 | 600 页 | 12.99 MB | 1 年前3Rust与算法 - 谢波
时间复杂度更被看重 • 时间和空间复杂度不是对立的,可以协同 时间和空间复杂度 复杂度计算 • 大O标记法(数量级近似) • 用 AI 来估计 算步骤、算存储 Rust 基本数据结构复杂度 线性数据结构 非线性数据结构 总体来看,时间复杂度没有超过 O(n) 的! Rust 实现数据结构 • 栈 • 链表 • Vec Rust 实现数据结 构 栈 借助 Vec 容器 泛型支持 Option0 码力 | 28 页 | 3.52 MB | 1 年前3Rust算法教程 The Algos (algorithms)
} } 2024/3/7 20:44 Rust算法教程 The Algos (algorithms) https://algo.course.rs/print.html 73/270 线性搜索 From Wikipedia: linear search or sequential search is a method for finding a target value within 栈( Stack) 栈是⼀种特殊的线性表,它只能在⼀个表的⼀个固定端进⾏数据结点的插⼊和删 除操作。栈按照后进先出的原则来存储数据,也就是说,先插⼊的数据将被压⼊栈底,最后 插⼊的数据在栈顶,读出数据时,从栈顶开始逐个读出。栈在汇编语⾔程序中,经常⽤于重 要数据的现场保护。栈中没有数据时,称为空栈。 3. 队列(Queue) 队列和栈类似,也是⼀种特殊的线性表。和栈不同的是,队列只允许在表的⼀ 元素的逻辑顺序是通过链表中的指针链接次序来实现的。 5. 树( Tree) 树是典型的⾮线性结构,它是包括,2个结点的有穷集合K。在树结构中,有且仅有 ⼀个根结点,该结点没有前驱结点。在树结构中的其他结点都有且仅有⼀个前驱结点,⽽且 可以有两个后继结点,m≥0。 6. 图(Graph) 图是另⼀种⾮线性数据结构。在图结构中,数据结点⼀般称为顶点,⽽边是顶点 的有序偶对。如果两个顶点之间存在0 码力 | 270 页 | 8.46 MB | 1 年前3新一代分布式高性能图数据库的构建 - 沈游人
图平台 Atlas Studio Atlas Client 基础 设施 Docker/K8S/VM X86/ARM - 基于 RUST 语言保证性能优势 - 分布式架构性能可线性扩展 - 针对大规模图优化的存算引擎 - 配合 Atlas 图平台,实现无代码图分析 - Query 性能分析模块,启发式提示优化 - 内置多种分析函数,面向分析师友好 -MVOCC 保证事务一致性 体展现 可视化图探索分析 AtlasGraph 架构及实现 图技术简介 Takeway AtlasGraph 图数据库关键特性 - 基于 RUST 语言保证性能优势 - 分布式架构性能可线性扩展 - 针对大规模图的优化的存算引擎 - 配合 Atlas 图平台,实现无代码图分析 - Query 性能分析模块,启发式提示优化 - 内置多种分析函数,面向分析师友好 -MVOCC 保证事务一致性0 码力 | 38 页 | 24.68 MB | 1 年前3Rust在物理引擎研发中的应用 崔汉青
基于云原生渲染和 物理引擎的应用案例 物理建模 全部用户之间、用户与道具 和场景间均可实时物理交互 横向扩展能力 单个节点的计算复杂度和 网络通信复杂度,不会随 集群总规模的上升而上 升,集群可线性扩容 单机架构 同屏大规模物理量模拟 单机渲染帧率3fps VS Motphys 分布式架构 10倍于上述场景中的物理量 单机渲染帧率 25fps 物理集群帧率 50fps 此时物理模拟已不是算力瓶颈0 码力 | 22 页 | 1.18 MB | 1 年前3基于 Rust Arrow Flight 的物联网和时序数据传输及转换工具 霍琳贺
VARCHAR(24)) TDengine - 业务模式 开源版 企业版 云服务版 核心功能开源 • SQL 支持 • 无模式写入 • 缓存 • 流计算 • 数据订阅 • 集群、高可用 高可靠、线性扩展 + 专业技术服务 • 边云数据复制 • 跨云 / 异地数据复制 • 增量备份 • 多级存储 • 工业数据接入 全托管时序数据 管理云服务平台 • 全托管服务 • VPC 对等连接0 码力 | 29 页 | 2.26 MB | 1 年前3
共 12 条
- 1
- 2