入門Java一年進阿里,分享我學Java的那些思考!

也許今天的你在公司作着 CRUD 的工做,也許你還在爲面試造火箭、工做擰螺絲悻悻不已,也許掙扎了許久卻找不到進步的方向。java

不是計算機相關專業的我,從開始學習 Java 到進入阿里,用了一年多點的時間,不少人以爲是進步比較快的,問我怎麼學習 Java 才能快速進步,微信一一回復難以說的太明白,今天整理一下個人思考分享給你們。程序員

打好計算機基礎

計算機基礎是全部編程語言的根基,不理解計算機運做原理就沒法真正理解編程的意義。就像咱們大一要從計算機基本原理開始學習同樣,若是你想真正吃透一門語言,就須要理解進程、線程、堆棧、內存尋址、函數調用……面試

這些內容與任何一門語言都沒有關係,倒是全部計算機語言的根基。打好計算機基礎之後,對你來講不一樣的語言就真的只是語法和特性的差別,在語言之間轉換就變得很容易。當我從 C 語言轉向 Java 的時候,看了一天 Java 基礎語法就開始寫業務代碼了。算法

自學和培訓的小夥伴每每在計算機基礎上比較薄弱,一旦學習到比較複雜的概念就會感受比較吃力,這個時候你須要好好補一下計算機基礎知識。別說你沒時間,今天不努力,明天就後悔。spring

熟練掌握 Java

《Java 編程思想》沒有完整看完大致讀懂兩遍就不要說掌握了 Java。會用 Java 寫代碼只能說你入門了能夠幹活了,但也僅僅是初級階段。編程

我遇到過不少工做了三五年的人,作過不少項目,Java 水平卻和工做了一年的應屆生沒多大區別。大部分人迷茫和沒法進步的根本緣由就在於你僅僅掌握了java基礎,看不到 Java 的無限可能,也不知道作什麼能夠繼續進步。設計模式

熟練掌握 Java 須要你學習到 Java 特性的每一個角落,不須要記住每一個類和方法,但須要深入理解每一個特性的意義。工做中 SSM 框架爲咱們屏蔽了不少技術細節,Java 的特性可能並不常常用到。須要你主動學習,至少要把《Java 編程思想》看兩遍以上,其中反射、泛型、容器、註解、併發須要重點掌握。緩存

熟練掌握框架

不少人蔘加培訓是從 JavaEE 開始的,問我如何學好 JavaEE?我想說的是 JavaEE 其實已通過時了,如今要學 SSM。微信

掌握框架的第一步是學會使用。學習 SSM 的基本用法可以幫助你完成絕大多數開發任務,掌握了高級用法可以提出更好的解決方案。學習框架沒有捷徑,在工做中一遍一遍地練習是惟一的方式。數據結構

掌握框架的第二步是理解原理。不少人面試阿里失敗就敗在原理上,只知其一,不是其二,稍微問的深刻一點就答不上來了。理解原理就是理解 SSM 框架的靈魂,這也是一個程序員從體力勞動進階到腦力勞動的門檻。

不理解原理只能作寫代碼的工具,理解原理才能成爲真正的開發工程師。多思考、多總結、多請教,保持好奇心,多問一句是什麼、爲何,才能探索到框架的奧祕。

掌握框架的第三步是設計框架。試着去寫一個簡化版的 spring,實現 IOC 功能,你就會發現真 TM 難。泛型、容器、反射、註解、設計模式、重構等都會用到,經過設計框架,可以深入地理解這些 Java 特性和框架的設計原理。若是你尚未寫過框架,嘗試着寫一個吧,邊作邊思考,好好體會下框架的祕密。

掌握應用技術

隨着技術的發展,分佈式、緩存等使用愈來愈普遍。Java 程序員須要掌握的應用技術也愈來愈多,好比 spring boot、spring cloud、dubbo、Redis、RabbitMQ、ZooKeeper ……不使用這些技術也能寫出很好的單機程序,但掌握這些技術才能作好大型架構。學習這些技術也很簡單,就是多加練習。

衆所周知,阿里內部基本都是使用本身的技術,好比 hsf、diamond、metaq ……業界流行的這些技術用的不多。在阿里呆久了會感受與社會脫節,因而我就天天抽出時間去看這些技術的文檔,作本身的項目使用這些技術,經過日復一日的練習來掌握這些不經常使用技術。

理解編程的本質

前面說了那麼多,其實都是編程的術。相對於武功來講,都是外在的招式。掌握了招式能夠禦敵,但想要再上一層則須要掌握心法。對於程序員來講,編程的心法就是道。而我也是在阿里工做了好久才體會到道的意義。

想必不少人都知道「程序等於算法加數據結構」的說法。算法和數據結構聽起來都很高大上,也是大部分作業務的同窗難以接觸到的東西。不少人告訴我在公司本身是個 CRUD boy 不知道如何提升本身的能力,也有人抱怨「面試造火箭,工做擰螺絲」不知道該怎麼辦。

實際上在平常工做中,程序 = 控制 + 邏輯 + 數據,也就是算法能夠拆分爲控制加邏輯。優秀的框架都實現了控制、邏輯、數據的分離,實現了很好的解耦和靈活性,這也是全部框架的演進方向。

數據容易理解,就是程序的配置、靜態數據和運行時數據;

控制是程序的主流程,通常在微內核或框架底層實現,控制邏輯通常與具體業務邏輯關係不大,只是定義了流程;

邏輯就是具體的業務邏輯,在特定約束下被控制流程調用生產出符合預期的數據。

試着從控制、邏輯、數據的維度去理解框架、設計框架、優化代碼,你很快就能成爲優秀的程序員。若是你以爲在公司作業務很難提升技術,不妨嘗試一下梳理出控制、邏輯、數據,而後進行重構。

關注公衆號「程序之心」(ID:chengxuzhixin),天天給你誠意滿滿的乾貨!

相關文章
相關標籤/搜索