《陈天 · Rust 编程第一课 - 掘金小册》PDF 下载
- 更新时间: 2024-07-20
- 文件大小: 14.1 MB
- 关注热度: 925
资源信息 / Information
陈天,现任北美最大的免费流媒体服务 TubiTV 的高级研发副总裁。
基础知识篇
首先通过 get hands dirty 小项目周,感性体验 Rust 语言的魅力,然后回归理性,结合第一性原理,深入浅出地探讨 Rust 变量的所有权和生命周期,以及对比几种主流的内存管理方式。之后围绕所有权和生命周期,来讨论 Rust 的几大语言特性:函数式编程特性、类型系统、泛型编程以及错误处理。
进阶篇
Pascal 之父,图灵奖得主尼古拉斯·沃斯有一个著名的公式:算法 + 数据结构 = 程序,想随心所欲地使用 Rust 为你的系统构建数据结构,深度掌握类型系统必不可少。
所以这个模块将重点介绍 trait、trait object、泛型、unsafe rust,最后还会讲到 FFI,让你用 Rust 为自己的主力语言在关键路径上提供更高的性能,或者引入 Rust 生态中特定的库。
并发篇
学会用最合适的工具解决最合适的问题很重要。这个模块将带你从底层的 atomics 一路向上,历经 Mutex、Semaphore、Channel,直至 actor model,探索不同的并发手段。你会深度了解到,其他语言中被奉为圭臬的并发手段,在 Rust 里,只不过是一种并发工具。
实战篇
单纯掌握语言特性,能应用这些特性写出解决一些小问题的代码,算是初窥门径,就像在游泳池里练习冲浪,想要真正把语言融会贯通,还要靠大风大浪中的磨炼。这个模块会带你学习如何把 Rust 应用在生产环境中,以及如何使用 Rust 的编程思想解决实际问题。
《陈天·Rust 编程第一课》课程目录
开篇词|让Rust 成为你的下一门主力语言
前置篇
01内存:值放堆上还是放栈上,《陈天 · Rust 编程第一课 - 掘金小册》PDF 下载 ePub 下载,这是一个问题
02串讲:编程开发中,那些你需要掌握的基本概念
加餐|这个专栏你可以怎么学,以及Rust是否值得学
基础篇
03初窥门径:从你的第一个Rust 程序开始!04 get hands dirty:来写个实用的 CLI小工具 05 get hands dirty:做一个图片服务器有多难? 06 get hands dirty:用SQL查询文本文件怎么一鱼多吃? 07所有权:值的生杀大权到底在谁手上?
08所有权:值的借用是如何工作的?
09所有权:一个值可以有多个所有者么?10生命周期:你创建的值究竟能活多久?
11内存管理:从创建到消亡,值都经历了什么?
加餐|愚昧之巅:常见问题汇总,为什么你的编译器总报错?12类型系统:Rust的类型系统有什么特点?
13类型系统:如何使用Trait 来定义接口?14类型系统:有哪些必须掌握的Trait?
15再探指针:它们竟然都是智能指针?
16数据结构:你真的了解集合容器么?
17数据结构:软件系统的核心部件哈希表
18闭包:FnOnce、FnMut 和Fn,为什么有这么多类型? 19阶段实操:构建一个简单的KV store(1)基本流程
20 4Steps:如何更好地阅读 Rust 源码?
21阶段实操(1):构建一个简单的KV server基本流程22阶段实操(2):构建一个简单的KV server基本流程
期中测试
加餐|期中测试:来写一个简单的grep命令行加餐|期中测试:参考实现讲解
进阶篇
23类型系统:如何在实战中使用泛型编程?
24类型系统:如何在实战中使用Trait Object?
25类型系统:如何围绕Trait来设计和架构系统?
加餐|Rust2021版次问世了!
26阶段实操(3):构建一个简单的KV server高级 trait 技巧27生态系统:有哪些常有的Rust 库可以为我所用?
28网络开发(上):如何使用Rust处理网络请求?
29网络开发(下):如何使用Rust处理网络请求?
30 Unsafe Rust:如何用C+的方式打开 Rust? 31FFI:Rust 如何和你的语言架起沟通桥梁?
32实操项目:使用pyo3/neon 开发Python3/nodejs 模块
并发篇
33并发处理(上):从atomics 到Channel,Rust都提供 了什么工具?
34并发处理(下):从atomics 到Channel,Rust都提供 了什么工具?
35实操项目:如何实现一个简陋的MPSC channel?
用户故事|绝望之谷:改变从学习开始
36阶段实操(4):构建一个简单的KV server网络处理37阶段实操(5):构建一个简单的KV server网络安全38异步处理:Future是什么?它和async/await 是什么关系? 39异步处理:async/await内部是怎么实现的?
40异步处理:处理异步I0都有哪些方法?
41阶段实操(6):构建一个简单的KV server异步处理42阶段实操(7):构建一个简单的KV server如何做大的重构?
加餐|开悟之坡:业界都在用Rust 干些啥?
实战篇
43生产环境:真实世界下的一个Rust项目包含哪些要素?44数据处理:应用程序和数据如何打交道?
45阶段实操(8):构建一个简单的KV server配置/测试/监控/CI/CD
46软件架构:如何用Rust 架构复杂系统?
大咖助场|开悟之坡(上):Rust的现状、机遇与挑战
大咖助场|开悟之坡(下):Rust的现状、机遇与挑战用户故事|语言不仅是工具,还是思维方式
高级篇
加餐|代码即数据:为什么我们需要宏编程能力?加餐|宏编程(上):用最笨的方式撰写宏
加餐|宏编程(下):用 syn/quote 优雅地构建宏
结束语|永续之原:Rust 学习,如何持续精进?期末测试|来赴一场满分之约吧!
学习锦囊
特别策划|学习锦囊(一):听听课代表们怎么说
特别策划|学习锦囊(二):听听课代表们怎么说
特别策划|学习锦囊(三):听听课代表们怎么说
基础知识篇
首先通过 get hands dirty 小项目周,感性体验 Rust 语言的魅力,然后回归理性,结合第一性原理,深入浅出地探讨 Rust 变量的所有权和生命周期,以及对比几种主流的内存管理方式。之后围绕所有权和生命周期,来讨论 Rust 的几大语言特性:函数式编程特性、类型系统、泛型编程以及错误处理。
进阶篇
Pascal 之父,图灵奖得主尼古拉斯·沃斯有一个著名的公式:算法 + 数据结构 = 程序,想随心所欲地使用 Rust 为你的系统构建数据结构,深度掌握类型系统必不可少。
所以这个模块将重点介绍 trait、trait object、泛型、unsafe rust,最后还会讲到 FFI,让你用 Rust 为自己的主力语言在关键路径上提供更高的性能,或者引入 Rust 生态中特定的库。
并发篇
学会用最合适的工具解决最合适的问题很重要。这个模块将带你从底层的 atomics 一路向上,历经 Mutex、Semaphore、Channel,直至 actor model,探索不同的并发手段。你会深度了解到,其他语言中被奉为圭臬的并发手段,在 Rust 里,只不过是一种并发工具。
实战篇
单纯掌握语言特性,能应用这些特性写出解决一些小问题的代码,算是初窥门径,就像在游泳池里练习冲浪,想要真正把语言融会贯通,还要靠大风大浪中的磨炼。这个模块会带你学习如何把 Rust 应用在生产环境中,以及如何使用 Rust 的编程思想解决实际问题。
《陈天·Rust 编程第一课》课程目录
开篇词|让Rust 成为你的下一门主力语言
前置篇
01内存:值放堆上还是放栈上,《陈天 · Rust 编程第一课 - 掘金小册》PDF 下载 ePub 下载,这是一个问题
02串讲:编程开发中,那些你需要掌握的基本概念
加餐|这个专栏你可以怎么学,以及Rust是否值得学
基础篇
03初窥门径:从你的第一个Rust 程序开始!04 get hands dirty:来写个实用的 CLI小工具 05 get hands dirty:做一个图片服务器有多难? 06 get hands dirty:用SQL查询文本文件怎么一鱼多吃? 07所有权:值的生杀大权到底在谁手上?
08所有权:值的借用是如何工作的?
09所有权:一个值可以有多个所有者么?10生命周期:你创建的值究竟能活多久?
11内存管理:从创建到消亡,值都经历了什么?
加餐|愚昧之巅:常见问题汇总,为什么你的编译器总报错?12类型系统:Rust的类型系统有什么特点?
13类型系统:如何使用Trait 来定义接口?14类型系统:有哪些必须掌握的Trait?
15再探指针:它们竟然都是智能指针?
16数据结构:你真的了解集合容器么?
17数据结构:软件系统的核心部件哈希表
18闭包:FnOnce、FnMut 和Fn,为什么有这么多类型? 19阶段实操:构建一个简单的KV store(1)基本流程
20 4Steps:如何更好地阅读 Rust 源码?
21阶段实操(1):构建一个简单的KV server基本流程22阶段实操(2):构建一个简单的KV server基本流程
期中测试
加餐|期中测试:来写一个简单的grep命令行加餐|期中测试:参考实现讲解
进阶篇
23类型系统:如何在实战中使用泛型编程?
24类型系统:如何在实战中使用Trait Object?
25类型系统:如何围绕Trait来设计和架构系统?
加餐|Rust2021版次问世了!
26阶段实操(3):构建一个简单的KV server高级 trait 技巧27生态系统:有哪些常有的Rust 库可以为我所用?
28网络开发(上):如何使用Rust处理网络请求?
29网络开发(下):如何使用Rust处理网络请求?
30 Unsafe Rust:如何用C+的方式打开 Rust? 31FFI:Rust 如何和你的语言架起沟通桥梁?
32实操项目:使用pyo3/neon 开发Python3/nodejs 模块
并发篇
33并发处理(上):从atomics 到Channel,Rust都提供 了什么工具?
34并发处理(下):从atomics 到Channel,Rust都提供 了什么工具?
35实操项目:如何实现一个简陋的MPSC channel?
用户故事|绝望之谷:改变从学习开始
36阶段实操(4):构建一个简单的KV server网络处理37阶段实操(5):构建一个简单的KV server网络安全38异步处理:Future是什么?它和async/await 是什么关系? 39异步处理:async/await内部是怎么实现的?
40异步处理:处理异步I0都有哪些方法?
41阶段实操(6):构建一个简单的KV server异步处理42阶段实操(7):构建一个简单的KV server如何做大的重构?
加餐|开悟之坡:业界都在用Rust 干些啥?
实战篇
43生产环境:真实世界下的一个Rust项目包含哪些要素?44数据处理:应用程序和数据如何打交道?
45阶段实操(8):构建一个简单的KV server配置/测试/监控/CI/CD
46软件架构:如何用Rust 架构复杂系统?
大咖助场|开悟之坡(上):Rust的现状、机遇与挑战
大咖助场|开悟之坡(下):Rust的现状、机遇与挑战用户故事|语言不仅是工具,还是思维方式
高级篇
加餐|代码即数据:为什么我们需要宏编程能力?加餐|宏编程(上):用最笨的方式撰写宏
加餐|宏编程(下):用 syn/quote 优雅地构建宏
结束语|永续之原:Rust 学习,如何持续精进?期末测试|来赴一场满分之约吧!
学习锦囊
特别策划|学习锦囊(一):听听课代表们怎么说
特别策划|学习锦囊(二):听听课代表们怎么说
特别策划|学习锦囊(三):听听课代表们怎么说
下载地址 / Download