Rust 程序设计语言 简体中文版 1.85.0看,这是一个神秘的编程领域,只为浸润多年的极少数人所触及,也只有他们能避开那些臭名 昭著的陷阱。即使谨慎的实践者,亦唯恐代码出现漏洞、崩溃或损坏。 Rust 破除了这些障碍:它消除了旧的陷阱,并提供了伴你一路同行的友好、精良的工具。想 要 “深入” 底层控制的程序员可以使用 Rust,无需时刻担心出现崩溃或安全漏洞,也无需因为 工具链不靠谱而被迫去了解其中的细节。更妙的是,语言设计本身会自然而然地引导你编写出 可靠的代 已经在从事编写底层代码的程序员可以使用 Rust 来提升信心。例如,在 Rust 中引入并行是相 对低风险的操作,因为编译器会替你找到经典的错误。同时你可以自信地采取更加激进的优 化,而不会意外引入崩溃或漏洞。 但 Rust 并不局限于底层系统编程。它表达力强、写起来舒适,让人能够轻松地编写出命令行 应用、网络服务器等各种类型的代码——在本书中就有这两者的简单示例。使用 Rust 能让你 把在一个领域 org/install.html 并按照说明安装 Rust。在安 装过程的某个步骤,你会被提示要安装 Visual Studio。它提供了一个链接器和编译程序所需 的原生库。如果你在此步骤需要更多帮助,请访问 https://rust-lang.github.io/rustup/ installation/windows-msvc.html。 本书的余下部分会使用能同时运行于 cmd.exe 和 PowerShell0 码力 | 562 页 | 3.23 MB | 29 天前3
基于静态分析的Rust内存安全缺陷检测研究call Unsafe API access call Rust实际表现如何? ❑ 调研了2020年12月31日前报告的185个内存安全漏洞[TOSEM'21] ▪ Rust在内存安全防护方面效果不错 ▪ 所有的漏洞(除了1个编译器漏洞)都需要unsafe code ▪ 大部分CVEs都是 API soundness的问题(未在可执行程序中发现) Std Lib 3rd-party Report Rust项目中内存安全漏洞的特点 ❑ Automatic Memory Reclaim ❑ Unsound Function ❑ Unsound Generic or Trait Auto Memory Reclaim问题:示例1 创建一个临时字符串s 通过unsafe将v指向临时内存 返回v 自动析构s,造成悬空指针v 访问v造成use-after-free 从Rust execution Bad drop of exception handling drop(_0) 返回值 Auto Memory Reclaim问题:示例2 创建未初始化的变量foo Panic将导致访问未初始化内存 大纲 一、问题背景 二、Rust指针缺陷检测方法 三、实验结论 四、论文发表心得 研究挑战和思路 ❑ 研究挑战:指针分析是NP-hard问题 ▪ 准确0 码力 | 28 页 | 1.55 MB | 1 年前3
Rust 语言学习笔记............................................. 102 7.5.1 控制访问顺序--等待与通知 ................................................... 103 7.5.2 控制访问顺序的机制-原子类型与锁 ........................................ 104 7 ,只为浸淫多 年的极少数人所触及,也只有他们能避开那些臭名昭著的陷阱。即使谨慎的实 践者,亦唯恐代码出现漏洞、崩溃或损坏。 Rust 破除了这些障碍,其消除了旧的陷阱并提供了伴你一路同行的友好、精良 的工具。想要 “深入” 底层控制的程序员可以使用 Rust,无需冒着常见的崩 溃或安全漏洞的风险,也无需学习时常改变的工具链的最新知识。其语言本身 更是被设计为自然而然的引导你编写出在运行速度和内存使用上都十分高效的 为了让外部能使用模块中 item,需要使用 pub 关键字。外部引用的时候, 使用 use 关键字。 规则很简单,一个 item(函数,绑定,Trait 等),前面加了 pub,那么就它 变成对外可见(访问,调用)的了。 1.2.2 引用外部文件模块 通常,我们会在单独的文件中写模块内容,然后使用 mod 关键字来加载那个 文件作为我们的模块。 比如,我们在 src 下新建了文件 aaa.rs。现在目录结构是下面这样子:0 码力 | 117 页 | 2.24 MB | 1 年前3
Comprehensive Rust(简体中文) 20241251.1 原始 MMIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 51.2 外围设备访问 crate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 51.3 HAL crates . . . . 内嵌汇编 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 53.3 MMIO 的易失性内存访问 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 53.4 编写 UART 驱动程序 . . . . . . . . contributors 303 stars 28k 这是一门由 Android 团队开发的免费 Rust 课程。课程涵盖了 Rust 的全部内容,从基本语法到泛型和错 误处理等高级主题。 如需查看课程的最新版本,请访问 https://google.github.io/comprehensive-rust/。如果您 在其他地方阅读,请在那里查看更新。 The course is also available as0 码力 | 359 页 | 1.33 MB | 10 月前3
Rust语言核心竞争力-庄晓立系统编程对内存安全的需求十分强烈 • 内存不安全的后果非常严重 • ……“心脏出血”漏洞(Heartbleed)重创全球IT行 业 • ……源于OpenSSL【越界访问内存】 • OS/GLIBC/JAVA/浏览器等频繁爆出重大安全漏洞 • ……多与错误使用内存有关 • 传统C/C++语言放弃解决内存安全问题 • 程序员因疏忽或犯错很容易制造内存安全漏洞 • GC能基本保证内存安全,但牺牲了运行时性能 内存安全? 内存安全? 安全地读写内存 • 在限定时间和空间范围内读写内存 • 防止被他人意外修改或释放 • 避免访问空指针和野指针 安全地释放内存 • 在恰当的时机释放 • 确保释放,不遗漏 • 仅释放一次 内存不安全? • 指针越界访问,意外修改别处内存 • 内存被提前释放,形成野指针,非法读写内存 • 野指针又转化为合法指针,意外修改别处内存 • NULL指针解引用,非法操作 • 并发读写同一内存地址,数据竞争 push(&t); // error: `t` does // not live long enough } 因为t将先于v被析构(这一点易被忽视) v的析构函数可能访问到无效的t引用! 此处潜在的内存“不安全”代码没能逃过borrowck的法眼。 http://is.gd/HVy7yk fn test1(s: String) {} fn test2(s: &String)0 码力 | 51 页 | 1.09 MB | 1 年前3
尝试用RUST写教学操作系统rust 有runtime 检查ownership / buffer overflow -> 缓冲区溢出不会导致system compromise • 并发安全: 对于全局变量, 它自带一个锁. 访问全局变 量的过程必须取得锁 -> C里面全局变量和锁时分离 的, 时常会忘记加锁,当锁离开作用域时自动释放, 防 止造成死锁 • Rust 提供了unsafe 这种块能够做不安全但必须的事 情如指针算术 • Rc– clone() – drop() 15 PageTable in Rust vs C 16 17 RUST对Linux安全漏洞的安全性增强(1) 18 RUST对Linux安全漏洞的安全性增强(2) 19 正在进行的工作 • 形成一组基于RustOS的操作系统课实验 https://rucore.gitbook.io/rust-os-docs/bootloader 0 码力 | 23 页 | 1.53 MB | 1 年前3
新一代分布式高性能图数据库的构建 - 沈游人据的表示学习模型、语义推荐和风险管理关键技术,构建了完整的兼具理论指导与应用检 验的大规模图数据智能分析系统与平台,满足了大数据时代从复杂异质图数据中进行知识 发现的重要需求。最终获得国内外授权发明专利 43 项, CCF -A 类论文 51 篇,获得 2 次国际竞赛冠军,参与了 2 项图计算相关标准制定。 AtlasGraph 架构及实现 图技术简介 Takeway “ 世界是复杂关系的总和”—— 内存缓存结构:加速图数据查询 • 由于图数据的查询通常是 IO 密集型,且访问的数据随机又分散,拥有内存缓存能起到很 好的加速效果 • 要想让内存缓存发挥最大的作用,就要能在有限的内存中存下尽量多的图数据 • 例如,对于属性的存储,可以通过自行序列化 / 反序列化大幅节省内存 • 而自定义存储格式往往需要内存的精细操作,由于 Rust 允许在 unsafe 下访问裸指针, 可以实现零开销读取 • 将 Unsafe 查询分析、服务状态监控、用户管理能力 免代码,可视化定义实体、 边,设计图模型。 【亮点】 • 支持模型导入导出 • 拖拽式关系构建 • 丰富的样式配置 • 实时图结构预览 • 用户授权管理 • 中文及显示别名支持 图模型设计 WebUI—— 可视化图探索分析 【亮点】 • K 步邻居查询、属性过滤 • 最短路径、全路径分析 • 按实体、边类型匹配查询 • 子图识别、环路识别等在0 码力 | 38 页 | 24.68 MB | 1 年前3
Hello 算法 1.1.0 Rust版仍有许多错误,恳请各位老师和同学批评 指正。 本书中的代码附有可一键运行的源文件,托管于 github.com/krahets/hello‑algo 仓库。 动画在 PDF 内的展示效果受限,可访问 hello‑algo.com 网页版以获得更优的阅读体验。 推荐语 “一本通俗易懂的数据结构与算法入门书,引导读者手脑并用地学习,强烈推荐算法初学者阅读!” ——邓俊辉,清华大学计算机系教授 hello‑algo.com 14 ‧ 数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构设计是一个充满权衡的过程。如果想在某方面取得提升,往往需要在另一方面作出妥协。下面举两 个例子。 ‧ 链表相较于数组,在数据添加和删除操作上更加便捷,但牺牲了数据访问速度。 ‧ 图相较于链表,提供了更丰富的逻辑信息,但需要占用更大的内存空间。 初识算法 hello‑algo.com 15 图 1‑5 拼装积木 两者的详细对应关系如表 1‑1 所示。 表 1‑1 将数据结构与算法类比为拼装积木 数据结构与算法 拼装积木 输入数据 未拼装的积木 数据结构 积木组织形式,包括形状、大小、连接方式等 算法 把积木拼成目标形态的一系列操作步骤 输出数据 积木模型 值得说明的是,数据结构与算法是独立于编程语言的。正因如此,本书得以提供基于多种编程语言的实现。0 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版仍有许多错误,恳请各位老师和同学批评 指正。 本书中的代码附有可一键运行的源文件,托管于 github.com/krahets/hello‑algo 仓库。 动画在 PDF 内的展示效果受限,可访问 www.hello‑algo.com 网页版以获得更优的阅读体验。 推荐语 “一本通俗易懂的数据结构与算法入门书,引导读者手脑并用地学习,强烈推荐算法初学者阅读!” ——邓俊辉,清华大学计算机系教授 空间占用尽量少,以节省计算机内存。 ‧ 数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构设计是一个充满权衡的过程。如果想在某方面取得提升,往往需要在另一方面作出妥协。下面举两 个例子。 ‧ 链表相较于数组,在数据添加和删除操作上更加便捷,但牺牲了数据访问速度。 ‧ 图相较于链表,提供了更丰富的逻辑信息,但需要占用更大的内存空间。 初识算法 www.hello‑algo.com 15 图 1‑5 拼装积木 两者的详细对应关系如表 1‑1 所示。 表 1‑1 将数据结构与算法类比为拼装积木 数据结构与算法 拼装积木 输入数据 未拼装的积木 数据结构 积木组织形式,包括形状、大小、连接方式等 算法 把积木拼成目标形态的一系列操作步骤 输出数据 积木模型 值得说明的是,数据结构与算法是独立于编程语言的。正因如此,本书得以提供基于多种编程语言的实现。0 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.0.0 Rust版仍有许多错误,恳请 各位老师和同学批评指正。 本书中的代码附有可一键运行的源文件,托管于 github.com/krahets/hello‑algo 仓库。动画在 PDF 内的 展示效果受限,可访问 hello‑algo.com 网页版以获得更优的阅读体验。 推荐语 “一本通俗易懂的数据结构与算法入门书,引导读者手脑并用地学习,强烈推荐算法初学者阅读!” ——邓俊辉,清华大学计算机系教授 hello‑algo.com 14 ‧ 数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构设计是一个充满权衡的过程。如果想在某方面取得提升,往往需要在另一方面作出妥协。下面举两 个例子。 ‧ 链表相较于数组,在数据添加和删除操作上更加便捷,但牺牲了数据访问速度。 ‧ 图相较于链表,提供了更丰富的逻辑信息,但需要占用更大的内存空间。 初识算法 hello‑algo.com 15 图 1‑5 拼装积木 两者的详细对应关系如表 1‑1 所示。 表 1‑1 将数据结构与算法类比为拼装积木 数据结构与算法 拼装积木 输入数据 未拼装的积木 数据结构 积木组织形式,包括形状、大小、连接方式等 算法 把积木拼成目标形态的一系列操作步骤 输出数据 积木模型 值得说明的是,数据结构与算法是独立于编程语言的。正因如此,本书得以提供基于多种编程语言的实现。0 码力 | 383 页 | 17.61 MB | 1 年前3
共 23 条
- 1
- 2
- 3













