當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 小林coding
[導(dǎo)讀]大家好,我是小林。在知乎看到一個(gè)問(wèn)題:為什么計(jì)算機(jī)專業(yè)的學(xué)生要學(xué)習(xí)使用Linux系統(tǒng)?在這里,也同步分享下我的想法。很簡(jiǎn)單,也很直接一個(gè)原因:很多互聯(lián)網(wǎng)大公司都有大量的服務(wù)器運(yùn)行在基于Linux的操作系統(tǒng)。因此,我們工作不可避免會(huì)接觸Linux系統(tǒng)。不過(guò),也要看崗位:后端開(kāi)發(fā)崗、...

大家好,我是小林。在知乎看到一個(gè)問(wèn)題:為什么計(jì)算機(jī)專業(yè)的學(xué)生要學(xué)習(xí)使用 Linux 系統(tǒng)?

在這里,也同步分享下我的想法。

很簡(jiǎn)單,也很直接一個(gè)原因:很多互聯(lián)網(wǎng)大公司都有大量的服務(wù)器運(yùn)行在基于 Linux 的操作系統(tǒng)。因此,我們工作不可避免會(huì)接觸 Linux 系統(tǒng)。

不過(guò),也要看崗位:

  • 后端開(kāi)發(fā)崗、運(yùn)維崗工作都會(huì)涉及 Linux 系統(tǒng);

  • 客戶端、前端開(kāi)發(fā)涉及就比較少;

之所以服務(wù)器選擇用 Linux 操作系統(tǒng),原因有很多:

  1. 自由開(kāi)源:Linux 操作系統(tǒng)完全免費(fèi)且可用作開(kāi)源軟件,通過(guò)開(kāi)源方式,您可以輕松查看用于創(chuàng)建 Linux 內(nèi)核的可用代碼,還可以修改代碼以修復(fù)任何錯(cuò)誤等。只要你做夠厲害,你完全可以按照自己的方式構(gòu)建和自定義服務(wù)器。這些是在 windows 上無(wú)法實(shí)現(xiàn)的。

  2. 穩(wěn)定性:在 windows 上,我們進(jìn)程看到系統(tǒng)崩潰或者卡死,但是在 Linux 上,這種情況發(fā)生的幾率極小,Linux 系統(tǒng)以其最終的穩(wěn)定性而聞名。

  3. 成本低:Linux 是免費(fèi)的,如果你想在其中一臺(tái)服務(wù)器上安裝 Windows,則需要支付激活費(fèi)用,這意味著你需要多花一筆錢。

  4. 操作方便:對(duì)于普通人來(lái)說(shuō),Windows 操作更為快捷,但是對(duì)計(jì)算機(jī)專業(yè)人士來(lái)講,Linux 操作比 Windows 快捷的多,幾條命令就可以執(zhí)行很多的操作。

接下來(lái),跟大家聊下 Linux 怎么學(xué)習(xí)?

Linux 學(xué)習(xí)主要有三個(gè)方向:

  • Linux 命令:Linux 系統(tǒng)都是命令式操作的,就是比如你要?jiǎng)?chuàng)建一個(gè)文件、查看一個(gè)文件、刪除一個(gè)文件等,都是需要輸入命令, 所以要熟練用起 Linux 系統(tǒng),命令的熟悉是必不可少的。

  • Linux 腳本:熟悉了基本 Linux 命令后,就可以去學(xué)習(xí) Linux 腳本,其實(shí)很簡(jiǎn)單,就是把各種命令寫在一個(gè)腳本文件里,執(zhí)行腳本的時(shí)候就會(huì)把所有命令執(zhí)行一遍,用于自動(dòng)部署一些項(xiàng)目。

  • Linux 編程(系統(tǒng)編程/網(wǎng)絡(luò)編程):如果走 C/C 開(kāi)發(fā),這一塊就需要學(xué)習(xí),因?yàn)?Linux 系統(tǒng)是由 C 語(yǔ)言開(kāi)發(fā)的,所以系統(tǒng)調(diào)用接口,都是 C 式編程開(kāi)發(fā)的。

我們可以在自己的 Windows 電腦裝一個(gè)虛擬機(jī),然后裝一個(gè) centos 或 ubuntu 發(fā)行版本的 Linux,網(wǎng)上的安裝資源很多的,自己搜一搜跟著搭建就行。有條件可以買一個(gè)云服務(wù)器,使用起來(lái)會(huì)更方便一些,因?yàn)橛泄W(wǎng) ip 地址,任何時(shí)候都可以遠(yuǎn)程登錄使用。

Linux 命令學(xué)習(xí)

我當(dāng)初學(xué)習(xí) Linux 命令的時(shí)候,看的是《鳥哥私房菜Linux基礎(chǔ)學(xué)習(xí)篇》,這本書講的還是很通俗易懂的。

對(duì)于初學(xué)者可以先掌握這些基本 Linux 命令:

  • 文件/文件夾的查看、創(chuàng)建、刪除、移動(dòng)、復(fù)制、修改權(quán)限;

  • 文件內(nèi)容的編輯、保存;

  • 系統(tǒng)內(nèi)存、硬盤、cpu、網(wǎng)絡(luò)流量的查看;

  • 軟件的安裝、刪除;

  • ….

Linux 腳本學(xué)習(xí)

Linux 腳本常用使用就是 bash 環(huán)境,腳本編程其實(shí)跟 C 語(yǔ)言編程類似,也有變量定義、函數(shù)聲明、控制語(yǔ)句,但是他不會(huì)很復(fù)雜,學(xué)起來(lái)還是很快的。

這里推薦阮一峰老師寫的 Bash 編程教程。

