www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 小林coding
[導(dǎo)讀]不管是后端開(kāi)發(fā)還是前端開(kāi)發(fā),說(shuō)到底我們所有的軟件開(kāi)發(fā)都是在計(jì)算上編寫(xiě)程序,雖然對(duì)于大部分人來(lái)說(shuō),真正開(kāi)始寫(xiě)代碼的時(shí)候很少會(huì)讓你去解決計(jì)算機(jī)底層的問(wèn)題,不接觸不代表不重要,計(jì)算機(jī)基礎(chǔ)是最重要的。

話(huà)不多說(shuō),直接上剛畫(huà)完的「后端技術(shù)學(xué)習(xí)路線(xiàn)」思維導(dǎo)圖框架:

圖中的每一個(gè)節(jié)點(diǎn)都可以點(diǎn)開(kāi),我都做了細(xì)分,在后面章節(jié)逐個(gè)展開(kāi)介紹。


計(jì)算機(jī)基礎(chǔ)

不管是后端開(kāi)發(fā)還是前端開(kāi)發(fā),說(shuō)到底我們所有的軟件開(kāi)發(fā)都是在計(jì)算上編寫(xiě)程序,雖然對(duì)于大部分人來(lái)說(shuō),真正開(kāi)始寫(xiě)代碼的時(shí)候很少會(huì)讓你去解決計(jì)算機(jī)底層的問(wèn)題,不接觸不代表不重要,計(jì)算機(jī)基礎(chǔ)是最重要的。

后端開(kāi)發(fā)工作中經(jīng)常用到 Java、C++、Python、Golang 這些語(yǔ)言稱(chēng)為高級(jí)編程語(yǔ)言,稱(chēng)為高級(jí)是它們接近我們?nèi)粘=涣鞯淖匀徽Z(yǔ)言,離計(jì)算機(jī)底層遠(yuǎn),但所有的高級(jí)語(yǔ)言最終都會(huì)轉(zhuǎn)化成匯編->計(jì)算機(jī)指令->控制流操控計(jì)算機(jī)硬件,所以學(xué)習(xí)計(jì)算機(jī)構(gòu)成和工作原理、操作系統(tǒng)這些基礎(chǔ)知識(shí),能夠加深我們隊(duì)高級(jí)語(yǔ)言的理解。

那我們一直說(shuō)的計(jì)算機(jī)基礎(chǔ)到時(shí)是什么?計(jì)算機(jī)科學(xué)技術(shù) CS(Computer Science)作為一門(mén)專(zhuān)業(yè)課程,就和其他工科課程一樣有自己的理論體系,如果你是計(jì)算機(jī)專(zhuān)業(yè)的同學(xué)不用我來(lái)教該學(xué)什么,計(jì)算機(jī)專(zhuān)業(yè)大學(xué)四年學(xué)校教的那些就是基礎(chǔ),別小看你在學(xué)校學(xué)的那些看起來(lái)沒(méi)啥用的課程。我這有一份中中科大的計(jì)算機(jī)技術(shù)本科主要課程結(jié)構(gòu)安排

一流大學(xué)的計(jì)算機(jī)專(zhuān)業(yè)要學(xué)什么可以對(duì)照著看下,從學(xué)科數(shù)學(xué)理論基礎(chǔ)、計(jì)算機(jī)體系結(jié)構(gòu)、軟件工程方法等等維度展開(kāi)。

那如果你不是計(jì)算機(jī)相關(guān)專(zhuān)業(yè)的想轉(zhuǎn)行,也不要被嚇到了,畢竟這是人家四年時(shí)間的學(xué)習(xí)內(nèi)容,本科的培養(yǎng)目標(biāo)不僅僅是培養(yǎng)出一個(gè)軟件工程師,本科學(xué)習(xí)還是面向碩士博士的基礎(chǔ)培養(yǎng),注意是計(jì)算機(jī)科學(xué)專(zhuān)業(yè),名字里有個(gè)詞叫「科學(xué)」,我這篇文章要說(shuō)的 BAT 公司后臺(tái)軟件開(kāi)發(fā),可以認(rèn)為是「工學(xué)」方向,更多的是服務(wù)于工程開(kāi)發(fā)。

如果只是面向后臺(tái)開(kāi)發(fā)和工作面試,或者你是非計(jì)算機(jī)專(zhuān)業(yè)想轉(zhuǎn)行,社畜沒(méi)有太多時(shí)間去學(xué)習(xí)大學(xué)那些理論課程,那幫我把計(jì)算機(jī)基礎(chǔ)的范圍縮小到下面這 4 門(mén)專(zhuān)業(yè)課:計(jì)算機(jī)組成原理、計(jì)算機(jī)網(wǎng)路、操作系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)

計(jì)算機(jī)組成原理

這門(mén)課程讓你了解計(jì)算機(jī)的組成和工作原理,要學(xué)習(xí)的內(nèi)容包括:

  • 數(shù)據(jù)在計(jì)算機(jī)中的表示和運(yùn)算(計(jì)算機(jī)不識(shí)數(shù),只認(rèn)得高低電平,所以數(shù)據(jù)在計(jì)算機(jī)內(nèi)部都用二進(jìn)制的0和1表示)

  • 存儲(chǔ)系統(tǒng)(數(shù)據(jù)和程序指令都要存儲(chǔ)下來(lái),學(xué)習(xí)計(jì)算機(jī)的存儲(chǔ)層次,內(nèi)存、外存、高速緩存、虛擬存儲(chǔ)技術(shù))

  • 指令系統(tǒng)(寫(xiě)的代碼最終都要被翻譯成計(jì)算機(jī)指令,指令格式和尋址方式有多種,控制器來(lái)控制指令執(zhí)行)

  • 中央處理器(也就是 CPU 計(jì)算機(jī)的大腦,主要構(gòu)成是運(yùn)算器和控制器)

  • 總線(xiàn)(計(jì)算機(jī)的血管動(dòng)脈,連接計(jì)算機(jī)各功能組件,用來(lái)傳輸數(shù)據(jù)、地址信號(hào)、控制信號(hào))

  • 輸入輸出系統(tǒng)(Input/Output 也叫 IO 系統(tǒng),連接和管理各種外部設(shè)備比如鍵盤(pán)、顯示器等等)

計(jì)算機(jī)網(wǎng)絡(luò)

世界上第一臺(tái)通用計(jì)算機(jī)「ENIAC」于 1946 被發(fā)明出來(lái),如其名字一樣僅僅是用于計(jì)算,在后來(lái)計(jì)算機(jī)越來(lái)越多,如果沒(méi)有網(wǎng)絡(luò)每臺(tái)計(jì)算機(jī)都將成為一個(gè)孤島,也不會(huì)有現(xiàn)在互聯(lián)網(wǎng)的繁榮,「計(jì)算機(jī)網(wǎng)絡(luò)」這門(mén)課程的學(xué)習(xí)路線(xiàn)非常清晰,就是圍繞著如何讓地理位置上不同的計(jì)算機(jī)連接起來(lái),并高效可靠的交換數(shù)據(jù)信息,實(shí)現(xiàn)人在家中做,天下事盡知。

