陈天 · Rust 编程第一课

陈天 · Rust 编程第一课 / 实战驱动,快速上手 Rust

陈天
Tubi TV 研发副总裁
  • 课程目录
  • 课程介绍
  • 在线阅读:开篇词|让Rust成为你的下一门主力语言

    从入门到放弃?精准学习+刻意练习,陈天带你轻松掌握Rust!

  • 01|内存:值放堆上还是放栈上,这是一个问题

    深挖堆栈设计原理,真正搞懂内存管理规则。

  • 02|串讲:编程开发中,那些你需要掌握的基本概念

    一文梳理:值/类型/指针/引用/函数/方法/闭包/接口/虚表/并发并行/同步异步/泛型

  • 加餐|这个专栏你可以怎么学,以及Rust是否值得学?

    都说 Rust 好,但是就是入门难,所以它真的值得你花精力学习吗?

  • 03|初窥门径:从你的第一个Rust程序开始!

    动起手来,从写你的第一个Rust程序开始,从做中学!

  • 04|get hands dirty:来写个实用的CLI小工具

    来玩个新花样!看看你能用 Rust 写个小工具不?

  • 05|get hands dirty:做一个图片服务器有多难?

    挑战继续,今天来用 Rust 写一个图片服务器。

  • 06|get hands dirty:SQL查询工具怎么一鱼多吃?

    写个硬核SQL工具,快来围观什么叫优美的代码。

  • 07|所有权:值的生杀大权到底在谁手上?

    为什么 Rust 编译总报错?你需要搞懂所有权问题

  • 08|所有权:值的借用是如何工作的?

    不想move又不能copy?如何使用borrow语义解决所有权问题

  • 09|所有权:一个值可以有多个所有者么?

    想要一个值有多个所有者,怎么办?

  • 10|生命周期:你创建的值究竟能活多久?

    Rust编译器到底是怎么判断生命周期的?

  • 11|内存管理:从创建到消亡,值都经历了什么?

    从一个值的奇幻之旅看,Rust的内存管理都做了什么?

  • 加餐|愚昧之巅:你的Rust学习常见问题汇总

    在学习Rust的过程中你经常被报错什么?来交流一波

  • 12|类型系统:Rust的类型系统有什么特点?

    Rust 类型系统的检查到底有多严格?

  • 13|类型系统:如何使用trait来定义接口?

    trait是啥?能干什么?什么时候用?

  • 14|类型系统:有哪些必须掌握的trait?

    trait 到底做到了什么?延迟绑定了实现行为。

  • 15|数据结构:这些浓眉大眼的结构竟然都是智能指针?

    智能指针Box<T>、Cow<'a, B>、MutexGuard<T>

  • 16|数据结构:Vec<T>、&[T]、Box<[T]> ,你真的了解集合容器么?

    切片实现了不同数据结构之上的抽象。

  • 17|数据结构:软件系统核心部件哈希表,内存如何布局?

    我们程序员学东西,会用是第一层,知道它是如何设计的是第二层,什么才是第三层呢?

  • 18|错误处理:为什么Rust的错误处理与众不同?

    集百家之长的Rust错误处理,都做到了什么?

  • 19|闭包:FnOnce、FnMut和Fn,为什么有这么多类型?

    Rust闭包的调用效率和函数调用几乎一致?

  • 20|4 Steps :如何更好地阅读Rust源码?

    到底为啥要读源码?怎么读源码?

  • 21|阶段实操(1):构建一个简单的KV server-基本流程

    好的实现应该是谋定而后动。

  • 22|阶段实操(2):构建一个简单的KV server-基本流程

    构建接口来消弭不稳定的因素,代码和测试可以围绕着接口螺旋前进。

  • 加餐|期中测试:来写一个简单的grep命令行

    考察你的学习效果,找准进步方向。

  • 加餐|期中测试:参考实现讲解

    期中测试你完成得怎么样啦?

  • 23|类型系统:如何在实战中使用泛型编程?

    架构师的工作不是作出决策,而是尽可能久地推迟决策。

  • 24|类型系统:如何在实战中使用trait object?

    什么时候用 trait?什么时候用 trait object?

  • 25|类型系统:如何围绕trait来设计和架构系统?

    trait!trait?trait!

  • 加餐|Rust2021版次问世了!

    Rust2021更新啦!搞这么大动静,就这?

  • 26|阶段实操(3):构建一个简单的KV server-高级trait技巧

    为什么你会觉得泛型难学?是因为……

  • 27|生态系统:有哪些常有的Rust库可以为我所用?

    你对Rust生态系统了解地如何?

  • 28|网络开发(上):如何使用Rust处理网络请求?

    怎么用 std::net 和 tokio 库做网络开发?

  • 29|网络开发(下):如何使用Rust处理网络请求?

    做网络开发要注意的四个核心问题是啥?

  • 30|Unsafe Rust:如何用C++的方式打开Rust?

    我们要知道 Rust 的阴暗面(unsafe rust),才更容易守得住它光明的那一面(safe rust)。

  • 31|FFI:Rust如何和你的语言架起沟通桥梁?

    怎么用FFI实现 Rust 的“一次撰写,到处调用”?

  • 32|实操项目:使用PyO3开发Python3模块

    怎么用Rust写一个Python 的可以内嵌在程序中的搜索引擎。

  • 33|并发处理(上):从atomics到Channel,Rust都提供了什么工具?

    你的并发异步篇已送达,请注意签收噢……

  • 34|并发处理(下):从atomics到Channel,Rust都提供了什么工具?

    你的并发工具箱:Atomic、Mutex、RwLock、Semaphore、Condvar、Channel、Actor

  • 35|实操项目:如何实现一个基本的MPSC channel?

    1需求、2测试、3接口和数据结构,新实战,新玩法,欢迎挑战~

  • 用户故事|绝望之谷:改变从学习开始

    学习 Rust 一定是一场漫长的旅途,大家并肩前行,终将抵达终点。

  • 36|阶段实操(4):构建一个简单的KV server-网络处理

    做网络开发的时候,要尽可能把实现逻辑和 IO 分离。

  • 37|阶段实操(5):构建一个简单的KV server-网络安全

    从 TcpStream 到 TlsStream,需要几步?

  • 38|异步处理:Future是什么?它和async/await是什么关系?

    tokio 如何通过 executor 和 reactor 共同作用,完成 Future 的调度、执行、阻塞、唤醒的循环。

  • 39|异步处理:async/await内部是怎么实现的?

    async/await 这样漂亮的接口之下会产生什么样子的代码?

  • 40|异步处理:如何处理异步IO?

    和异步 IO 相关的 Stream / Sink trait,以及和异步读写相关的 AsyncRead / AsyncWrite 等 trait

  • 41|阶段实操(6):构建一个简单的KV server-异步处理

    在单元测试的自然环境中,好的代码是在良性的重构中不断演进出来的。

  • 42|阶段实操(7):构建一个简单的KV server-如何做大的重构?

    当一个项目越来越复杂,且新加的功能并不能很好地融入已有的系统时,大的重构是不可避免的。

  • 43|生产环境:真实世界下的一个Rust项目包含哪些要素?

    在实际项目中,我们除了需要关注构建,还有测量和学习的完整开发流程。

  • 44|数据处理:应用程序和数据如何打交道?

    如何使用 Rust 处理存放在关系数据库中的结构化数据?如何存放在文件系统中的半结构化数据?

  • 45|阶段实操(8):构建一个简单的KV server-配置/测试/监控/CI/CD

    你终于来到了KV server系列的终章,为自己的成就鼓掌!

  • 46|软件架构:如何用Rust架构复杂系统?

    架构是一个复杂的东西,它充满了权衡。

  • 大咖助场|开悟之坡(上):Rust的现状、机遇与挑战

    2021 年也马上要过去了,盘点 Rust 语言的现状、机遇和挑战。

  • 大咖助场|开悟之坡(下):Rust的现状、机遇与挑战

    2021 年也马上要过去了,盘点 Rust 语言的现状、机遇和挑战。

  • 用户故事|语言不仅是工具,还是思维方式

    跟你聊一聊我对编程语言、思维、工具和Rust的理解。

  • 加餐|代码即数据:为什么我们需要宏编程能力?

    宏是什么?可以用来做什么?你真的需要宏吗?

  • 加餐|宏编程(上):用最“笨”的方式撰写宏

    来撰写一个声明宏 my_vec! 和一个派生宏 RawBuilder,理解清楚宏做数据转换的方法。

  • 加餐|宏编程(下):用 syn/quote 优雅地构建宏

    我们要把宏编程作为撰写代码最后的手段。当一个功能可以用函数表达时,不要用宏。不要过分迷信于编译时的处理,不要把它当成提高性能的手段。

  • 结束语|永续之原:Rust学习,如何持续精进?

    有哪些学习,你能终身受益?

  • 期末测试|来赴一场满分之约!

    特别给你准备了一套Rust结课测试题,快来挑战一下吧!

  • 特别策划|学习锦囊(一):听听课代表们怎么说

    你的Rust专栏学习锦囊请查收

  • 特别策划|学习锦囊(二):听听课代表们怎么说

    写代码99%都是熟练工,没有捷径,也不需要天赋,有高中的数理逻辑就可以。行业内,只有1%的人能做mathematical programming,成为这1%的人,才需要谈天赋。

  • 特别策划|学习锦囊(三):听听课代表们怎么说

    在学习新知识的过程中,谁也不能一次性把知识点吃透,都是在不断重复之前的知识,然后加上自己的思考,在这个过程中不断汲取,内化为自己的知识。

