Hello 算法 1.2.0 简体中文 Rust 版
如果你也面临类似的困扰,那么很幸运这本书“找”到了你。本书是我对这个问题给出的答案,即使不是最 优解,也至少是一次积极的尝试。本书虽然不足以让你直接拿到 Offer,但会引导你探索数据结构与算法的 “知识地图”,带你了解不同“地雷”的形状、大小和分布位置,让你掌握各种“排雷方法”。有了这些本领, 相信你可以更加自如地刷题和阅读文献,逐步构建起完整的知识体系。 我深深赞同费曼教授所言:“Knowledge hello‑algo.com 2 0.1 关于本书 本项目旨在创建一本开源、免费、对新手友好的数据结构与算法入门教程。 ‧ 全书采用动画图解,内容清晰易懂、学习曲线平滑,引导初学者探索数据结构与算法的知识地图。 ‧ 源代码可一键运行,帮助读者在练习中提升编程技能,了解算法工作原理和数据结构底层实现。 ‧ 提倡读者互助学习,欢迎大家在评论区提出问题与分享见解,在交流讨论中共同进步。 0.1.1 读者对象 率。最直接的方法 是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。这种评估方式能够反映真 实情况,但也存在较大的局限性。 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能表现。比如一个算法的并行度较高,那 么它就更适合在多核 CPU 上运行,一个算法的内存操作密集,那么它在高性能内存上的表现就会更好。也 就是说,算法在不同的机器上的测试结果可能是不一致0 码力 | 387 页 | 18.51 MB | 10 月前3Hello 算法 1.1.0 Rust版
如果你也面临类似的困扰,那么很幸运这本书“找”到了你。本书是我对这个问题给出的答案,即使不是最 优解,也至少是一次积极的尝试。本书虽然不足以让你直接拿到 Offer,但会引导你探索数据结构与算法的 “知识地图”,带你了解不同“地雷”的形状、大小和分布位置,让你掌握各种“排雷方法”。有了这些本领, 相信你可以更加自如地刷题和阅读文献,逐步构建起完整的知识体系。 我深深赞同费曼教授所言:“Knowledge 率。最直接的方法 是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。这种评估方式能够反映真 实情况,但也存在较大的局限性。 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能。比如在某台计算机中,算法 A 的运行 时间比算法 B 短;但在另一台配置不同的计算机中,可能得到相反的测试结果。这意味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 法至关重要。 2.3 时间复杂度 运行时间可以直观且准确地反映算法的效率。如果我们想准确预估一段代码的运行时间,应该如何操作呢? 1. 确定运行平台,包括硬件配置、编程语言、系统环境等,这些因素都会影响代码的运行效率。 2. 评估各种计算操作所需的运行时间,例如加法操作 + 需要 1 ns ,乘法操作 * 需要 10 ns ,打印操作 print() 需要 5 ns 等。 3. 统计代码中所0 码力 | 388 页 | 18.50 MB | 1 年前3Hello 算法 1.0.0 Rust版
如果你也面临类似的困扰,那么很幸运这本书“找”到了你。本书是我对这个问题给出的答案,即使不是最 优解,也至少是一次积极的尝试。本书虽然不足以让你直接拿到 Offer,但会引导你探索数据结构与算法的 “知识地图”,带你了解不同“地雷”的形状、大小和分布位置,让你掌握各种“排雷方法”。有了这些本领, 相信你可以更加自如地刷题和阅读文献,逐步构建起完整的知识体系。 我深深赞同费曼教授所言:“Knowledge 率。最直接的方法 是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。这种评估方式能够反映真 实情况,但也存在较大的局限性。 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能。比如在某台计算机中,算法 A 的运行 时间比算法 B 短;但在另一台配置不同的计算机中,可能得到相反的测试结果。这意味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 法至关重要。 2.3 时间复杂度 运行时间可以直观且准确地反映算法的效率。如果我们想准确预估一段代码的运行时间,应该如何操作呢? 1. 确定运行平台,包括硬件配置、编程语言、系统环境等,这些因素都会影响代码的运行效率。 2. 评估各种计算操作所需的运行时间,例如加法操作 + 需要 1 ns ,乘法操作 * 需要 10 ns ,打印操作 print() 需要 5 ns 等。 3. 统计代码中所0 码力 | 383 页 | 17.61 MB | 1 年前3Rust 程序设计语言 简体中文版 1.85.0
尾表达式,不过你已经见过作为语句一部分的表达式。因为 Rust 是一门基于表达式 (expression-based)的语言,这是一个需要理解的重要区别。其他语言并没有这样的区别, 所以让我们看看语句与表达式有什么区别以及这些区别是如何影响函数体的。 • 语句(Statements)是执行一些操作但不返回值的指令。 • 表达式(Expressions)计算并产生一个值。 让我们看一些例子。 实际上,我们已经使用过语句和表达式。使用 通过完成一些示例来学习所有权,这些示例基于一个常用的数据结构:字符串。 栈(Stack)与堆(Heap) 在很多语言中,你并不需要经常考虑到栈与堆。不过在像 Rust 这样的系统编程语言 中,值是位于栈上还是堆上在更大程度上影响了语言的行为以及为何必须做出这样的 抉择。我们会在本章的稍后部分描述所有权与栈和堆相关的内容,所以这里只是一个 用来预热的简要解释。 栈和堆都是代码在运行时可供使用的内存,但是它们的结构不同。栈以放入值的顺序 Acquisition Is Initialization (RAII))。如果你使用过 RAII 模式的 话应该对 Rust 的 drop 函数并不陌生。 这个模式对编写 Rust 代码的方式有着深远的影响。现在它看起来很简单,不过在更复杂的场 景下代码的行为可能是不可预测的,比如当有多个变量使用在堆上分配的内存时。现在让我们 探索一些这样的场景。 使用移动的变量与数据交互 在 Rust 中,多个0 码力 | 562 页 | 3.23 MB | 10 天前3Rust 程序设计语言简体中文版
Rust 是一门基于表达式 (expression-based)的语言,这是一个需要理解的(不同于其他语言)重要区别。其他语言 并没有这样的区别,所以让我们看看语句与表达式有什么区别以及这些区别是如何影响函数体 的。 语句(Statements)是执行一些操作但不返回值的指令。 表达式(Expressions)计算并产生 一个值。让我们看一些例子。 实际上,我们已经使用过语句和表达式。使用 let 3d51f70c78162faaebcab0da0de2ddd333e7a8ed Rust 的核心功能(之一)是 所有权(ownership)。虽然该功能很容易解释,但它对语言的其 他部分有着深刻的影响。 所有程序都必须管理其运行时使用计算机内存的方式。一些语言中具有垃圾回收机制,在程序 运行时有规律地寻找不再使用的内存;在另一些语言中,程序员必须亲自分配和释放内存。 Rust 则选择了第三种方 通过完成一些示例来学习所有权,这些示例基于一个常用的数据结构:字符串。 栈(Stack)与堆(Heap) 在很多语言中,你并不需要经常考虑到栈与堆。不过在像 Rust 这样的系统编程语言 中,值是位于栈上还是堆上在更大程度上影响了语言的行为以及为何必须做出这样的 抉择。我们会在本章的稍后部分描述所有权与栈和堆相关的内容,所以这里只是一个 用来预热的简要解释。 栈和堆都是代码在运行时可供使用的内存,但是它们的结构不同。栈以放入值的顺序0 码力 | 600 页 | 12.99 MB | 1 年前3Rust HTTP 协议栈在终端通信场景的实践 - 胡凯
Shanghai, China 终端 HTTP 协议场景浅析 终端的网络环境特点: ➢ 弱网环境:移动端网络整体处于弱网环境,网络时延较高。 ➢ 网络不稳定:移动端网络经常受到用户或者环境影响而产生波动。 ➢ 流量限制:移动端网络流量受到用户的限制。 ➢ 设备资源有限:移动端设备CPU、内存等资源较少。 Rust China Conf 2022 – 2023, Shanghai, China 下载进度:对于一些涉及上传或下载的应用软件,进度显示能够给用户及时性的反馈。 ➢ 速度和流量限制:受到资费和网络状况的影响,传输速度和流量需要提供给用户设置。 ➢ 暂停和重试:网络传输需要提供给用户控制启动和暂停的控制手段。 ➢ 功耗:网络传输需要消耗终端设备资源,需要尽可能平衡功耗和传输速度。 ➢ 性能表现:网络传输不能影响到和用户直接交互的前台应用的表现。 Rust 与终端 HTTP 通信场景结合 Part 040 码力 | 26 页 | 1.25 MB | 1 年前3Rust 语言学习笔记
true # 控制编译器是否开启 `-g` 参数 rpath = false # 控制编译器的 `-C rpath` 参数 lto = false # 控制`-C lto` 参数,此参数影响可执行文件和静态库的生成, debug-assertions = true # 控制调试断言是否开启 codegen-units = 1 # 控制编译器的 `-C codegen-units` 内存,则操作系统需要在堆中查找一块未使用的满足大小的连续内存空间,故 其效率比栈要低很多,尤其是堆上如果有大量不连续内存时。另外内存使用完 也必须由程序员手动释放,不然就会出现内存泄漏,内存泄漏对需要长时间运 行的程序(例如守护进程)影响非常大。 rust 资源的管理比较复杂,资源和标志符要分开来看。 目前一个只包含 i32 的结构体可能放在栈上,一个包含字符串的结构体放在那 里?不太确定,可以确定的是字符串肯定放在堆上,栈上数据不支持动态扩容。 一旦最后一个拥有者消失,则资源会被自动回收,这个生命周期是在编译期 就确定下来的; 3.Rc 只能用于同一线程内部,不能用于线程之间的对象共享(不能跨线程传 递); 4.Rc 实际上是一个指针,它不影响包裹对象的方法调用形式(即不存在先解 开包裹再调用值这一说)。和 Box 有点类似。 使用例子: use std::rc::Rc; let five = Rc::new(5); let0 码力 | 117 页 | 2.24 MB | 1 年前3硬件创业公司的Rust应用和转型 - 陈昱衡
Rust在嵌入式公司应用的想法 4 为什么选择Rust Rust的选择 小动物跑步机 通过调节跑步机的速度和倾斜角度,可以模拟小动物在不 同强度和方向下的运动情况,进而研究其对心血管、代谢和 神经等方面的影响。 包含机体自带屏幕和远程桌面控制 内存泄漏导致 数据记录错误 出货前夕 鹿仔远程控制终端 Rust的选择 稳定性 售后成本 学习成本 研发周期 人员成本 维护成本 产品稳定性 阶梯式的Rust转型 鹿仔科技东莞研发中心现为 东莞理工学院校外实训基地 并将Rust列入培养方案中 希望以此培养更多Rust嵌入式 人才 预计明年开放嵌入式Rust的HC 一些思考 评估Rust改造是否对公司产生较大影响 现阶段是否真需要 鹿仔——助力生命科学探索 陈昱衡 E-mail: chenyuheng@deer-tech.cn 谢谢聆听0 码力 | 23 页 | 4.95 MB | 1 年前3新一代分布式高性能图数据库的构建 - 沈游人
海致获得“ 2021 年 CCF 科学技术奖科技进步卓越奖” CCF 科学技术奖被认为是计算机科学与技术领域最具影响力的专业奖项之一, 其中科技进步卓越奖是 CCF 科技进步奖评选中的最高级别奖项,旨在嘉奖在计 算机科学、技术或工程领域具有重要发现、发明、原始创新,在相关领域有一 定国际影响的优秀成果, AtlasGraph 的获奖证明了其技术领先性、创新性、 重要性,在自主可控浪潮下,实现了对国外产品的有效替代,防止高新技术领0 码力 | 38 页 | 24.68 MB | 1 年前3Rust在物理引擎研发中的应用 崔汉青
写好数学库并不容易 • 充分利用目标平台指令集 – 大量的针对目标平台的SIMD优化 • 数学计算本质上是类似的 – 大量的相似代码 • Portable SIMD unstable • 影响跨端确定性的因素太多了 motphys-math 为高性能物理引擎量 身定制 增加了 AoSoA 类型, 并做了大量 SIMD 优化 增加了跨端确定性模 式 保证所有设备浮点计算结果 完全一致0 码力 | 22 页 | 1.18 MB | 1 年前3
共 12 条
- 1
- 2