后端程序員的成長之路:從菜鳥到架構!


有不少初學者問到,我想學習后端,但是又不知道該怎么學,所以我決定把這幾年的經驗和經歷整理成一篇文章,分析后端的路該怎么走,也許與外面的理論有所不同。


后端任務其實是實現接收輸入響應輸出

 

后端初接觸

后端首先需要學習的是html,css和js,也許你會問做網頁不是前端做的事情嗎?

答案是對於真實開發環境后端很多時候還兼顧了前端這個角色,對於架構來說優化不僅僅要考慮后端還需要考慮前端。

要學到什么樣的程度才可以學下一樣技能呢?我的建議是能夠搭建起一個簡單的頁面,最重要的是學會dom操作和ajax。

 

語言選擇

我相信過來人或者正在入門的人都碰到過這個世紀難題,我的建議呢,喜歡什么用什么,小編的入門是“C”。當你學會一種語言的基本語法就可以到下一步了(僅僅是語法,任意語言)。

 

Hello world!

沒錯,這個時候,你得讓瀏覽器可以看到hello world! 為了實現這個小目標,我們就需要根據語言配置不同的運行環境。由於入門,我建議可以使用一些集成的一鍵配置環境軟件。

比如:VS系列

 

高級一些的Hello world

這個階段,你需要實現的是通過瀏覽器輸入不同的網址,你可以輸出不同的內容。

然后要弄明白什么是get參數,什么是post參數。

然后要實現根據不同get參數或者post參數輸出不同內容。

因為后端研發從根本上來說就是處理這些不同輸入,輸出特定的內容回去而已,所以這一步,最關鍵。

 

數據庫

為什么我們要用數據庫呢?

以一個新聞網站為例,它要保存新聞數據,還得保存用戶信息,也要保存評論信息。

也許你會問用文件保存就好了,為何還要學習數據庫這么龐大的東西呢?

首先,我們來看一下什么是數據庫,我們可以把數據庫每一個table看成excel的sheet,每一個db就是一個excel文件。而sql語句就是一條條指令,可以幫我們操作里面的數據,可以節省我們大量的操作。開始學習數據庫的時候,我建議學習mysql。

 

模板引擎

一項技術的出現,往往在於解決了一些開發難題。在沒有模板引擎之前,我們得使用字符串拼接方式,弄成html字符串,但是這種方式很容易出錯的。

而模板引擎無需字符串拼接,並且可以處理字符串轉義問題,並且模板集成,模板引用等功能,可以使代碼可以重用,大大提高了開發效率,工程也更容易維護。


 

MVC框架

首先,我們得明白為什么要用框架?假如是第一次接觸,我相信第一感受是用了框架加重自己的開發負擔。然后框架存在必然有自己的合理性,我們來看看框架有什么優點。

    1. 框架提供了大量的方法封裝,我們可以直接調用來解決業務問題,這可以大大提高開發效率。

    2. 框架能夠幫我們分層編寫代碼,能夠在后期更好的維護我們的項目。

    3. 做一些安全防護,處理一些常見的攻擊。

所以對於各種語言,大家可以選擇一個對應的框架來學習。那么我們應該如何挑選一個框架呢?

    1. 多人用的(最起碼使用過程中遇到問題,都能找到人問)

    2. 文檔詳細的(文檔不詳細,怎么去學習呢?)

    3. 簡單的(未來的趨勢估計都是往輕量級框架走的)

 

Linux與應用部署

開發用window沒什么問題,但是我們做的應用絕大部分是要放在linux系統來對外提供服務器,所以不懂linux的操作是不行的,並且服務器為了盡可能節省資源,都是不使用界面的,所以我們要學好大量的linux命令。

服務器環境我們一般就不會用外面的通用的一鍵安裝環境,往往需要優化的。所以基本的軟件安裝和配置需要學會,特別是近年來很火的docker,越來越多都是基於docker來部署的啦。

 

緩存

緩存可是處理高並發的萬能葯,每當你寫的功能慢的時候,基本上你都可以通過緩存來大大提高網站性能。實現緩存的方法很簡單,但是一當在並發下和海量數據面前一切都不容易,還得上分布式集群這些。

 

http協議

如果上面的你都接觸了,恭喜您普通開發估計是沒問題了,如果你說很多需求還是做不出,沒關系,其實你只是缺乏開發經驗而已,只要多寫多請教,你就會發現,其實后端研發也沒什么難度。

這個時候,如果我們想往高級研發工程師方向走,一些底層的高級的東西我們得學會。


瀏覽器與服務器通過http協議交互,其實就是相互之間傳遞一串特定格式的字符串。get參數,post參數,url,和cookie等信息其實都包含在這字符串里面。我們平時雖然沒有怎么碰到這些底層的東西,其實是框架和tomcat這種軟件幫我們處理了。

就像平時一個重定向,其實就在header里面有一句Location: XXX。

而我們平時聲明返回的是html還是json其實是headers有一句Content-Type:XXX,一切神奇的功能其實僅僅是一段特定的字符串而已,所以http協議怎么可以不研究呢。

 

nosql

非關系型數據庫有很多,例如memcached,redis,mongodb,coundb等。這些東西都有自己的適用場景,合理利用可以加快開發效率,對提高應用性能有很大的幫助的。

 

消息中間件

這種技術的出現是為了解耦,當我們業務過於龐大的時候,就會相應的拆分成幾個小系統,系統之間的通訊往往是通過http協議調用和基於消息中間件。

通過http協議有一個弊端,就是某個系統一旦修改了地址,那么就必須修改調用該服務的系統。如果通過消息中間件調用,那么應用如何遷移,也不會影響到別的系統。


 

一點點話

你跟所謂的大牛差距在哪里呢?我的看法是差距僅僅在於項目經驗。

也許你會說后端怎么需要學習這么多東西,並且年年都有新的技術出現怎么學呢?

其實對於一種新技術,我們主要是要弄明白我們為什么要用這種技術,因為存在即合理,新技術的出現必然有自己的原因,所以新技術不一定要追求,但是底層建議要理解。然后什么海量數據和高並發下系統優化,一個原則,找到性能瓶頸並解決它而已。

 

附錄路線圖

最后,不管你是轉行也好,初學也罷,進階也可,如果你想學編程~

【值得關注】我的 C/C++編程學習交流俱樂部!【點擊進入】


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM