2021 個人年度小結

前言

因為不用考研,所以大四一整年可以自由自在地學習一直以來想學卻又沒時間去學的東西。快樂的大四時光總是顯得十分短暫,這篇博客主要用來總結過去一年所學的知識。

基礎類課程

計算機組成原理

上的是哈爾濱工業大學的慕課,講了計算機的幾個組成部分,包括CPU、存儲器、總線和 IO,上起來沒什麼新鮮感,和大二下的微機系統很像。

深入理解計算機系統

上的是 CMU15-213,《深入理解計算機系統》的兩位作者親自授課,第一次上國外網課,每集一個小時,體驗和每集 10 分鐘左右的慕課完全不同。這門課主要講解了計算機的信息表示方式(整數和浮點數)、x86-64 指令集、存儲器層次結構、鏈接、異常控制流、虛擬內存和並發編程,就像是大雜燴,把計算機中的很多知識都彙集到了一起,包括操作系統,但是又沒有把各個知識點講的很深入。

這門課有幾個小巧精緻的實驗,令人印象深刻的是彙編相關的實驗,包括拆炸彈和利用緩衝區溢出錯誤進行攻擊,光看書上的知識而不做這些實驗是沒有靈魂的,做了之後才能知道自己的掌握程度。

數據庫系統

上的是 CMU15-445,主講教師 Andy 的語速飛快,還好在知乎找到了老哥為愛發電的熟肉視頻😇,不然真就當場勸退。這門課講解的是磁盤數據庫,包括磁盤管理器、緩衝池管理器、索引、SQL 執行計劃、並發控制理論和錯誤恢復幾個部分。並發控制部分名詞太多了,沒怎麼聽懂(中間有 3 集是別人代課的),以後有時間再二刷吧。

配套一個 bustub 實驗,會讓你完成數據庫的幾個主要組件,因為要用 C++14 進行開發,所以為了完成實驗還複習了一周的《C++ Primer》,這門課可以說是十分硬核了,和實驗相關的博客匯總在 標籤 – CMU15445

操作系統

上的是南京大學蔣炎岩老師在疫情期間錄的網課,教材用的是《操作系統導論》,分成三個部分:虛擬化、並發和持久化,但是老師把並發放在了第一個講。虛擬化分為 CPU 的虛擬化和內存虛擬化,並發部分講了自旋鎖、互斥鎖、讀寫鎖、條件變量和信號量以及幾種協議,持久化講了 Windows 古老的 FAT 文件系統,和教材有較大的差異(推薦看教材上講的)。說實話,操作系統如果不敲代碼的話很快就忘了上課所講的東西,說的就是自己 😇

語言類課程

後端技術棧

MySQL

上的是動力節點老杜的 MySQL 課程,主要講解的是 SQL 語句的寫法,不包括觸發器這些,不過還是很推薦小白學習這麼課的,比如大四時候的我 😭

Java SE

去年剛開學就被隔離,隔離期間花了 10天 時間刷完了動力節點老杜的 Java SE 課程,前面有 178 集是重複的,建議從 179 集開始食用。

JDBC

上的也是動力節點老杜的課程,感覺這部分的知識還是挺舊的,學了 MyBatis 之後就沒用過了。

Servlet

上的是動力節點老楊的課,講解了互聯網通信模型和使用 Servlet 和 JSP 進行 Web 開發的方式。這老師天天開車,還舉了一個香蕉應該橫着吃還是豎著吃的例子,記憶猶新🥵

Spring 全家桶

上的是動力節點王鶴老師的 Spring 系列課程以及尚硅谷雷豐陽老師的 SpringBoot 源碼解讀,前者是應用類的,後者則是原理類的(所以會有些枯燥)。先是學了 Spring,包括 IOC 和 AOP 的思想,然後是持久層的 MyBatis,接着是用於 Web 開發的 SpringMVC 框架,三個框架加起來好幾個配置文件,做起項目來簡直是配置地獄。還好有 SpringBoot,把配置濃縮到一個文件中,使用註解進行開發就是香啊。

但是寫了一段時間之後發現平時用 Spring 全家桶也都是寫 CRUD 的接口,發請求啥的還是用 Python 的 requests 方便啊。

Redis

上的是尚硅谷王澤老師的 Redis6 課程,主要講了 Redis 語句的寫法、事務和鎖和主從複製,印象不是很深,上了個寂寞系列,開發中直接把工具類拿來就用了~~

JVM

剛開始看的是周志明老師的《深入理解Java虛擬機》,看了三章之後實在是太枯燥無聊了,所以上了尚硅谷宋紅康老師的 JVM 課程,主要有三個篇章:內存與垃圾回收篇、類加載器篇以及性能監控與調優篇,極力推薦這門網課!如果你只看了網上的博客或者一些過時的網課可能會告訴你類對象和字符串常量池是放在方法區(Java8 開始稱作元空間)中的,但實際上是放在堆裏面的,如果沒學過這門課光看帖子很容易被誤導。

JUC

上的是尚硅谷周陽老師的 JUC 課程,主要講解了 CompletableFuture、並發中的各種「鎖」事、多線程中斷機制、Java 內存模型、CAS 原理、LockSupport 原理、ThreadLocal 技術、synchronized 鎖升級以及最重要的抽象同步隊列 AQS 原理。周陽老師會講解源代碼,並且一步步地進行源碼拆分、調試和講解,十分清晰,這不比《Java 並發編程之美》燃?

前端技術棧

HTML、CSS 和 JS

這些其實大二和大三的時候就有接觸過一些,主要是寫爬蟲用到了。JavaScript 是大三看《JavaScript高級程序設計(第4版)》 學的,紅寶書又大又全,和《C++ Primer》 屬於同一個級別的書籍,感覺不太適合入門,所以看了一段時間後就忘了😭 大四寒假又看了尚硅谷的 JS 課程才回憶起來。

Vue

上的是尚硅谷張天禹老師的 Vue 2 + Vue 3 全家桶課程,老師說話又好聽,而且沒有一開始就用腳手架進行教學,符合小白認知過程,課程內容可以覆蓋 Vue 中的方方面面,推薦食用!

後記

驀然回首,發現過去一年還是學了不少東西,上課時間外不是在敲代碼就是在敲代碼的路上,但是有得必有失,敲了一年代碼發現微積分和線性代數以及自己的專業課都忘光了,明天開學又得把大一到大三的知識複習一遍,以上 😇