背景
沉迷 LOL 十年,归来仍是白银 的经常翘课但毕业后有自己复习408专业课的血亏科班老东西,写过 vue,nodejs,python,C
(欢迎找我干活,可以为爱发电)
第一阶段做的事就是 90% 刷 rustlings,加上 10% 复习了下基础知识
rust
一言以蔽之,我永远喜欢 C 🌝🌝🌝🌝🌝🌚
安全诚可贵,自由价更高。但是为了完成训练营还是学习一下
类型太多要匹配,所有权转移,可变引用与不可变引用的限制
是耽误我最长时间的,机制理解但是感觉用起来就是很不方便。
参考资料
- 圣经: https://course.rs/basic/collections/vector.html
- 官方手册:https://doc.rust-lang.org/std/index.html
- 官方文档:https://doc.rust-lang.org/book/
圣经也就图一乐,真学rust还得 官方文档
,写代码神器:官方手册
官方文档:理解一些机制和基础用法,做 rustlings 里模块分类和调用方式、编译器参数 等题目时用到的
官方手册:各种类型包含的函数和用法,不会做了就翻一翻,在左边列表找一找,经常能有意想不到的收获
具体内容
对我有用的新学到的且值得值得记录的 主要是 Option 的几个方法
- as_mut() :&mut Option
-> Option<&mut T>. - as_ref() : &Option
-> Option<&T>. - as_deref_mut() : Option
(or &mut Option ) to Option<&mut T::Target>
前面题目里用到的时候只是按照提示修改,没有细究功能和用法,后面算法题才发现很好用
还有一些用起来不熟练或者还没用但感觉以后可能会有用的,具体用法等实践中再研究了
- Rc, Arc, Cell, RefCell
数据结构
包括 rustlings 里新加入了一些算法题,小复习了一下涉及到的 BST, heap 的内容,
其他 BFS, DFS, stack,queue,图,都太基本了没啥好说的,DFS 连边的类型都不用区分 =。=
建议下次提升到 912 难度😉(bushi)
加点 最短路径、KMP啥的 可以有🥺
二叉搜索树
Parent(i) = ( i-1 ) >> 1
LChild(i) = ( 1 + ( i << 1 )
RChild(i) = ( 1 + i ) << 1
完全二叉堆
- 用物理上的向量实现逻辑上的完全二叉树
- 维持偏序而非全序,即 val [i] <= val [Parent(i)]
操作
- 插入 + 上滤 O(lgn):只与 Parent 对比并直接互换
- 删除 + 下滤 O(lgn):用末节点填充根节点(维持结构性)+ swap(e, max(Lchild, Rchild)) (维持堆序性)
操作系统
当年就这门课学得最好,前几个月刷了下 《Three Easy Pieces》
,看一半发现还是 rCore指导书
最好,理论与实践相结合,讲解详细清晰,操作切实可行,跟着刷了两章
第一阶段用不上,剩下的等到第二阶段再补啦