您现在的位置是:课程
周哥教IT.Rust精讲
2023-06-30 21:19课程 人已围观
周哥简介
周哥:男,真名周扬荣,毕业于中科院软件所。曾就职于阿里巴巴,奇虎360安全公司,SUN中国工程研究院,北大计算机研究所等,创办了“麦洛科菲”高端IT安全培训 。
课程内容介绍
Rust是一门革命性的编程语言,它拥有和C/C++同样的高性能,却又比C/C++安全。它既无GC机制,又不用手动释放内存,还不会有各种溢出漏洞,是C/C++,Go,Java等编程语言的直接竞争者。
目前包括亚马逊,GOOGLE,微软,脸书,字节跳动,阿里巴巴等在内的世界各大互联网公司都开始使用Rust来开发项目。AWS使用Rust开发云服务,Facebook 已开始使用 Rust,苹果、谷歌、Dropbox 和 Cloudflare 也已开始使用它。微软的云开发者代言人Ryan Levick在AllThingsOpen 虚拟会议上表示,微软正逐渐从C/C++改用Rust来构建其基础设施软件。微软还鼓励其他软件行业巨头考虑采取同样的做法。“PingCAP (TiDB 开源分布式关系型数据库)用 Rust ,字节跳动也一直在招 Rust 的人,阿里巴巴前一段上线了一个用 Rust 写的时序数据库替代 InfluxDB,“系统消耗对比低好几倍以上,另外查询性能也有很大改善”。B 站和知乎的后端组件里也有用 Rust 实现的。
目前使用Rust开发的知名产品包括:
Mozilla Firefox 浏览器,Gecko 浏览器;Tor 浏览器;
Discord(一款游戏聊天应用);
GNOME Fractal(一款即时消息客户端);
谷歌 Fuchsia 操作系统;
Redox OS;
Rocket Web Framework;
Servo(一款由 Mozilla 开发的网页浏览器排版引擎);
Terminus DB(一款数据库软件);
Libra(数字货币);
OpenDNS
Dropbox
Cloudflare
本课详细介绍了Rust编程的各个方面,除了Rust的基础语法,尤其重点介绍了Rust最具创新性的特性,比如:所有权,生命周期,无畏并发等等。还介绍了如何在Rust里与Mysql,redis进行交互,如何解析json数据等;最后还演示了一个基于Rust的实战项目web服务器开发与优化。课程大纲如下:
一,序言篇
1序言
1.1Rust简介
1.2Java, GO, Rust等对比
1.3企业使用Rust案例与Rust招聘
1.4RUST开发环境安装
二,基础语法篇
2Hello world编写与测试
3Hello world-调试
4Cargo使用
5Rust基础语法-变量与基本类型
6Rust基础语法-数据类型(2)
7Rust运算符
8.1语句(1)if
8.2语句(2)循环
8.3语句(3)
9.1函数(1)
9.2函数(2)
9.3函数(3):函数返回类型
9.4命令行参数
9.5函数(3):从不返回的 never type !
10结构体(1):定义与实例化
11结构体(2):方法
12.1枚举(1):定义
12.2枚举(2):Match与枚举结合
12.3枚举(3):标准库中的Option
13.1模块(1)二进制包
13.2模块拆分
13.3main.rs与lib.rs
13.4模块(2)库包
13.5mod(3):pub 模块,函数,结构体,枚举等
13.6mod(4):use
13.7mod(5):使用外部包
13.8模块(6):workspace工作空间
13.9发布到crates.io
14.1集合(1):vector动态数组
14.2集合(2):字符串
14.3集合(3):hashmap
15.1错误处理(1):panic
15.2错误处理(2):Result<T,E>
15.3panic! or result?
16文件IO
17各编程语言基础语法对比
三,高级语法篇
18.1泛型编程(1):函数泛型
18.2泛型编程(2):结构体泛型
18.3泛型编程(3):枚举泛型
18.4泛型编程(4):方法泛型
18.5泛型编程(5):单态化与性能分析
19.1Trait编程(1):定义与实现
19.2Trait编程(2):trait约束
19.3Trait编程(3):使用 trait bound 有条件地实现方法
19.4Trait编程(4):完全限定语法与消歧义
19.5Trait编程(5):孤儿规则(orphan rule)
20动态大小类型(dynamically sized types)DST
21.1面向对象(1):面向对象封装,继承
21.2面向对象(2):多态
21.3面向对象(3):trait对象动态分发与对象安全
22.1所有权(1):浅拷贝,移动move,深拷贝
22.2所有权(2):Copy Trait
22.3所有权(3):传参与返回值
22.4所有权(4):引用和借用
22.5所有权(5):&str字符串切片
23.1生命周期(1):借用检查器
23.2生命周期(2):函数中的泛型生命周期
23.3生命周期(3):结构体定义中的生命周期标注
23.4生命周期(4):生命周期省略
23.5生命周期(5):方法定义中的生命周期标注
23.6生命周期(6):静态生命周期
23.7生命周期(7):泛型参数、trait bounds 和生命周期
23.8生命周期(8):生命周期子类型
23.9生命周期(9):trait 对象生命周期的推断
23.10生命周期(10):匿名生命周期
23.11生命周期(11):swap函数实现分析
24.1函数式编程(1):闭包
24.2函数式编程(2):返回闭包
24.3函数式编程(3):迭代器
24.4函数式编程(4):实现 Iterator trait
24.5函数式编程(5):迭代器与循环性能分析
25.1智能指针(1):基本概念
25.2智能指针(2):Box
25.3智能指针(3):deref与drop
25.4智能指针(4):RC
25.5智能指针(5):Cell<T>
25.6智能指针(6):RefCell<T>
25.7智能指针(7):Rc和RefCell合用
25.8智能指针(8):循环引用
25.9智能指针(9):Weak
26.1并发编程(1):线程创建
26.2并发编程(2):消息传递与通道
26.3并发编程(3):数据共享与Mutex
26.4并发编程(4):send和sync
27.1不安全rust(1)裸指针和不安全函数
27.2不安全rust(2):安全抽象
27.3不安全rust(3):extern调用C函数
27.4不安全rust(4):静态变量和不安全trait
四,应用与实战篇
28Rust网络编程
29Rust数据库编程
30Rust json支持
31Rust 访问redis
32.1实战篇-web服务器(1)单线程版本
32.2实战篇-web服务器(2)多线程版本
32.3实战篇-web服务器(3)线程池版本
学员评价
勘误提示
1,序言部分
Rust对数组溢出的检测,不是在编译阶段完成的,而是在运行的时候通过运行时检测发现数组存在溢出然后直接panic。请参考后面课程关于数组的详细介绍。
如您在学习过程中发现任何“错误”,请通过email:10950150@告知我们错误所在的课程名称和错误所在视频的时间起始位置。错误一经我们确认,我们将会在该门课程的“课程概述”里提供“错误更正”信息,并对您表示衷心的感谢。
周哥:男,真名周扬荣,毕业于中科院软件所。曾就职于阿里巴巴,奇虎360安全公司,SUN中国工程研究院,北大计算机研究所等,创办了“麦洛科菲”高端IT安全培训 。
课程内容介绍
Rust是一门革命性的编程语言,它拥有和C/C++同样的高性能,却又比C/C++安全。它既无GC机制,又不用手动释放内存,还不会有各种溢出漏洞,是C/C++,Go,Java等编程语言的直接竞争者。
目前包括亚马逊,GOOGLE,微软,脸书,字节跳动,阿里巴巴等在内的世界各大互联网公司都开始使用Rust来开发项目。AWS使用Rust开发云服务,Facebook 已开始使用 Rust,苹果、谷歌、Dropbox 和 Cloudflare 也已开始使用它。微软的云开发者代言人Ryan Levick在AllThingsOpen 虚拟会议上表示,微软正逐渐从C/C++改用Rust来构建其基础设施软件。微软还鼓励其他软件行业巨头考虑采取同样的做法。“PingCAP (TiDB 开源分布式关系型数据库)用 Rust ,字节跳动也一直在招 Rust 的人,阿里巴巴前一段上线了一个用 Rust 写的时序数据库替代 InfluxDB,“系统消耗对比低好几倍以上,另外查询性能也有很大改善”。B 站和知乎的后端组件里也有用 Rust 实现的。
目前使用Rust开发的知名产品包括:
Mozilla Firefox 浏览器,Gecko 浏览器;Tor 浏览器;
Discord(一款游戏聊天应用);
GNOME Fractal(一款即时消息客户端);
谷歌 Fuchsia 操作系统;
Redox OS;
Rocket Web Framework;
Servo(一款由 Mozilla 开发的网页浏览器排版引擎);
Terminus DB(一款数据库软件);
Libra(数字货币);
OpenDNS
Dropbox
Cloudflare
本课详细介绍了Rust编程的各个方面,除了Rust的基础语法,尤其重点介绍了Rust最具创新性的特性,比如:所有权,生命周期,无畏并发等等。还介绍了如何在Rust里与Mysql,redis进行交互,如何解析json数据等;最后还演示了一个基于Rust的实战项目web服务器开发与优化。课程大纲如下:
一,序言篇
1序言
1.1Rust简介
1.2Java, GO, Rust等对比
1.3企业使用Rust案例与Rust招聘
1.4RUST开发环境安装
二,基础语法篇
2Hello world编写与测试
3Hello world-调试
4Cargo使用
5Rust基础语法-变量与基本类型
6Rust基础语法-数据类型(2)
7Rust运算符
8.1语句(1)if
8.2语句(2)循环
8.3语句(3)
9.1函数(1)
9.2函数(2)
9.3函数(3):函数返回类型
9.4命令行参数
9.5函数(3):从不返回的 never type !
10结构体(1):定义与实例化
11结构体(2):方法
12.1枚举(1):定义
12.2枚举(2):Match与枚举结合
12.3枚举(3):标准库中的Option
13.1模块(1)二进制包
13.2模块拆分
13.3main.rs与lib.rs
13.4模块(2)库包
13.5mod(3):pub 模块,函数,结构体,枚举等
13.6mod(4):use
13.7mod(5):使用外部包
13.8模块(6):workspace工作空间
13.9发布到crates.io
14.1集合(1):vector动态数组
14.2集合(2):字符串
14.3集合(3):hashmap
15.1错误处理(1):panic
15.2错误处理(2):Result<T,E>
15.3panic! or result?
16文件IO
17各编程语言基础语法对比
三,高级语法篇
18.1泛型编程(1):函数泛型
18.2泛型编程(2):结构体泛型
18.3泛型编程(3):枚举泛型
18.4泛型编程(4):方法泛型
18.5泛型编程(5):单态化与性能分析
19.1Trait编程(1):定义与实现
19.2Trait编程(2):trait约束
19.3Trait编程(3):使用 trait bound 有条件地实现方法
19.4Trait编程(4):完全限定语法与消歧义
19.5Trait编程(5):孤儿规则(orphan rule)
20动态大小类型(dynamically sized types)DST
21.1面向对象(1):面向对象封装,继承
21.2面向对象(2):多态
21.3面向对象(3):trait对象动态分发与对象安全
22.1所有权(1):浅拷贝,移动move,深拷贝
22.2所有权(2):Copy Trait
22.3所有权(3):传参与返回值
22.4所有权(4):引用和借用
22.5所有权(5):&str字符串切片
23.1生命周期(1):借用检查器
23.2生命周期(2):函数中的泛型生命周期
23.3生命周期(3):结构体定义中的生命周期标注
23.4生命周期(4):生命周期省略
23.5生命周期(5):方法定义中的生命周期标注
23.6生命周期(6):静态生命周期
23.7生命周期(7):泛型参数、trait bounds 和生命周期
23.8生命周期(8):生命周期子类型
23.9生命周期(9):trait 对象生命周期的推断
23.10生命周期(10):匿名生命周期
23.11生命周期(11):swap函数实现分析
24.1函数式编程(1):闭包
24.2函数式编程(2):返回闭包
24.3函数式编程(3):迭代器
24.4函数式编程(4):实现 Iterator trait
24.5函数式编程(5):迭代器与循环性能分析
25.1智能指针(1):基本概念
25.2智能指针(2):Box
25.3智能指针(3):deref与drop
25.4智能指针(4):RC
25.5智能指针(5):Cell<T>
25.6智能指针(6):RefCell<T>
25.7智能指针(7):Rc和RefCell合用
25.8智能指针(8):循环引用
25.9智能指针(9):Weak
26.1并发编程(1):线程创建
26.2并发编程(2):消息传递与通道
26.3并发编程(3):数据共享与Mutex
26.4并发编程(4):send和sync
27.1不安全rust(1)裸指针和不安全函数
27.2不安全rust(2):安全抽象
27.3不安全rust(3):extern调用C函数
27.4不安全rust(4):静态变量和不安全trait
四,应用与实战篇
28Rust网络编程
29Rust数据库编程
30Rust json支持
31Rust 访问redis
32.1实战篇-web服务器(1)单线程版本
32.2实战篇-web服务器(2)多线程版本
32.3实战篇-web服务器(3)线程池版本
学员评价
勘误提示
1,序言部分
Rust对数组溢出的检测,不是在编译阶段完成的,而是在运行的时候通过运行时检测发现数组存在溢出然后直接panic。请参考后面课程关于数组的详细介绍。
如您在学习过程中发现任何“错误”,请通过email:10950150@告知我们错误所在的课程名称和错误所在视频的时间起始位置。错误一经我们确认,我们将会在该门课程的“课程概述”里提供“错误更正”信息,并对您表示衷心的感谢。