我的第一個,10 萬
恭喜這個 B。。。。。。站上的 UP,上一期視頻播放量突破了 10 萬!這也是二哥人生當中的第一次,憑借單條視頻突破 10 萬播放,必須得紀念下。

從眾多的宮斗劇中我得出了一條寶貴的人生經(jīng)驗:“母憑子貴”。這條經(jīng)驗同樣適用于二哥本人,可能會因為這一期視頻,吹這輩子最多的牛逼:這不,榮獲嗶哩嗶哩第 3 周【校園優(yōu)秀獎&校園新星獎】。

我已經(jīng)按捺不住激動的心情,在兩萬人的朋友圈大肆炫耀了。十萬播放,對于百大 UP 來說,可能就是分分鐘的事,可對于我這個(未來的) B站百大來說,苦苦等了 149 天!!!!!!!
這真是一個漫長的日子,鬼知道這些天我經(jīng)歷了什么。
我一度懷疑自己到底適不適合拍視頻,表情的僵硬,普通話的塑料,甚至連自己一項引以為榮的臺本,都覺得拉胯。
可就因為這個視頻,讓我重獲新生,亢奮的心情一直在持續(xù)。我知道,一條視頻的播放突破 10 萬,并不意味著下一個視頻也會有 10 萬的播放,但好歹能讓我感到幸福會,至少可以“厚顏無恥”地再吹一次牛皮吧!
昨天的文章里,承諾新的一年 2022 年把肝重新交給大家,我就會說到做到:這年頭,職場就流行這個“沙雕”文化,你有沒有能力不重要,重要的是領導交代你的有沒有去執(zhí)行。
二哥打算豁出去了!
新一期視頻也上傳到 B 站了,希望能借英雄哥的吉言,再爆一次。鏈接我放這里了:
https://www.bilibili.com/video/BV1za411q79U/
三不三連沒關系,有關系的是不三連可能會對不起二哥的肝,所以還是三連吧,哈哈哈哈,瞧瞧我們這該死的生物鐘,起這么早。。。

接下來,上干貨,我把這期 10萬+ 播放的視頻臺本重新整理了一下,本來不想發(fā)的,很多小伙伴私信說二哥偏愛 B 站,同步都懶得同步了嗎?
這不,趕緊發(fā)到公眾號上來,希望學生黨們現(xiàn)在立刻馬上收藏起來,這個寒假你會過得非常充實;至于工作黨嘛,像二哥這樣的,既要工作,又要讀書寫作照顧家庭的,忙都忙死了,就算了吧!

啊,不,還是要稍微卷一卷吧,免得被那群還有半年就畢業(yè)的家伙們拍死在沙灘上。。。。
二哥的讀者當中有不少大學生,所以當知乎上刷到這個題目時:
“學校課程規(guī)劃的比較奇怪,大一上學期學c++,下學期學python,在寒假我是應該復習或預習課內內容(python,c++),還是自己對外拓展呢(c,數(shù)據(jù)結構)?”
立馬就沖上去答了一波。
就沖這份愛學習的決心,三年后絕對互聯(lián)網(wǎng)公司的 offer 拿到手軟!
講真,小伙伴學校安排的課程和我當年非常相似,也是大一上來就搞 Java,隔壁班上來就搞 C++,完全沒有安排 C語言來過渡下。
所以我的建議是,趁寒假打打王者上上分吧!

啊,不!趁寒假刷一波清華在 GitHub 上 20k+ star 的開源課程吧!
一、清華大學在 GitHub 上的開源課程
地址:https://github.com/PKUanonym/REKCARC-TSC-UHT

我來帶小伙伴們過一下清華的課程安排哈,主要是針對計算機專業(yè)的。
大一上的計算機基礎課程有:計算機科學導論、程序設計基礎
大一下有:面向對象程序設計基礎
大二上有:數(shù)據(jù)結構
大二下有:人工智能導論、計算機圖形學基礎、高性能計算導論
大三上有:計算機組成原理、計算機網(wǎng)絡原理、編譯原理、軟件工程、數(shù)據(jù)庫系統(tǒng)概論、人工神經(jīng)網(wǎng)絡、計算機網(wǎng)絡安全技術、人機交互理論與技術
大三下有:操作系統(tǒng)、計算機系統(tǒng)結構、機器學習概論、數(shù)據(jù)挖掘、搜索引擎技術基礎、存儲技術基礎、數(shù)據(jù)庫專題訓練、計算機網(wǎng)絡專題訓練。
大四主要是實踐、實習、畢設等,剩下的計算機課程主要有網(wǎng)絡安全工程與實踐、嵌入式系統(tǒng)。
可以看得出,大一大二基本上是在摸魚狀態(tài),大三突然開始發(fā)力,各種計算機基礎課程,非常瘋狂!
不過:
有志者事竟成,破釜沉舟,百二秦關終屬楚;
苦心人天不負,臥薪嘗膽,三千越甲可吞吳!
二、學習 C語言
推薦一本書,兩門視頻課。
書是電子書,書名叫《阮一峰的 C語言入門課》,我第一時間就拜讀了一遍,受益匪淺!可以說目前我見到的最好的 C語言入門教程了,沒有之一!國內的絕大多數(shù)高校,大一都會安排 C 語言這門課,阮一峰了老師的這份《C語言入門教程》,絕對是福音。
視頻課是浙江大學翁愷教授的,一門《C語言程序設計入門》,一門《C語言程序設計進階》。
學完這些,大家至少能學會下面這幅思維導圖中列出來的內容。