計(jì)算機(jī)網(wǎng)絡(luò)有分層次,根據(jù)各層屬性和特點(diǎn),分為:

  • 物理層

  • 數(shù)據(jù)鏈路層

  • 網(wǎng)絡(luò)層

  • 傳輸層

  • 應(yīng)用層

這個(gè)層次劃分從上到下就是一個(gè)網(wǎng)絡(luò)數(shù)據(jù)包的接收路徑,反之就是發(fā)送路徑。既然要交換信息肯定得商量一套通用的協(xié)議,就像我們和老外交流,要么他們學(xué)中文要么我們學(xué)英文,反正得統(tǒng)一出一個(gè)標(biāo)準(zhǔn)語(yǔ)言出來(lái),這在計(jì)算機(jī)網(wǎng)絡(luò)中稱(chēng)之為「通信協(xié)議」。如上述的網(wǎng)絡(luò)分層,每層都有各自適配的協(xié)議,所以計(jì)算機(jī)網(wǎng)絡(luò)的學(xué)習(xí)基本就是圍繞著分層協(xié)議的學(xué)習(xí)。


操作系統(tǒng)

操作系統(tǒng)也是一種軟件。你熟悉的微軟 Windos 操作系統(tǒng),后臺(tái)開(kāi)發(fā)熟悉的各種發(fā)行版的 Linux 系統(tǒng),都是通過(guò)軟件的形式安裝在計(jì)算機(jī)上。

只不過(guò)這個(gè)軟件和我們平常接觸的應(yīng)用程序軟件不同,它比較特殊,因?yàn)樗蛳潞陀?jì)算機(jī)硬件(就是我們?cè)谟?jì)算機(jī)組成原理中學(xué)習(xí)的那些硬件)打交道,向上給其他應(yīng)用程序和用戶(hù)提供通用的交互的接口,說(shuō)白了操作系統(tǒng)就是個(gè)中介和管家的角色。它幫我們做了下面這些事情:

  • 進(jìn)程管理(你寫(xiě)的程序運(yùn)行起來(lái)才能干活,運(yùn)行起來(lái)的程序稱(chēng)為進(jìn)程,進(jìn)程是資源的最小單位)

  • 內(nèi)存管理(計(jì)算機(jī)內(nèi)存又貴又少,動(dòng)不動(dòng)又要來(lái)個(gè)高并發(fā),內(nèi)存管理大有學(xué)問(wèn))

  • 文件管理(計(jì)算機(jī)中的資料和信息需要通過(guò)文件系統(tǒng)來(lái)保存、管理)

  • 輸入輸出管理(各種外部設(shè)備如何接入計(jì)算機(jī)和接入之后又如何管理)

數(shù)據(jù)結(jié)構(gòu)

數(shù)據(jù)結(jié)構(gòu)大家最熟悉,即使毫無(wú)計(jì)算機(jī)基礎(chǔ)或是想轉(zhuǎn)行計(jì)算機(jī),第一個(gè)遇到的就是數(shù)據(jù)結(jié)構(gòu),因?yàn)槊嬖囁⒌乃惴}本質(zhì)上就是對(duì)各種數(shù)據(jù)結(jié)構(gòu)的運(yùn)用。所以單純對(duì)面試功利的角度來(lái)說(shuō),數(shù)據(jù)結(jié)構(gòu)也是必須要掌握的計(jì)算機(jī)基礎(chǔ),數(shù)據(jù)結(jié)構(gòu)要學(xué)到:

  • 線(xiàn)性表(鏈表、數(shù)組、循環(huán)鏈表)

  • 棧和隊(duì)列

  • 樹(shù)和各種二叉樹(shù)(二叉排序樹(shù)、平衡二叉樹(shù)、哈夫曼樹(shù)、B樹(shù)、B+樹(shù)、Trie樹(shù))

  • 圖(圖的存儲(chǔ)結(jié)構(gòu)、BFS、DFS、最短路徑、最小生成樹(shù)、拓?fù)渑判?、關(guān)鍵路徑)

  • 查找算法(二分查找、B樹(shù)查找、HASH表、KMP字符串模式匹配)

  • 排序算法(插入排序、冒泡排序、歸并排序、基數(shù)排序、堆排序)

  • 貪心算法

  • 位運(yùn)算

  • 分治算法

  • 動(dòng)態(tài)規(guī)劃

好了,計(jì)算機(jī)基礎(chǔ)四大專(zhuān)業(yè)課已經(jīng)大概過(guò)了一遍,當(dāng)然這是我給沒(méi)有計(jì)算機(jī)基礎(chǔ)同學(xué)的實(shí)用主義建議,等你學(xué)完這四門(mén)課程也只能夠說(shuō)入門(mén)計(jì)算機(jī)了,不過(guò)這已經(jīng)比很多人厲害了。如果想真正的了解計(jì)算機(jī)這門(mén)學(xué)科,可以等學(xué)完了這 4 門(mén)基礎(chǔ)課程之后,再花寫(xiě)時(shí)間挑一些上面培養(yǎng)方案中的課程去學(xué)習(xí),做一個(gè)知識(shí)體系完備的計(jì)算機(jī)軟件后端開(kāi)發(fā)工程師。


Linux

在后臺(tái)開(kāi)發(fā)領(lǐng)域,你所能接觸到的后端服務(wù)不敢說(shuō) 100%,至少也有 90% 以上是運(yùn)行在 Linux 系統(tǒng)之上,因?yàn)樗_(kāi)源、便利、功能強(qiáng)大,需要學(xué)習(xí)以下技術(shù)點(diǎn):?

Linux系統(tǒng)使用

所以如果你想走后端開(kāi)發(fā)這條路線(xiàn),我建議你趁早使用 Linux ,越早越好??梢允窃趥€(gè)人 PC 上裝 Linux 虛擬機(jī),或者裝個(gè)雙系統(tǒng),我在大學(xué)就是這么玩的,那時(shí)候云服務(wù)器還沒(méi)現(xiàn)在這么普及,現(xiàn)在我覺(jué)得買(mǎi)個(gè) Linux 云服務(wù)器最方便,如果是學(xué)生還有教育優(yōu)惠也不貴。

有了Linux系統(tǒng)之后干嘛呢?把它作為你的常用系統(tǒng),經(jīng)常登錄進(jìn)去對(duì)照著「鳥(niǎo)哥的 Linux 私房菜」從頭到尾操作一遍,ok,Linux的基礎(chǔ)操作你就掌握了。