618 狂欢 | 课程专属口令


你将获得

  • 系统高效的 Rust 学习路径
  • 攻克 Rust 编程十大难点
  • 即学即练,Rust 四大项目实战
  • 200+原理图,详解 Rust 设计理念

讲师介绍

  • 用 C 和汇编打造过各种网络协议,维护过在网络安全领域非常知名的嵌入式操作系统 ScreenOS;
  • 用 Python/JavaScript 撰写过曾经的创业项目途客圈;
  • 用 Node.js/Elixir 打造过 TubiTV 高并发的后端核心;
  • 用 Elixir 打造过区块链框架 Forge;
  • 也研究过 Haskell/F#、Clojure/Racket、Swift、Golang 和 C# 等其他语言。

课程介绍

Rust 集表达力、高性能、内存安全于一身,在 1.0 版本发布后不久,口碑就一路高飞猛进,从 16 年起,连续 6 年成为 Stack Overflow 用户评选出来的最受喜爱的语言(2021/3/15评选结果)。

近几年,国外很多厂商宣布用 Rust 重写自己的技术栈,国内也有用 Rust 重写后端中间件的趋势。在可预见的未来,Rust 或在大多数领域代替 C/C++,甚至 Java/Golang,成为开发者的主力语言。

但是,Rust 对初学者似乎并不友好,被公认难入门,学习曲线相当陡峭。