更多 C 語言的學習內容,可以戳下面這個鏈接,之前在公眾號上發(fā)過了,這里就不再復制粘貼了:
三、學習數(shù)據(jù)結構
什么是數(shù)據(jù)結構?
數(shù)據(jù)結構是一種具有一定邏輯關系,在計算機中應用某種存儲結構,并且封裝了相應操作的數(shù)據(jù)元素集合。它包含三方面的內容,邏輯關系、存儲關系及操作。不同種類的數(shù)據(jù)結構適合于不同種類的應用,而部分甚至專門用于特定的作業(yè)任務。例如,計算機網(wǎng)絡依賴于路由表運作,B 樹高度適用于數(shù)據(jù)庫的封裝。
菜鳥教程上對數(shù)據(jù)結構的定義我覺得還是蠻正式(官方)的,說人話就是,數(shù)據(jù)結構就是把一堆數(shù)據(jù),按照某種格式揉成一坨。
大家喜歡吃宮保雞丁嗎?
反正我挺喜歡這道菜的。我就以宮保雞丁為例,來講一講數(shù)據(jù)結構吧。維基百科上是這樣定義的。
宮保雞丁(英語:Kung Pao chicken或Kung-Pao Chicken),又稱宮爆雞丁,呈糊辣荔枝味,源于黔菜、流傳至魯而后成于川菜的一道川味名菜。貴州、山東和四川三地對這道菜的做法不完全一樣,稱呼也有差異。貴州稱為糊辣子雞丁,山東則名為醬爆雞丁,而四川是以宮保雞丁為名的。
來,抽象下宮保雞丁。
struct KungPaoChicken {
雞肉 = []
花生 = []
蔥段 = []
花椒 = []
辣椒 = []
}
這個結構體(struct 是 C 語言中的一個概念)就是一個自定義的數(shù)據(jù)結構,將很多不同的配料融合在了一起。對于計算機的數(shù)據(jù)結構來說,只不過是把這些配料換成了基本數(shù)據(jù)類型。
拿 Java 來舉例,基本的數(shù)據(jù)類型有 int、char、double 這些,復雜點的有 String(引用數(shù)據(jù)類型),底層是 char 型的數(shù)組,而那些自定義的類型不過是對基本數(shù)據(jù)類型和引用類型的封裝。
抽象完宮保雞丁再來抽象一下二哥吧。
class 二哥 {
int age = 18;
double 體重 = 65kg;
void eat(宮保雞丁) {
體重 += 1kg;
}
}
偽代碼不是很嚴謹哈,大家理解這個意思就行了。
說到底,數(shù)據(jù)結構不過是一種抽象后的封裝。像 Java,它之所以流行的一個很重要的原因,就是它提供了多種多樣的、方便開發(fā)者調用的數(shù)據(jù)結構,比如說對數(shù)組的封裝 ArrayList、對鏈表的封裝 LinkedList、對哈希表的封裝 HashMap、ConcurrentHashMap 等等。C 語言就沒有這些,想用的話,就得自己封裝。但 Java 和 C 語言的基本數(shù)據(jù)類型是一致的,int、float 這些都是相通的。
對于初學者來說,平常敲代碼都是直接去調用數(shù)據(jù)結構的,是很少去想這些數(shù)據(jù)結構是怎么實現(xiàn)的。
當一個初學者向高級程序員邁進的時候,就必須得靜下心來,去搞清楚 ArrayList 和 LinkedList 的內部實現(xiàn),搞清楚之后就會明白,之所以它們在增刪改查的時候性能上有差異,就是因為它們的內部使用了不同的數(shù)據(jù)結構所導致的。
有一說一,我在 2008 年剛學 Java 的那會,真的是不理解,為什么明明有了 ArrayList,Java 還要設計 LinkedList,不都是集合嘛!
害!
數(shù)據(jù)結構為什么這么重要?
我直接放大招吧,甩一段清華大學計算機系教授鄧俊輝老師話吧。
數(shù)據(jù)結構是計算機科學的關鍵內容,也是構建高效算法的必要基礎。其中涉及的知識,在相關專業(yè)的課程系統(tǒng)中始終處于核心位置。以 ACM/IEEE Computing Curricula(計算機教學大綱)為例,其中對于幾個相關專業(yè)(計算機科學、計算機工程、信息系統(tǒng)、信息技術、軟件工程)的共同要求中,數(shù)據(jù)結構與算法作為程序設計概念與技能的核心,緊隨在數(shù)學之后,排在第二位。
數(shù)據(jù)結構說復雜也不復雜,說簡單也不簡單,這不重要,重要的是必須得學!
有小伙伴可能會問,“我數(shù)學學的不好,學數(shù)據(jù)結構能學會嗎?”
說句實在話,數(shù)據(jù)結構和數(shù)學之間沒有必然的關系。我上小學的時候,參加過洛陽市的奧林匹克數(shù)學競賽,還得了三等獎(偷偷地加個粗);初中的時候,數(shù)學成績也一直保持得不錯,但上了高中之后,由于貪玩,數(shù)學成績一落千丈,成了瘸腿課。大學的時候對離散數(shù)學、微積分這些更是頭大。
但這并不妨礙我學習數(shù)據(jù)結構,真的。數(shù)據(jù)結構中,樹算是最難的一塊了,像數(shù)組、鏈表、棧、哈希表這些相對來說,計算機專業(yè)的,只要稍微下點功夫,都是能掌握的。
說了這么多,數(shù)據(jù)結構到底該怎么學呢?
如果你有 C/C++ 的底子,我給推薦兩本書。
第一本,《趣學數(shù)據(jù)結構》

