王宜国 - 基于 Rust 编程语⾔构建 Amphitheatre CLI Desktop Server 的全平台实践经验
Amphitheatre 云开发环境(Cloud Development Environment),在云端即时启动新 的、⾃动化的开发环境,并在⼏秒钟内开始开发。就像 docker-compose up 或 docker build && kubectl apply 项⽬介绍 开发 从代码库克隆代码到本地 硬盘,打开 VS Code 编 辑器进⾏编码 AMP 在 Amphitheatre 中创建0 码力 | 34 页 | 10.81 MB | 1 年前3Hello 算法 1.1.0 Rust版
响算法程序的整体性能。 4.4.1 计算机存储设备 计算机中包括三种类型的存储设备:硬盘(hard disk)、内存(random‑access memory, RAM)、缓存(cache memory)。表 4‑2 展示了它们在计算机系统中的不同角色和性能特点。 表 4‑2 计算机的存储设备 硬盘 内存 缓存 用途 长期存储数据,包括操作系统、 程序、文件等 临时存储当前运行的程序和正 量越小、成本越高。这种多层级的设计并非偶然,而是计算机科学家和工程师们经过深思熟虑的结果。 第 4 章 数组与链表 hello‑algo.com 85 ‧ 硬盘难以被内存取代。首先,内存中的数据在断电后会丢失,因此它不适合长期存储数据;其次,内存 的成本是硬盘的几十倍,这使得它难以在消费者市场普及。 ‧ 缓存的大容量和高速度难以兼得。随着 L1、L2、L3 缓存的容量逐步增大,其物理尺寸会变大,与 CPU 普遍存在于 所有工业领域,它要求我们在不同的优势和限制之间找到最佳平衡点。 总的来说,硬盘用于长期存储大量数据,内存用于临时存储程序运行中正在处理的数据,而缓存则用于存储 经常访问的数据和指令,以提高程序运行效率。三者共同协作,确保计算机系统高效运行。 如图 4‑10 所示,在程序运行时,数据会从硬盘中被读取到内存中,供 CPU 计算使用。缓存可以看作 CPU 的 一部分,它通过智能地从内存加载数据,给0 码力 | 388 页 | 18.50 MB | 1 年前3Hello 算法 1.2.0 简体中文 Rust 版
响算法程序的整体性能。 4.4.1 计算机存储设备 计算机中包括三种类型的存储设备:硬盘(hard disk)、内存(random‑access memory, RAM)、缓存(cache memory)。表 4‑2 展示了它们在计算机系统中的不同角色和性能特点。 表 4‑2 计算机的存储设备 硬盘 内存 缓存 用途 长期存储数据,包括操作系统、 程序、文件等 临时存储当前运行的程序和正 量越小、成本越高。这种多层级的设计并非偶然,而是计算机科学家和工程师们经过深思熟虑的结果。 第 4 章 数组与链表 www.hello‑algo.com 85 ‧ 硬盘难以被内存取代。首先,内存中的数据在断电后会丢失,因此它不适合长期存储数据;其次,内存 的成本是硬盘的几十倍,这使得它难以在消费者市场普及。 ‧ 缓存的大容量和高速度难以兼得。随着 L1、L2、L3 缓存的容量逐步增大,其物理尺寸会变大,与 CPU 普遍存在于 所有工业领域,它要求我们在不同的优势和限制之间找到最佳平衡点。 总的来说,硬盘用于长期存储大量数据,内存用于临时存储程序运行中正在处理的数据,而缓存则用于存储 经常访问的数据和指令,以提高程序运行效率。三者共同协作,确保计算机系统高效运行。 如图 4‑10 所示,在程序运行时,数据会从硬盘中被读取到内存中,供 CPU 计算使用。缓存可以看作 CPU 的 一部分,它通过智能地从内存加载数据,给0 码力 | 387 页 | 18.51 MB | 10 月前3Hello 算法 1.0.0 Rust版
法程序的整体性能。 4.4.1 计算机存储设备 计算机中包括三种类型的存储设备:「硬盘 hard disk」、「内存 random‑access memory, RAM」、「缓存 cache memory」。表 4‑2 展示了它们在计算机系统中的不同角色和性能特点。 表 4‑2 计算机的存储设备 硬盘 内存 缓存 用途 长期存储数据,包括操作系统、 程序、文件等 临时存储当前运行的程序和正 所示的金字塔结构。越靠近金字塔顶端的存储设备的速度越快、容 量越小、成本越高。这种多层级的设计并非偶然,而是计算机科学家和工程师们经过深思熟虑的结果。 ‧ 硬盘难以被内存取代。首先,内存中的数据在断电后会丢失,因此它不适合长期存储数据;其次,内存 的成本是硬盘的几十倍,这使得它难以在消费者市场普及。 ‧ 缓存的大容量和高速度难以兼得。随着 L1、L2、L3 缓存的容量逐步增大,其物理尺寸会变大,与 CPU 普遍 存在于所有工业领域,它要求我们在不同的优势和限制之间找到最佳平衡点。 总的来说,硬盘用于长期存储大量数据,内存用于临时存储程序运行中正在处理的数据,而缓存则用于存储 经常访问的数据和指令,以提高程序运行效率。三者共同协作,确保计算机系统高效运行。 如图 4‑10 所示,在程序运行时,数据会从硬盘中被读取到内存中,供 CPU 计算使用。缓存可以看作 CPU 的 一部分,它通过智能地从内存加载数据,给0 码力 | 383 页 | 17.61 MB | 1 年前3Rust 程序设计语言 简体中文版 1.85.0
程序,比如我们刚刚编写的,没有任何依赖。如果使用 Cargo 来构建 “Hello, world!” 项目,将只会用到 Cargo 构建代码的那部分功能。在编写更复杂的 Rust 程序时,你 将添加依赖项,如果使用 Cargo 启动项目,则添加依赖项将更加容易。 由于绝大多数 Rust 项目使用 Cargo,本书接下来的部分假设你也使用 Cargo。如果使用 “安 装” 部分介绍的官方安装包的话,则自带了 Cargo。如果通过其他方式安装的话,可以在终端 你可以更快的得到代码能否工作的反馈。因为测试是在同时运行的,你应该确保测试不能相互 依赖,或依赖任何共享的状态,包括依赖共享的环境,比如当前工作目录或者环境变量。 举个例子,每一个测试都运行一些代码,假设这些代码都在硬盘上创建一个 test-output.txt 文 件并写入一些数据。接着每一个测试都读取文件中的数据并断言这个文件包含特定的值,而这 个值在每个测试中都是不同的。因为所有测试都是同时运行的,一个测试可能会在另一个测试 释放锁之后,我们可以打印出互斥器内部的 i32 值,并发现我们刚刚已经将其值改为 6。 在多个线程间共享 Mutex现在让我们尝试使用 Mutex 在多个线程间共享同一个值。我们将启动 10 个线程,并在各个 线程中对同一个计数器值加 1,这样计数器将从 0 累加到 10。示例 16-13 中的例子会出现编 译错误,而我们将通过这些错误来学习如何使用 Mutex ,以及 Rust 0 码力 | 562 页 | 3.23 MB | 9 天前3Rust 程序设计语言简体中文版
程序,比如我们刚刚编写的,没有任何依赖。如果使用 Cargo 来构建 “Hello, world!” 项目,将只会用到 Cargo 构建代码的那部分功能。在编写更复杂的 Rust 程序时,你 将添加依赖项,如果使用 Cargo 启动项目,则添加依赖项将更容易。 由于绝大多数 Rust 项目使用 Cargo,本书接下来的部分假设你也使用 Cargo。如果使用 “安 装” 部分介绍的官方安装包的话,则自带了 Cargo。如果通过其他方式安装的话,可以在终端 根和一个 src/lib.rs 库 crate 根,并且这两个 crate 默认以包名来命名。通常,这种包含二进制 crate 和库 crate 的模式的包,在二进制 crate 中只有足够的代码来启动一个可执行文件,可执行文件 调用库 crate 的代码。又因为库 crate 可以共享,这使得其它项目从包提供的大部分 功能中受益。 模块树应该定义在 src/lib.rs 中。这样通过以包名开头的路径,公有项就可以在二进制 你可以更快的得到代码能否工作的反馈。因为测试是在同时运行的,你应该确保测试不能相互 依赖,或依赖任何共享的状态,包括依赖共享的环境,比如当前工作目录或者环境变量。 举个例子,每一个测试都运行一些代码,假设这些代码都在硬盘上创建一个 test-output.txt 文 件并写入一些数据。接着每一个测试都读取文件中的数据并断言这个文件包含特定的值,而这 个值在每个测试中都是不同的。因为所有测试都是同时运行的,一个测试可能会在另一个测试0 码力 | 600 页 | 12.99 MB | 1 年前3Rust语言核心竞争力-庄晓立
……都有系统编程的身影 • 操作系统 • 虚拟机/容器 • 数据库 • 3D游戏引擎 • 网络服务器 • 浏览器引擎 • 编译器、解释器 • 三维建模/动画/渲染 数据中心 • CPU/GPU • 内存/硬盘 • 电力 • 网络流量 • 其他设备和人员维护费用 都是白花花的银子,“硬件很便宜”的说法不靠 谱 你能买最新硬件,对手也能,无助于提升竞争力 物联网 • 需要大批量部署,必须控制硬件成本 •0 码力 | 51 页 | 1.09 MB | 1 年前3基于 Rust 语言编写的可编程的全球分布式 MQTT 服务器 王文庭
更好的安全机制,Docker 之类的容器最让⼈诟病的问题之⼀就是安全性; • 更低的内存和资源消耗,Wasm 运⾏时所需的资源⽐ Docker 之类的容器要少很多; • 更快的冷启动时间,Wasm的冷启动时间为微秒,⽐ Docker 的秒级启动快不少; • 更⼩的运⾏时依赖,Docker整体包⼤⼩还是偏⼤,并且依赖的东⻄偏多,很难在⼀些资源 受限的设备上跑起来; Wasm vs Docker • Kubedge0 码力 | 31 页 | 3.95 MB | 1 年前3夏歌-使用Rust构建LLM应用
chat_id "0.1.0" 基于 ChatGPT 的 Telegram 机器人 当 Telegram 收到 规定好的 Slash 开头的 telegram command ,就预启动不同的 Prompt "0.1.0" 基于 ChatGPT 的 Telegram 机器人 当收到消息的时候,就按照预 设的 system_prompt 使用 GPT3.5 调用 OpenAI chat_id "0.1.0" 基于 ChatGPT 的 Telegram 机器人 当 Telegram 收到 规定好的 Slash 开头的 telegram command ,就启动不同的 Prompt "0.1.0" 基于 ChatGPT 的 Telegram 机器人 OCR 识别图片中的文 字, text_detection 是把识别 的图片转化为 base640 码力 | 36 页 | 38.31 MB | 1 年前3Comprehensive Rust(简体中文) 202412
0; loop { i += 1; println!("{i}"); if i > 100 { break; 30 } } } 6.3 break 和 continue 如果需要立即启动 下一次迭代,请使用 continue。 If you want to exit any kind of loop early, use break. For loop, this can take current thread to Binder's thread pool and start listening for connections. 34.1.5 部署 我们现在可以构建、推送和启动服务: m birthday_server adb push "$ANDROID_PRODUCT_OUT/system/bin/birthday_server" /data/local/tmp adb 不 同的输出。 建议您尽可能使用真实依赖项。例如,许多数据库都支持您配置内存后端。这意味着,您可以在测试 中获得正确的功能行为,而且测试速度会很快并会自动清理。 同样,许多 Web 框架都支持您启动进程内服务器,该服务器会绑定到 localhost 上的随机端口。 相比模拟框架,请始终优先选择这种方式,因为这有助于您在真实环境中测试代码。 203 • Mockall 不是 Rust Playground0 码力 | 359 页 | 1.33 MB | 10 月前3
共 13 条
- 1
- 2