Linux 高級(jí)編程

Linux「高級(jí)編程」的意思是比上面的 Linux 基礎(chǔ)操作更深入一個(gè)層次。

學(xué)會(huì)了 Linux 的使用還不算是一個(gè)真正的開(kāi)發(fā)人員,使用系統(tǒng)是成為開(kāi)發(fā)者最基本要求,會(huì)操作Linux 就像使用 Windows 系統(tǒng)一樣,只不過(guò)是學(xué)習(xí)成本的問(wèn)題,如果這個(gè)世界沒(méi)有 Window 系統(tǒng),你女朋友花點(diǎn)時(shí)間也能掌握 Linux 系統(tǒng)基本操作。

要想進(jìn)階成為后端開(kāi)發(fā)人員,就要懂得如何使用 Linux 系統(tǒng)提供的各種系統(tǒng)API(系統(tǒng)調(diào)用接口)進(jìn)行編程開(kāi)發(fā),程序員用你寫(xiě)的代碼來(lái)控制系統(tǒng),普通用戶(hù)只會(huì)用鼠標(biāo)操縱。這個(gè)階段需要學(xué)習(xí):

  • Unix 系統(tǒng)實(shí)現(xiàn) Linux、基本系統(tǒng)數(shù)據(jù)類(lèi)型

  • 文件操作函數(shù):?open?、read?close?write?dup?fcntl?ioctl?stat?chmodaccess?chdir?…

  • 系統(tǒng)編程接口的基本特性和高級(jí)特性

  • Linux進(jìn)程環(huán)境、如何創(chuàng)建進(jìn)程、線(xiàn)程,程序的存儲(chǔ)空間分配、環(huán)境變量

  • 進(jìn)程組、會(huì)話(huà)以及任務(wù)控制、進(jìn)程優(yōu)先級(jí)和調(diào)度

  • 動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)

  • 進(jìn)程間通信:管道和FIFO、消息隊(duì)列、信號(hào)量、共享內(nèi)存、內(nèi)存映射

  • 套接字和網(wǎng)絡(luò)編程

總之,這一階段需要學(xué)習(xí)的是在 Linux 環(huán)境下的高級(jí)編程技巧,通過(guò)對(duì)這些內(nèi)容的學(xué)習(xí)也能讓你更深入的理解 Linux 系統(tǒng)是如何工作和運(yùn)行的,并且真正的踏入 Linux 系統(tǒng)編程大門(mén)。

網(wǎng)絡(luò)編程

網(wǎng)絡(luò)編程是通過(guò)網(wǎng)絡(luò)套接字 socket 方式實(shí)現(xiàn)的通信,所以也屬于進(jìn)程間通信 IPC(Inter-Process Communication)。

由于現(xiàn)在的后臺(tái)服務(wù)基于服務(wù)端/客戶(hù)端模型,兩者之間基于網(wǎng)絡(luò)通信,你在家用手機(jī)點(diǎn)個(gè)外賣(mài)的服務(wù)請(qǐng)求,也是通過(guò)網(wǎng)絡(luò)通信發(fā)給某團(tuán)的后臺(tái)服務(wù)器,所以后臺(tái)服務(wù)開(kāi)發(fā),說(shuō)到底還是網(wǎng)絡(luò)編程,以及建立在網(wǎng)絡(luò)編程數(shù)據(jù)之上的應(yīng)用層開(kāi)發(fā)。

網(wǎng)絡(luò)編程學(xué)什么:

  • 什么是socket套接字

  • 套接字選項(xiàng)

  • TCP/UDP 套接字編程

  • Unix domain 協(xié)議和編程

  • 原始套接字編程

  • IO多路復(fù)用:select 、poll、epoll、kqueue

  • 序列化技術(shù)

  • 零拷貝技術(shù)

  • 開(kāi)源網(wǎng)絡(luò)庫(kù):muduo、libevent

學(xué)完以上內(nèi)容你大概可以寫(xiě)一個(gè)類(lèi)似QQ一樣的網(wǎng)絡(luò)聊天小工具。

不在在工作中,都有成熟的網(wǎng)絡(luò)框架或網(wǎng)絡(luò)通信庫(kù),大公司比如鵝廠(chǎng)大部分是自研網(wǎng)絡(luò)通信框架,小公司用開(kāi)源項(xiàng)目,這讓很多后臺(tái)開(kāi)發(fā)人員不必關(guān)心底層的網(wǎng)絡(luò)通信細(xì)節(jié),除了部分基礎(chǔ)架構(gòu)的開(kāi)發(fā)同學(xué),大部分后臺(tái)開(kāi)發(fā)同學(xué)工作都是在做業(yè)務(wù)系統(tǒng)的開(kāi)發(fā)。

但了解底層網(wǎng)絡(luò)編程原理,是后臺(tái)開(kāi)發(fā)人員的核心能力,這點(diǎn)對(duì)于 C/C++ 后臺(tái)開(kāi)發(fā)程序員尤為重要。它能拔高你看問(wèn)題的高度,不了解底層原理,就像是在黑盒編程一樣,出了問(wèn)題無(wú)從下手排查。

學(xué)完了以上內(nèi)容,基本是具備了從事后臺(tái)開(kāi)發(fā)的基礎(chǔ)能力,也能開(kāi)發(fā)出一個(gè)簡(jiǎn)單的后臺(tái)服務(wù)器了。


數(shù)據(jù)庫(kù)

除非是單純的轉(zhuǎn)發(fā)路由類(lèi)后臺(tái)服務(wù),一般來(lái)說(shuō)后臺(tái)開(kāi)發(fā)的web服務(wù)器后臺(tái)程序,后臺(tái)服務(wù)程序說(shuō)白了就是個(gè)死循環(huán):

接收客戶(hù)端數(shù)據(jù)包 -> 處理數(shù)據(jù)包 -> 業(yè)務(wù)邏輯處理 -> 保存必要的數(shù)據(jù) -> 回復(fù)響應(yīng)數(shù)據(jù)給客戶(hù)端

這其中會(huì)伴隨對(duì)各種數(shù)據(jù)的處理,比如電商系統(tǒng)會(huì)處理訂單數(shù)據(jù)、用戶(hù)數(shù)據(jù),游戲后臺(tái)會(huì)處理角色數(shù)據(jù)和裝備數(shù)據(jù)等等,有數(shù)據(jù)就會(huì)涉及到存儲(chǔ)系統(tǒng),數(shù)據(jù)一般都存儲(chǔ)到數(shù)據(jù)庫(kù)。

主要學(xué)習(xí) 2 大類(lèi)數(shù)據(jù)庫(kù):

關(guān)系型數(shù)據(jù)庫(kù)是指采用了關(guān)系模型來(lái)組織數(shù)據(jù)的數(shù)據(jù)庫(kù),簡(jiǎn)單理解就是二維表格模型。

