Rust 语言学习笔记模块级测试 ............................................................................... 110 9.3 工程级测试(黑盒集成测试) ........................................................ 110 9.4 基准测试 ....................... 虽然简单,但使用过其他语言就会知道,通道有多种使用方式,且比较灵活, 为此我们需要进一步考虑关于 Rust 的 Channel 的几个问题: 1. 通道能保证消息的顺序吗?是否先发送的消息,先接收? 2. 通道能缓存消息吗?如果能的话能缓存多少? 3. 通道的发送者和接收者支持 N:1,1:N,N:M 模式吗? 4. 通道能发送任何数据吗? 5. 发送后的数据,在线程中继续使用没有问题吗? 下面各小节会对上面各部分问题进行回答。 receive 1 receive 2 在代码中,我们故意让 main 所在的主线程睡眠 2 秒,从而让发送者所在线程优 先执行,通过结果可以发现,发送者发送消息时确实没有阻塞。 异步通道具备消息缓存的功能,理论上是无穷的,直至内存耗光为止。 异步通道的具有良好的灵活性和扩展性,针对业务需要,可以灵活地应用于实 际项目中。 同步通道: 同步通道在使用上同异步通道一样,接收端也是一样的,唯一的区别在于发送0 码力 | 117 页 | 2.24 MB | 1 年前3
新一代分布式高性能图数据库的构建 - 沈游人Analytics Source: KDnuggets 图技术全景图—— Graph Technology Landscape 2020 • 图数据库 • 图数据建模 • 图计算引擎 • 图数据集成 • 可视化分析 • 知识图谱解决方案 • 图查询语言 • 欺诈检测 • 网络安全分析 • 社交网络分析 • BI 工具 • 图分析工具集 • 图咨询服务 Source : Graph 实际执行时,执行器等待流数据,处 理后将数据推送到下一个执行器 切分执行计划,将执行计划划分成不 同的执行阶段 内存缓存结构:加速图数据查询 • 由于图数据的查询通常是 IO 密集型,且访问的数据随机又分散,拥有内存缓存能起到很 好的加速效果 • 要想让内存缓存发挥最大的作用,就要能在有限的内存中存下尽量多的图数据 • 例如,对于属性的存储,可以通过自行序列化 / 反序列化大幅节省内存 GNN 算法 • 支持同构图 / 异构图 / 属性图 客户的信任 • 上线某银行反欺诈场景 业务效果提升 10%+ 灵活易用的开发平台 • AtlasML Python Library • 集成 Jupyter Notebook 超参数自动优化 • 支持超参数自动调优,解放算 法科学家生产力,避免繁杂的 手动调参 海致图神经网络平台特点 Rust 语言特性助力构建高性能图数据库0 码力 | 38 页 | 24.68 MB | 1 年前3
Comprehensive Rust(简体中文) 202412直接使用编译器的情况相当少见(大多数用户从不这样做)。 – 值得一提的是,Cargo 本身就是一个功能强大且全面的工具。它能够实现许多高级功能,包括 但不限于: * 项目/软件包结构 * 工作区 * 开发依赖和运行时依赖管理/缓存 * 构建脚本 * 全局安装 * 它还可以使用子命令插件(例如 cargo clippy)进行扩展。 – 详情请参阅 官方 Cargo Book 2.2 本培训中的代码示例 在本培训中,我们将主要通过示例探索 练习:卢恩算法 30 minutes 27.1 单元测试 Rust 和 Cargo 随附了一个简单的单元测试框架: • 单元测试在您的整个代码中都受支持。 • 您可以通过 tests/ 目录来支持集成测试。 Tests are marked with #[test]. Unit tests are often put in a nested tests module, using #[cfg(test)] 试。 • 仅当您运行 cargo test 时,#[cfg(test)] 属性才有效。 在 Playground 中运行测试显示测试结果。 27.2 其他类型的测试 集成测试 如果您想要以客户的身份测试您的库,请使用集成测试。 在 tests/ 下方创建一个 .rs 文件: // tests/my_library.rs use my_library::init; fn test_init()0 码力 | 359 页 | 1.33 MB | 10 月前3
王宜国 - 基于 Rust 编程语⾔构建 Amphitheatre CLI Desktop Server 的全平台实践经验Event Account Project Activity Tariq Share NS 3 Docker Container Kubernetes Pod 轻松创建⽆限量的隔离集成测试环境 ⽀持微服务架构体系和多⼈协作联调测试 Kayn Sona Riven Event Account Project Activity Tariq Share Redis 等⼀系统慢⻓的流程。 Buildpacks How Buildpacks work 分析 探测 恢复构建包可⽤于优化构建和导出阶段的⽂件。 查找⼀组有序的构建包以在构建阶段使⽤。 恢复 构建 从缓存中恢复图层。 将应⽤程序源代码转换为可以打包到容器中的可运⾏⼯件。 导出 创建最终的 OCI 图像。 Packages and Crates cli desktop common client 构建容器镜像及优化策略 • Dockerfile 多阶段构建,充分利⽤层(Layer)缓存加速能⼒; • 使⽤ Cargo Chef 缓存你的 Rust 项⽬的依赖项; • Github Actions Matrix 矩阵构建 amd64 / arm64 等多架构镜像; • 利⽤ Github Actions Cache Management 缓存能⼒,加速 CI 执⾏速度; • 跨多运⾏器分布式构建 Docker0 码力 | 34 页 | 10.81 MB | 1 年前3
Hello 算法 1.1.0 Rust版3 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.4 内存与缓存 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.5 小结 . . . . . 序便可以访问内存中的数据。 图 3‑2 内存条、内存空间、内存地址 Tip 值得说明的是,将内存比作 Excel 表格是一个简化的类比,实际内存的工作机制比较复杂,涉及地址 空间、内存管理、缓存机制、虚拟内存和物理内存等概念。 内存是所有程序的共享资源,当某块内存被某个程序占用时,则无法被其他程序同时使用了。因此在数据结 构与算法的设计中,内存资源是一个重要的考虑因素。比如,算法所占用的内存峰值不应超过系统剩余空闲 优化数据结构的操作效率。 ‧ 空间效率高:数组为数据分配了连续的内存块,无须额外的结构开销。 ‧ 支持随机访问:数组允许在 ?(1) 时间内访问任何元素。 ‧ 缓存局部性:当访问数组元素时,计算机不仅会加载它,还会缓存其周围的其他数据,从而借助高速缓 存来提升后续操作的执行速度。 连续空间存储是一把双刃剑,其存在以下局限性。 ‧ 插入与删除效率低:当数组中元素较多时,插入与删除操作需要移动大量的元素。0 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版3 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.4 内存与缓存 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.5 小结 . . . . . 序便可以访问内存中的数据。 图 3‑2 内存条、内存空间、内存地址 Tip 值得说明的是,将内存比作 Excel 表格是一个简化的类比,实际内存的工作机制比较复杂,涉及地址 空间、内存管理、缓存机制、虚拟内存和物理内存等概念。 内存是所有程序的共享资源,当某块内存被某个程序占用时,则通常无法被其他程序同时使用了。因此在数 据结构与算法的设计中,内存资源是一个重要的考虑因素。比如,算法所占用的内存峰值不应超过系统剩余 优化数据结构的操作效率。 ‧ 空间效率高:数组为数据分配了连续的内存块,无须额外的结构开销。 ‧ 支持随机访问:数组允许在 ?(1) 时间内访问任何元素。 ‧ 缓存局部性:当访问数组元素时,计算机不仅会加载它,还会缓存其周围的其他数据,从而借助高速缓 存来提升后续操作的执行速度。 连续空间存储是一把双刃剑,其存在以下局限性。 ‧ 插入与删除效率低:当数组中元素较多时,插入与删除操作需要移动大量的元素。0 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.0.0 Rust版3 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.4 内存与缓存 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.5 小结 . . . . . ,程序便可以访问内存中的数据。 图 3‑2 内存条、内存空间、内存地址 � 值得说明的是,将内存比作 Excel 表格是一个简化的类比,实际内存的工作机制比较复杂,涉 及地址空间、内存管理、缓存机制、虚拟内存和物理内存等概念。 内存是所有程序的共享资源,当某块内存被某个程序占用时,则无法被其他程序同时使用了。因此在数据结 构与算法的设计中,内存资源是一个重要的考虑因素。比如,算法所占用的内存峰值不应超过系统剩余空闲 优化数据结构的操作效率。 ‧ 空间效率高:数组为数据分配了连续的内存块,无须额外的结构开销。 ‧ 支持随机访问:数组允许在 ?(1) 时间内访问任何元素。 ‧ 缓存局部性:当访问数组元素时,计算机不仅会加载它,还会缓存其周围的其他数据,从而借助高速缓 存来提升后续操作的执行速度。 连续空间存储是一把双刃剑,其存在以下局限性。 ‧ 插入与删除效率低:当数组中元素较多时,插入与删除操作需要移动大量的元素。0 码力 | 383 页 | 17.61 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0是内置的依赖管理器和构建工具,它能轻松增加、编译和管理依赖,并使依赖在 Rust 生态系统中保持一致。 • Rustfmt 格式化工具确保开发者遵循一致的代码风格。 • rust-analyzer 为集成开发环境(IDE)提供了强大的代码补全和内联错误信息功能。 通过使用 Rust 生态系统中丰富的工具,开发者在编写系统级代码时可以更加高效。 学生 Rust 适合学生群体,也适合有兴趣学习系统概念的人。许多人通过 (application programming interface,API)文档! 文本编辑器和集成开发环境(Integrated Development Environments, IDE) 本书不会假设你使用何种工具来编写 Rust 代码。几乎任何文本编辑器都可以搞定!然而,很 多文本编辑器和集成开发环境(IDE)内置了 Rust 支持。你总是可以在 Rust 官网的工具页面 找到很多相对流行的编辑器和 cargo add rand@0.8.5 trpl@0.2.0 这会将这些包的下载结果缓存起来,因此你之后就不需要再下载它们了。运行完该命令后,你 无需保留 get-dependencies 文件夹。一旦你运行了这些命令,就可以在本书之后所有的 cargo 命令中,使用 --offline 参数来使用这些缓存的版本,而不必尝试使用网络。 14/562Rust 程序设计语言 简体中文版 Hello0 码力 | 562 页 | 3.23 MB | 26 天前3
Rust 程序设计语言简体中文版是内置的依赖管理器和构建工具,它能轻松增加、编译和管理依赖,并使依赖在 Rust 生态系统中保持一致。 • Rustfmt 格式化工具确保开发者遵循一致的代码风格。 • Rust Language Server 为集成开发环境(IDE)提供了强大的代码补全和内联错误信息功 能。 通过使用 Rust 生态系统中丰富的工具,开发者在编写系统级代码时可以更加高效。 学生 Rust 适合学生群体,也适合有兴趣学习系统概念的人。许多人通过 言在屏幕上打印 Hello, world! 是一项传统,我们将沿用这一传统! 注意:本书假设你熟悉基本的命令行操作。Rust 对于你的编辑器、工具,以及代码位 于何处并没有特定的要求,如果你更倾向于使用集成开发环境(IDE),而不是命令 行,请尽管使用你喜欢的 IDE。目前很多 IDE 都在一定程度上支持 Rust;查看 IDE 文档以了解更多细节。Rust 团队一直致力于借助 rust-analyzer 工作,这是因为分 配器必须首先找到一块足够存放数据的内存空间,并接着做一些记录为下一次分配做 准备。 访问堆上的数据比访问栈上的数据慢,因为必须通过指针来访问。现代处理器在内存 中跳转越少就越快(缓存)。继续类比,假设有一个服务员在餐厅里处理多个桌子的 点菜。在一个桌子报完所有菜后再移动到下一个桌子是最有效率的。从桌子 A 听一个 菜,接着桌子 B 听一个菜,然后再桌子 A,然后再桌子 B 这样的流程会更加缓慢。出0 码力 | 600 页 | 12.99 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 Rust 版遞迴的結構體現了“子問題分解”的解題範式,常用於解決分治、回溯、動態規劃(記憶化遞迴)等問 題。 309 第 14 章 動態規劃 Abstract 小溪匯入河流,江河匯入大海。 動態規劃將小問題的解彙集成大問題的答案,一步步引領我們走向解決問題的彼岸。 第 14 章 動態規劃 www.hello‑algo.com 310 14.1 初探動態規劃 動態規劃(dynamic programming 动态数组 動態陣列 hard disk 硬盘 硬碟 random‑access memory (RAM) 内存 記憶體 cache memory 缓存 快取 cache miss 缓存未命中 快取未命中 cache hit rate 缓存命中率 快取命中率 stack 栈 堆疊 top of the stack 栈顶 堆疊頂 bottom of the stack 栈底 堆疊底 queue0 码力 | 388 页 | 18.82 MB | 10 月前3
共 18 条
- 1
- 2