比如变量的所有权和生命周期,作为 Rust 的创新概念,是其他编程语言都未涉及的领域。除此之外,不同语言背景,学习也各有难点:

  • C 开发者,难点是类型系统和泛型编程;
  • C++ 开发者,难点主要在类型系统;
  • Python/Ruby/JavaScript 开发者,难点在并发处理、类型系统及泛型编程;
  • Golang 开发者,难点在类型系统和泛型编程;
  • Java 开发者,难点在异步处理和并发安全的理解上。

该如何跨越这些门槛,不断攀登新高峰呢?

为此,我们邀请到 Rust 专家陈天老师,结合其十八年深度使用多种语言的经验,以先行者的身份输出学习心法,从新手命令行到项目落地,带你知识与实战两手抓,真正掌握 Rust 的概念本质和设计理念,把 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 的编程思想解决实际问题。


课程目录


适合人群

掌握任何一门编程语言即可。


特别放送

免费领取福利


限时活动推荐


订阅须知

教程推荐

Kotlin在线教程

Matplotlib在线教程

SQLite在线教程

CSS在线教程

Pandas在线教程

Swift5在线教程

随机推荐

FOOJO自粘墙贴自粘墙纸质量靠谱吗,评测质量好不好

JBLBAR9.1功能真的不好吗,评测结果不看后悔

京东京造计数俯卧撑板应该怎么样选择,评测报告来了!

喜迎门麻将机全自动麻将机家用餐桌两用麻将桌评测质量怎么样!哪...

华光手持蒸汽挂烫机评测哪款质量更好,全方位评测分享!

华为GT2手表男款智能手表watch2运动电话手表官方要注意哪些质量...