不廢話,直接上干貨。首先拿到某985院校的計(jì)算機(jī)科學(xué)與技術(shù)的培養(yǎng)方案。拿到最精確的信息,學(xué)最重要的知識(shí)點(diǎn)。
易道云出品
一、學(xué)習(xí)好一門(mén)編程語(yǔ)言
可以參考我這個(gè)回答,這個(gè)回答有理有據(jù),通過(guò)數(shù)據(jù)分析,用數(shù)據(jù)論證了如何選擇編程語(yǔ)言:https://www.bilibili.com/video/BV1T84y117e3/
二、學(xué)習(xí)網(wǎng)絡(luò)編程和網(wǎng)絡(luò)原理
目前的互聯(lián)網(wǎng)時(shí)代,程序基本上都離不開(kāi)網(wǎng)絡(luò),我個(gè)人覺(jué)得了解計(jì)算機(jī)網(wǎng)絡(luò)是必須的,在大學(xué)的課程中,基本上會(huì)開(kāi)設(shè)這門(mén)課。
不知道大家有沒(méi)有想過(guò),一臺(tái)計(jì)算機(jī)是怎么把數(shù)據(jù)發(fā)給另外的計(jì)算機(jī)的呢?我們可以把問(wèn)題再分解一下:
1、兩臺(tái)計(jì)算機(jī)完全沒(méi)有連接,怎么通信?
2、全世界有那么多計(jì)算機(jī),如何識(shí)別呢?---類(lèi)比到人類(lèi),用什么來(lái)識(shí)別你是一個(gè)真真正正存在的人?也就是說(shuō)如何識(shí)別那臺(tái)有特點(diǎn)的計(jì)算機(jī)呢?有人說(shuō)我們可以用 mac或者 IP 來(lái)唯一標(biāo)識(shí),可是,全世界那么多計(jì)算機(jī),有了這個(gè)IP,我們?nèi)绾尾樵?xún)呢?難道去遍歷嗎?
3、多個(gè)程序同時(shí)發(fā)消息給一臺(tái)計(jì)算機(jī),計(jì)算機(jī)是如何準(zhǔn)確把這些信息拿到,并分配給這些不同程序的呢?
4、如何處理丟失的信息?
如果說(shuō)大家把這幾點(diǎn)信息理解了,那么網(wǎng)絡(luò)編程的原理就能理解一大半了。在這里我只是舉個(gè)例子,具體我不展開(kāi)了。
關(guān)于推薦書(shū)籍大家一般都推薦《計(jì)算機(jī)網(wǎng)絡(luò):自頂向下》、《圖解http》這兩本,但我看了一下,術(shù)語(yǔ)太多,難理解,不適合初學(xué)者。
我覺(jué)得兩本就夠了,尹圣雨《TCP/IP網(wǎng)絡(luò)編程》韓國(guó)人寫(xiě)的,都是通過(guò)舉例子,寫(xiě)得非常好,大概一星期就能看完了;第二本就更好了,來(lái)自于游雙的《linux高性能服務(wù)器》,我就是看了這本書(shū)正式從嵌入式端轉(zhuǎn)為服務(wù)器開(kāi)發(fā)的。
具體怎么學(xué)?紙上學(xué)來(lái)終覺(jué)淺,絕知此事要躬行。我是把里面的demo代碼一個(gè)個(gè)敲完的,收獲非常大,強(qiáng)烈推薦。
三、學(xué)習(xí)操作系統(tǒng)原理
操作系統(tǒng)是真的難理解,所以要選擇一本好的教材是非常非常重要的,我強(qiáng)烈推薦一本寶藏書(shū)籍,叫做《操作系統(tǒng)哲學(xué)》。我個(gè)人建議不要去學(xué)那些網(wǎng)上推薦的什么《現(xiàn)代操作系統(tǒng)》、《操作系統(tǒng)—精髓與設(shè)計(jì)原理》、《深入理解計(jì)算機(jī)操作系統(tǒng)》,我看過(guò)目錄,用一個(gè)詞來(lái)形容就是:枯燥無(wú)味。當(dāng)我看了《操作系統(tǒng)哲學(xué)原理》之后,我真是太佩服這個(gè)作者了,能夠把如此索然無(wú)味的操作系統(tǒng)寫(xiě)得如此有趣。
易道云出品
不得不佩服這位大佬的智慧,吐血推薦。說(shuō)實(shí)話,在我畢業(yè)之前,我是完全不知道如何去理解操作系統(tǒng)。
四、學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法
數(shù)據(jù)結(jié)構(gòu)是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。數(shù)據(jù)結(jié)構(gòu)是一門(mén)研究非數(shù)值計(jì)算的程序設(shè)計(jì)問(wèn)題中的操作對(duì)象,以及它們之間的關(guān)系和操作等相關(guān)問(wèn)題的學(xué)科。那怎么學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)??
1、記憶,記住算法思想
我覺(jué)得這個(gè)是數(shù)據(jù)結(jié)構(gòu)與算法學(xué)習(xí)最基礎(chǔ)的部分。
學(xué)完之后,你至少得能給人說(shuō)明白,什么是”堆棧“,什么是”平衡二叉樹(shù)“等等等吧。我之所以說(shuō)”記住“,是希望這些能夠形成長(zhǎng)久記憶,存儲(chǔ)到你的”硬盤(pán)“里,而不僅僅在學(xué)習(xí)的時(shí)候過(guò)了一遍你的”內(nèi)存“。
例如,學(xué)習(xí)哈夫曼樹(shù)的時(shí)候。哈夫曼樹(shù)的定義:WPL(帶權(quán)路徑長(zhǎng)度)最小的二叉樹(shù);哈夫曼樹(shù)的特點(diǎn):(1)沒(méi)有度為1的結(jié)點(diǎn);(2)n個(gè)葉子結(jié)點(diǎn)的哈夫曼樹(shù)共有2n-1個(gè)結(jié)點(diǎn);(3)哈夫曼樹(shù)的任意非葉節(jié)點(diǎn)的左右子樹(shù)交換后仍是哈夫曼樹(shù)。關(guān)于”數(shù)據(jù)結(jié)構(gòu)“,需要記憶的內(nèi)容也需要自己在其中慢慢領(lǐng)悟。
至于”記住算法思想“,舉個(gè)例子,思考我們?nèi)绾螛?gòu)造一個(gè)”哈夫曼樹(shù)“。當(dāng)然,在知道它的定義后,我們可以自己去設(shè)計(jì)一個(gè)算法。如果,自己可以想出來(lái),恭喜你。如果自己沒(méi)想到,再看看先人的解決辦法后,不是僅僅“驚嘆”一聲,更要去記住它。我強(qiáng)調(diào)“記住”,并沒(méi)有死記硬背的意思,而是,很多東西的理解和創(chuàng)新都是以記憶為前提的。
2、練習(xí),用編程語(yǔ)言去實(shí)現(xiàn)某一數(shù)據(jù)結(jié)構(gòu)上的算法
因?yàn)槿说木τ邢?,千萬(wàn)不要貪多,只需要搞定那些常見(jiàn)的就行了,這就足以去搞定90%以上的公司,如果是算法崗位就當(dāng)我沒(méi)說(shuō),如果只是一個(gè)開(kāi)發(fā)崗位,那就只需要掌握最常用、最基礎(chǔ)的20個(gè)數(shù)據(jù)結(jié)構(gòu)與算法,學(xué)習(xí)他們的“來(lái)歷”、“特點(diǎn)”、“適合解決什么問(wèn)題”和“實(shí)際的應(yīng)用場(chǎng)景”。
數(shù)據(jù)結(jié)構(gòu):數(shù)組、鏈表、棧、隊(duì)列、散列表、二叉樹(shù)、堆、跳表、圖、Tire樹(shù)
算法:遞歸、排序、二分查找、搜索、哈希算法、貪心算法、分治算法、回溯算法、動(dòng)態(tài)規(guī)劃、字符串匹配算法。具體分為3個(gè)小步驟:
(1)邊學(xué)邊練,每周花 1~2 小時(shí)集中攻關(guān)一個(gè)數(shù)據(jù)結(jié)構(gòu)和算法,全部寫(xiě)出來(lái)。
(2) 多思考、多拓展、多理解,找到適合的方法去解決問(wèn)題。
(3)自我激勵(lì),每次學(xué)習(xí)完做一篇學(xué)習(xí)筆記。
吐血推薦書(shū)籍:程杰老師的《大話數(shù)據(jù)結(jié)構(gòu)》
易道云出品
五、學(xué)習(xí)設(shè)計(jì)模式
設(shè)計(jì)模式是在軟件工程實(shí)踐過(guò)程中,軟件開(kāi)發(fā)者們總結(jié)出的良好的編程方法,使用設(shè)計(jì)模式能夠增加系統(tǒng)的健壯性,易修改性和可擴(kuò)展性,當(dāng)你進(jìn)行開(kāi)發(fā)的軟件規(guī)模比較大的時(shí)候,良好的設(shè)計(jì)模式會(huì)給編程帶來(lái)便利,讓系統(tǒng)更加穩(wěn)定。
怎么學(xué)習(xí)設(shè)計(jì)模式??
1、記憶,記住典型案例
2、看一些開(kāi)源代碼,比如redis;
3、練習(xí),用編程語(yǔ)言去實(shí)現(xiàn)一些設(shè)計(jì)模式;
4、吐血推薦書(shū)籍:程杰老師的《大話設(shè)計(jì)模式》
易道云出品
非常非常好的設(shè)計(jì)模式的入門(mén)書(shū)?;旧弦舶衙總€(gè)設(shè)計(jì)模式講清楚了。國(guó)內(nèi)很多教材和教師講述專(zhuān)業(yè)知識(shí)都是很枯燥的,就因如此才把很多初學(xué)者拒之門(mén)外,讓一部分人喪失了學(xué)習(xí)興趣。而這本書(shū)則類(lèi)似于少數(shù)名師一樣,采用交互式及啟發(fā)式的講述方式,在不知不覺(jué)中向讀者傳授了知識(shí)。有些人傾向于像專(zhuān)業(yè)論文一般嚴(yán)謹(jǐn)?shù)谋硎龇绞剑绱艘詠?lái)在理解上就要多花一些工夫了。就目前而言,像這本書(shū)一樣,以大家所熟知的例子來(lái)描述問(wèn)題,步步深入,具有中國(guó)特色風(fēng)格的書(shū),才是我們更加需要的。把這些設(shè)計(jì)模式讀進(jìn)去了,那么你對(duì)編程的理解就會(huì)更上一層樓。