非關(guān)系型數(shù)據(jù)庫(kù)一般指的是?key-value?形式存儲(chǔ)數(shù)據(jù)的 NoSQL 數(shù)據(jù)庫(kù),數(shù)據(jù)和鍵值是簡(jiǎn)單的映射關(guān)系。

關(guān)系型數(shù)據(jù)庫(kù)

  • MySQL 數(shù)據(jù)庫(kù)架構(gòu)

  • MySQL索引使用和優(yōu)化

  • innoDB存儲(chǔ)引擎

  • 查詢(xún)性能優(yōu)化

  • 聚集索引、非聚集索引

  • 事務(wù)隔離,ACID,MVCC

  • 鎖機(jī)制,樂(lè)觀鎖、悲觀鎖、讀鎖、寫(xiě)鎖、意向鎖

  • 日志

  • 數(shù)據(jù)備份與恢復(fù)

非關(guān)系型數(shù)據(jù)庫(kù)

  • redis 基本操作和使用

  • redis 設(shè)計(jì)與實(shí)現(xiàn)原理

  • MongoDB

  • levelDB

  • memcache

  • HBase

  • CKV+ 騰訊自研

后臺(tái)開(kāi)發(fā)服務(wù)還需要學(xué)會(huì)解決三高問(wèn)題:高并發(fā)、高可用、高性能。


高并發(fā)

利用到目前為止學(xué)習(xí)的內(nèi)容,我們的開(kāi)發(fā)的后臺(tái)服務(wù)器應(yīng)付一些小并發(fā)場(chǎng)景綽綽有余,但是隨著互聯(lián)網(wǎng)應(yīng)用業(yè)務(wù)量的上漲,對(duì)后臺(tái)服務(wù)端的請(qǐng)求數(shù)劇增,高并發(fā)需求隨之而來(lái),高并發(fā)指的就是高 TPS 和高 QPS

  • TPS (Transactions Per Second)每秒事務(wù)數(shù)

  • QPS(Query Per Second)每秒查詢(xún)數(shù)等。

對(duì)于高并發(fā)服務(wù)必須改變傳統(tǒng)的單進(jìn)程模型,才能處理的過(guò)來(lái)如此海量的請(qǐng)求。

多進(jìn)程

對(duì)于高并發(fā)的服務(wù)請(qǐng)求,由于后臺(tái)服務(wù)一般都是 IO 密集型應(yīng)用,IO 密集型應(yīng)用就是大部分 CPU 時(shí)間用在網(wǎng)絡(luò) IO 上,相對(duì)的是 CPU 密集型應(yīng)用大部分時(shí)間花在數(shù)據(jù)計(jì)算上。

大多數(shù)的后臺(tái)服務(wù)程序都是 IO 密集型的應(yīng)用,網(wǎng)絡(luò) IO 的時(shí)候 CPU 等待白白浪費(fèi)時(shí)間, 這就告訴我們 CPU 的潛力還沒(méi)有完全發(fā)揮,所以當(dāng)一個(gè)進(jìn)程的處理能力達(dá)到上限,我們可以多創(chuàng)建幾個(gè)進(jìn)程,這就是多進(jìn)程模型。

多線(xiàn)程

多線(xiàn)程與多進(jìn)程類(lèi)似,實(shí)際在Linux系統(tǒng)中線(xiàn)程是由輕量級(jí)的進(jìn)程 LWP(Light-weight process)實(shí)現(xiàn),多線(xiàn)程方式實(shí)現(xiàn)的后臺(tái)服務(wù)相對(duì)于多進(jìn)程更加輕量,因?yàn)槎嗑€(xiàn)程是在同一個(gè)進(jìn)程內(nèi)部實(shí)現(xiàn)。

不過(guò)多線(xiàn)程也會(huì)帶來(lái)新的問(wèn)題,比如全局?jǐn)?shù)據(jù)競(jìng)爭(zhēng)和同步問(wèn)題,引入線(xiàn)程鎖還要防止死鎖的發(fā)生。

協(xié)程

那什么是協(xié)程呢?協(xié)程?Coroutines?是一種比線(xiàn)程更加輕量級(jí)的微線(xiàn)程。類(lèi)比一個(gè)進(jìn)程可以擁有多個(gè)線(xiàn)程,一個(gè)線(xiàn)程也可以擁有多個(gè)協(xié)程,因此協(xié)程又稱(chēng)微線(xiàn)程和纖程??梢源致缘陌褏f(xié)程理解成子程序調(diào)用,每個(gè)子程序都可以在一個(gè)單獨(dú)的協(xié)程內(nèi)執(zhí)行。

異步回調(diào)

所謂異步回調(diào)就是,服務(wù)端發(fā)起 IO 請(qǐng)求的線(xiàn)程不等網(wǎng)絡(luò) IO 線(xiàn)程操作完成,就繼續(xù)執(zhí)行隨后的代碼,一般請(qǐng)求線(xiàn)程需要先注冊(cè)一個(gè)回調(diào)函數(shù),當(dāng)IO 完成之后網(wǎng)絡(luò)IO線(xiàn)程通過(guò)調(diào)用之前注冊(cè)的回調(diào)函數(shù)來(lái)通知發(fā)起 IO 請(qǐng)求的線(xiàn)程,這樣發(fā)起請(qǐng)求的線(xiàn)程就不會(huì)阻塞住等待結(jié)果,提高了服務(wù)處理性能。


高性能

按以上服務(wù)模型可以提高服務(wù)本身處理能力,高性能后臺(tái)服務(wù)往往還會(huì)利用多種技術(shù)、從多個(gè)維度優(yōu)化提高性能。比如采用CDN(Content Delivery Network)內(nèi)容分發(fā)網(wǎng)絡(luò),存儲(chǔ)和分發(fā)使用戶(hù)就近獲取內(nèi)容,縮短響應(yīng)時(shí)間;采用池化技術(shù),避免頻繁的資源分配與回收;采用服務(wù)集群,橫向擴(kuò)展服務(wù)能力;采用緩存技術(shù),熱點(diǎn)數(shù)據(jù)加入緩存,減少數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)。

  • CND 內(nèi)容分發(fā)技術(shù)

  • 池化技術(shù):數(shù)據(jù)庫(kù)連接池,線(xiàn)程池

  • 集群化

  • 緩存技術(shù)


高可用

