王宜国 - 基于 Rust 编程语⾔构建 Amphitheatre CLI Desktop Server 的全平台实践经验第三届中国Rust开发者⼤会 基于 Rust 编程语⾔构建 Amphitheatre CLI / Desktop / Server 的全平台实践经验 王宜国 - 独⽴开源软件作者 RUST CHINA CONF 2023 • 项⽬背景介绍 • 产品功能演示 • 应⽤场景概览 项⽬介绍 • 概念 • 架构设计 • 技术实现 设计与实现 ⼤纲 Amphitheatre 云开发环境(Cloud 研发流程⻓达⼗⼏个步骤:安装开发软件、配置环境、克隆代 码、开发、本地调试、提交代码、编译构建、⾃动化测试、部 署到测试环境、测试验收、合并代码到主线、部署到⽣产环 境… 研发流程繁⻓ 起因:开发者之痛 为了部署测试,不仅要学习容器化、Kubernetes,还要申请资 源安装配置各项中间件,学习成本⾼,费⼼费⼒ 复杂的基础设施 Build Test Code Deploy Release Test Integrate Sona Riven Event Account Project Activity Tariq Share Redis ETCD 可让您完全跳过镜像构建, 使⽤新代码更新正在运⾏的容器, 只需⼏秒钟⽽不是⼏分钟。 本地开发实时部署到远程集群 如何⼯作的? Kubernetes 集群 更改 资源定义 ⻆⾊定义 执⾏资源 资源定义 资源定义 更改 ⽂件 更改0 码力 | 34 页 | 10.81 MB | 1 年前3
Comprehensive Rust(简体中文) 202412实现 Unsafe Trait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 30.7 安全 FFI 封装容器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 30.7.1 解答 . . . . . . . . . 为你展示常见的 Rust 习惯用法。 我们将前四天的课程称为“Rust 基础”。 在此基础上,你可以选择深入研究一个或多个专门的主题: • Android:为期半天的课程,介绍如何在 Android 平台开发中使用 Rust(AOSP)。课程内容包括 与 C、C++ 和 Java 的互操作性。 • Chromium:为期半天的课程,介绍如何在基于 Chromium 的浏览器中使用 Rust。课程内容包括 除了为期四天的“Rust 基础”课程外,还有一些专业课题提供: Android 中的 Rust 深入探究 Android 中的 Rust 课程为期半天,旨在介绍如何使用 Rust 进行 Android 平台开发。其中包 括与 C、C++ 和 Java 的互操作性。 你需要检出 AOSP。在同一机器上检出课程库,然后将 src/android/ 目录移至所检出的 AOSP 的根 目录。这将确保 Android0 码力 | 359 页 | 1.33 MB | 10 月前3
Hello 算法 1.1.0 Rust版‧“时间和空间的增长趋势”表示复杂度分析关注的不是运行时间或占用空间的具体值,而是时间或空间 增长的“快慢”。 复杂度分析克服了实际测试方法的弊端,体现在以下两个方面。 ‧ 它独立于测试环境,分析结果适用于所有运行平台。 第 2 章 复杂度分析 hello‑algo.com 19 ‧ 它可以体现不同数据量下的算法效率,尤其是在大数据量下的算法性能。 Tip 如果你仍对复杂度的概念感到困惑,无须担心,我们会在后续章节中详细介绍。 确定运行平台,包括硬件配置、编程语言、系统环境等,这些因素都会影响代码的运行效率。 2. 评估各种计算操作所需的运行时间,例如加法操作 + 需要 1 ns ,乘法操作 * 需要 10 ns ,打印操作 print() 需要 5 ns 等。 3. 统计代码中所有的计算操作,并将所有操作的执行时间求和,从而得到运行时间。 例如在以下代码中,输入数据大小为 ? : // 在某运行平台下 fn (6? + 12) ns : 1 + 1 + 10 + (1 + 5) × ? = 6? + 12 但实际上,统计算法的运行时间既不合理也不现实。首先,我们不希望将预估时间和运行平台绑定,因为算 法需要在各种不同的平台上运行。其次,我们很难获知每种操作的运行时间,这给预估过程带来了极大的难 度。 2.3.1 统计时间增长趋势 时间复杂度分析统计的不是算法运行时间,而是算法运行时间随着数据量变大时的增长趋势。0 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版复杂度分析克服了实际测试方法的弊端,体现在以下几个方面。 第 2 章 复杂度分析 www.hello‑algo.com 19 ‧ 它无需实际运行代码,更加绿色节能。 ‧ 它独立于测试环境,分析结果适用于所有运行平台。 ‧ 它可以体现不同数据量下的算法效率,尤其是在大数据量下的算法性能。 Tip 如果你仍对复杂度的概念感到困惑,无须担心,我们会在后续章节中详细介绍。 复杂度分析为我们提供了一把评估算法效 确定运行平台,包括硬件配置、编程语言、系统环境等,这些因素都会影响代码的运行效率。 2. 评估各种计算操作所需的运行时间,例如加法操作 + 需要 1 ns ,乘法操作 * 需要 10 ns ,打印操作 print() 需要 5 ns 等。 3. 统计代码中所有的计算操作,并将所有操作的执行时间求和,从而得到运行时间。 例如在以下代码中,输入数据大小为 ? : // 在某运行平台下 fn (6? + 12) ns : 1 + 1 + 10 + (1 + 5) × ? = 6? + 12 但实际上,统计算法的运行时间既不合理也不现实。首先,我们不希望将预估时间和运行平台绑定,因为算 法需要在各种不同的平台上运行。其次,我们很难获知每种操作的运行时间,这给预估过程带来了极大的难 度。 2.3.1 统计时间增长趋势 时间复杂度分析统计的不是算法运行时间,而是算法运行时间随着数据量变大时的增长趋势。0 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.0.0 Rust版‧“时间和空间的增长趋势”表示复杂度分析关注的不是运行时间或占用空间的具体值,而是时间或空间 增长的“快慢”。 复杂度分析克服了实际测试方法的弊端,体现在以下两个方面。 ‧ 它独立于测试环境,分析结果适用于所有运行平台。 第 2 章 复杂度分析 hello‑algo.com 19 ‧ 它可以体现不同数据量下的算法效率,尤其是在大数据量下的算法性能。 � 如果你仍对复杂度的概念感到困惑,无须担心,我们会在后续章节中详细介绍。 确定运行平台,包括硬件配置、编程语言、系统环境等,这些因素都会影响代码的运行效率。 2. 评估各种计算操作所需的运行时间,例如加法操作 + 需要 1 ns ,乘法操作 * 需要 10 ns ,打印操作 print() 需要 5 ns 等。 3. 统计代码中所有的计算操作,并将所有操作的执行时间求和,从而得到运行时间。 例如在以下代码中,输入数据大小为 ? : // 在某运行平台下 fn (6? + 12) ns : 1 + 1 + 10 + (1 + 5) × ? = 6? + 12 但实际上,统计算法的运行时间既不合理也不现实。首先,我们不希望将预估时间和运行平台绑定,因为算 法需要在各种不同的平台上运行。其次,我们很难获知每种操作的运行时间,这给预估过程带来了极大的难 度。 2.3.1 统计时间增长趋势 时间复杂度分析统计的不是算法运行时间,而是算法运行时间随着数据量变大时的增长趋势。0 码力 | 383 页 | 17.61 MB | 1 年前3
基于 Rust 语言编写的可编程的全球分布式 MQTT 服务器 王文庭设备,⽽不需要开 发⼈员为每个异构设备都编写或编译⼀套单独的代码或程序,从⽽提⾼开发效率; • 更好的安全机制,Docker 之类的容器最让⼈诟病的问题之⼀就是安全性; • 更低的内存和资源消耗,Wasm 运⾏时所需的资源⽐ Docker 之类的容器要少很多; • 更快的冷启动时间,Wasm的冷启动时间为微秒,⽐ Docker 的秒级启动快不少; • 更⼩的运⾏时依赖,Docke 受限的设备上跑起来; Wasm vs Docker • Kubedge? • OpenYurt? • Krustlet? wasm如何分发部署? 3. HPMQ函数开发说明 HPMQ平台 触发器 公共函数 (⽐如:tb2aws) 私有函数 配置 关联 关联 使⽤流程 编写函数 Hpmqfile OCI镜像 镜像仓库 hpmq-cli build hpmq-cli0 码力 | 31 页 | 3.95 MB | 1 年前3
Rust OS 开源操作系统训练营的教与学-0615-李明学习博客(85篇) • http://rcore-os.cn/blog/ • 重要成果 • 2022:陈林峰《rCore 的龙芯平台移植》 • 2022:唐洪雨《基于Rust语言的嵌入式实时操作系统RFreeRTOS的移植》 • 2022:朱懿《zCore 操作系统容器化的探索》 • 2022:米明恒《操作系统调试器VSCode插件系统架构设计与实现》 • 2023:周子琪/周毅《ArceOS在华山派CV1811H上的移植》0 码力 | 26 页 | 2.62 MB | 1 年前3
Rust 语言学习笔记属性有些类似与 spring boot 中的注解,但又有很大不同。首先 java 就是一门 平台无关性的语言。 属性只能用于修饰 rust 中的 item。 rust 中的 item 包括: 1. extern crate 声明 2. use 声明 3. 模块(模块是一个 Item 的容器) 4. 函数 5. type 定义 6. 结构体定义 7. 枚举类型定义 指明这个函数很可能是不会被执行的,因此优化的时候特别对待它。 5.1.2.3 应用于 FFI的属性 extern 块可以应用以下属性 link_args - 指定链接时给链接器的参数,平台和实现相关。 link - 说明这个块需要链接一个 native 库,它有以下参数: o name - 库的名字,比如 libname.a 的名字是 name; o kind - static - 静态库 framework - OS X 里的 Framework 5.1.2.4 条件编译 有时候,我们想针对不同的编译目标来生成不同的代码,比如在编写跨平台模块时, 针对 Linux 和 Windows 分别使用不同的代码逻辑。 条件编译基本上就是使用 cfg 这个属性,直接看例子 #[cfg(target_os = "macos")] fn0 码力 | 117 页 | 2.24 MB | 1 年前3
Rust语言核心竞争力-庄晓立重点项目&热门领域 • 大数据 • 云计算 • 物联网 • 航空航天 • 超级计算机 • 科学运算/机器学习 • 图形图像处理 • 虚拟现实 ……都有系统编程的身影 • 操作系统 • 虚拟机/容器 • 数据库 • 3D游戏引擎 • 网络服务器 • 浏览器引擎 • 编译器、解释器 • 三维建模/动画/渲染 数据中心 • CPU/GPU • 内存/硬盘 • 电力 • 网络流量 • 其他设备和人员维护费用 (路还很长) • 姗姗来迟的11, 小幅改进的14, 眼前的17, 未来的 2x… • 本文后面不再涉及现代C++,因为对其了解有限 系统编程小结 • 系统编程是软件行业的基石 • 很多基础性的、平台性的大中型项目…… • ……或隶属于系统编程,或依赖于系统编程 • 系统编程强调底层控制、运行性能和系统安全 • 当前主流的系统编程语言C/C++在内存安全方面有 重大欠缺 零运行时 Minimal0 码力 | 51 页 | 1.09 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0only show the file names =% main.exe main.pdb main.rs 这展示了扩展名为 .rs 的源文件、可执行文件(在 Windows 下是 main.exe,其它平台是 main),以及当使用 CMD 时会有一个包含调试信息、扩展名为 .pdb 的文件。从这里开始运行 main 或 main.exe 文件,如下: $ ./main # Windows 是 .\main 现在我们有了一个外部依赖,Cargo 从 registry 上获取所有包的最新版本信息,这是一份来自 Crates.io 的数据副本。Crates.io 是 Rust 生态系统中,人们发布其开源 Rust 项目的平台,供 他人使用。 在更新完 registry 后,Cargo 检查 [dependencies] section 并下载列表中包含但还未下载的 crate。本例中,虽然只声明了 rand 一个依赖,然而 package $ ls my-project Cargo.toml src $ ls my-project/src main.rs 运行了这条命令后,我们先用 ls (译者注:此命令为 Linux 平台的指令,Windows 下可用 dir)来看看 Cargo 给我们创建了什么,Cargo 会给我们的包创建一个 Cargo.toml 文件。查看 Cargo.toml 的内容,会发现并没有提到 src/main0 码力 | 562 页 | 3.23 MB | 1 月前3
共 35 条
- 1
- 2
- 3
- 4













