怎么在后端中成為一個大牛?

有不少初學者問到,我想學習后端,但是又不知道該怎么學,所以我決定把這幾年的經驗和經歷整理成一篇文章,分析后端的路該怎么走,先說明下面僅僅是個人心得,也許與外面的理論有所不同。(文章最后面會附上學習路線地圖和一些自己看過的書籍)


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


后端初接觸

后端首先需要學習的是html,css和js,也許你會問做網頁不是前端做的事情嗎?答案是對于真實開發環境后端很多時候還兼顧了前端這個角色,對于架構來說優化不僅僅要考慮后端還需要考慮前端。

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

語言選擇

我相信過來人或者正在入門的人都碰到過這個世紀難題,如果你是初學者我建議您使用java。這里并不是說我喜歡java才推薦你們用java入門,而是java的思想對我們以后開發有很不錯的啟發。當你學會一種語言的基本語法就可以到下一步了(僅僅是語法,任意語言)。

hello world!

沒錯,這個時候,你得讓瀏覽器可以看到hello world! 為了實現這個小目標,我們就需要根據語言配置不同的運行環境。由于入門,我建議可以使用一些集成的一鍵配置環境軟件,例如php可以用phpstudy,java看看教程,下載一個tomcat然后跟eclipse集成就好,而python或則ruby則使用一個輕量級的web框架,copy一下官網提供的hello world!例子即可。

高級一些的hello world

這個階段,你需要實現的是通過瀏覽器輸入不同的網址,你可以輸出不同的內容。然后要弄明白什么是get參數,什么是post參數。然后要實現根據不同get參數或者post參數輸出不同內容。因為后端研發從根本上來說就是處理這些不同輸入,輸出特定的內容回去而已,所以這一步,最關鍵。

數據庫

為什么我們要用數據庫呢?以一個新聞網站為例,它要保存新聞數據,還得保存用戶信息,也要保存評論信息。也許你會問用文件保存就好了,為何還要學習數據庫這么龐大的東西呢?首先,我們來看一下什么是數據庫,我們可以把數據庫每一個table看成excel的sheet,每一個db就是一個excel文件。而sql語句就是一條條指令,可以幫我們操作里面的數據,可以節省我們大量的操作。開始學習數據庫的時候,我建議學習mysql。


數據庫


模板引擎

一項技術的出現,往往在于解決了一些開發難題。在沒有模板引擎之前,我們得使用字符串拼接方式,弄成html字符串,但是這種方式很容易出錯的。而模板引擎無需字符串拼接,并且可以處理字符串轉義問題,并且模板集成,模板引用等功能,可以使代碼可以重用,大大提高了開發效率,工程也更容易維護。


模板引擎


MVC框架

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

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

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

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

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

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

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

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


MVC框架有利于維護

Linux與應用部署

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

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

緩存

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

http協議

如果上面的你都接觸了,恭喜您普通開發估計是沒問題了,如果你說很多需求還是做不出,沒關系,其實你只是缺乏開發經驗而已,只要多寫多請教,你就會發現,其實后端研發也沒什么難度。這個時候,如果我們想往高級研發工程師方向走,一些底層的高級的東西我們得學會。


http協議

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

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

nosql

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

消息中間件

這種技術的出現是為了解耦,當我們業務過于龐大的時候,就會相應的拆分成幾個小系統,系統之間的通訊往往是通過http協議調用和基于消息中間件。通過http協議有一個弊端,就是某個系統一旦修改了地址,那么就必須修改調用該服務的系統。如果通過消息中間件調用,那么應用如何遷移,也不會影響到別的系統。


消息中間件




閱讀原文:http://mp.weixin.qq.com/s?timestamp=1477704319&src=3&ver=1&signature=b3-fJGKLvrJP9OgvthG3d7SR1KpnZs*C**u8h18M60cY44bG7*U1BmE4yoWyI-Njyz-qlc1DPBDpeQNMSuNKiBJfEubg0nQ6DUEKkivmxxk-D3D170oSVZQky7wxvv2LLp4WDS0mt7wsX2agqjHwYOh2AUQNX52X9*7Vcg1nIAM=
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,573評論 25 708
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,993評論 19 139
  • 那些你看上去走了狗屎運的人 也許經歷的是你難以想象的吃屎般的痛苦 所以 不要輕易評判一個人 尤其是你壓根就不了解t...
    一蓑煙雨_886閱讀 134評論 0 0
  • 前提:已經安裝有Ruby,以及其gems:haml, compass 修改resources\sass\app.s...
    徐璟閱讀 319評論 0 1
  • 一、搜索功能我相信很多app都用得上,iOS系統提供做搜索的類有那幾種呢? 1.UISearchBar,這個相信大...
    _Erica閱讀 17,626評論 18 67