地址:https://wangdoc.com/bash/grammar.html

Linux 編程(系統(tǒng)編程/網(wǎng)絡(luò)編程)學(xué)習(xí)

Linux 系統(tǒng)編程,可以看《Linux 程序設(shè)計(jì)》這本書,學(xué) Linux 編程一定要在多敲代碼,并且在 Linux 跑起來(lái)。

接下來(lái)說(shuō)說(shuō)我學(xué) Linux 網(wǎng)絡(luò)編程的心得。

當(dāng)初在學(xué)網(wǎng)絡(luò)編程的時(shí)候,看見(jiàn)網(wǎng)上的人都說(shuō) UNP(Unix 網(wǎng)絡(luò)編程)、APUE(Unix 高級(jí)環(huán)境編程)這兩本書是網(wǎng)絡(luò)編程圣經(jīng)的書,那么好學(xué)的小林,那肯定毫無(wú)猶豫買了。

書到貨后,我瞬間就懵逼了,這兩本書是我買過(guò)最厚的書,這尼瑪怎么學(xué)?

跟著書本的節(jié)奏,學(xué)了一段的時(shí)間,是懂了些 Linux 網(wǎng)絡(luò)和系統(tǒng) API 的用法,摸索來(lái)摸索去都是各個(gè) API 的細(xì)節(jié),始終不知道高并發(fā)網(wǎng)絡(luò)框架是如何實(shí)現(xiàn)的。

后面我又重新找了一波關(guān)于網(wǎng)絡(luò)編程的書,找到了這兩本:《TCP/IP 網(wǎng)絡(luò)編程》和《Linux高性能服務(wù)器編程》。

  • 《TCP/IP 網(wǎng)絡(luò)編程》絕對(duì)是新手村級(jí)別的書,書里的內(nèi)容不會(huì)有過(guò)多的術(shù)語(yǔ),作者都用大白話來(lái)表達(dá),配圖也很清晰,也有介紹我想知道的網(wǎng)絡(luò)框架,雖然是比較基礎(chǔ)的多進(jìn)程服務(wù)端模型、多線程服務(wù)端模型、異步 IO 模型。而且最后一章實(shí)現(xiàn)了簡(jiǎn)單的 HTTP 服務(wù)端,讓我知道了從代碼角度是怎么解析 HTTP 報(bào)文的,以及狀態(tài)機(jī)是如何實(shí)現(xiàn)和運(yùn)轉(zhuǎn)的。

  • 《Linux高性能服務(wù)器編程》這本書主要是網(wǎng)絡(luò)框架為主,前幾章關(guān)于網(wǎng)絡(luò)基礎(chǔ)知識(shí)對(duì)于掌握了計(jì)算機(jī)網(wǎng)絡(luò)知識(shí)的同學(xué)可以直接跳過(guò)的,你看,很多知識(shí)是想通的,當(dāng)我們知道掌握了這塊知識(shí)后,在學(xué)習(xí)新一本書的時(shí)候,就可以跳過(guò)重疊的內(nèi)容。在這本書我學(xué)到了,Reactor、Proactor、信號(hào)、定時(shí)器、多進(jìn)程編程、多線程編程、進(jìn)程池和線程池等。
    這兩本書讓我大概知道了如果一個(gè)服務(wù)端要服務(wù)多個(gè)客戶端時(shí),不是就簡(jiǎn)單寫個(gè) socket 編程就完事,而是還要結(jié)合 IO 多路復(fù)用 多線程的思想,也就是 Reactor 的設(shè)計(jì)理念,知道了這些事情后,后面我在看很多開(kāi)源框架的網(wǎng)絡(luò)模型時(shí)候,發(fā)現(xiàn)大多數(shù)基于 Reactor 的思想來(lái)實(shí)現(xiàn)的。

有了網(wǎng)絡(luò)編程總體的視角后,在需要深入理解 socket api 中各種屬性設(shè)置(超時(shí)、非阻塞 IO、阻塞 IO 等)和異常處理就要回歸 APUE 這本書。

到這里我才知道 UNP 和 APUE 為什么會(huì)被稱為網(wǎng)絡(luò)編程圣經(jīng)級(jí)別的書,原因是書里各種細(xì)節(jié)和異常都寫的很全,也很細(xì)致,可以應(yīng)對(duì)工作中很多問(wèn)題。

但是事實(shí)證明,它并不是個(gè)入門級(jí)的書,所以 UNP 和 APUE 的用途比較像字典,在需要的時(shí)候去查閱就好。

最后,列一下,我自己看過(guò)和在豆瓣高分的 Linux 的書籍,給大家供個(gè)參考。

命令學(xué)習(xí)
  • 《鳥哥的Linux私房菜 : 基礎(chǔ)學(xué)習(xí)篇》,豆瓣評(píng)分9.1

系統(tǒng)編程
  • 《Linux程序設(shè)計(jì)》,豆瓣評(píng)分8.3

  • 《UNIX環(huán)境編程》,豆瓣評(píng)分9.4

網(wǎng)絡(luò)編程
  • 《TCP/IP網(wǎng)絡(luò)編程》韓國(guó)的,豆瓣評(píng)分8.6

  • 《Linux高性能服務(wù)器編程》,豆瓣評(píng)分7.9

  • 《Linux多線程服務(wù)端編程》,豆瓣評(píng)分8.8

  • 《UNIX網(wǎng)絡(luò)編程》,豆瓣評(píng)分9.5

內(nèi)核源碼
《Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)》,豆瓣評(píng)分8.6
《深入Linux內(nèi)核架構(gòu)》,豆瓣評(píng)分9.0


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