 Rust 语言学习笔记.. 92 7.1.4 线程与 move闭包 ................................................................ 93 7.2 消息传递 .................................................................................... 93 7.2.1 通道与所有权的转移 96 7.2.4 异步通道与同步通道 ............................................................. 97 7.2.5 可发送的消息类型 ................................................................ 99 7.3 send 与 sync........... tx.send(val).unwrap(); }); let received:String = rx.recv().unwrap(); // 阻塞等待,直到接收到一个消息 println!("Got: {}", received); } 例如上述代码编译通过,但是在运行过程中会死锁。而 rust 的编译器无法识别 此类错误。Rust 对安全的理解是死锁不属于内存安全问题。0 码力 | 117 页 | 2.24 MB | 1 年前3 Rust 语言学习笔记.. 92 7.1.4 线程与 move闭包 ................................................................ 93 7.2 消息传递 .................................................................................... 93 7.2.1 通道与所有权的转移 96 7.2.4 异步通道与同步通道 ............................................................. 97 7.2.5 可发送的消息类型 ................................................................ 99 7.3 send 与 sync........... tx.send(val).unwrap(); }); let received:String = rx.recv().unwrap(); // 阻塞等待,直到接收到一个消息 println!("Got: {}", received); } 例如上述代码编译通过,但是在运行过程中会死锁。而 rust 的编译器无法识别 此类错误。Rust 对安全的理解是死锁不属于内存安全问题。0 码力 | 117 页 | 2.24 MB | 1 年前3
 Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 16.2. 使用消息传递在线程间通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rust 设计中一个经过慎重考虑的决定:要求 在函数定义中提供类型注解,意味着编译器再也不需要你在代码的其他地方注明类型来指出你 的意图。而且,在知道函数需要什么类型后,编译器就能够给出更有用的错误消息。 当定义多个参数时,使用逗号分隔,像这样: 文件名:src/main.rs fn main() { print_labeled_measurement(5, 'h'); } fn 所有权系统管理内存,编译器在编译时会根据一系列的规则进行检查。如果违反了任何这些规 则,程序都不能编译。在运行时,所有权系统的任何功能都不会减慢程序的运行。 因为所有权对很多程序员来说都是一个新概念,需要一些时间来适应。好消息是随着你对 Rust 和所有权系统的规则越来越有经验,你就越能自然地编写出安全和高效的代码。持之以 恒! 当你理解了所有权,你将有一个坚实的基础来理解那些使 Rust 独特的功能。在本章中,你将0 码力 | 562 页 | 3.23 MB | 26 天前3 Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 16.2. 使用消息传递在线程间通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rust 设计中一个经过慎重考虑的决定:要求 在函数定义中提供类型注解,意味着编译器再也不需要你在代码的其他地方注明类型来指出你 的意图。而且,在知道函数需要什么类型后,编译器就能够给出更有用的错误消息。 当定义多个参数时,使用逗号分隔,像这样: 文件名:src/main.rs fn main() { print_labeled_measurement(5, 'h'); } fn 所有权系统管理内存,编译器在编译时会根据一系列的规则进行检查。如果违反了任何这些规 则,程序都不能编译。在运行时,所有权系统的任何功能都不会减慢程序的运行。 因为所有权对很多程序员来说都是一个新概念,需要一些时间来适应。好消息是随着你对 Rust 和所有权系统的规则越来越有经验,你就越能自然地编写出安全和高效的代码。持之以 恒! 当你理解了所有权,你将有一个坚实的基础来理解那些使 Rust 独特的功能。在本章中,你将0 码力 | 562 页 | 3.23 MB | 26 天前3
 Rust 程序设计语言简体中文版...................................................................................... 414 16.2. 使用消息传递在线程间通信 ....................................................................................... 421 Rust 设计中一个经过慎重考虑的决定:要求 在函数定义中提供类型注解,意味着编译器再也不需要你在代码的其他地方注明类型来指出你 的意图。而且,在知道函数需要什么类型后,编译器就能够给出更有用的错误消息。 当定义多个参数时,使用逗号分隔,像这样: 文件名:src/main.rs fn main() { print_labeled_measurement(5, 'h'); } fn 译器在编译时会根据一系列的规则 进行检查。如果违反了任何这些规则,程序都不能编译。在运行时,所有权系统的任何功能都 不会减慢程序。 因为所有权对很多程序员来说都是一个新概念,需要一些时间来适应。好消息是随着你对 Rust 和所有权系统的规则越来越有经验,你就越能自然地编写出安全和高效的代码。持之以 恒! 当你理解了所有权,你将有一个坚实的基础来理解那些使 Rust 独特的功能。在本章中,你将0 码力 | 600 页 | 12.99 MB | 1 年前3 Rust 程序设计语言简体中文版...................................................................................... 414 16.2. 使用消息传递在线程间通信 ....................................................................................... 421 Rust 设计中一个经过慎重考虑的决定:要求 在函数定义中提供类型注解,意味着编译器再也不需要你在代码的其他地方注明类型来指出你 的意图。而且,在知道函数需要什么类型后,编译器就能够给出更有用的错误消息。 当定义多个参数时,使用逗号分隔,像这样: 文件名:src/main.rs fn main() { print_labeled_measurement(5, 'h'); } fn 译器在编译时会根据一系列的规则 进行检查。如果违反了任何这些规则,程序都不能编译。在运行时,所有权系统的任何功能都 不会减慢程序。 因为所有权对很多程序员来说都是一个新概念,需要一些时间来适应。好消息是随着你对 Rust 和所有权系统的规则越来越有经验,你就越能自然地编写出安全和高效的代码。持之以 恒! 当你理解了所有权,你将有一个坚实的基础来理解那些使 Rust 独特的功能。在本章中,你将0 码力 | 600 页 | 12.99 MB | 1 年前3
 基于 Rust Arrow Flight 的物联网和时序数据传输及转换工具 霍琳贺taosX - 物联网数据接入问题 • 多种不同协议数据对接,开发复杂度高 • 模块之间关联性不高但模块组成复杂,可维护性差 • 大量设备大量数据归集存储,存储压力大 • 数据总线 / 消息队列消息接入,定制化程度要求高 • 数据业务逻辑自定义需求强 • 一定的实时数据分析能力 taosX - 功能路线图 集群运维 数据接入 流式处理 流式处理 数据分享 开放平台 • Backup/Restore0 码力 | 29 页 | 2.26 MB | 1 年前3 基于 Rust Arrow Flight 的物联网和时序数据传输及转换工具 霍琳贺taosX - 物联网数据接入问题 • 多种不同协议数据对接,开发复杂度高 • 模块之间关联性不高但模块组成复杂,可维护性差 • 大量设备大量数据归集存储,存储压力大 • 数据总线 / 消息队列消息接入,定制化程度要求高 • 数据业务逻辑自定义需求强 • 一定的实时数据分析能力 taosX - 功能路线图 集群运维 数据接入 流式处理 流式处理 数据分享 开放平台 • Backup/Restore0 码力 | 29 页 | 2.26 MB | 1 年前3
 Rust 在算法交易中的实际应用与积极效应外 部 交 互 交易所引擎 Web客户端 下单指令 信息回报 母单/信息上传 统计信息查询等 数据获取 模型训练 信号预测 交易指令 交易指令 1. 低延迟高吞吐的一写多读消息队列 2. 基于共享内存,全用户态,零拷贝(配合 capnproto) 3. 针对 x86_64、AArch64 架构分别优化,CPU Cache 友好 Rust 进程间通信 XSHM Rust0 码力 | 18 页 | 3.49 MB | 1 年前3 Rust 在算法交易中的实际应用与积极效应外 部 交 互 交易所引擎 Web客户端 下单指令 信息回报 母单/信息上传 统计信息查询等 数据获取 模型训练 信号预测 交易指令 交易指令 1. 低延迟高吞吐的一写多读消息队列 2. 基于共享内存,全用户态,零拷贝(配合 capnproto) 3. 针对 x86_64、AArch64 架构分别优化,CPU Cache 友好 Rust 进程间通信 XSHM Rust0 码力 | 18 页 | 3.49 MB | 1 年前3
 Comprehensive Rust(简体中文) 202412言中可以持有任何数据的“任何类型”。这种声 明所生成的机器码与明确类型声明完全相同。编译器进行类型推导能够让我们编写更简略的代码。 当整数字面量的类型不受限制时,Rust 默认为 i32。这在错误消息中有时显示为{integer}。同样,浮 点字面量默认为 f64。 27 fn main() { let x = 3.14; let y = 20; assert_eq!(x, y); // ERROR: happened: {msg}"), } } 在这里,我们使用了分支来解构“Result”值。在第一个分支中, “half”被绑定到“Ok”变体中的值。在第二 个分支中, “msg”被绑定到错误消息。 结构体 • 更改“foo”中的字面量值以与其他模式相匹配。 • 向“Foo”添加一个新字段,并根据需要更改模式。 • 捕获和常量表达式之间的区别可能很难发现。尝试将第二个分支中的“2”更改为一个变量,可以看 collect() 或使用以下 Turbofish:foo.collect:: Comprehensive Rust(简体中文) 202412言中可以持有任何数据的“任何类型”。这种声 明所生成的机器码与明确类型声明完全相同。编译器进行类型推导能够让我们编写更简略的代码。 当整数字面量的类型不受限制时,Rust 默认为 i32。这在错误消息中有时显示为{integer}。同样,浮 点字面量默认为 f64。 27 fn main() { let x = 3.14; let y = 20; assert_eq!(x, y); // ERROR: happened: {msg}"), } } 在这里,我们使用了分支来解构“Result”值。在第一个分支中, “half”被绑定到“Ok”变体中的值。在第二 个分支中, “msg”被绑定到错误消息。 结构体 • 更改“foo”中的字面量值以与其他模式相匹配。 • 向“Foo”添加一个新字段,并根据需要更改模式。 • 捕获和常量表达式之间的区别可能很难发现。尝试将第二个分支中的“2”更改为一个变量,可以看 collect() 或使用以下 Turbofish:foo.collect::- >()。 debuggable 是什么类型?尝试输入 let debuggable: () = ..,查看会显示什么错误消息。 14.6 练习:通用 min 函数 In this short exercise, you will implement a generic min function that determines 0 码力 | 359 页 | 1.33 MB | 10 月前3
 Hello 算法 1.1.0 Rust版同样,数据结构无处不在:大到社会网络,小到地铁线路,许多系统都可以建模为“图”;大到一个国家,小 到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下; 羽毛球筒则如同“队列”,一端放入、另一端取出;字典就像一个“哈希表”,能够快速查找目标词条。 本书旨在通过清晰易懂的动画图解和可运行的代码示例,使读者理解算法和数据结构的核心概念,并能够通 过编程来实现它们。在此基 . . . . . . . . . . . . . . . . 87 第 5 章 栈与队列 90 5.1 栈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 5.2 队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 5.3 双向队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 5.4 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 388 页 | 18.50 MB | 1 年前3 Hello 算法 1.1.0 Rust版同样,数据结构无处不在:大到社会网络,小到地铁线路,许多系统都可以建模为“图”;大到一个国家,小 到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下; 羽毛球筒则如同“队列”,一端放入、另一端取出;字典就像一个“哈希表”,能够快速查找目标词条。 本书旨在通过清晰易懂的动画图解和可运行的代码示例,使读者理解算法和数据结构的核心概念,并能够通 过编程来实现它们。在此基 . . . . . . . . . . . . . . . . 87 第 5 章 栈与队列 90 5.1 栈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 5.2 队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 5.3 双向队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 5.4 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 388 页 | 18.50 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 Rust 版同样,数据结构无处不在:大到社会网络,小到地铁线路,许多系统都可以建模为“图”;大到一个国家,小 到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下; 羽毛球筒则如同“队列”,一端放入、另一端取出;字典就像一个“哈希表”,能够快速查找目标词条。 本书旨在通过清晰易懂的动画图解和可运行的代码示例,使读者理解算法和数据结构的核心概念,并能够通 过编程来实现它们。在此基 . . . . . . . . . . . . . . . . 87 第 5 章 栈与队列 90 5.1 栈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 5.2 队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 5.3 双向队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 5.4 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 387 页 | 18.51 MB | 10 月前3 Hello 算法 1.2.0 简体中文 Rust 版同样,数据结构无处不在:大到社会网络,小到地铁线路,许多系统都可以建模为“图”;大到一个国家,小 到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下; 羽毛球筒则如同“队列”,一端放入、另一端取出;字典就像一个“哈希表”,能够快速查找目标词条。 本书旨在通过清晰易懂的动画图解和可运行的代码示例,使读者理解算法和数据结构的核心概念,并能够通 过编程来实现它们。在此基 . . . . . . . . . . . . . . . . 87 第 5 章 栈与队列 90 5.1 栈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 5.2 队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 5.3 双向队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 5.4 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 387 页 | 18.51 MB | 10 月前3
 Hello 算法 1.0.0 Rust版. . . . . . . . . . . . . . . . 87 第 5 章 栈与队列 90 5.1 栈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 5.2 队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 5.3 双向队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 5.4 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 本书的主要内容如图 0‑1 所示。 ‧ 复杂度分析:数据结构和算法的评价维度与方法。时间复杂度和空间复杂度的推算方法、常见类型、示 例等。 ‧ 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤 和示例问题等。0 码力 | 383 页 | 17.61 MB | 1 年前3 Hello 算法 1.0.0 Rust版. . . . . . . . . . . . . . . . 87 第 5 章 栈与队列 90 5.1 栈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 5.2 队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 5.3 双向队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 5.4 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 本书的主要内容如图 0‑1 所示。 ‧ 复杂度分析:数据结构和算法的评价维度与方法。时间复杂度和空间复杂度的推算方法、常见类型、示 例等。 ‧ 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤 和示例问题等。0 码力 | 383 页 | 17.61 MB | 1 年前3
 Rust 异步并发框架在移动端的应用 - 陈明煜Local queue Tokio 采用了如右图这种 GMP 模式: • 一核可以绑定多线程,每个线程拥有一个 Worker ,每个 Worker 拥有一个任务队列 • 但线程拥有相同优先级 • Worker 只持有一个本地 FIFO 队列 移动端诉求:优先级 • 任务区分优先级: UI 显示 vs 后台下载 • 大小核调度 Incompatibility of the third party of service 任务优先级调度 对框架内的工作线程设置优先级,使其 拥有不同权重。 • 由 Kernel 决定调度时间 • 高优先级任务由高权重线程调度, 以此获得更多执行时间 • 全局队列区分高低优先级 Task priority and quality of service 高权重线程 低权重线程 task …. task …. Global queue task Local0 码力 | 25 页 | 1.64 MB | 1 年前3 Rust 异步并发框架在移动端的应用 - 陈明煜Local queue Tokio 采用了如右图这种 GMP 模式: • 一核可以绑定多线程,每个线程拥有一个 Worker ,每个 Worker 拥有一个任务队列 • 但线程拥有相同优先级 • Worker 只持有一个本地 FIFO 队列 移动端诉求:优先级 • 任务区分优先级: UI 显示 vs 后台下载 • 大小核调度 Incompatibility of the third party of service 任务优先级调度 对框架内的工作线程设置优先级,使其 拥有不同权重。 • 由 Kernel 决定调度时间 • 高优先级任务由高权重线程调度, 以此获得更多执行时间 • 全局队列区分高低优先级 Task priority and quality of service 高权重线程 低权重线程 task …. task …. Global queue task Local0 码力 | 25 页 | 1.64 MB | 1 年前3
共 19 条
- 1
- 2













