Hello 算法 1.0.0 Rust版、hpstory、justin‑tse、krahets、night‑cruise、 nuomi1 和 Reanon 完成(按照首字母顺序排列)。感谢他们付出的时间与精力,正是他们确保了各语言代 码的规范与统一。 在本书的创作过程中,我得到了许多人的帮助。 ‧ 感谢我在公司的导师李汐博士,在一次畅谈中你鼓励我“快行动起来”,坚定了我写这本书的决心; ‧ 感谢我的女朋友泡泡作为本书的首位读者 3.4.1 ASCII 字符集 「ASCII 码」是最早出现的字符集,其全称为 American Standard Code for Information Interchange(美 国标准信息交换代码)。它使用 7 位二进制数(一个字节的低 7 位)表示一个字符,最多能够表示 128 个不 同的字符。如图 3‑6 所示,ASCII 码包括英文字母的大小写、数字 0 ~ 9、一些标点符号,以及一些控制字符 (如换行符和制表符)。 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的「EASCII」字符 集。它在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。0 码力 | 383 页 | 17.61 MB | 1 年前3
Hello 算法 1.1.0 Rust版展示了原码、反码和补码之间的转换方法。 图 3‑4 原码、反码与补码之间的相互转换 原码(sign‑magnitude)虽然最直观,但存在一些局限性。一方面,负数的原码不能直接用于运算。例如在原 码下计算 1 + (−2) ,得到的结果是 −3 ,这显然是不对的。 1 + (−2) → 0000 0001 + 1000 0010 = 1000 0011 → −3 为了解决此问题,计算机引入了反码(1’s 二进制数到字符的转换。 3.4.1 ASCII 字符集 ASCII 码是最早出现的字符集,其全称为 American Standard Code for Information Interchange(美国 标准信息交换代码)。它使用 7 位二进制数(一个字节的低 7 位)表示一个字符,最多能够表示 128 个不同的 字符。如图 3‑6 所示,ASCII 码包括英文字母的大小写、数字 0 ~ 9、一些标点符号,以及一些控制字符(如 换行符和制表符)。 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的 EASCII 字符集。它 在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。0 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版展示了原码、反码和补码之间的转换方法。 图 3‑4 原码、反码与补码之间的相互转换 原码(sign‑magnitude)虽然最直观,但存在一些局限性。一方面,负数的原码不能直接用于运算。例如在原 码下计算 1 + (−2) ,得到的结果是 −3 ,这显然是不对的。 1 + (−2) → 0000 0001 + 1000 0010 = 1000 0011 → −3 为了解决此问题,计算机引入了反码(1’s 二进制数到字符的转换。 3.4.1 ASCII 字符集 ASCII 码是最早出现的字符集,其全称为 American Standard Code for Information Interchange(美国 标准信息交换代码)。它使用 7 位二进制数(一个字节的低 7 位)表示一个字符,最多能够表示 128 个不同的 字符。如图 3‑6 所示,ASCII 码包括英文字母的大小写、数字 0 ~ 9、一些标点符号,以及一些控制字符(如 换行符和制表符)。 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的 EASCII 字符集。它 在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。0 码力 | 387 页 | 18.51 MB | 10 月前3
Rust算法教程 The Algos (algorithms)机算法就是将输⼊转化为所要求的输出过程。 既然只要调⽤别⼈的算法库即可完成任务,我们为什么要学习算法呢?原因很简单:⾯试需要。哈 哈,开个玩笑,当然⾯试很重要,但是提升⾃⼰的能⼒也很重要,学习算法往往能提升我们对于代 码的深层次理解和认识,你会知道为何要优化代码,该如何优化代码,甚⾄在真的需要你⼿撸算法 时,⼼中也有⼀个明确的思路:我该选择哪个算法,⽽不是⼀⽚茫然,只知道⽤遍历的⽅式来完成 任务。 所以现在开始我们的算法之旅吧, 184/270 2024/3/7 20:44 Rust算法教程 The Algos (algorithms) https://algo.course.rs/print.html 185/270 摩斯码 use std::collections::HashMap; use std::io; const UNKNOWN_CHARACTER: &str = "........"; const _UN 整型数组、字符型数组、浮点型数组、 指针数组和结构数组等。数组还可以有⼀维、⼆维以及多维等表现形式。 2. 栈( Stack) 栈是⼀种特殊的线性表,它只能在⼀个表的⼀个固定端进⾏数据结点的插⼊和删 除操作。栈按照后进先出的原则来存储数据,也就是说,先插⼊的数据将被压⼊栈底,最后 插⼊的数据在栈顶,读出数据时,从栈顶开始逐个读出。栈在汇编语⾔程序中,经常⽤于重 要数据的现场保护。栈中没有数据时,称为空栈。0 码力 | 270 页 | 8.46 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0Cargo 是 Rust 的构建系统和包管理器。大多数 Rustacean 们使用 Cargo 来管理他们的 Rust 项目,因为它可以为你处理很多任务,比如构建代码、下载依赖库并编译这些库。(我们把代 码所需要的库叫做 依赖(dependencies))。 最简单的 Rust 程序,比如我们刚刚编写的,没有任何依赖。如果使用 Cargo 来构建 “Hello, world!” 项目,将只会用到 Cargo 你应该能得到不同的随机数,同时它们应该都是在 1 和 100 之间的。干得漂亮! 比较猜测的数字和秘密数字 现在有了用户输入和一个随机数,我们可以比较它们。这个步骤如示例 2-4 所示。注意这段代 码还不能通过编译,我们稍后会解释。 文件名:src/main.rs use std::cmp::Ordering; use std::io; use rand::Rng; fn main() { 味着你的代码更易于推导。 不过可变性也是非常有用的,可以用来更方便地编写代码。尽管变量默认是不可变的,你仍然 可以在变量名前添加 mut 来使其可变,正如在第二章所做的那样。mut 也向读者表明了其他代 码将会改变这个变量值的意图。 例如,让我们将 src/main.rs 修改为如下代码: 文件名:src/main.rs fn main() { let mut x = 5; println0 码力 | 562 页 | 3.23 MB | 1 月前3
Rust 程序设计语言简体中文版下编译器将显示的错误信 息。请知悉,如果你输入并运行一个随机示例,它可能无法编译!确保你阅读了示例周围的文 本,以判断你尝试运行的示例是否意在出错。Ferris 也将帮助你区分那些不是意在工作的代 码: Ferris 含义 这段代码无法通过编译! 9/600 Rust 程序设计语言 简体中文版 这段代码会 Panic! 这段代码的运行结果不符合预期。 在大部分情况,我们会指导你将无法通过编译的代码修改为正确版本。 Cargo 是 Rust 的构建系统和包管理器。大多数 Rustacean 们使用 Cargo 来管理他们的 Rust 项目,因为它可以为你处理很多任务,比如构建代码、下载依赖库并编译这些库。(我们把代 码所需要的库叫做 依赖(dependencies))。 最简单的 Rust 程序,比如我们刚刚编写的,没有任何依赖。如果使用 Cargo 来构建 “Hello, world!” 项目,将只会用到 Cargo 你应该能得到不同的随机数,同时它们应该都是在 1 和 100 之间的。干得漂亮! 比较猜测的数字和秘密数字 现在有了用户输入和一个随机数,我们可以比较它们。这个步骤如示例 2-4 所示。注意这段代 码还不能通过编译,我们稍后会解释。 文件名:src/main.rs use rand::Rng; use std::cmp::Ordering; use std::io; fn main() {0 码力 | 600 页 | 12.99 MB | 1 年前3
简谈 Rust 与国密 TLS - 王江桐Cryptography Rust China Conf 2022 – 2023, Shanghai, China • 商用密码是中华人民共和国政府用于非国家机密信息保护所采用的一系列密码技术和密 码产品的总称,其相关技术部分为国家秘密。商用密码的研发及使用由国家密码管理局 统一管理。 • 根据国家密码管理局2007年4月23日公布的《商用密码产品使用管理规定》和《境外组 织和个人在华使用密码产品管理办法》: TLCP、区块链等场景,用于签名 验签等 Sm3 GM/T 0004-2012 ISO/IEC 10118-3:2018 计算密码杂凑 哈希 256 SHA256 是 TLCP、数字签名及验证、消息认 证码生成及验证、随机数生成、 密钥扩充 Sm4 GM/T 0002-2012 ISO/IEC WD1 18033- 3/AMD2 分组加解密 分组加 密 128 AES128,但 是更多次轮询 256 位,其中使用了异或、模、模加、移位、与、或、非运算,由填充、迭代过程、消息扩展和压缩 函数所构成。 • 保证信息的完整性。 • 在商用密码体系中,SM3 主要用于数字签名及验证、消息认证码生成及验证、随机数生成、密钥 扩充等。据国家密码管理局表示,其安全性及效率要高于 MD5 算法和 SHA-1 算法,与 SHA- 256 相当。 • SM3 将对长度为l(l < 2^64) 比特的消息0 码力 | 44 页 | 3.70 MB | 1 年前3
Comprehensive Rust(简体中文) 202412target(s) in 0.75s Running `target/debug/exercise` Hello, world! 4. 将 src/main.rs 中 的 样 板 代 码 替 换 为 自 己 的 代 码。例 如,使 用 上 一 页 中 的 示 例,将 src/main.rs 改为: fn main() { println!("Edit me!"); } 5. 使用 cargo takes_u32(y); } 这张幻灯片演示了 Rust 编译器是如何根据变量声明和用法来推导其类型的。 需要重点强调的是这样声明的变量并非像那种动态类型语言中可以持有任何数据的“任何类型”。这种声 明所生成的机器码与明确类型声明完全相同。编译器进行类型推导能够让我们编写更简略的代码。 当整数字面量的类型不受限制时,Rust 默认为 i32。这在错误消息中有时显示为{integer}。同样,浮 点字面量默认为 f64。 } • 指出这与 C++ 中的默认值相反。除非你使用 std::move(并已定义 move 构造函数!),否则 C+ + 中的默认值是按值复制的。 • 只有所有权发生了转移。是否会生成任何机器码来操控数据本身是一个优化方面的问题,系统会主 动优化此类副本。 102 • 简单的值(例如整数)可以标记为“Copy” (请看后续幻灯片)。 • 在 Rust 中,克隆是显式的(通过使用 clone)。0 码力 | 359 页 | 1.33 MB | 11 月前3
王宜国 - 基于 Rust 编程语⾔构建 Amphitheatre CLI Desktop Server 的全平台实践经验开发⼯程师需要在本机安装各种编程语⾔的运⾏时和相关的框 架以及库,随着业务规模的增⻓,多语⾔多版本的维护和管理 变得越来越复杂。 技术栈杂多 研发流程⻓达⼗⼏个步骤:安装开发软件、配置环境、克隆代 码、开发、本地调试、提交代码、编译构建、⾃动化测试、部 署到测试环境、测试验收、合并代码到主线、部署到⽣产环 境… 研发流程繁⻓ 起因:开发者之痛 为了部署测试,不仅要学习容器化、Kubernetes,还要申请资 environments in the cloud and start developing within seconds. Make Development Faster Thank you! 扫右侧⼆维码图案 加我为好友0 码力 | 34 页 | 10.81 MB | 1 年前3
使用Rust与ClickHouse构建高效可靠的日志系统使用Rust与ClickHouse构建高 效可靠的日志系统 刘炜 腾讯云(专有云) • 自我介绍 • 系统介绍 • 整体架构 • 系统实现 • 遇到问题 大纲 自我介绍 • 大龄码农 • 做过嵌入式/CDN/数据库开发 • 从C/C++到Rust • 现在在腾讯云(专有云)从事日志系统的开发 自我介绍 PhoTto / image / chart 系统介绍 系统介绍0 码力 | 19 页 | 2.66 MB | 1 年前3
共 14 条
- 1
- 2













