死磕 Linux !
時(shí)間:2021-12-07 15:43:18
手機(jī)看文章
掃描二維碼
隨時(shí)隨地手機(jī)看文章
[導(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ò),也要看崗位:
《深入Linux內(nèi)核架構(gòu)》,豆瓣評(píng)分9.0
- 后端開(kāi)發(fā)崗、運(yùn)維崗工作都會(huì)涉及 Linux 系統(tǒng);
- 客戶端、前端開(kāi)發(fā)涉及就比較少;
- 自由開(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)的。
- 穩(wěn)定性:在 windows 上,我們進(jìn)程看到系統(tǒng)崩潰或者卡死,但是在 Linux 上,這種情況發(fā)生的幾率極小,Linux 系統(tǒng)以其最終的穩(wěn)定性而聞名。
- 成本低:Linux 是免費(fèi)的,如果你想在其中一臺(tái)服務(wù)器上安裝 Windows,則需要支付激活費(fèi)用,這意味著你需要多花一筆錢。
- 操作方便:對(duì)于普通人來(lái)說(shuō),Windows 操作更為快捷,但是對(duì)計(jì)算機(jī)專業(yè)人士來(lái)講,Linux 操作比 Windows 快捷的多,幾條命令就可以執(zhí)行很多的操作。
- 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ā)的。
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.htmlLinux 編程(系統(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)的。
命令學(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