1. 程式人生 > >後端成長之路:從菜鳥到架構

後端成長之路:從菜鳥到架構

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

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

後端初接觸

後端首先需要學習的是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協議有一個弊端,就是某個系統一旦修改了地址,那麼就必須修改呼叫該服務的系統。如果通過訊息中介軟體呼叫,那麼應用如何遷移,也不會影響到別的系統。

訊息中介軟體

一點點話

你跟所謂的大牛差距在哪裡呢?我的看法是差距僅僅在於專案經驗。也許你會說後端怎麼需要學習這麼多東西,並且年年都有新的技術出現怎麼學呢?其實對於一種新技術,我們主要是要弄明白我們為什麼要用這種技術,因為存在即合理,新技術的出現必然有自己的原因,所以新技術不一定要追求,但是底層建議要理解。然後什麼海量資料和高併發下系統優化,一個原則,找到效能瓶頸並解決它而已。

附錄

路線圖

一個簡單的學習路線圖

書單(下面僅僅是一些個人以前看過的書籍,並不是推薦要看,個人建議看看哪種講解核心的書籍,怎麼製作比怎麼用更總要)

LINUX作業系統(第2版)

LINUX指令範例速查手冊

JSP & SERVLET學習筆記

STRUTS 2.X權威指南(第3版)

HTML 5從入門到精通

JAVA入門經典(第6版)

看透Spring MVC:原始碼分析與實踐

大型分散式網站架構設計與實踐

Docker 容器與容器雲

Python Cookbook(第3版)中文版

Go語言程式設計

MongoDB大資料處理權威指南(第2版)

NoSQL資料庫技術實戰

構建高可用Linux伺服器(第3版)

大型網站技術架構 核心原理與案例分析

Linux運維之道

高效能MySQL(第3版)

Java核心技術 卷I

Java核心技術 卷II

相關推薦

成長架構

有不少初學者問到,我想學習後端,但是又不知道該怎麼學,所以我決定把這幾年的經驗和經歷整理成一篇文章,分析後端的路該怎麼走,先說明下面僅僅是個人心得,也許與外面的理論有所不同。(文章最後面會附上學習路線地圖和一些自己看過的書籍) 後端任務其實是實現接收輸入響應輸出 後端初接觸 後端首先需要學習的是html

原創電子書《程式設計師成長技術小白到阿里巴巴Java工程師》

《菜鳥程式設計師成長之路:從技術小白到阿里巴巴Java工程師》 國慶節快樂!一年一度長度排第二的假期終於來了。 難得有十一長假,作者也想要休息幾天啦。 不管你是選擇出門玩,還是在公司加班,在學校複習,都希望你過好這個長假。 沒有出去玩的也不用羨慕別人,利用這段時間充充電,不比去旅遊看人頭要好的多嗎? 最近終於

專訪任玉剛到資深工程師的進階

任玉剛,百度公司Android資深工程師,《Android開發藝術探索》作者,熱愛分享和開源,常年活躍在CSDN和Github。除此之外,他還是CSDN部落格專家,2014十大部落格之星。從一名菜鳥演變為資深工程師,在他看來,也有自己的辛酸歷程,儘管他已成為一名資深工程師

小白成長初識python(三) -----------python內置函數

urn locals for lte mod pre 最大 變量 ascii   剛才看了一下竟然還有人看我的博客^ - ^ 廢話不多說,上代碼,有不對的勿噴,畢竟我真的是小白 # python 內置函數整理# 返回一個數的絕對值# a = abs(-10)# print(

小白成長初識python(五) --python裝飾器

pytho ret 成了 通過 是把 代碼 rgs 得到 ## flag = "=======================裝飾器============================="#定義的裝飾器函數# def outer(func):# def inne

小白成長初識python(六) --python線程池

def utf == list exc free odin threading .get #!/usr/bin/env python# -*- coding:utf-8 -*-import threadingimport queueimport time"""對照著武老師的

入坑Java,開始Spring boot 的開發

也有 得來 中間 調用 代碼 行記錄 廣泛 隨手記 domain 換了工作,從遊戲行業的大坑中走了出來,走向互聯網的大世界。新的公司是電商方向,電商行業萬變不離其宗,java,spring是最廣泛的技術。當然也有過一些特立獨行的,也做得很大,不過現在都基本切換到了這個方向。

【轉】架構管理者的角度看問題

  http://www.cnblogs.com/freeflying/p/6036910.html 同步釋出在知乎,也不知道在部落格園裡這算不算水文,能不能上首頁。但園子裡還有一千多粉絲,我主要是想通知下面這件事:   +++++++++++++++++++ 這個系列寫得很坎坷