高可用即保證服務(wù)的穩(wěn)定性,不出現(xiàn)重大問(wèn)題或宕機(jī),常見(jiàn)的解決高可用思路是冗余和負(fù)載均衡。冗余的意思就是多部署幾臺(tái)服務(wù)器,當(dāng)其中一臺(tái)掛掉另外一臺(tái)能頂上。通過(guò)負(fù)載均衡技術(shù)實(shí)現(xiàn)對(duì)流量的動(dòng)態(tài)調(diào)配,不至于出現(xiàn)大量流量沖擊某臺(tái)機(jī)器出現(xiàn)請(qǐng)求不均勻,軟件負(fù)載均衡技術(shù)可以通過(guò)DNS、Nginx、LVS等技術(shù)實(shí)現(xiàn)。這里主要學(xué)習(xí)的技術(shù)有:

  • 負(fù)載均衡技術(shù),軟硬件負(fù)載均衡

  • 限流隔離降級(jí)技術(shù)

  • 應(yīng)用層容災(zāi),資源隔離熔斷

  • 異地多活


設(shè)計(jì)模式

設(shè)計(jì)模式代表著軟件開(kāi)發(fā)的一種最佳實(shí)踐。已經(jīng)經(jīng)歷了很長(zhǎng)一段時(shí)間的發(fā)展,它們提供了軟件開(kāi)發(fā)過(guò)程中面臨的一般問(wèn)題的最佳解決方案。學(xué)習(xí)這些模式有助于經(jīng)驗(yàn)不足的開(kāi)發(fā)人員通過(guò)一種簡(jiǎn)單快捷的方式來(lái)學(xué)習(xí)軟件設(shè)計(jì),當(dāng)設(shè)計(jì)大規(guī)模軟件時(shí)遵循必要的設(shè)計(jì)模式能讓寫(xiě)出的代碼更加健壯和可擴(kuò)展。

設(shè)計(jì)模式 6 大原則:

  • 開(kāi)閉原則:對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉,多使用抽象類(lèi)和接口。

  • 里氏替換原則:基類(lèi)可以被子類(lèi)替換,使用抽象類(lèi)繼承,不使用具體類(lèi)繼承。

  • 依賴(lài)倒轉(zhuǎn)原則:要依賴(lài)于抽象,不要依賴(lài)于具體,針對(duì)接口編程,不針對(duì)實(shí)現(xiàn)編程。

  • 接口隔離原則:使用多個(gè)隔離的接口,比使用單個(gè)接口好,建立最小的接口。

  • 迪米特法則:一個(gè)軟件實(shí)體應(yīng)當(dāng)盡可能少地與其他實(shí)體發(fā)生相互作用,通過(guò)中間類(lèi)建立聯(lián)系。

  • 合成復(fù)用原則:盡量使用合成/聚合,而不是使用繼承。

常見(jiàn)設(shè)計(jì)模式分類(lèi)

  • 工廠(chǎng)模式

  • 單例模式

  • 建造者模式

  • 適配器模式

  • 橋接模式

  • 過(guò)濾器模式

  • 裝飾器模式

  • 外觀模式

  • 享元模式

  • 代理模式

  • 責(zé)任鏈模式

  • 解釋器模式

  • 迭代器模式

  • 觀察者模式


分布式

為什么會(huì)出現(xiàn)分布式?隨著業(yè)務(wù)的體量不斷增長(zhǎng),單個(gè)節(jié)點(diǎn)的處理能力無(wú)法滿(mǎn)足日益增長(zhǎng)的計(jì)算、存儲(chǔ)任務(wù)的時(shí)候,且硬件的提升(加內(nèi)存、加磁盤(pán)、使用更好的CPU)高昂到得不償失的時(shí)候,應(yīng)用程序也不能進(jìn)一步優(yōu)化的時(shí)候,我們才需要考慮分布式系統(tǒng)。

分布式系統(tǒng)是由一組通過(guò)網(wǎng)絡(luò)進(jìn)行通信、為了完成共同的任務(wù)而協(xié)調(diào)工作的計(jì)算機(jī)節(jié)點(diǎn)組成的系統(tǒng)。分布式系統(tǒng)的出現(xiàn)是為了用廉價(jià)的、普通的機(jī)器完成單個(gè)計(jì)算機(jī)無(wú)法完成的計(jì)算、存儲(chǔ)任務(wù)。其目的是利用更多的機(jī)器,處理更多的數(shù)據(jù)。

分布式系統(tǒng)要解決的問(wèn)題本身就是和單機(jī)系統(tǒng)一樣的,而由于分布式系統(tǒng)多節(jié)點(diǎn)、通過(guò)網(wǎng)絡(luò)通信的拓?fù)浣Y(jié)構(gòu),會(huì)引入很多單機(jī)系統(tǒng)沒(méi)有的問(wèn)題,為了解決這些問(wèn)題又會(huì)引入更多的機(jī)制、協(xié)議。這里需要學(xué)習(xí)的內(nèi)容包括:

  • 分布式一致性算法:PAXOS、Raft、Zab

  • 分布式事務(wù):2PC、3PC、TCC

  • 分布式唯一 ID 生成:雪花算法、UUID、淘寶 TDDL SEQUENCE方案、美團(tuán) Leaf

  • 一致性HASH算法

  • 擴(kuò)展性設(shè)計(jì),設(shè)計(jì)可擴(kuò)展的軟件架構(gòu)

  • 分布式文件系統(tǒng):HDFS、FastDFS

  • 微服務(wù)架構(gòu)設(shè)計(jì),服務(wù)注冊(cè)、服務(wù)發(fā)現(xiàn)、服務(wù)路由


安全

本質(zhì)上后臺(tái)服務(wù)在網(wǎng)絡(luò)上運(yùn)行,需要和各種網(wǎng)絡(luò)環(huán)境交互,在正常情況下能夠工作,但互聯(lián)網(wǎng)中有很多針對(duì)后臺(tái)服務(wù)的惡意攻擊,因此網(wǎng)絡(luò)安全也是后臺(tái)開(kāi)發(fā)工程師需要學(xué)習(xí)的內(nèi)容。這里主要包括:

  • web安全:CSRF、SQL注入、XSS

  • DDos防范

  • 加解密算法:對(duì)稱(chēng)加密、哈希算法、非對(duì)稱(chēng)加密

  • 網(wǎng)絡(luò)隔離:內(nèi)外網(wǎng)分離、跳板機(jī)

  • 授權(quán)認(rèn)證算法:OAuth2.0、OIDC、2FA、單點(diǎn)登錄SSO


監(jiān)控與統(tǒng)計(jì)

后臺(tái)服務(wù)運(yùn)行我們?nèi)绾瘟私馄溥\(yùn)行狀態(tài)和健康度?如果只是開(kāi)發(fā)小玩具監(jiān)控和統(tǒng)計(jì)大可不必,只需記錄本地日志即可,對(duì)于成熟的大型后臺(tái)服務(wù)系統(tǒng),監(jiān)控、統(tǒng)計(jì)、追蹤必不可少,無(wú)監(jiān)控,不運(yùn)營(yíng)。

開(kāi)源的監(jiān)控軟件有:Prometheus、Zabbix、Open-Falcon。