說到這,多說一嘴。2018 年的時候,人民郵電出版社的張老師邀請我出一本 Java 方面的書,我當時想命名為《趣學 Java》。張老師說,剛好之前和陳小玉老師合作出了一本《趣學算法》的書,要不發(fā)一本你看看吧。
你別說,這本書還挺適合拿來作為算法的入門書呢。后來,陳小玉老師又出了一本新書,叫《趣學數(shù)據(jù)結構》,我看了,雖然離“趣”字有點距離,但很適合作為一門數(shù)據(jù)結構方面的入門書。
第二本,《數(shù)據(jù)結構(C++語言版)》

對,清華大學鄧俊輝教授編著的,豆瓣評分也蠻高的。這本書還配套了視頻課程,是免費的,可以在學堂在線上看,我之前也有推薦過。

課程質量木得說,算是國家級精品課了。大家有時間的話,一定要刷一遍。
視頻地址:https://www.xuetangx.com/course/THU08091000384/7755489
對了,還有浙江大學陳越姥姥的視頻課:
視頻地址:https://www.bilibili.com/video/BV1JW411i731
如果你有 Java 的底子,我也給推薦兩本書。
第一本,《數(shù)據(jù)結構與算法分析(Java 語言描述)》

雖然翻譯得不怎么樣,但內容很全面,適合拿來作為一本數(shù)據(jù)結構的入門書。
第二本,《算法(第 4 版)》

雖然名為算法,但大家都知道,算法是基于數(shù)據(jù)結構的,數(shù)組、隊列、棧、堆、二叉樹、哈希表等等,這些數(shù)據(jù)結構都講到了。
如果時間比較緊的話,C/C++ 程序員只看《數(shù)據(jù)結構(C++語言版)》就行了,Java 程序員只看《算法(第 4 版)》就行了。如果一遍沒看懂的話,再看一遍就好了。
有網(wǎng)友“三色院堇子的老公”說得好。
數(shù)據(jù)結構就是你已經(jīng)寫了幾百萬行,然后數(shù)據(jù)結構減到 90 萬行,性能還翻倍,嗯,終于學會了!
四、走心總結
2022 年 1 月份,很有必要開個好頭。
那么趁寒假刷一波清華在 GitHub 上的開源課程,還有 C語言和數(shù)據(jù)結構,寒假過后,絕壁是卷王中的卷王。
悄悄地告訴大家一聲,很多說放假了一定要打打游戲,一定要放松下,這些人都在悄悄地卷。
所以說,如果你是正在放松的那個,可要小心了!
不要一個寒假就被甩開了差距。
工作黨其實也一樣,適當放松,時刻警惕,該學的時候還是要能支棱起來。
以上,希望能幫助到大家!
沒有什么使我停留——除了目的,縱然岸旁有玫瑰、有綠蔭、有寧靜的港灣,我是不系之舟。
推薦閱讀:
