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

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

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

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

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

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

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

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

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

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

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

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

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