Rust 语言学习笔记....................................................................................... 31 3.1.1 绑定 ................................................................................. 31 3.1.2 作用域 . use 关键字。 1.2.1 module 的可见性 为了让外部能使用模块中 item,需要使用 pub 关键字。外部引用的时候, 使用 use 关键字。 规则很简单,一个 item(函数,绑定,Trait 等),前面加了 pub,那么就它 变成对外可见(访问,调用)的了。 1.2.2 引用外部文件模块 通常,我们会在单独的文件中写模块内容,然后使用 mod 关键字来加载那个 文件作为我们的模块。 基本语法 2.1 前置知识 2.1.1 表达式和语句 其它语言中: 表达式是用来表达某含义的。可以包括定义某值,或判断某物,最终会有一个 “值”的体现,“Anything that has a value"。 比如说 var a=b 就是表达式,是把 b 的值赋给 a,或者 if (a == b)其中 if() 内的也是表达式。 而表达式语句就是程序识别的一条执行表达式的语句。0 码力 | 117 页 | 2.24 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 18.2. 顾及不同类型值的 trait 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . } 这几行定义了一个名叫 main 的函数。main 函数是一个特殊的函数:在可执行的 Rust 程序中, 它总是最先运行的代码。第一行代码声明了一个叫做 main 的函数,它没有参数也没有返回值。 如果有参数的话,它们的名称应该出现在小括号 () 中。 函数体被包裹在 {} 中。Rust 要求所有函数体都要用花括号包裹起来。一般来说,将左花括号 与函数声明置于同一行并以空格分隔,是良好的代码风格。 在这个文件增加更多的信息,还将增加其他 section。 接下来的三行设置了 Cargo 编译程序所需的配置:项目的名称、项目的版本以及要使用的 Rust 版本。附录 E 会介绍 edition 的值。 最后一行,[dependencies],是罗列项目依赖的 section 的开始。在 Rust 中,代码包被称为 crates。这个项目并不需要其他的 crate,不过在第二章的第一个项目会用到依赖,那时会用0 码力 | 562 页 | 3.23 MB | 1 月前3
Rust 程序设计语言简体中文版.................................................................................. 436 17.2. 顾及不同类型值的 trait 对象 ..................................................................................... 440 这几行定义了一个名叫 main 的函数。main 函数是一个特殊的函数:在可执行的 Rust 程序 中,它总是最先运行的代码。第一行代码声明了一个叫做 main 的函数,它没有参数也没有返 回值。如果有参数的话,它们的名称应该出现在小括号 () 中。 函数体被包裹在 {} 中。Rust 要求所有函数体都要用花括号包裹起来。一般来说,将左花括 号与函数声明置于同一行并以空格分隔,是良好的代码风格。 们在这个文件增加更多的信息,还将增加其他片段(section)。 接下来的三行设置了 Cargo 编译程序所需的配置:项目的名称、项目的版本以及要使用的 Rust 版本。附录 E 会介绍 edition 的值。 最后一行,[dependencies] ,是罗列项目依赖的片段的开始。在 Rust 中,代码包被称为 crates。这个项目并不需要其他的 crate,不过在第二章的第一个项目会用到依赖,那时会用0 码力 | 600 页 | 12.99 MB | 1 年前3
Comprehensive Rust(简体中文) 2024125 类型和值 25 5.1 Hello, World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.2 变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.3 值 . . . . . . . . . . . . . . . . . . . . . . 115 VI 第三天:下午 119 21 Welcome Back 120 22 借用 121 22.1 借用值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 22.2 借用检查 . . . exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 45 与 C++ 的互操作性 233 45.1 绑定示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 45.2 CXX 错误处理 .0 码力 | 359 页 | 1.33 MB | 11 月前3
Hello 算法 1.2.0 简体中文 Rust 版ace complexity)。 ‧“随着输入数据大小的增加”意味着复杂度反映了算法运行效率与输入数据体量之间的关系。 ‧“时间和空间的增长趋势”表示复杂度分析关注的不是运行时间或占用空间的具体值,而是时间或空间 增长的“快慢”。 复杂度分析克服了实际测试方法的弊端,体现在以下几个方面。 第 2 章 复杂度分析 www.hello‑algo.com 19 ‧ 它无需实际运行代码,更加绿色节能。 根据以上方法,可以得到算法的运行时间为 (6? + 12) ns : 1 + 1 + 10 + (1 + 5) × ? = 6? + 12 但实际上,统计算法的运行时间既不合理也不现实。首先,我们不希望将预估时间和运行平台绑定,因为算 法需要在各种不同的平台上运行。其次,我们很难获知每种操作的运行时间,这给预估过程带来了极大的难 度。 2.3.1 统计时间增长趋势 时间复杂度分析统计的不是算法运行时间,而是算法运行时间随着数据量变大时的增长趋势。 第二步:判断渐近上界 时间复杂度由 ?(?) 中最高阶的项来决定。这是因为在 ? 趋于无穷大时,最高阶的项将发挥主导作用,其他 项的影响都可以忽略。 表 2‑2 展示了一些例子,其中一些夸张的值是为了强调“系数无法撼动阶数”这一结论。当 ? 趋于无穷大时, 这些常数变得无足轻重。 表 2‑2 不同操作数量对应的时间复杂度 操作数量 ?(?) 时间复杂度 ?(?(?)) 1000000 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.1.0 Rust版ace complexity)。 ‧“随着输入数据大小的增加”意味着复杂度反映了算法运行效率与输入数据体量之间的关系。 ‧“时间和空间的增长趋势”表示复杂度分析关注的不是运行时间或占用空间的具体值,而是时间或空间 增长的“快慢”。 复杂度分析克服了实际测试方法的弊端,体现在以下两个方面。 ‧ 它独立于测试环境,分析结果适用于所有运行平台。 第 2 章 复杂度分析 hello‑algo.com 根据以上方法,可以得到算法的运行时间为 (6? + 12) ns : 1 + 1 + 10 + (1 + 5) × ? = 6? + 12 但实际上,统计算法的运行时间既不合理也不现实。首先,我们不希望将预估时间和运行平台绑定,因为算 法需要在各种不同的平台上运行。其次,我们很难获知每种操作的运行时间,这给预估过程带来了极大的难 度。 2.3.1 统计时间增长趋势 时间复杂度分析统计的不是算法运行时间,而是算法运行时间随着数据量变大时的增长趋势。 第二步:判断渐近上界 时间复杂度由 ?(?) 中最高阶的项来决定。这是因为在 ? 趋于无穷大时,最高阶的项将发挥主导作用,其他 项的影响都可以忽略。 表 2‑2 展示了一些例子,其中一些夸张的值是为了强调“系数无法撼动阶数”这一结论。当 ? 趋于无穷大时, 这些常数变得无足轻重。 表 2‑2 不同操作数量对应的时间复杂度 操作数量 ?(?) 时间复杂度 ?(?(?)) 1000000 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.0.0 Rust版space complexity」。 ‧“随着输入数据大小的增加”意味着复杂度反映了算法运行效率与输入数据体量之间的关系。 ‧“时间和空间的增长趋势”表示复杂度分析关注的不是运行时间或占用空间的具体值,而是时间或空间 增长的“快慢”。 复杂度分析克服了实际测试方法的弊端,体现在以下两个方面。 ‧ 它独立于测试环境,分析结果适用于所有运行平台。 第 2 章 复杂度分析 hello‑algo.com 根据以上方法,可以得到算法的运行时间为 (6? + 12) ns : 1 + 1 + 10 + (1 + 5) × ? = 6? + 12 但实际上,统计算法的运行时间既不合理也不现实。首先,我们不希望将预估时间和运行平台绑定,因为算 法需要在各种不同的平台上运行。其次,我们很难获知每种操作的运行时间,这给预估过程带来了极大的难 度。 2.3.1 统计时间增长趋势 时间复杂度分析统计的不是算法运行时间,而是算法运行时间随着数据量变大时的增长趋势。 第二步:判断渐近上界 时间复杂度由 ?(?) 中最高阶的项来决定。这是因为在 ? 趋于无穷大时,最高阶的项将发挥主导作用,其他 项的影响都可以忽略。 表 2‑2 展示了一些例子,其中一些夸张的值是为了强调“系数无法撼动阶数”这一结论。当 ? 趋于无穷大时, 这些常数变得无足轻重。 表 2‑2 不同操作数量对应的时间复杂度 操作数量 ?(?) 时间复杂度 ?(?(?)) 1000000 码力 | 383 页 | 17.61 MB | 1 年前3
Rust 异步并发框架在移动端的应用 - 陈明煜Core Thread Thread Worker Worker task task Local queue Local queue Tokio 采用了如右图这种 GMP 模式: • 一核可以绑定多线程,每个线程拥有一个 Worker ,每个 Worker 拥有一个任务队列 • 但线程拥有相同优先级 • Worker 只持有一个本地 FIFO 队列 移动端诉求:优先级 • 任务区分优先级: 注 册 事 件 任务优先级调度 Task priority and quality of service 任务优先级调度 Linux CFS 调度 : 线程优先级 • 设置线程的 Nice 值给予线程不同的权重 2 个线程 A 和 B 。 A 的权重是 1024 , B 的权重是 2048 。那么 A 获得 CPU 的时间比例是 1024/ (1024 + 2048) = 33.3%0 码力 | 25 页 | 1.64 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 Rust 版) ;而如果給定的資料是 固定位數的整數(例如學號),那麼我們就可以用效率更高的“基數排序”來做,將時間複雜度降為 ?(??) ,其中 ? 為位數。當資料體量很大時,節省出來的執行時間就能創造較大價值(成本降低、體 驗變好等)。 在工程領域中,大量問題是難以達到最優解的,許多問題只是被“差不多”地解決了。問題的難易程度一方 面取決於問題本身的性質,另一方面也取決於觀測問題的人的知識儲備。人的知識越完備、經驗越多,分析 ce complexity)。 ‧“隨著輸入資料大小的增加”意味著複雜度反映了演算法執行效率與輸入資料體量之間的關係。 ‧“時間和空間的增長趨勢”表示複雜度分析關注的不是執行時間或佔用空間的具體值,而是時間或空間 增長的“快慢”。 複雜度分析克服了實際測試方法的弊端,體現在以下幾個方面。 第 2 章 複雜度分析 www.hello‑algo.com 19 ‧ 它無需實際執行程式碼,更加綠色節能。 第二步:判斷漸近上界 時間複雜度由 ?(?) 中最高階的項來決定。這是因為在 ? 趨於無窮大時,最高階的項將發揮主導作用,其他 項的影響都可以忽略。 表 2‑2 展示了一些例子,其中一些誇張的值是為了強調“係數無法撼動階數”這一結論。當 ? 趨於無窮大時, 這些常數變得無足輕重。 表 2‑2 不同操作數量對應的時間複雜度 操作數量 ?(?) 時間複雜度 ?(?(?)) 1000000 码力 | 388 页 | 18.82 MB | 10 月前3
Rust在物理引擎研发中的应用 崔汉青不考虑版本兼容性 • 不带字段描述信息 • 仅支持primitives, Vec, 以及它们的组合嵌套 • 分布式物理引擎的计算和IO都很重要 • 计算线程和IO线程分离,各自绑定CPU核心 Motphys 特化网络层 自定义 pure rust message 自定义编解码协议 自动 ack 和可测量 RTT 的通信框架 一切为低延迟服务 分布式物理,突破单机算力的瓶颈 0 码力 | 22 页 | 1.18 MB | 1 年前3
共 20 条
- 1
- 2













