 王宜国 - 基于 Rust 编程语⾔构建 Amphitheatre CLI  Desktop  Server 的全平台实践经验研发流程⻓达⼗⼏个步骤:安装开发软件、配置环境、克隆代 码、开发、本地调试、提交代码、编译构建、⾃动化测试、部 署到测试环境、测试验收、合并代码到主线、部署到⽣产环 境… 研发流程繁⻓ 起因:开发者之痛 为了部署测试,不仅要学习容器化、Kubernetes,还要申请资 源安装配置各项中间件,学习成本⾼,费⼼费⼒ 复杂的基础设施 Build Test Code Deploy Release Test Integrate Sona Riven Event Account Project Activity Tariq Share Redis ETCD 可让您完全跳过镜像构建, 使⽤新代码更新正在运⾏的容器, 只需⼏秒钟⽽不是⼏分钟。 本地开发实时部署到远程集群 如何⼯作的? Kubernetes 集群 更改 资源定义 ⻆⾊定义 执⾏资源 资源定义 资源定义 更改 ⽂件 更改 Buildpacks work 分析 探测 恢复构建包可⽤于优化构建和导出阶段的⽂件。 查找⼀组有序的构建包以在构建阶段使⽤。 恢复 构建 从缓存中恢复图层。 将应⽤程序源代码转换为可以打包到容器中的可运⾏⼯件。 导出 创建最终的 OCI 图像。 Packages and Crates cli desktop common client apiserver controllers0 码力 | 34 页 | 10.81 MB | 1 年前3 王宜国 - 基于 Rust 编程语⾔构建 Amphitheatre CLI  Desktop  Server 的全平台实践经验研发流程⻓达⼗⼏个步骤:安装开发软件、配置环境、克隆代 码、开发、本地调试、提交代码、编译构建、⾃动化测试、部 署到测试环境、测试验收、合并代码到主线、部署到⽣产环 境… 研发流程繁⻓ 起因:开发者之痛 为了部署测试,不仅要学习容器化、Kubernetes,还要申请资 源安装配置各项中间件,学习成本⾼,费⼼费⼒ 复杂的基础设施 Build Test Code Deploy Release Test Integrate Sona Riven Event Account Project Activity Tariq Share Redis ETCD 可让您完全跳过镜像构建, 使⽤新代码更新正在运⾏的容器, 只需⼏秒钟⽽不是⼏分钟。 本地开发实时部署到远程集群 如何⼯作的? Kubernetes 集群 更改 资源定义 ⻆⾊定义 执⾏资源 资源定义 资源定义 更改 ⽂件 更改 Buildpacks work 分析 探测 恢复构建包可⽤于优化构建和导出阶段的⽂件。 查找⼀组有序的构建包以在构建阶段使⽤。 恢复 构建 从缓存中恢复图层。 将应⽤程序源代码转换为可以打包到容器中的可运⾏⼯件。 导出 创建最终的 OCI 图像。 Packages and Crates cli desktop common client apiserver controllers0 码力 | 34 页 | 10.81 MB | 1 年前3
 Comprehensive Rust(简体中文) 202412实现 Unsafe Trait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 30.7 安全 FFI 封装容器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 30.7.1 解答 . . . . . . . . . Point(i32, i32); fn main() { let p = Point(17, 23); println!("({}, {})", p.0, p.1); } 这通常用于单字段封装容器(称为 newtype): struct PoundsOfForce(f64); struct Newtons(f64); fn compute_thruster_force() -> PoundsOfForce str>”,后者可公开透明地授予其访问“str”方法的权限。 – Write and compare let s3 = s1.deref(); and let s3 = &*s1;. • “String”是作为字节矢量的封装容器实现的,矢量上支持的许多操作在“String”上也受支持,但有 一些额外保证。 • 比较将“String”编入索引的不同方式: – 使用“s3.chars().nth(i).unwrap()”转换为字符,其中“i”代表是否出界。0 码力 | 359 页 | 1.33 MB | 10 月前3 Comprehensive Rust(简体中文) 202412实现 Unsafe Trait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 30.7 安全 FFI 封装容器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 30.7.1 解答 . . . . . . . . . Point(i32, i32); fn main() { let p = Point(17, 23); println!("({}, {})", p.0, p.1); } 这通常用于单字段封装容器(称为 newtype): struct PoundsOfForce(f64); struct Newtons(f64); fn compute_thruster_force() -> PoundsOfForce str>”,后者可公开透明地授予其访问“str”方法的权限。 – Write and compare let s3 = s1.deref(); and let s3 = &*s1;. • “String”是作为字节矢量的封装容器实现的,矢量上支持的许多操作在“String”上也受支持,但有 一些额外保证。 • 比较将“String”编入索引的不同方式: – 使用“s3.chars().nth(i).unwrap()”转换为字符,其中“i”代表是否出界。0 码力 | 359 页 | 1.33 MB | 10 月前3
 基于 Rust 语言编写的可编程的全球分布式 MQTT 服务器 王文庭设备,⽽不需要开 发⼈员为每个异构设备都编写或编译⼀套单独的代码或程序,从⽽提⾼开发效率; • 更好的安全机制,Docker 之类的容器最让⼈诟病的问题之⼀就是安全性; • 更低的内存和资源消耗,Wasm 运⾏时所需的资源⽐ Docker 之类的容器要少很多; • 更快的冷启动时间,Wasm的冷启动时间为微秒,⽐ Docker 的秒级启动快不少; • 更⼩的运⾏时依赖,Docke0 码力 | 31 页 | 3.95 MB | 1 年前3 基于 Rust 语言编写的可编程的全球分布式 MQTT 服务器 王文庭设备,⽽不需要开 发⼈员为每个异构设备都编写或编译⼀套单独的代码或程序,从⽽提⾼开发效率; • 更好的安全机制,Docker 之类的容器最让⼈诟病的问题之⼀就是安全性; • 更低的内存和资源消耗,Wasm 运⾏时所需的资源⽐ Docker 之类的容器要少很多; • 更快的冷启动时间,Wasm的冷启动时间为微秒,⽐ Docker 的秒级启动快不少; • 更⼩的运⾏时依赖,Docke0 码力 | 31 页 | 3.95 MB | 1 年前3
 Rust 异步并发框架在移动端的应用 - 陈明煜并行迭代器异步化  可以对 Rust 常规数据容器生成并行迭代器,对容 器内的数据进行异步并行的操作 Fusion of IO/CPU intensive IO & CPU 融合 Fusion of IO/CPU intensive IO & CPU 融合 Fusion of IO/CPU intensive 南向调度融合:异步并行迭代器  将数据容器内的数据进行递归二分,对左 半和右半分别生成一个异步任务。最终对0 码力 | 25 页 | 1.64 MB | 1 年前3 Rust 异步并发框架在移动端的应用 - 陈明煜并行迭代器异步化  可以对 Rust 常规数据容器生成并行迭代器,对容 器内的数据进行异步并行的操作 Fusion of IO/CPU intensive IO & CPU 融合 Fusion of IO/CPU intensive IO & CPU 融合 Fusion of IO/CPU intensive 南向调度融合:异步并行迭代器  将数据容器内的数据进行递归二分,对左 半和右半分别生成一个异步任务。最终对0 码力 | 25 页 | 1.64 MB | 1 年前3
 Hello 算法 1.1.0 Rust版,其中的每个元素代表一个垂直隔板的高度。数组中的任意两个隔板,以及它们之 间的空间可以组成一个容器。 容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的数组索引 之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。 图 15‑10 向内移动短板后的状态 由此便可推出本题的贪心策略:初始化两指针,使其分列容器两端,每轮向内收缩短板对应的指针,直至两 指针相遇。 图 15‑11 展示了贪心策略的执行过程。 1. 初始状态下,指针 ? 和 ? 分列数组两端。 2. 计算当前状态的容量 ???[?,0 码力 | 388 页 | 18.50 MB | 1 年前3 Hello 算法 1.1.0 Rust版,其中的每个元素代表一个垂直隔板的高度。数组中的任意两个隔板,以及它们之 间的空间可以组成一个容器。 容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的数组索引 之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。 图 15‑10 向内移动短板后的状态 由此便可推出本题的贪心策略:初始化两指针,使其分列容器两端,每轮向内收缩短板对应的指针,直至两 指针相遇。 图 15‑11 展示了贪心策略的执行过程。 1. 初始状态下,指针 ? 和 ? 分列数组两端。 2. 计算当前状态的容量 ???[?,0 码力 | 388 页 | 18.50 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 Rust 版,其中的每个元素代表一个垂直隔板的高度。数组中的任意两个隔板,以及它们之 间的空间可以组成一个容器。 容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的数组索引 之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。 图 15‑10 向内移动短板后的状态 由此便可推出本题的贪心策略:初始化两指针,使其分列容器两端,每轮向内收缩短板对应的指针,直至两 指针相遇。 图 15‑11 展示了贪心策略的执行过程。 1. 初始状态下,指针 ? 和 ? 分列数组两端。 2. 计算当前状态的容量 ???[?,0 码力 | 387 页 | 18.51 MB | 10 月前3 Hello 算法 1.2.0 简体中文 Rust 版,其中的每个元素代表一个垂直隔板的高度。数组中的任意两个隔板,以及它们之 间的空间可以组成一个容器。 容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的数组索引 之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。 图 15‑10 向内移动短板后的状态 由此便可推出本题的贪心策略:初始化两指针,使其分列容器两端,每轮向内收缩短板对应的指针,直至两 指针相遇。 图 15‑11 展示了贪心策略的执行过程。 1. 初始状态下,指针 ? 和 ? 分列数组两端。 2. 计算当前状态的容量 ???[?,0 码力 | 387 页 | 18.51 MB | 10 月前3
 Hello 算法 1.0.0 Rust版,其中的每个元素代表一个垂直隔板的高度。数组中的任意两个隔板,以及 它们之间的空间可以组成一个容器。 容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的 数组索引之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。 图 15‑10 向内移动短板后的状态 由此便可推出本题的贪心策略:初始化两指针,使其分列容器两端,每轮向内收缩短板对应的指针,直至两 指针相遇。 图 15‑11 展示了贪心策略的执行过程。 1. 初始状态下,指针 ? 和 ? 分列数组两端。 2. 计算当前状态的容量 ???[?,0 码力 | 383 页 | 17.61 MB | 1 年前3 Hello 算法 1.0.0 Rust版,其中的每个元素代表一个垂直隔板的高度。数组中的任意两个隔板,以及 它们之间的空间可以组成一个容器。 容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的 数组索引之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。 图 15‑10 向内移动短板后的状态 由此便可推出本题的贪心策略:初始化两指针,使其分列容器两端,每轮向内收缩短板对应的指针,直至两 指针相遇。 图 15‑11 展示了贪心策略的执行过程。 1. 初始状态下,指针 ? 和 ? 分列数组两端。 2. 计算当前状态的容量 ???[?,0 码力 | 383 页 | 17.61 MB | 1 年前3
 Rust与算法 - 谢波基本数据结构复杂度 线性数据结构 非线性数据结构 总体来看,时间复杂度没有超过 O(n) 的! Rust 实现数据结构 • 栈 • 链表 • Vec Rust 实现数据结 构 栈 借助 Vec 容器 泛型支持 Option ? 链表 链接可能为空 多种迭代 Vec 借助链表 随机插入 插入新的 Vec Rust 实现算法 • 蒂姆排序 • 字典树 • 图 Rust 实现算0 码力 | 28 页 | 3.52 MB | 1 年前3 Rust与算法 - 谢波基本数据结构复杂度 线性数据结构 非线性数据结构 总体来看,时间复杂度没有超过 O(n) 的! Rust 实现数据结构 • 栈 • 链表 • Vec Rust 实现数据结 构 栈 借助 Vec 容器 泛型支持 Option ? 链表 链接可能为空 多种迭代 Vec 借助链表 随机插入 插入新的 Vec Rust 实现算法 • 蒂姆排序 • 字典树 • 图 Rust 实现算0 码力 | 28 页 | 3.52 MB | 1 年前3
 Rust OS 开源操作系统训练营的教与学-0615-李明• 重要成果 • 2022:陈林峰《rCore 的龙芯平台移植》 • 2022:唐洪雨《基于Rust语言的嵌入式实时操作系统RFreeRTOS的移植》 • 2022:朱懿《zCore 操作系统容器化的探索》 • 2022:米明恒《操作系统调试器VSCode插件系统架构设计与实现》 • 2023:周子琪/周毅《ArceOS在华山派CV1811H上的移植》 • 2023:齐呈祥《hypercraft0 码力 | 26 页 | 2.62 MB | 1 年前3 Rust OS 开源操作系统训练营的教与学-0615-李明• 重要成果 • 2022:陈林峰《rCore 的龙芯平台移植》 • 2022:唐洪雨《基于Rust语言的嵌入式实时操作系统RFreeRTOS的移植》 • 2022:朱懿《zCore 操作系统容器化的探索》 • 2022:米明恒《操作系统调试器VSCode插件系统架构设计与实现》 • 2023:周子琪/周毅《ArceOS在华山派CV1811H上的移植》 • 2023:齐呈祥《hypercraft0 码力 | 26 页 | 2.62 MB | 1 年前3
 Hello 算法 1.2.0 繁体中文 Rust 版,其中的每個元素代表一個垂直隔板的高度。陣列中的任意兩個隔板,以及它們之 間的空間可以組成一個容器。 容器的容量等於高度和寬度的乘積(面積),其中高度由較短的隔板決定,寬度是兩個隔板的陣列索引 之差。 請在陣列中選擇兩個隔板,使得組成的容器的容量最大,返回最大容量。示例如圖 15‑7 所示。 圖 15‑7 最大容量問題的示例資料 容器由任意兩個隔板圍成,因此本題的狀態為兩個隔板的索引,記為 [?, ?] 。 小,但高度可能會變大(移 動後的短板 ? 可能會變長)。例如在圖 15‑10 中,移動短板後面積變大。 圖 15‑10 向內移動短板後的狀態 由此便可推出本題的貪婪策略:初始化兩指標,使其分列容器兩端,每輪向內收縮短板對應的指標,直至兩 指標相遇。 圖 15‑11 展示了貪婪策略的執行過程。 1. 初始狀態下,指標 ? 和 ? 分列陣列兩端。 2. 計算當前狀態的容量 ???[?,0 码力 | 388 页 | 18.82 MB | 10 月前3 Hello 算法 1.2.0 繁体中文 Rust 版,其中的每個元素代表一個垂直隔板的高度。陣列中的任意兩個隔板,以及它們之 間的空間可以組成一個容器。 容器的容量等於高度和寬度的乘積(面積),其中高度由較短的隔板決定,寬度是兩個隔板的陣列索引 之差。 請在陣列中選擇兩個隔板,使得組成的容器的容量最大,返回最大容量。示例如圖 15‑7 所示。 圖 15‑7 最大容量問題的示例資料 容器由任意兩個隔板圍成,因此本題的狀態為兩個隔板的索引,記為 [?, ?] 。 小,但高度可能會變大(移 動後的短板 ? 可能會變長)。例如在圖 15‑10 中,移動短板後面積變大。 圖 15‑10 向內移動短板後的狀態 由此便可推出本題的貪婪策略:初始化兩指標,使其分列容器兩端,每輪向內收縮短板對應的指標,直至兩 指標相遇。 圖 15‑11 展示了貪婪策略的執行過程。 1. 初始狀態下,指標 ? 和 ? 分列陣列兩端。 2. 計算當前狀態的容量 ???[?,0 码力 | 388 页 | 18.82 MB | 10 月前3
共 13 条
- 1
- 2