Java 自學

最近有些網友問我如何自學 Java 後端,還有些是想從別的方向想轉過來,但都不太瞭解 Java 後端究竟需要學什麼,究竟要從哪裡學起,哪些是主流的 Java 後端技術等等,導致想學,但又很迷茫,不知從何下手。我就以過來人的經歷,寫在這篇部落格裡,不一定都對,

我的程式設計師成長EOM簡介2(程式設計師篇)

上篇談到自己程式設計師成長之經歷,也大致談到了EOM來龍去脈,那什麼是EOM呢? 我們發現企業所有活動都可以歸結於企業經營,EOM就是從企業經營這個源頭著手,對經濟生活中的大量企業經營行為進行抽象,並用模型的方式來定義企業經營。(EOM並不僅僅針對企業資訊化,它還在經濟學、企

OpenCV成長直線、輪廓的提取與描述

本文是51CTO部落格作者Ronny的文章,原文地址:http://blog.51cto.com/ronny/1394139 轉載:http://mobile.51cto.com/aengine-435442.htm 基於內容的影象分析的重點是提取出影象中具有代表性的

架構成長如何保證訊息佇列的高可用

開發十年,就只剩下這套架構體系了! >>>   

架構成長分布式緩存架構設計分析

從數據 點贊 高可用性 rdb 保護 取模 key 矛盾 nsh 前言 在高並發場景下,需要通過緩存來減少數據庫的壓力,使得大量的訪問進來能夠命中緩存,只有少量的需要到數據庫層。由於緩存基於內存,可支持的並發量遠遠大於基於硬盤的數據庫。所以對於高並發設計,緩存的設計是必不可

架構成長(1)--什麽是架構

自然 得到 場景 裏來 計劃 理論 混合 研發 既然 前言: 哲學家常思考的問題:" 我是誰?"" 我從哪裏來?"" 要到哪裏去?不只是哲學家,我想每個人都有自己對這三個問題的認知。 如果我們要成為架構師,我們自己要面臨的三

MOT北京站 | 卓越研發億萬級雲端架構演進

隨著IT行業技術週期的快速迭代,如何在激烈的市場競爭中突出重圍成為了不少技術人的困惑。除了要保持良好的技術視野外,多向IT行業精英學習他們分享的實戰經驗,也可讓技術提升,達到事半功倍的效果。   MOT北京站首期以『億萬級雲端架構演進』為主題邀請了微軟、京東、轉轉、Pivot

專案-敏捷開發

    一晃就又是一個月過去了,到了管理端,心裡想的就是如何把亂七八糟的事情有序排列,讓團隊持續地的產出。雖說基本不用敲程式碼,但同時參與3個專案,感覺略累,這是一場馬拉松,要麼走過終點吐口氣,要麼走火入魔。    經過大概一個月的準備,8月份一個正式的創業專案終於確定下來,

【讀書】王興權變大咖的高效學習方法

過程 pan 1-1 == mil ros 聊天 交流 ref 【博客導航】 【讀書導航】 鏈接 羅友霸王課搜索 王興權:從菜鳥變大咖的高效學習方法(一、二、三) 筆記 學習白皮書,通論,抄書,編書,抄寫目錄,按目錄結構編寫書。3~6個月,深究一本

分散式到雲端服務Google Spanner 成長

摘要:距離 Google 開始開發 Spanner 已經 10 年,5 年前 Google 發表了論文,在 Google 雲平臺上增加開放 Spanner 服務,意義不僅僅是服務於 AdWords 和 Google Play,而是希望在雲端更有所為。在這 5 年時間裡,正是由於其他廠商無法複製 G

專訪雷果國1.5K到18K 一個程式設計師的5年成長

導語:今年三月份,在CSDN部落格和新浪微博上有一篇《從1.5K到18K,一個程式設計師的5年成長之路》被眾人分享和傳閱,這篇博文首先介紹了作者自學之初薄弱的基礎,然後通過流水賬形式分享了那個從當初“一竅不通”各種倒數且對前途迷茫的“我”,轉變成如今好學上進月薪達18K的昇華過程。雖然和眾多大牛相比,他的

支付寶架構講述工程師到架構師的成長

架構師是一個沒有被嚴格定義的角色。在寫這篇文章之前,我特意把這幾年看過的關於架構和架構師的書重新翻了一遍,結果發現它們的定義或多或少有一些不一樣,而經過了這幾年,一些之前同意的觀點,現在的我也不敢苟同了。另一方面,業界對於架構師這個崗位,其實也沒有統一的角色定位。在阿里巴巴,