追蹤系統(tǒng)也非常重要,特別是目前微服務(wù)化,一次服務(wù)請(qǐng)求需要經(jīng)歷多個(gè)不同的微服務(wù)處理,給分布式追蹤帶來(lái)新的挑戰(zhàn),主要包含以下三個(gè)方面:

  • 通過(guò)收集日志(Logging),記錄程序的調(diào)試信息或錯(cuò)誤信息,對(duì)系統(tǒng)和各個(gè)服務(wù)的運(yùn)行狀態(tài)進(jìn)行監(jiān)控

  • 通過(guò)收集量度(Metrics),比如累加量,對(duì)系統(tǒng)和各個(gè)服務(wù)的性能進(jìn)行監(jiān)控

  • 通過(guò)分布式追蹤(Tracing ),追蹤服務(wù)請(qǐng)求是如何在各個(gè)分布的組件中進(jìn)行處理的細(xì)節(jié)

業(yè)界也有一些成熟的開(kāi)源軟件用于監(jiān)控與追蹤:SkyWalking、Pinpoint、Zipkin、CAT大眾點(diǎn)評(píng)開(kāi)源。不過(guò)大公司一般都有自研的一套監(jiān)控與追蹤系統(tǒng),比如騰訊內(nèi)部就有多套自研監(jiān)控與調(diào)用鏈追蹤系統(tǒng)。


搜索引擎

我們討論的是全文搜索引擎,什么是全文搜索引擎?

全文搜索引擎是目前廣泛應(yīng)用的主流搜索引擎。它的工作原理是計(jì)算機(jī)索引程序通過(guò)掃描文章中的每一個(gè)詞,對(duì)每一個(gè)詞建立一個(gè)索引,指明該詞在文章中出現(xiàn)的次數(shù)和位置,當(dāng)用戶(hù)查詢(xún)時(shí),檢索程序就根據(jù)事先建立的索引進(jìn)行查找,并將查找的結(jié)果反饋給用戶(hù)的檢索方式。這個(gè)過(guò)程類(lèi)似于通過(guò)字典中的檢索字表查字的過(guò)程。

數(shù)據(jù)分為結(jié)構(gòu)化數(shù)據(jù)與非結(jié)構(gòu)化數(shù)據(jù)

像數(shù)據(jù)庫(kù)表這種的數(shù)據(jù)是結(jié)構(gòu)化數(shù)據(jù);而對(duì)于像HTML、XML、文檔這樣不定長(zhǎng)度且無(wú)固定格式的數(shù)據(jù)我們稱(chēng)之為非結(jié)構(gòu)化數(shù)據(jù)。非結(jié)構(gòu)化數(shù)據(jù)也稱(chēng)為全文數(shù)據(jù),對(duì)非結(jié)構(gòu)化數(shù)據(jù)的搜索可以用全文檢索的方式,

目前兩大主流的全文搜索引擎「Solr」和「Elasticsearch」都是基于 Lucene 建立。搜索引擎需要學(xué)習(xí)的內(nèi)容:

  • 搜索引擎原理,搜索引擎利用倒排索引技術(shù)來(lái)實(shí)現(xiàn)對(duì)全文數(shù)據(jù)的高效檢索。

  • Lucene,Apache Lucene 是一個(gè)開(kāi)源的全文搜索引擎工具包。

  • Elasticsearch 原理與使用

  • Solr 原理與使用


大數(shù)據(jù)

大數(shù)據(jù),又稱(chēng)為巨量資料,指的是在傳統(tǒng)數(shù)據(jù)處理應(yīng)用軟件不足以處理的大或復(fù)雜的數(shù)據(jù)集的術(shù)語(yǔ)。隨著后臺(tái)服務(wù)用戶(hù)數(shù)增加和數(shù)據(jù)的積累,產(chǎn)生海量有待挖掘價(jià)值的數(shù)據(jù),分析利用這些數(shù)據(jù)可以反饋線(xiàn)上決策,優(yōu)化運(yùn)營(yíng)策略,產(chǎn)生數(shù)據(jù)價(jià)值。

海量數(shù)據(jù)也可以定義為來(lái)自各種來(lái)源的大量非結(jié)構(gòu)化或結(jié)構(gòu)化數(shù)據(jù)。

在軟件開(kāi)發(fā)領(lǐng)域的大數(shù)據(jù)概念自 20 世紀(jì) 90 年代的數(shù)據(jù)倉(cāng)庫(kù)開(kāi)始,對(duì)于大數(shù)據(jù)的處理也導(dǎo)致各種海量數(shù)據(jù)的統(tǒng)計(jì)和處理技術(shù)發(fā)展。

主要包含以下的技術(shù)點(diǎn)需要學(xué)習(xí):數(shù)據(jù)存儲(chǔ)、離線(xiàn)分析、流式計(jì)算。

  • 大數(shù)據(jù)存儲(chǔ):Hadoop 框架,HDFS、HBase、YARN 架構(gòu)、Apache Kudu

  • 離線(xiàn)分析:Hive、MapReduce、Spark

  • 流式計(jì)算:Flink、Storm、Kafka Stream、Spark Streaming


虛擬化

虛擬化,是指通過(guò)虛擬化技術(shù)將一臺(tái)計(jì)算機(jī)虛擬為多臺(tái)邏輯計(jì)算機(jī)。

虛擬化的好處

  • 靈活性:在同一硬件上同時(shí)運(yùn)行多個(gè)操作系統(tǒng)

  • 敏捷性:移動(dòng)操作系統(tǒng)的方式與將文件或圖片從一臺(tái)物理服務(wù)器移動(dòng)到另一臺(tái)物理服務(wù)器的方式相同。

  • 容錯(cuò):當(dāng)物理服務(wù)器出現(xiàn)故障時(shí),管理軟件會(huì)自動(dòng)將實(shí)例遷移到可用服務(wù)器,甚至無(wú)感知物理硬件故障。

  • 降低成本:您不再需要過(guò)多的物理服務(wù)器,操作和維護(hù)所需的費(fèi)用也隨之減少。

常見(jiàn)的虛擬化技術(shù):KVM、Xen、OpenVZ、Docker

雖然對(duì)于大多數(shù)后臺(tái)服務(wù)程序來(lái)說(shuō), 很多服務(wù)都是部署在 Docker 容器里,但 Docker 共用了底層系統(tǒng)的 kernel,所有容器共用一部分的運(yùn)行庫(kù),因此隔離性相比 KVM 之類(lèi)的虛擬化技術(shù)差一點(diǎn),KVM 與 Docker 有各自的使用場(chǎng)景,未來(lái)很長(zhǎng)一段時(shí)間是共存狀態(tài)。

OpenStack 管理 VM(Virtual Machine)虛擬機(jī)的工具;Kubernetes 簡(jiǎn)稱(chēng) K8s ,是管理 container 容器的工具。

