當前位置:
首頁 > 最新 > 掌握後端技術的6點學習建議

掌握後端技術的6點學習建議

程序員是一個金字塔結構的職業體系,越往上,人越少也越難達到。走到金字塔頂部需要不斷的學習和進步,包括正確的態度、正確的方法以及持續的努力。本文整理了6點學習後端技術的建議,並在最後給出了學習新技術的方法論,希望幫你早日走上金字塔的頂端。

學習後端技術和學習其他技術並沒有什麼大的不同。因此,本文題目換作「如何學習技術」也是講得通的。

1 紮實的計算機基礎知識

計算機專業的一些比較普遍的基礎知識課程分別如下。

數據結構和演算法

程序是由數據和演算法組成的,因此這兩部分是計算機軟體的基礎,諸如B 樹、哈希表、棧以及七大排序演算法、查找演算法等,在很多軟體代碼中都可以看到。有時候,一名優秀工程師和一名普通工程師的區別也就在於是否能夠使用合適的數據結構和演算法。

計算機操作系統

操作系統可以說是一個集大成於一身的軟體程序。資源調度、任務調度、I/O 調度、進程通信等,每一個設計都是精華,也是很多其他應用軟體設計的思想來源。

計算機網路

目前絕大多數有數據傳輸功能的程序都離不開網路。網路七層或者四層協議棧的設計非常精妙。了解網路連接如何建立、斷開以及每個連接狀態的意義,都有助於對程序網路問題的排查。

計算機組成原理

這是計算機底層的設計,也是計算機運行的基礎。了解這些有助於消除計算機的神秘感,畢竟符合馮?諾依曼原理的計算機無非就是存儲數據、程序按序運行。

這裡不得不說的一點是,雖然現在各大高校的計算機專業課程比較落後,但是這些基礎課程是計算機專業的基礎,因此不管怎樣都應該紮實掌握。也許上學的時候你感覺不到有多大的用處,但是進入實際的開發工作中,是否能夠掌握紮實的基礎知識往往決定了一名開發工程師的上限,這也是很多大的互聯網公司無論是校招還是社招,都側重於一些底層知識考察的原因。畢竟,你會使用什麼東西只能決定你的下限,而你的基礎知識和學習能力才決定了你的上限。

此外,其實很多平時開發中用到的技術都可以關聯到這些基礎知識。比如,我們經常為了提高查詢性能而使用的緩存技術,以及為了兼容CPU 和I/O 速度不匹配而設計的CPUCache 就是同樣的東西;操作系統中的進程間通信方式和服務之間的非同步/ 同步通信也是差不多的道理。諸如此類,其實計算機科學基礎凝聚了很多精華的設計,無論是計算機硬體架構、計算機操作系統還是計算網路。

2 知其然更要知其所以然

經常遇到來面試的工程師,在簡歷上寫了很多項目,也用過很多技術,怎麼看都是非常不錯的候選人,但是面試一旦深入到原理或者優化層面,很多工程師甚至是一些公司的資深架構師都會支支吾吾,答非所問或者說是沒關注過。聽到最多的解釋就是業務壓力太大,沒有時間去研究。其實,從筆者自己的經歷來看,業務忙是原因,但是沒有時間卻肯定是借口,畢竟閱讀一個項目的源碼雖然比較耗費時間,但是去網上看看已有的原理分析其實是花不了太多時間的。歸根結底,還是沒有一種知其然更要知其所以然的基本意識。很多東西,你學會了使用會很興奮,但是你有沒有想過這麼令人興奮的功能是如何實現的呢?最簡單的例子,Java 中的HashMap,大家都在用,但是它到底是怎麼實現的呢?很多人甚至都不知道它和數據結構課程上的哈希表是什麼關係,更別說知道解決衝突的方法了。

這也可以映射到現在的一種現象:很多開發工程師工作了很久,看似經驗豐富,但基本都是拿著一年的工作經驗重複n 年。基本上每一份工作,每一個項目都在做重複勞動,而且不去考慮如何避免重複勞動。

這也涉及技術的廣度和深度的問題。就筆者來看,對於剛剛畢業或者剛剛入職的工程師來說,首要的是深度問題,只有你在某一領域有了深入的研究和造詣,你才能融會貫通,迅速地擴大自己的知識面,在廣度上做到突破。而對於有一定工作經驗的工程師來說,雖然深度不是那麼必需,但是遇到的問題、新學到的東西還是刨根問底才好,否則一旦出現問題再去亡羊補牢會非常被動,也不利於自己的技術發展。畢竟,一個什麼都做過、什麼都用過卻什麼也不精通的人很容易被替代。

3 動手實踐

一種學習技術的最佳實踐就是「項目驅動型學習」,也就是動手實踐。很多技術,只看書,你會覺得雲里霧裡,看了就忘,必須要經過自己的實踐或者項目中使用到了這種技術,你才能很快地掌握並熟練。此外,現在朋友圈、微博上充斥著各種所謂的乾貨,很多人閱讀大量的資料自以為收穫滿滿,其實對於裡面的知識根本就沒有實踐過,甚至有時候就是感嘆一下別人真厲害而已。真正的乾貨是需要自己消化的,消化最好的模式就是實踐,無論是對資料中的例子,還是一筆帶過的知識,都是如此。

4 頻繁練習

動手實踐能夠讓你快速入門,但只有頻繁練習才能讓你熟練使用。

「一萬小時」理論講的是任何一個行業都至少需要一萬個小時的實踐才能成為專家。

