 王宜国 - 基于 Rust 编程语⾔构建 Amphitheatre CLI  Desktop  Server 的全平台实践经验Riven Event Account Project Activity Tariq Share NS 3 Docker Container Kubernetes Pod 轻松创建⽆限量的隔离集成测试环境 ⽀持微服务架构体系和多⼈协作联调测试 Kayn Sona Riven Event Account Project Activity Tariq Share Redis 可让您完全跳过镜像构建, 使⽤新代码更新正在运⾏的容器, 只需⼏秒钟⽽不是⼏分钟。 本地开发实时部署到远程集群 如何⼯作的? Kubernetes 集群 更改 资源定义 ⻆⾊定义 执⾏资源 资源定义 资源定义 更改 ⽂件 更改 ⽤户 触发 ⽂件 更改 frontend 12h shopping-cart 15m catalogue 3d ⽂件 更改 ⽤户 kube-rs 编写 Kubernetes Controller 及资源操作 Operator (CRD Controller) Cluster CRD reconcile Reconcile Period (60s) Kubernetes 资源布局示意 kube-rs: Kubernetes 资源操作 使⽤⾃定义资源时,通过 kube-derive 的 proc_macros ⾃动⽣成代码。0 码力 | 34 页 | 10.81 MB | 1 年前3 王宜国 - 基于 Rust 编程语⾔构建 Amphitheatre CLI  Desktop  Server 的全平台实践经验Riven Event Account Project Activity Tariq Share NS 3 Docker Container Kubernetes Pod 轻松创建⽆限量的隔离集成测试环境 ⽀持微服务架构体系和多⼈协作联调测试 Kayn Sona Riven Event Account Project Activity Tariq Share Redis 可让您完全跳过镜像构建, 使⽤新代码更新正在运⾏的容器, 只需⼏秒钟⽽不是⼏分钟。 本地开发实时部署到远程集群 如何⼯作的? Kubernetes 集群 更改 资源定义 ⻆⾊定义 执⾏资源 资源定义 资源定义 更改 ⽂件 更改 ⽤户 触发 ⽂件 更改 frontend 12h shopping-cart 15m catalogue 3d ⽂件 更改 ⽤户 kube-rs 编写 Kubernetes Controller 及资源操作 Operator (CRD Controller) Cluster CRD reconcile Reconcile Period (60s) Kubernetes 资源布局示意 kube-rs: Kubernetes 资源操作 使⽤⾃定义资源时,通过 kube-derive 的 proc_macros ⾃动⽣成代码。0 码力 | 34 页 | 10.81 MB | 1 年前3
 Comprehensive Rust(简体中文) 202412. . . . . . . . . . . . . . . . . . . . . . . 346 XV 结束语 351 67 谢谢! 352 68 词汇表 353 69 其他 Rust 资源 357 70 鸣谢 358 9 欢迎来到 Comprehensive Rust build passing contributors 303 stars 28k 这是一门由 Android 被广泛用于各种设备中: – 固件和引导程序, – 智能显示器, – 手机, – 桌面, – 服务器。 Rust 和 C++ 适用于类似的场景: • 极高的灵活性。 • 高度的控制能力。 • 能够在资源匮乏的设备(如手机)上运行。 • 没有运行时和垃圾收集。 • 关注程序可靠性和安全性,而不会牺牲任何性能。 4.2 Rust 的优势 Rust 有一些独特的卖点: 23 • 内存安全:在编译时可防止所有类内存 mostly safe Rust in this course, but it's important to know what Unsafe Rust is. 不安全的代码通常内容很少而且与其他代码隔离,其正确性也应得到仔细记录。这类代码通常封装在安全 的抽象层中。 不安全 Rust 提供了五种新功能: • 解引用原始指针。 • 访问或修改可变的静态变量。 • 访问 union 字段。 • 调用0 码力 | 359 页 | 1.33 MB | 10 月前3 Comprehensive Rust(简体中文) 202412. . . . . . . . . . . . . . . . . . . . . . . 346 XV 结束语 351 67 谢谢! 352 68 词汇表 353 69 其他 Rust 资源 357 70 鸣谢 358 9 欢迎来到 Comprehensive Rust build passing contributors 303 stars 28k 这是一门由 Android 被广泛用于各种设备中: – 固件和引导程序, – 智能显示器, – 手机, – 桌面, – 服务器。 Rust 和 C++ 适用于类似的场景: • 极高的灵活性。 • 高度的控制能力。 • 能够在资源匮乏的设备(如手机)上运行。 • 没有运行时和垃圾收集。 • 关注程序可靠性和安全性,而不会牺牲任何性能。 4.2 Rust 的优势 Rust 有一些独特的卖点: 23 • 内存安全:在编译时可防止所有类内存 mostly safe Rust in this course, but it's important to know what Unsafe Rust is. 不安全的代码通常内容很少而且与其他代码隔离,其正确性也应得到仔细记录。这类代码通常封装在安全 的抽象层中。 不安全 Rust 提供了五种新功能: • 解引用原始指针。 • 访问或修改可变的静态变量。 • 访问 union 字段。 • 调用0 码力 | 359 页 | 1.33 MB | 10 月前3
 Rust 程序设计语言简体中文版为我们调用一个特殊的函数。这个函数叫做 drop ,在这里 String 的 作者可以放置释放内存的代码。Rust 在结尾的 } 处自动调用 drop 。 注意:在 C++ 中,这种 item 在生命周期结束时释放资源的模式有时被称作 资源获取 即初始化(Resource Acquisition Is Initialization (RAII))。如果你使用过 RAII 模式的 话应该对 Rust 的 drop 函数并不陌生。 s1, s2); # } 这段代码能正常运行,并且明确产生图 4-3 中行为,这里堆上的数据 确实 被复制了。 当出现 clone 调用时,你知道一些特定的代码被执行而且这些代码可能相当消耗资源。你很 容易察觉到一些不寻常的事情正在发生。 只在栈上的数据:拷贝 这里还有一个没有提到的小窍门。这些代码使用了整型并且是有效的,它们是示例 4-2 中的一 部分: # fn main() { trait”。 那么哪些类型实现了 Copy trait 呢?你可以查看给定类型的文档来确认,不过作为一个通用的 规则,任何一组简单标量值的组合都可以实现 Copy ,任何不需要分配内存或某种形式资源的 类型都可以实现 Copy 。如下是一些 Copy 的类型: • 所有整数类型,比如 u32 。 • 布尔类型,bool ,它的值是 true 和 false 。 • 所有浮点数类型,比如0 码力 | 600 页 | 12.99 MB | 1 年前3 Rust 程序设计语言简体中文版为我们调用一个特殊的函数。这个函数叫做 drop ,在这里 String 的 作者可以放置释放内存的代码。Rust 在结尾的 } 处自动调用 drop 。 注意:在 C++ 中,这种 item 在生命周期结束时释放资源的模式有时被称作 资源获取 即初始化(Resource Acquisition Is Initialization (RAII))。如果你使用过 RAII 模式的 话应该对 Rust 的 drop 函数并不陌生。 s1, s2); # } 这段代码能正常运行,并且明确产生图 4-3 中行为,这里堆上的数据 确实 被复制了。 当出现 clone 调用时,你知道一些特定的代码被执行而且这些代码可能相当消耗资源。你很 容易察觉到一些不寻常的事情正在发生。 只在栈上的数据:拷贝 这里还有一个没有提到的小窍门。这些代码使用了整型并且是有效的,它们是示例 4-2 中的一 部分: # fn main() { trait”。 那么哪些类型实现了 Copy trait 呢?你可以查看给定类型的文档来确认,不过作为一个通用的 规则,任何一组简单标量值的组合都可以实现 Copy ,任何不需要分配内存或某种形式资源的 类型都可以实现 Copy 。如下是一些 Copy 的类型: • 所有整数类型,比如 u32 。 • 布尔类型,bool ,它的值是 true 和 false 。 • 所有浮点数类型,比如0 码力 | 600 页 | 12.99 MB | 1 年前3
 Rust 程序设计语言 简体中文版 1.85.0为我们调用一个特殊的函数。这个函数叫做 drop,在这里 String 的作 者可以放置释放内存的代码。Rust 在结尾的 } 处自动调用 drop。 注意:在 C++ 中,这种 item 在生命周期结束时释放资源的模式有时被称作 资源获取 即初始化(Resource Acquisition Is Initialization (RAII))。如果你使用过 RAII 模式的 话应该对 Rust 的 drop 函数并不陌生。 {s1}, s2 = {s2}"); 这段代码能正常运行,并且明确产生图 4-3 中行为,这里堆上的数据确实被复制了。 当出现 clone 调用时,你知道一些特定的代码被执行而且这些代码可能相当消耗资源。你很容 易察觉到一些不寻常的事情正在发生。 只在栈上的数据:拷贝 这里还有一个没有提到的细节。这些代码使用了整型并且是有效的,它们是示例 4-2 中的一部 分: let x = 5; “可派生的 trait”。 那么哪些类型实现了 Copy trait 呢?你可以查看给定类型的文档来确认,不过作为一个通用的 规则,任何一组简单标量值的组合都可以实现 Copy,任何不需要分配内存或某种形式资源的 类型都可以实现 Copy 。如下是一些 Copy 的类型: • 所有整数类型,比如 u32。 • 布尔类型,bool,它的值是 true 和 false。 • 所有浮点数类型,比如 f64。0 码力 | 562 页 | 3.23 MB | 25 天前3 Rust 程序设计语言 简体中文版 1.85.0为我们调用一个特殊的函数。这个函数叫做 drop,在这里 String 的作 者可以放置释放内存的代码。Rust 在结尾的 } 处自动调用 drop。 注意:在 C++ 中,这种 item 在生命周期结束时释放资源的模式有时被称作 资源获取 即初始化(Resource Acquisition Is Initialization (RAII))。如果你使用过 RAII 模式的 话应该对 Rust 的 drop 函数并不陌生。 {s1}, s2 = {s2}"); 这段代码能正常运行,并且明确产生图 4-3 中行为,这里堆上的数据确实被复制了。 当出现 clone 调用时,你知道一些特定的代码被执行而且这些代码可能相当消耗资源。你很容 易察觉到一些不寻常的事情正在发生。 只在栈上的数据:拷贝 这里还有一个没有提到的细节。这些代码使用了整型并且是有效的,它们是示例 4-2 中的一部 分: let x = 5; “可派生的 trait”。 那么哪些类型实现了 Copy trait 呢?你可以查看给定类型的文档来确认,不过作为一个通用的 规则,任何一组简单标量值的组合都可以实现 Copy,任何不需要分配内存或某种形式资源的 类型都可以实现 Copy 。如下是一些 Copy 的类型: • 所有整数类型,比如 u32。 • 布尔类型,bool,它的值是 true 和 false。 • 所有浮点数类型,比如 f64。0 码力 | 562 页 | 3.23 MB | 25 天前3
 CeresDB Rust 生产实践 任春韶spawn(task2) cpu_runtime.spawn(task3) 生产实践 – Preemption 总结: Mixed workload: 碰到混合负载的时候,把 CPU 密集型任务隔离出去 会得到比较好的效果。 相关 Blog : 1. https://tokio.rs/blog/2020-04-preemption 2. https://www.influxdata.c0 码力 | 22 页 | 6.95 MB | 1 年前3 CeresDB Rust 生产实践 任春韶spawn(task2) cpu_runtime.spawn(task3) 生产实践 – Preemption 总结: Mixed workload: 碰到混合负载的时候,把 CPU 密集型任务隔离出去 会得到比较好的效果。 相关 Blog : 1. https://tokio.rs/blog/2020-04-preemption 2. https://www.influxdata.c0 码力 | 22 页 | 6.95 MB | 1 年前3
 刘用涛 CnosDB时序数据库的Rust实践的交叉编译 rust crate 它提供了一个环境、交叉工具链和交叉编译库,可以生成最便携的二进制文件 3.4 Rust 交叉编译 1. IO 异步化  平台兼容性  隔离阻塞 IO 异步化 2. io_uring  性能有40%提高 3.5 异步 IO 4. 反哺社区 4.1 DataFusion 在开发过程中,我们发现一些0 码力 | 26 页 | 3.28 MB | 1 年前3 刘用涛 CnosDB时序数据库的Rust实践的交叉编译 rust crate 它提供了一个环境、交叉工具链和交叉编译库,可以生成最便携的二进制文件 3.4 Rust 交叉编译 1. IO 异步化  平台兼容性  隔离阻塞 IO 异步化 2. io_uring  性能有40%提高 3.5 异步 IO 4. 反哺社区 4.1 DataFusion 在开发过程中,我们发现一些0 码力 | 26 页 | 3.28 MB | 1 年前3
 Rust 语言学习笔记绑定 首先必须强调下,准确地说 Rust 中并没有变量这一概念,而应该称为标识符, 目标资源(内存,存放 value)绑定到这个标识符。 { let x: i32; // 标识符 x, 没有绑定任何资源 let y: i32 = 100; // 标识符 y,绑定资源 100 } Rust 并不会像其他语言一样可以为变量默认初始化值,Rust 明确规定变量的初 中,和“绑定”概念相辅相成的另一个机制就是“转移 move 所有 权”,意思是,可以把资源的所有权(ownership)从一个绑定转移(move)成另 一个绑定,这个操作同样通过 let 关键字完成,和绑定不同的是,=两边的左值 和右值均为两个标识符: 语法: let 标识符 A = 标识符 B; // 把“B”绑定资源的所有权转移给“A” move 前后的内存示意如下: Before move: move 后,如果变量 A 和变量 B 离开作用域,所对应的内存会不会造成“Double Free”的问题?答案是否定的,Rust 规定,只有资源的所有者销毁后才释放内 存,而无论这个资源是否被多次 move,同一时刻只有一个 owner,所以该资源 的内存也只会被 free 一次。 3.1.4 Copy 特性 举例如下: let a: i32 = 100; let0 码力 | 117 页 | 2.24 MB | 1 年前3 Rust 语言学习笔记绑定 首先必须强调下,准确地说 Rust 中并没有变量这一概念,而应该称为标识符, 目标资源(内存,存放 value)绑定到这个标识符。 { let x: i32; // 标识符 x, 没有绑定任何资源 let y: i32 = 100; // 标识符 y,绑定资源 100 } Rust 并不会像其他语言一样可以为变量默认初始化值,Rust 明确规定变量的初 中,和“绑定”概念相辅相成的另一个机制就是“转移 move 所有 权”,意思是,可以把资源的所有权(ownership)从一个绑定转移(move)成另 一个绑定,这个操作同样通过 let 关键字完成,和绑定不同的是,=两边的左值 和右值均为两个标识符: 语法: let 标识符 A = 标识符 B; // 把“B”绑定资源的所有权转移给“A” move 前后的内存示意如下: Before move: move 后,如果变量 A 和变量 B 离开作用域,所对应的内存会不会造成“Double Free”的问题?答案是否定的,Rust 规定,只有资源的所有者销毁后才释放内 存,而无论这个资源是否被多次 move,同一时刻只有一个 owner,所以该资源 的内存也只会被 free 一次。 3.1.4 Copy 特性 举例如下: let a: i32 = 100; let0 码力 | 117 页 | 2.24 MB | 1 年前3
 Rust语言核心竞争力-庄晓立需要大批量部署,必须控制硬件成本 • 受限于成本控制,硬件性能不强 • 受限于电池供电,功耗不能高 这就要求系统和应用软件要高效利用硬件 程序运行在VM上,或后台跑GC 白白浪费了宝贵的CPU和内存资源 Rust在系统编程领域 面临极其强大的竞争对手 嵌入式 C/Rust 系统编程 C/C++/C++1x/Rust Web开发 Java/Php/Python/Js 其他领域 (通俗地说) Zero-cost abstractions • 无垃圾收集器(GC) • 无虚拟机(JVM/.Net) • 无解释器(Python/JS) • 运行效率很高(与C语言相当) • 充分高效利用CPU和内存等系统资源 零运行时 零开销原则/zero-overhead principle • What you don't use, you don't pay for • What you do use, • “没有GC”居然被当作一项特性(20年来GC几乎是标配) • GC的优势:简化内存管理,基本保证内存安全 • GC的劣势:运行时开销较大,占用CPU和内存较多 • GC不能管理内存以外的其他资源(file/socket/stream) • 在系统编程领域,GC的运行时开销几乎难以容忍 • GC的终极目的是安全地释放内存 • Rust通过Ownership和RAII也能达到此目的,且性能更好0 码力 | 51 页 | 1.09 MB | 1 年前3 Rust语言核心竞争力-庄晓立需要大批量部署,必须控制硬件成本 • 受限于成本控制,硬件性能不强 • 受限于电池供电,功耗不能高 这就要求系统和应用软件要高效利用硬件 程序运行在VM上,或后台跑GC 白白浪费了宝贵的CPU和内存资源 Rust在系统编程领域 面临极其强大的竞争对手 嵌入式 C/Rust 系统编程 C/C++/C++1x/Rust Web开发 Java/Php/Python/Js 其他领域 (通俗地说) Zero-cost abstractions • 无垃圾收集器(GC) • 无虚拟机(JVM/.Net) • 无解释器(Python/JS) • 运行效率很高(与C语言相当) • 充分高效利用CPU和内存等系统资源 零运行时 零开销原则/zero-overhead principle • What you don't use, you don't pay for • What you do use, • “没有GC”居然被当作一项特性(20年来GC几乎是标配) • GC的优势:简化内存管理,基本保证内存安全 • GC的劣势:运行时开销较大,占用CPU和内存较多 • GC不能管理内存以外的其他资源(file/socket/stream) • 在系统编程领域,GC的运行时开销几乎难以容忍 • GC的终极目的是安全地释放内存 • Rust通过Ownership和RAII也能达到此目的,且性能更好0 码力 | 51 页 | 1.09 MB | 1 年前3
 Rust与算法 - 谢波……………… …………………………….. 1 6 11 15 21 • 背景介绍 • 算法相关知识 • Rust 实现数据结构 • Rust 实现算法 • 总结及学习资源 背景介绍 • 个人信息 • 写作动机 • 可参考点 • 为什么 背景介绍 # 个人职业 # 与 Rust 结缘 # 前 GPT 时代作品 个人信息 结算及大数据系统研发工程师 疫情下的明智选择 Rust , Rust 中国 大会也才第三届,期待 Rust 中国大会第十届 Rust 处于起步阶段 中文圈学习资料或书籍少,有部分是翻译国外产品,能 不能中国人向国外输出作品 Rust 缺少学习资源 Rust 未来大有可为 Rust 在操作系统,数据库,各种框架和工具上应用范围 广 写作动机 当情况不明时,抱着一个纯粹的目标干事就行了,其他 的留给时间检验。不懂就学,技术写作更像一种共创, + 1; • V+E = 32 • 2E – F + 2 = 32 总结及学习资源 • 算法总结 • 学习资源 总结及学习资源 Rust 算法总结 • 复杂度分析及算法优化 • 别自己实现,用标准库 • 利用 Rust 特性实现高效算法 • 技术在进步,用新工具辅助学习 Rust 学习资源 # 社区/公众号 社区: Rust 语言中文社区、乐酷 Rust 技术论坛 公号:觉学社、0 码力 | 28 页 | 3.52 MB | 1 年前3 Rust与算法 - 谢波……………… …………………………….. 1 6 11 15 21 • 背景介绍 • 算法相关知识 • Rust 实现数据结构 • Rust 实现算法 • 总结及学习资源 背景介绍 • 个人信息 • 写作动机 • 可参考点 • 为什么 背景介绍 # 个人职业 # 与 Rust 结缘 # 前 GPT 时代作品 个人信息 结算及大数据系统研发工程师 疫情下的明智选择 Rust , Rust 中国 大会也才第三届,期待 Rust 中国大会第十届 Rust 处于起步阶段 中文圈学习资料或书籍少,有部分是翻译国外产品,能 不能中国人向国外输出作品 Rust 缺少学习资源 Rust 未来大有可为 Rust 在操作系统,数据库,各种框架和工具上应用范围 广 写作动机 当情况不明时,抱着一个纯粹的目标干事就行了,其他 的留给时间检验。不懂就学,技术写作更像一种共创, + 1; • V+E = 32 • 2E – F + 2 = 32 总结及学习资源 • 算法总结 • 学习资源 总结及学习资源 Rust 算法总结 • 复杂度分析及算法优化 • 别自己实现,用标准库 • 利用 Rust 特性实现高效算法 • 技术在进步,用新工具辅助学习 Rust 学习资源 # 社区/公众号 社区: Rust 语言中文社区、乐酷 Rust 技术论坛 公号:觉学社、0 码力 | 28 页 | 3.52 MB | 1 年前3
 Rust HTTP 协议栈在终端通信场景的实践 - 胡凯Shanghai, China Rust 与 HTTP 协议 以上 Rust HTTP 库主要支持的场景特点: ➢ 并发量、吞吐量需求较高 ➢ 网络环境稳定 ➢ 不太需要体现交互界面 ➢ 不太关注资源使用 比较适合构建浏览器、大型 WEB 服务器等。 终端 HTTP 通信场景浅析 Part 03 探讨终端场景下 HTTP 协议的主要使用场景,以及需要思考的问题 Rust China Conf 2022 – 2023, Shanghai, China 终端 HTTP 协议场景浅析 在终端上大多数使用 HTTP 协议的应用,主要是运用 HTTP 客户端的能力,向指定网址发起请求 来获取服务器上的资源。 例如使用浏览器 APP 访问网页,使用视频 APP 观看视频和直播,电商 APP 浏览商品页面等。 Rust China Conf 2022 – 2023, Shanghai, China ➢ 弱网环境:移动端网络整体处于弱网环境,网络时延较高。 ➢ 网络不稳定:移动端网络经常受到用户或者环境影响而产生波动。 ➢ 流量限制:移动端网络流量受到用户的限制。 ➢ 设备资源有限:移动端设备CPU、内存等资源较少。 Rust China Conf 2022 – 2023, Shanghai, China 终端 HTTP 协议场景浅析 从用户使用的角度出发: ➢ 下载进度:对于一些0 码力 | 26 页 | 1.25 MB | 1 年前3 Rust HTTP 协议栈在终端通信场景的实践 - 胡凯Shanghai, China Rust 与 HTTP 协议 以上 Rust HTTP 库主要支持的场景特点: ➢ 并发量、吞吐量需求较高 ➢ 网络环境稳定 ➢ 不太需要体现交互界面 ➢ 不太关注资源使用 比较适合构建浏览器、大型 WEB 服务器等。 终端 HTTP 通信场景浅析 Part 03 探讨终端场景下 HTTP 协议的主要使用场景,以及需要思考的问题 Rust China Conf 2022 – 2023, Shanghai, China 终端 HTTP 协议场景浅析 在终端上大多数使用 HTTP 协议的应用,主要是运用 HTTP 客户端的能力,向指定网址发起请求 来获取服务器上的资源。 例如使用浏览器 APP 访问网页,使用视频 APP 观看视频和直播,电商 APP 浏览商品页面等。 Rust China Conf 2022 – 2023, Shanghai, China ➢ 弱网环境:移动端网络整体处于弱网环境,网络时延较高。 ➢ 网络不稳定:移动端网络经常受到用户或者环境影响而产生波动。 ➢ 流量限制:移动端网络流量受到用户的限制。 ➢ 设备资源有限:移动端设备CPU、内存等资源较少。 Rust China Conf 2022 – 2023, Shanghai, China 终端 HTTP 协议场景浅析 从用户使用的角度出发: ➢ 下载进度:对于一些0 码力 | 26 页 | 1.25 MB | 1 年前3
共 24 条
- 1
- 2
- 3