中間件

在后端開(kāi)發(fā)中你可能經(jīng)常聽(tīng)說(shuō)到「中間件」這個(gè)詞,那什么是中間件?看下Wiki上的定義:

中間件技術(shù)創(chuàng)建在對(duì)應(yīng)用軟件部分常用功能的抽象上,將常用且重要的過(guò)程調(diào)用、分布式組件、消息隊(duì)列、事務(wù)、安全、鏈接器、商業(yè)流程、網(wǎng)絡(luò)并發(fā)、HTTP 服務(wù)器、Web Service?等功能集于一身或者分別在不同品牌的不同產(chǎn)品中分別完成。

中國(guó)科學(xué)院軟件所研究員仲萃豪把中間件定義為「平臺(tái)+通信」。這個(gè)定義限定了只有用于分布式系統(tǒng)中的此類(lèi)軟件才能被稱(chēng)為中間件,同時(shí)此定義也把中間件與實(shí)際應(yīng)用的應(yīng)用軟件區(qū)分開(kāi)來(lái)。

大白話(huà)來(lái)說(shuō),中間件就是把分布式系統(tǒng)中一些通用功能的抽象出來(lái)提供服務(wù)的一類(lèi)軟件統(tǒng)稱(chēng)。它屏蔽掉了底層操作系統(tǒng)的復(fù)雜性,向上提供一個(gè)統(tǒng)一的開(kāi)發(fā)環(huán)境,降低了軟件系統(tǒng)開(kāi)發(fā)的復(fù)雜度,由于中間件是介于操作系統(tǒng)和應(yīng)用軟件之間,為應(yīng)用軟件提供服務(wù)功能的軟件,由于介于兩種軟件之間,所以稱(chēng)為中間件。

常見(jiàn)的的開(kāi)源中間件有下面幾種,組合起來(lái)就能搭建一個(gè)完整的分布式后臺(tái)服務(wù)系統(tǒng):

  • web server 中間件,Nginx、OpenResty、Tomcat…

  • 緩存中間件,服務(wù)端緩存包括 Redis、Memcached…

  • 消息隊(duì)列中間件,Kafka、RabbitMQ、ActiveMQ…

  • RPC框架,Tars、Dubbo、gRPC、Thrift

  • 數(shù)據(jù)庫(kù)中間件,Sharding jdbc

  • 日志系統(tǒng)中間件,ELK B指的是一套解決方案,是 Elasticsearch、Logstash 、 Kibana、Beats 是這 4 種軟件產(chǎn)品的首字母縮寫(xiě)。

  • 配置中心中間件,Apollo、zookeeper統(tǒng)一配置管理

  • API網(wǎng)關(guān),開(kāi)源項(xiàng)目有 Tyk、kong、zuul、orange…


版本控制

大型軟件項(xiàng)目的代碼量巨大,如何有效組織和管理源碼和版本,于是產(chǎn)生了版本控制系統(tǒng)。版本控制系統(tǒng)就是我們常說(shuō)的SVN 或 Git,用來(lái)追蹤、維護(hù)源碼、文件以及配置文件等等的改動(dòng),并且提供控制這些改動(dòng)控制權(quán)的程序。

常見(jiàn)的版本控制系統(tǒng)分為兩大類(lèi):集中式版本控制和分布式版本控制。作為后端開(kāi)發(fā)工程師,版本控制系統(tǒng)的使用也是必須掌握的基礎(chǔ)技能,不過(guò)這些系統(tǒng)一般都是邊使用邊熟悉,剛開(kāi)始熟悉一些常用操作就好。

  • 常見(jiàn)的有集中式版本控制系統(tǒng),代表是SVN;

  • 分布式版本控制系統(tǒng),代表是Git


工具

一些和后端開(kāi)發(fā)或者說(shuō)軟件開(kāi)發(fā)相關(guān)的工具推薦,主要是編輯器和 IDE。

編輯器

在 Linux 下開(kāi)發(fā)肯定離不開(kāi) Vim 或者 Emacs,這兩個(gè)都是常用的編輯器,已經(jīng)形成了兩大愛(ài)好者陣營(yíng)。特別是 Vim 編輯器,學(xué)習(xí)成本有點(diǎn)高,配合上各種插件和配置,有些 Vim 愛(ài)好者已經(jīng)把它當(dāng)成 IDE 來(lái)用了,一旦掌握可以大幅提升工作效率,值得你去學(xué)習(xí)。

當(dāng)然除了 Vim 如果是文字編輯工作,比如寫(xiě) README 文檔或者寫(xiě)技術(shù)博客,那么強(qiáng)烈推薦學(xué)習(xí)下 Markdown 語(yǔ)法,這是一種種輕量級(jí)標(biāo)記語(yǔ)言,它允許人們使用易讀易寫(xiě)的純文本格式編寫(xiě)文檔,注重內(nèi)容本身不用過(guò)多的調(diào)整排版。Markdown 編輯器推薦 Typora 、有道云筆記 Markdown 編輯器、VSCode Markdown插件。

IDE

編輯器作為小工程還可以勝任,不過(guò)后端開(kāi)發(fā)工作中,一般都是大型的軟件工程項(xiàng)目,所以不大可能用編輯器來(lái)管理,這時(shí)候就需要學(xué)習(xí)使用專(zhuān)業(yè)的集成開(kāi)發(fā)工具。

集成開(kāi)發(fā)環(huán)境(IDE,Integrated Development Environment )是用于提供程序開(kāi)發(fā)環(huán)境的應(yīng)用程序,一般包括代碼編輯器、編譯器、調(diào)試器和圖形用戶(hù)界面等工具。

磨刀不誤砍柴工,挑一把趁手的兵器再去編程世界遨游。各語(yǔ)言 IDE 五花八門(mén),推薦 JetBrains 系列和 VS Code ,JetBrains 產(chǎn)品包括各語(yǔ)言開(kāi)發(fā)的一系列的 IDE,特別是Java 的Intellij IDEA 口碑非常不錯(cuò),部分對(duì)應(yīng)的產(chǎn)品系列如下。

  • CLion - 跨平臺(tái)的C/C++ IDE 開(kāi)發(fā)工具,支持C++11 、C++14、libc++以及Boost。

  • GoLand - Go語(yǔ)言的集成開(kāi)發(fā)環(huán)境。

  • IntelliJ IDEA - 2001年發(fā)布。一套智能的 Java 集成開(kāi)發(fā)環(huán)境,特別專(zhuān)注與強(qiáng)調(diào)程序師的開(kāi)發(fā)撰寫(xiě)效率提升。

  • PhpStorm - PHP IDE開(kāi)發(fā)工具。

  • PyCharm - 一款結(jié)合了Django框架的Python IDE開(kāi)發(fā)工具。

  • AppCode - Swift 和 Objective-C IDE開(kāi)發(fā)工具。