先不去討論此理論是否正確,可以想想當你長時間不寫代碼或者不用某個技術後再去做相關的開發,那種生澀、陌生感想必是無疑的。可見對於研發這個角色,頻繁練習是多麼重要。

當然,這裡的頻繁練習並非指重複勞動,而應該是帶著自己的思考去練習,多想一下為什麼這麼做,有沒有更好的方式。

5 持續學習

「活到老,學到老」這句話用在程序員這個職業上再合適不過了。IT 技術尤其是互聯網開發中的技術,迭代速度是非常快的。也許你今天學的知識,過不了幾年就被拋棄。雖然相比前端技術,後端技術算是比較穩定的,但與其他行業相比,迭代速度還是非常快的,像Struts 這種當年火得一塌糊塗的技術現在也過時了。因此,一定要對新事物、新技術具有敏感性,要不斷地涉獵業界最新的知識點,擴充自己的知識庫。

這裡還需要提到的一點就是,要「逃離舒適區」。人們對自己熟悉的東西會感到親切,對自己熟練掌握的技術一般也能夠自信地使用,然而當需要使用自己沒接觸過的技術時,很多人就望而卻步、不敢嘗試了,進而也就喪失了學習新知識、擴充自己知識庫的機會。

最好的方式應該是敢於「逃離舒適區」、敢於使用新技術,這樣才能讓自己具有持續的學習興趣,促進自己的持續進步。

6 自我總結

相信很多人在平常的工作中,經常會遇到一些問題,然後通過查閱網上資料、詢問同事、翻看源碼等手段解決了,當再次遇到類似的問題甚至相同的問題時,還是一頭霧水。先不提記憶力的問題,造成這種情形的很大一個原因就是沒有總結。當然,這裡的總結不僅僅指的是把你平時遇到的問題記錄下來,更深一層的是要找到問題發生的本質原因,如何避免發生同樣的問題,從中有什麼啟發和收穫等。再進一步,則需要經常將自己一段時間內的知識收穫整理成體系或者融入自己的知識體系中,這樣才能舉一反三,遇到相同的問題可以有據可循。

而自我總結的方式包括記筆記、寫博客、做分享。其中,相比記筆記來說,寫博客、做分享是筆者更為推薦的方式。畢竟,和別人交流一方面能促使你對總結質量的把控,另一方面分享知識給別人帶來的「榮譽感」反過來會產生某種正向反饋讓你更加樂於總結和分享。

7 如何學習一門新技術

上面主要講述了宏觀層面的如何學習技術,而具體到學習某一新技術,其實也是有法可循的。

由於很多技術的模塊非常多,源碼也非常複雜,很多時候看源碼會陷進去越看越不得章法,因此這裡著重說明一下「看源碼」的典型流程。

1)閱讀該技術的架構文檔,了解其總體架構和組成。

2)根據總體架構,將源碼文件以模塊或者上下層級進行分類。

3)從未閱讀過的模塊中選擇最獨立(依賴性最小)的模塊代碼讀起。

4)閱讀此模塊的功能介紹文檔。

5)閱讀此模塊的源代碼。

6)一邊閱讀一邊整理調用關係(以表或者樹的形式)。

7)轉到第3)步。

GIF

本文選自《Java工程師修鍊之道》一書。

Java 是一門非常容易入門的語言,初學者經過初期的學習之後基本能掌握DEMO 級別的編程應用。但是Java 龐大的體系可能會把你繞暈,又或者你還沒看到Java 的生態系統有多麼複雜。

此時,你需要本書。

本書主要針對一名合格的Java 工程師的必備技能做了大綱性的總結和闡述。本書內容包括了工程化、常用開發框架、數據存儲、數據傳輸、Java 編程高級知識、性能優化、安全技術等內容,基本涵蓋了Java 工程師需要掌握的絕大部分技能點。

你可以把本書看作一本Java 工程師的入職指南,也可以看作一本串聯Java 後端技能點的參考手冊。通過精心編排的內容,剛入門的Java 工程師能夠體系化地學習相關開發技能,有經驗的Java 工程師能夠查漏補缺,鞏固自己的相關開發技能,進一步完善自身的Java 技術體系。

GIF

本書目錄結構

篇幅限制,完整目錄請見本書。

第1章 後端技術導言

1.1後端基礎設施

1.2 Java後端技術概覽

1.3 如何學習後端技術

第2章 Java項目與工程化

2.1 項目構建

2.2 代碼版本控制

2.3 代碼質量保證

第3章 開發框架

3.1 依賴注入

3.2 對象關係映射

3.3 日誌

3.4 Web MVC

第4章 Spring

4.1 Spring核心組件

4.2 Spring數據操作框架

4.3 Spring Boot

4.4 Spring常用組件

4.5 總結

第5章 數據存儲

5.1 關係型資料庫——MySQL

5.2 非關係型資料庫

5.3 緩存

5.4 搜索引擎——Elasticsearch

第6章 數據通信

6.1 RESTful架構風格

6.2 遠程過程調用——RPC

6.3 消息中間件

第7章 Java編程進階

7.2 Java網路編程

7.3 Java並發編程

7.4 Java開發利器

7.5 Java新版本的特性

7.6 總結

第8章 性能調優

8.1 調優準備

8.2 性能分析

8.3 性能調優

第9章 安全技術

9.1 Java加密

9.2 安全HTTP——HTTPS

9.3 Web安全

附錄A 代碼構建常用命令

附錄B Git常用命令

附錄C MySQL常用命令

附錄D MongoDB常用命令

附錄E Java調優常用命令


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 博文視點Broadview 的精彩文章:

現實世界冒險遊戲簡介:基於位置+AR+冒險

TAG:博文視點Broadview |