Rust在物理引擎研发中的应用 崔汉青16 ns 1.8 Sphere – Sphere – coincide 7 ns 16 ns 2.3 Motphys 分布式物理引擎设计目标 0.02s内多次通信 苛刻的低延迟要求 高速内网环境下的线 性扩展 – 新增结点的 网络开销恒定 高可用和负载均衡 Message的RTT 可测量 Motphys 分布式物理 引擎网络架构 derive serde vs protobuf0 码力 | 22 页 | 1.18 MB | 1 年前3
Hello 算法 1.1.0 Rust版仍有许多错误,恳请各位老师和同学批评 指正。 本书中的代码附有可一键运行的源文件,托管于 github.com/krahets/hello‑algo 仓库。 动画在 PDF 内的展示效果受限,可访问 hello‑algo.com 网页版以获得更优的阅读体验。 推荐语 “一本通俗易懂的数据结构与算法入门书,引导读者手脑并用地学习,强烈推荐算法初学者阅读!” ——邓俊辉,清华大学计算机系教授 hello‑algo.com 14 ‧ 数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构设计是一个充满权衡的过程。如果想在某方面取得提升,往往需要在另一方面作出妥协。下面举两 个例子。 ‧ 链表相较于数组,在数据添加和删除操作上更加便捷,但牺牲了数据访问速度。 ‧ 图相较于链表,提供了更丰富的逻辑信息,但需要占用更大的内存空间。 来模拟面向对象编程,与结构体相关联的函数就相当于其他编程语言中的方法。 ‧ Java 和 C# 是面向对象的编程语言,代码块(方法)通常作为某个类的一部分。静态方法的行为类似于 函数,因为它被绑定在类上,不能访问特定的实例变量。 ‧ C++ 和 Python 既支持过程式编程(函数),也支持面向对象编程(方法)。 Q:图解“常见的空间复杂度类型”反映的是否是占用空间的绝对大小? 不是,该图展示的是空间0 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版仍有许多错误,恳请各位老师和同学批评 指正。 本书中的代码附有可一键运行的源文件,托管于 github.com/krahets/hello‑algo 仓库。 动画在 PDF 内的展示效果受限,可访问 www.hello‑algo.com 网页版以获得更优的阅读体验。 推荐语 “一本通俗易懂的数据结构与算法入门书,引导读者手脑并用地学习,强烈推荐算法初学者阅读!” ——邓俊辉,清华大学计算机系教授 空间占用尽量少,以节省计算机内存。 ‧ 数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构设计是一个充满权衡的过程。如果想在某方面取得提升,往往需要在另一方面作出妥协。下面举两 个例子。 ‧ 链表相较于数组,在数据添加和删除操作上更加便捷,但牺牲了数据访问速度。 ‧ 图相较于链表,提供了更丰富的逻辑信息,但需要占用更大的内存空间。 来模拟面向对象编程,与结构体相关联的函数就相当于其他编程语言中的方法。 ‧ Java 和 C# 是面向对象的编程语言,代码块(方法)通常作为某个类的一部分。静态方法的行为类似于 函数,因为它被绑定在类上,不能访问特定的实例变量。 ‧ C++ 和 Python 既支持过程式编程(函数),也支持面向对象编程(方法)。 Q:图解“常见的空间复杂度类型”反映的是否是占用空间的绝对大小? 不是,该图展示的是空间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 ‧ 数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构设计是一个充满权衡的过程。如果想在某方面取得提升,往往需要在另一方面作出妥协。下面举两 个例子。 ‧ 链表相较于数组,在数据添加和删除操作上更加便捷,但牺牲了数据访问速度。 ‧ 图相较于链表,提供了更丰富的逻辑信息,但需要占用更大的内存空间。 第 2 章 复杂度分析 hello‑algo.com 50 ‧ Java 和 C# 是面向对象的编程语言,代码块(方法)通常作为某个类的一部分。静态方法的行为类似于 函数,因为它被绑定在类上,不能访问特定的实例变量。 ‧ C++ 和 Python 既支持过程式编程(函数),也支持面向对象编程(方法)。 Q:图解“常见的空间复杂度类型”反映的是否是占用空间的绝对大小? 不是,该图展示的是空间0 码力 | 383 页 | 17.61 MB | 1 年前3
Rust 语言学习笔记............................................. 102 7.5.1 控制访问顺序--等待与通知 ................................................... 103 7.5.2 控制访问顺序的机制-原子类型与锁 ........................................ 104 7 为了让外部能使用模块中 item,需要使用 pub 关键字。外部引用的时候, 使用 use 关键字。 规则很简单,一个 item(函数,绑定,Trait 等),前面加了 pub,那么就它 变成对外可见(访问,调用)的了。 1.2.2 引用外部文件模块 通常,我们会在单独的文件中写模块内容,然后使用 mod 关键字来加载那个 文件作为我们的模块。 比如,我们在 src 下新建了文件 aaa.rs。现在目录结构是下面这样子: [u8; 4]。 Rust 大小是固定的。 2.4.2.5 slice Slice 从直观上讲,是对一个 Array 的切片,通过 Slice,你能获取到一个 Array 的部分或者全部的访问权限。和 Array 不同,Slice 是可以动态的,但是 呢,其范围是不能超过 Array 的大小,这点和 Golang 是不一样的。Golang slice 可以超出 Array 的大小是存在一些问题的。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 程序设计语言简体中文版盖其原有内容)到一个字符串中,因此它需要字符串作为参数。这个字符串参数应该是可变 的,以便 read_line 将用户输入附加上去。 & 表示这个参数是一个 引用(reference),它允许多处代码访问同一处数据,而无需在内存中 多次拷贝。引用是一个复杂的特性,Rust 的一个主要优势就是安全而简单的操纵引用。完成 当前程序并不需要了解如此多细节。现在,我们只需知道它像变量一样,默认是不可变的。因 )后跟值的索引来直接访问它们。例如: 文件名:src/main.rs fn main() { let x: (i32, f64, u8) = (500, 6.4, 1); let five_hundred = x.0; let six_point_four = x.1; let one = x.2; } 这个程序创建了一个元组,x ,然后使用其各自的索引访问元组中的每个元素。跟大多数编程 的数组将包含 5 个元素,这些元素的值最初都将被设置为 3 。这种写法与 let a = [3, 3, 3, 3, 3]; 效果相同,但更简洁。 访问数组元素 数组是可以在栈 (stack) 上分配的已知固定大小的单个内存块。可以使用索引来访问数组的元 素,像这样: 文件名:src/main.rs fn main() { let a = [1, 2, 3, 4, 5]; 52/6000 码力 | 600 页 | 12.99 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0org/install.html 并按照说明安装 Rust。在安 装过程的某个步骤,你会被提示要安装 Visual Studio。它提供了一个链接器和编译程序所需 的原生库。如果你在此步骤需要更多帮助,请访问 https://rust-lang.github.io/rustup/ installation/windows-msvc.html。 本书的余下部分会使用能同时运行于 cmd.exe 和 PowerShell 会覆盖其原有内容)到一个字符串中,因此它需要字符串作为参数。这个字符串参数应该是可 变的,以便 read_line 将用户输入附加上去。 & 表示这个参数是一个 引用(reference),它允许多处代码访问同一处数据,而无需在内存中 多次拷贝。引用是一个复杂的特性,Rust 的一个主要优势就是安全而简单的操纵引用。完成 当前程序并不需要了解如此多细节。现在,我们只需知道它像变量一样,默认是不可变的。因 个不同的变量,x、y 和 z。这叫做 解构(destructuring),因为它将一个元组拆成了三个部 分。最后,程序打印出了 y 的值,也就是 6.4。 我们也可以使用点号(.)后跟值的索引来直接访问所需的元组元素。例如: 文件名:src/main.rs fn main() { let x: (i32, f64, u8) = (500, 6.4, 1); let five_hundred0 码力 | 562 页 | 3.23 MB | 24 天前3
WebAssembly 简介 - 陈思衡Chrome、Firefox、Safari 和 Edge。 # 标准稳定 # 多语言支持 WebAssembly 设计为安全地嵌入到网页 中。它提供一种沙箱环境,禁止直接访问 浏览器功能或用户数据。而是需要通过 host function 来访问宿主环境。 # 安全性 现在多种语言都有编译器支持 WebAssembly,如 C/C++、Rust、Go、Zig 等。 WebAssembly 简介 模块可以调用的系统调用接口。WASI 的目的是让 WASM 模块可以访问底层系统的功能,比如文件系统、网络等。这使得 WASM 可以作为一个更广泛的 运行时,不仅仅局限于浏览器环境。WASI 当前定义了一组 POSIX 兼容的系统调用,让 WASM 模块可以访问文件系 统。未来 WASI 还会加入更多系统接口,为 WASM 提供更广泛的系统访问能力。 WebAssembly 介绍 Photo / image 为用户提供服务。因为 WASM 是sandbox的,所以可以保证代码的安全 性。WASM 的模块化也让云端应用更易于构建和部署。 3. 用户定义函数(UDF):WASM UDF 安全性更高。WASM 运行在沙箱中,访问受限,可以防止恶意 UDF 对数据和系 统产生破坏。与解释执行的 UDF 相比,WASM 作为二进制格式可以获得更高的运行性能。 WASM 中 IO 阻塞问题 WASM 使用场景和问题 在 WASI0 码力 | 24 页 | 773.46 KB | 1 年前3
Rust语言核心竞争力-庄晓立……源于OpenSSL【越界访问内存】 • OS/GLIBC/JAVA/浏览器等频繁爆出重大安全漏洞 • ……多与错误使用内存有关 • 传统C/C++语言放弃解决内存安全问题 • 程序员因疏忽或犯错很容易制造内存安全漏洞 • GC能基本保证内存安全,但牺牲了运行时性能 内存安全? 安全地读写内存 • 在限定时间和空间范围内读写内存 • 防止被他人意外修改或释放 • 避免访问空指针和野指针 安全地释放内存 安全地释放内存 • 在恰当的时机释放 • 确保释放,不遗漏 • 仅释放一次 内存不安全? • 指针越界访问,意外修改别处内存 • 内存被提前释放,形成野指针,非法读写内存 • 野指针又转化为合法指针,意外修改别处内存 • NULL指针解引用,非法操作 • 并发读写同一内存地址,数据竞争 • 缓冲区溢出、段错误…… ……等等许多危险操作,在C语言里触目惊心 Move by default struct 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
共 16 条
- 1
- 2













