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 编程语⾔构建 Amphitheatre CLI Desktop Server 的全平台实践经验可让您完全跳过镜像构建, 使⽤新代码更新正在运⾏的容器, 只需⼏秒钟⽽不是⼏分钟。 本地开发实时部署到远程集群 如何⼯作的? 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与算法 - 谢波……………… …………………………….. 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 语言编写的可编程的全球分布式 MQTT 服务器 王文庭• 它在浏览器以外也有很⼴泛的运⽤,特别是在边缘计算领域。 • ⽀持多语⾔开发,⽐如Go,Python, rust,Javascript等 什么是Webassembly? 1. 所需求运⾏资源⼩(~64Kb for code and ~10Kb RAM) 2. 异构设备兼容性强(x86, ARM, RISC-V, MIPS, Raspberry Pi, Orange Pi … ) Serverless 更好的安全机制,Docker 之类的容器最让⼈诟病的问题之⼀就是安全性; • 更低的内存和资源消耗,Wasm 运⾏时所需的资源⽐ Docker 之类的容器要少很多; • 更快的冷启动时间,Wasm的冷启动时间为微秒,⽐ Docker 的秒级启动快不少; • 更⼩的运⾏时依赖,Docker整体包⼤⼩还是偏⼤,并且依赖的东⻄偏多,很难在⼀些资源 受限的设备上跑起来; Wasm vs Docker • Kubedge0 码力 | 31 页 | 3.95 MB | 1 年前3
Hello 算法 1.1.0 Rust版器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具有较大的局限性,因此我们可以考 为渐近复杂度分析(asymptotic complexity analysis),简称复杂度分析。 复杂度分析能够体现算法运行所需的时间和空间资源与输入数据大小之间的关系。它描述了随着输入数据大 小的增加,算法执行所需时间和空间的增长趋势。这个定义有些拗口,我们可以将其分为三个重点来理解。 ‧“时间和空间资源”分别对应时间复杂度(time complexity)和空间复杂度(space complexity)。 ‧“随 。 2.5 小结 1. 重点回顾 算法效率评估 ‧ 时间效率和空间效率是衡量算法优劣的两个主要评价指标。 ‧ 我们可以通过实际测试来评估算法效率,但难以消除测试环境的影响,且会耗费大量计算资源。 ‧ 复杂度分析可以消除实际测试的弊端,分析结果适用于所有运行平台,并且能够揭示算法在不同数据 规模下的效率。 时间复杂度 ‧ 时间复杂度用于衡量算法运行时间随数据量增长的趋势,可以有效评估算法效率,但在某些情况下可0 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版试,统计 平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具有较大的局限性,因此我们可以考 为渐近复杂度分析(asymptotic complexity analysis),简称复杂度分析。 复杂度分析能够体现算法运行所需的时间和空间资源与输入数据大小之间的关系。它描述了随着输入数据大 小的增加,算法执行所需时间和空间的增长趋势。这个定义有些拗口,我们可以将其分为三个重点来理解。 ‧“时间和空间资源”分别对应时间复杂度(time complexity)和空间复杂度(space complexity)。 ‧“随 。 2.5 小结 1. 重点回顾 算法效率评估 ‧ 时间效率和空间效率是衡量算法优劣的两个主要评价指标。 ‧ 我们可以通过实际测试来评估算法效率,但难以消除测试环境的影响,且会耗费大量计算资源。 ‧ 复杂度分析可以消除实际测试的弊端,分析结果适用于所有运行平台,并且能够揭示算法在不同数据 规模下的效率。 时间复杂度 ‧ 时间复杂度用于衡量算法运行时间随数据量增长的趋势,可以有效评估算法效率,但在某些情况下可0 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.0.0 Rust版器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具有较大的局限性,因此我们可以考 asymptotic complexity analysis」,简称「复杂度分析」。 复杂度分析能够体现算法运行所需的时间和空间资源与输入数据大小之间的关系。它描述了随着输入数据大 小的增加,算法执行所需时间和空间的增长趋势。这个定义有些拗口,我们可以将其分为三个重点来理解。 ‧“时间和空间资源”分别对应「时间复杂度 time complexity」和「空间复杂度 space complexity」。 ‧ 49 2.5 小结 1. 重点回顾 算法效率评估 ‧ 时间效率和空间效率是衡量算法优劣的两个主要评价指标。 ‧ 我们可以通过实际测试来评估算法效率,但难以消除测试环境的影响,且会耗费大量计算资源。 ‧ 复杂度分析可以消除实际测试的弊端,分析结果适用于所有运行平台,并且能够揭示算法在不同数据 规模下的效率。 时间复杂度 ‧ 时间复杂度用于衡量算法运行时间随数据量增长的趋势,可以有效评估算法效率,但在某些情况下可0 码力 | 383 页 | 17.61 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 • 内存安全:在编译时可防止所有类内存 //third_party/rust/.../qr_code-.../src/lib.rs.) • 演示 outline 并前往 QrCode::with_bits 方法(大约第 164 行;大纲位于 vscode 中的文件 资源管理器窗格中;典型绑定:vim/CoC = space o) • 演示 type annotations(QrCode::with_bits 方法中提供了一些很好的示例) 值得注意的是,修改 BUILD0 码力 | 359 页 | 1.33 MB | 10 月前3
共 22 条
- 1
- 2
- 3













