Hello 算法 1.2.0 简体中文 Rust 版数据缓冲区:在某些数据缓冲区的实现中,也可能会使用环形链表。比如在音频、视频播放器中,数据 流可能会被分成多个缓冲块并放入一个环形链表,以便实现无缝播放。 4.3 列表 列表(list)是一个抽象的数据结构概念,它表示元素的有序集合,支持元素访问、修改、添加、删除和遍历 等操作,无须使用者考虑容量限制的问题。列表可以基于链表或数组实现。 ‧ 链表天然可以看作一个列表,其支持元素增删查改操作,并且可以灵活动态扩容。 ‧ 数 ‧ 链表通过更改引用(指针)实现高效的节点插入与删除,且可以灵活调整长度;但节点访问效率低、占 用内存较多。常见的链表类型包括单向链表、环形链表、双向链表。 ‧ 列表是一种支持增删查改的元素有序集合,通常基于动态数组实现。它保留了数组的优势,同时可以灵 活调整长度。 ‧ 列表的出现大幅提高了数组的实用性,但可能导致部分内存空间浪费。 ‧ 程序运行时,数据主要存储在内存中。数组可提供更高的 在开放寻址中删除元素导致的查询问题 为了解决该问题,我们可以采用懒删除(lazy deletion)机制:它不直接从哈希表中移除元素,而是利用一个 常量 TOMBSTONE 来标记这个桶。在该机制下,None 和 TOMBSTONE 都代表空桶,都可以放置键值对。但不同的 是,线性探测到 TOMBSTONE 时应该继续遍历,因为其之下可能还存在键值对。 然而,懒删除可能会加速哈希表的性能退化。这是因为每次删除操作都会产生一个删除标记,随着0 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.1.0 Rust版数据缓冲区:在某些数据缓冲区的实现中,也可能会使用环形链表。比如在音频、视频播放器中,数据 流可能会被分成多个缓冲块并放入一个环形链表,以便实现无缝播放。 4.3 列表 列表(list)是一个抽象的数据结构概念,它表示元素的有序集合,支持元素访问、修改、添加、删除和遍历 等操作,无须使用者考虑容量限制的问题。列表可以基于链表或数组实现。 ‧ 链表天然可以看作一个列表,其支持元素增删查改操作,并且可以灵活动态扩容。 ‧ 数 ‧ 链表通过更改引用(指针)实现高效的节点插入与删除,且可以灵活调整长度;但节点访问效率低、占 用内存较多。常见的链表类型包括单向链表、环形链表、双向链表。 ‧ 列表是一种支持增删查改的元素有序集合,通常基于动态数组实现。它保留了数组的优势,同时可以灵 活调整长度。 ‧ 列表的出现大幅提高了数组的实用性,但可能导致部分内存空间浪费。 ‧ 程序运行时,数据主要存储在内存中。数组可提供更高的 在开放寻址中删除元素导致的查询问题 为了解决该问题,我们可以采用懒删除(lazy deletion)机制:它不直接从哈希表中移除元素,而是利用一个 常量 TOMBSTONE 来标记这个桶。在该机制下,None 和 TOMBSTONE 都代表空桶,都可以放置键值对。但不同的 是,线性探测到 TOMBSTONE 时应该继续遍历,因为其之下可能还存在键值对。 然而,懒删除可能会加速哈希表的性能退化。这是因为每次删除操作都会产生一个删除标记,随着0 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.0.0 Rust版流可能会被分成多个缓冲块并放入一个环形链表,以便实现无缝播放。 第 4 章 数组与链表 hello‑algo.com 79 4.3 列表 「列表 list」是一个抽象的数据结构概念,它表示元素的有序集合,支持元素访问、修改、添加、删除和遍历 等操作,无须使用者考虑容量限制的问题。列表可以基于链表或数组实现。 ‧ 链表天然可以看作一个列表,其支持元素增删查改操作,并且可以灵活动态扩容。 ‧ 数 ‧ 链表通过更改引用(指针)实现高效的节点插入与删除,且可以灵活调整长度;但节点访问效率低、占 用内存较多。常见的链表类型包括单向链表、环形链表、双向链表。 ‧ 列表是一种支持增删查改的元素有序集合,通常基于动态数组实现。它保留了数组的优势,同时可以灵 活调整长度。 ‧ 列表的出现大幅提高了数组的实用性,但可能导致部分内存空间浪费。 ‧ 程序运行时,数据主要存储在内存中。数组可提供更高的 为了解决该问题,我们可以采用「懒删除 lazy deletion」机制:它不直接从哈希表中移除元素,而是利用一 个常量 TOMBSTONE 来标记这个桶。在该机制下,None 和 TOMBSTONE 都代表空桶,都可以放置键值对。但不同 的是,线性探测到 TOMBSTONE 时应该继续遍历,因为其之下可能还存在键值对。 第 6 章 哈希表 hello‑algo.com 127 然而,懒删除可能会加速哈希0 码力 | 383 页 | 17.61 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 Rust 版會使用環形鏈結串列。比如在音訊、影片播放器中, 資料流可能會被分成多個緩衝塊並放入一個環形鏈結串列,以便實現無縫播放。 4.3 串列 串列(list)是一個抽象的資料結構概念,它表示元素的有序集合,支持元素訪問、修改、新增、刪除和走訪 等操作,無須使用者考慮容量限制的問題。串列可以基於鏈結串列或陣列實現。 ‧ 鏈結串列天然可以看作一個串列,其支持元素增刪查改操作,並且可以靈活動態擴容。 鏈結串列透過更改引用(指標)實現高效的節點插入與刪除,且可以靈活調整長度;但節點訪問效率 低、佔用記憶體較多。常見的鏈結串列型別包括單向鏈結串列、環形鏈結串列、雙向鏈結串列。 ‧ 串列是一種支持增刪查改的元素有序集合,通常基於動態陣列實現。它保留了陣列的優勢,同時可以靈 活調整長度。 ‧ 串列的出現大幅提高了陣列的實用性,但可能導致部分記憶體空間浪費。 ‧ 程式執行時,資料主要儲存在記憶體中。陣列可提供更 hello‑algo.com 195 9.1 圖 圖(graph)是一種非線性資料結構,由頂點(vertex)和邊(edge)組成。我們可以將圖 ? 抽象地表示為一 組頂點 ? 和一組邊 ? 的集合。以下示例展示了一個包含 5 個頂點和 7 條邊的圖。 ? = {1, 2, 3, 4, 5} ? = {(1, 2), (1, 3), (1, 5), (2, 3), (2, 4), (2, 5)0 码力 | 388 页 | 18.82 MB | 10 月前3
Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 8. 常见集合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 制流结构。在 Rust 中,创建自定义类型需要用到结构体和枚举。 第七章介绍 Rust 的模块(module)系统,其中的私有性规则用来组织代码和公开的 API(应 用程序接口)。第八章讨论标准库提供的常见集合数据结构,例如 Vector(向量)、字符串和 Hash Map(散列表)。第九章探索 Rust 的错误处理的理念与技术。 第十章深入介绍泛型(generic)、Trait 和生命周期(lifetime),这些功能让你能够定义适用 Byte (单字节字符)(仅限于u8) b'A' 那么该使用哪种类型的数字呢?如果拿不定主意,Rust 的默认类型通常是个不错的起点,整 型默认是 i32。isize 或 usize 主要作为某些集合的索引。 整型溢出 比方说有一个 u8 ,它可以存放从零到 255 的值。那么当你将其修改为 256 时就会发 生 整型溢出(integer overflow ),这会导致以下两种行为之一的发生。当在0 码力 | 562 页 | 3.23 MB | 26 天前3
Rust 程序设计语言简体中文版........................................................................................ 163 8. 常见集合 .................................................................................................. Rust 中,创建自定义类型需要用到结构体和枚举。 第 7 章介绍 Rust 的模块(module)系统,其中的私有性规则用来组织代码和公开的 API(应 用程序接口)。第 8 章讨论标准库提供的常见集合数据结构,例如 Vector(向量)、字符串和 Hash Map(散列表)。第 9 章探索 Rust 的错误处理的理念与技术。 第 10 章深入介绍泛型(generic)、Trait 和生命周期( (单字节字符)(仅限于 u8 ) b'A' 那么该使用哪种类型的数字呢?如果拿不定主意,Rust 的默认类型通常是个不错的起点,数 字类型默认是 i32 。isize 或 usize 主要作为某些集合的索引。 48/600 Rust 程序设计语言 简体中文版 整型溢出 比方说有一个 u8 ,它可以存放从零到 255 的值。那么当你将其修改为 256 时会发 生什么呢?这被称为 “整型溢出”(“integer0 码力 | 600 页 | 12.99 MB | 1 年前3
Borsh 安全高效的二进制序列化• 保证序列化后的二进制唯一性和确定性 • 主要序列化规则 Borsh 规范 • 整数采用低字节序( little endian) 存储 • 对于动态长度的集合,先用一个 u32 存储集合 size • 对于原本无序的集合(如 hashmap ),存储时使用 key 的字典序排序 Borsh 规范 let a: [u32; 5] = [1, 2, 3, 4, 5]; let a =0 码力 | 21 页 | 3.35 MB | 1 年前3
Rust API可靠性分析与验证Rust China Conf 2021 – 2022, Online, China 模糊测试简介 图.1 一个简单的模糊测 试用例程序 初始化种子集合 选择一个种子并且进行变异 如果这个种子比较有趣的话 把这个种子加入种子集合 Yes 图.2 典型模糊测试工 具的工作流程 使用变异后的种子执行程序 No Rust China Conf 2021 – 2022, Online Online, China RULF:模糊测试用例程序生成 带有剪枝 的BFS 生成API调用序列 反向搜索 合并与优 化 模糊测试用例程序 短序列 长序列 最优序列 集合 合并 优化 构建API依赖图 合成合法的测试 函数 Rust库源代码 泛型函数 单态化 所有权检查 开源于https://github.com/Artisan-Lab/RULF Rust China0 码力 | 13 页 | 1.68 MB | 1 年前3
Comprehensive Rust(简体中文) 202412while the second represents an exclusive reference to a mutable value. 9.3 切片 切片 (slice) 的作用是提供对集合 (collection) 的视图 (view): fn main() { let mut a: [i32; 6] = [10, 20, 30, 40, 50, 60]; println!("a: 或者,HashMap 也可以基于任何可生成键-值元组的“Iterator”进行构建。 • 我们要展示“HashMap”,避免将“&str”用作键,以便简化示例。当然,可以在集合中 使用引用,但可能会导致借用检查器出现复杂问题。 – 尝试从上述示例中移除“to_string()”,看看它是否仍可编译。您认为我们可能会在哪些方面遇 到问题? • 此类型具有几种特定于方法的 will be dropped properly (likely in combination with RefCell). 20.3 特征对象 特征(Trait)对象可接受不同类型的值,举例来说,在集合中会是这样: struct Dog { name: String, age: i8, } struct Cat { lives: i8, } trait Pet { fn talk(&self) 0 码力 | 359 页 | 1.33 MB | 10 月前3
Comprehensive Rust(繁体中文)或者,您也可以透過任何能產生鍵/值元組的 Iterator 建立 HashMap。 • 我們示範的是 HashMap,請避免使用 ‘&str 做為鍵,讓範例變得更簡單。當然,也 可以在集合中使用參照,但這可能會使借用檢查器變得複雜。 – 請嘗試從上述範例中移除 to_string(),看看是否仍可編譯。您認為我們可能會在哪裡遇到 問題? • 這個型別有多個「方法專屬」的傳回型別,例如 Rc::downgrade 提 供 的「弱 參 考 計 數」物 件,建 立 之 後 會 適 當 捨 棄 的 循 環 (可 能 會 搭 配 RefCell)。 20.3 特徵物件 特徵物件可接受不同型別的值,舉例來說,在集合中會是這樣: struct Dog { name: String, age: i8, } struct Cat { lives: i8, } trait Pet { fn talk(&self) minutes 函式呼叫中的生命週期 10 minutes 生命週期 5 minutes 生命週期 5 minutes 練習:Protobuf 剖析 30 minutes 23.1 切片 切片能讓您查看更大的集合: fn main() { let mut a: [i32; 6] = [10, 20, 30, 40, 50, 60]; println!("a: {a:?}"); let s: &[i32] 0 码力 | 358 页 | 1.41 MB | 10 月前3
共 13 条
- 1
- 2