Visual Studio Code(簡(jiǎn)稱(chēng)VS Code)是一個(gè)由微軟開(kāi)發(fā),同時(shí)支持Windows 、 Linux和macOS等操作系統(tǒng)的免費(fèi)代碼編輯器,它支持測(cè)試,并內(nèi)置了Git 版本控制功能,同時(shí)也具有開(kāi)發(fā)環(huán)境功能,例如代碼補(bǔ)全(類(lèi)似于 IntelliSense)、代碼片段和代碼重構(gòu)等。該編輯器支持用戶(hù)個(gè)性化配置,例如改變主題顏色、鍵盤(pán)快捷方式等各種屬性和參數(shù),同時(shí)還在編輯器中內(nèi)置了擴(kuò)展程序管理的功能。

在2019年的 Stack Overflow 組織的開(kāi)發(fā)者調(diào)研中,VS Code被認(rèn)為是最受開(kāi)發(fā)者歡迎的開(kāi)發(fā)環(huán)境。


測(cè)試

軟件工程師不僅要寫(xiě)代碼,還要做測(cè)試,軟件測(cè)試和軟件開(kāi)發(fā)是相伴相生,測(cè)試能讓保證我們寫(xiě)出代碼更加健壯和可維護(hù)。

TDD是測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(Test-Driven Development)的英文簡(jiǎn)稱(chēng),是敏捷開(kāi)發(fā)中的一項(xiàng)核心實(shí)踐和技術(shù),也是一種設(shè)計(jì)方法論。TDD的原理是在開(kāi)發(fā)功能代碼之前,先編寫(xiě)單元測(cè)試用例代碼,根據(jù)測(cè)試代碼確定需要編寫(xiě)什么產(chǎn)品代碼。需要掌握和了解以下測(cè)試技術(shù)和方法。

  • 單元測(cè)試

  • 壓力測(cè)試

  • 全鏈路測(cè)試

  • A/B 測(cè)試,灰度發(fā)布,藍(lán)綠部署


學(xué)習(xí)順序

總結(jié)下,后端技術(shù)學(xué)習(xí)的內(nèi)容還是很多的,不可能一蹴而就。

這篇文章能看到這里的同學(xué),如果是初學(xué)者,可能就想問(wèn)直接問(wèn)我從哪里開(kāi)始學(xué)習(xí)?那我就不賣(mài)關(guān)子,如果你不知道從哪開(kāi)始學(xué),對(duì)于學(xué)習(xí)路線(xiàn)各個(gè)節(jié)點(diǎn),我就按個(gè)人的學(xué)習(xí)經(jīng)驗(yàn)并結(jié)合認(rèn)識(shí)的大廠(chǎng)高 P 給的建議,給你把以上技術(shù)路線(xiàn)學(xué)習(xí)優(yōu)先級(jí)做個(gè)排序,你照著學(xué)就行,排序規(guī)則:

星級(jí)越高,排名越靠前,重要程度越高,優(yōu)先安排時(shí)間學(xué)習(xí)。

  • 計(jì)算機(jī)基礎(chǔ) 5星

  • Linux 5 星

  • 數(shù)據(jù)庫(kù) 5 星

  • 設(shè)計(jì)模式 5 星

  • 工具 5 星

  • 中間件 4 星

  • 分布式 4 星

  • 高并發(fā)、高可用、高性能 4 星

  • 搜索引擎 4 星

  • 測(cè)試 3 星

  • 監(jiān)控與統(tǒng)計(jì) 3 星

  • 虛擬化 3 星

  • 安全 3 星

  • 大數(shù)據(jù) 3 星


語(yǔ)言的困惑

細(xì)心的讀者應(yīng)該發(fā)現(xiàn)了,到目前為止本文討論的后端技術(shù)學(xué)習(xí)路線(xiàn)內(nèi)容,并沒(méi)有提及特定編程語(yǔ)言,不提及并不是說(shuō)不重要,語(yǔ)言是很多技術(shù)的前置知識(shí)。打個(gè)比方來(lái)說(shuō),編程語(yǔ)言是磚瓦,高大上的項(xiàng)目都是一磚一瓦堆砌而成。

其實(shí)你在學(xué)習(xí)上述技術(shù)點(diǎn)的過(guò)程中,會(huì)自然而然的接觸到各種編程語(yǔ)言的中間件或是開(kāi)源項(xiàng)目,不管用什么語(yǔ)言做后端服務(wù)開(kāi)發(fā),都是沒(méi)有問(wèn)題的,并且都不有很多優(yōu)秀的開(kāi)源框架可以借鑒學(xué)習(xí),關(guān)鍵是要有清晰的學(xué)習(xí)路線(xiàn),主流的后端開(kāi)發(fā)語(yǔ)言包括 Java、C++、PHP、Python、Go ,那學(xué)哪個(gè)呢?

如果你是在校的學(xué)生,時(shí)間充足,我建議可以都可以嘗試下,不試過(guò)怎么知道不合適?然后結(jié)合自己偏愛(ài)和未來(lái)打算從事的崗位方向選擇一門(mén)語(yǔ)言深入學(xué)習(xí);

如果你是職場(chǎng)社畜,那就要適應(yīng)團(tuán)隊(duì),產(chǎn)品業(yè)務(wù)需要用什么語(yǔ)言開(kāi)發(fā)那就學(xué)哪個(gè)。萬(wàn)變不離其宗,后端技術(shù)的知識(shí)都是相通的,不要被特定語(yǔ)言所束縛,這些通用的后端技術(shù)掌握后,剩下的就只是編程語(yǔ)言學(xué)習(xí),很快啊,很快的。


結(jié)語(yǔ)

這篇文章我從月初開(kāi)始整理內(nèi)容、繪制思維導(dǎo)圖,真真是肝了半個(gè)月之久。創(chuàng)作過(guò)程中,我把自己從初級(jí)開(kāi)發(fā)人員到現(xiàn)在高級(jí)工程師,這些年學(xué)習(xí)的技術(shù)都在腦子里過(guò)了一遍。

說(shuō)來(lái)慚愧有些我畫(huà)在導(dǎo)圖上的技術(shù)我也只是懂點(diǎn)皮毛,但整個(gè)后端技術(shù)棧的學(xué)習(xí)路線(xiàn)和方向是沒(méi)問(wèn)題的,我都畫(huà)出來(lái)了,大家參考著學(xué)習(xí)和查漏補(bǔ)缺,在技術(shù)上我也需要繼續(xù)精進(jìn)學(xué)習(xí),咱們共勉。

高清路線(xiàn)大圖

小林已經(jīng)放到公眾號(hào)里了

后臺(tái)回復(fù)「后端」即可獲取

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

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

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話(huà)語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