1. 程式人生 > >入門Java一年進阿里,分享我學Java的那些思考!

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

也許今天的你在公司做著 CRUD 的工作,也許你還在為面試造火箭、工作擰螺絲悻悻不已,也許掙扎了許久卻找不到進步的方向。   不是計算機相關專業的我,從開始學習 Java 到進入阿里,用了一年多點的時間,很多人覺得是進步比較快的,問我怎麼學習 Java 才能快速進步,微信一一回復難以說的太明白,今天整理一下我的思考分享給大家。   打好計算機基礎   計算機基礎是所有程式語言的根基,不理解計算機運作原理就無法真正理解程式設計的意義。就像我們大一要從計算機基本原理開始學習一樣,如果你想真正吃透一門語言,就需要理解程序、執行緒、堆疊、記憶體定址、函式呼叫……   這些內容與任何一門語言都沒有關係,卻是所有計算機語言的根基。打好計算機基礎以後,對你來說不同的語言就真的只是語法和特性的差異,在語言之間轉換就變得很容易。當我從 C 語言轉向 Java 的時候,看了一天 Java 基礎語法就開始寫業務程式碼了。   自學和培訓的小夥伴往往在計算機基礎上比較薄弱,一旦學習到比較複雜的概念就會感覺比較吃力,這個時候你需要好好補一下計算機基礎知識。別說你沒時間,今天不努力,明天就後悔。   熟練掌握 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 不知道如何提高自己的能力,也有人抱怨“面試造火箭,工作擰螺絲”不知道該怎麼辦。   實際上在日常工作中,程式 = 控制 + 邏輯 + 資料,也就是演算法可以拆分為控制加邏輯。優秀的框架都實現了控制、邏輯、資料的分離,實現了很好的解耦和靈活性,這也是所有框架的演進方向。  
  • 資料容易理解,就是程式的配置、靜態資料和執行時資料;
  • 控制是程式的主流程,一般在微核心或框架底層實現,控制邏輯一般與具體業務邏輯關係不大,只是定義了流程;
  • 邏輯就是具體的業務邏輯,在特定約束下被控制流程呼叫生產出符合預期的資料。
  試著從控制、邏輯、資料的維度去理解框架、設計框架、優化程式碼,你很快就能成為優秀的程式設計師。如果你覺得在公司做業務很難提高技術,不妨嘗試一下梳理出控制、邏輯、資料,然後進行重構。   Java學習思路架構   想進BATJ大型網際網路企業上班,提升自己技術能力 學習的可以來看看   歡迎工作一到五年的Java工程師朋友們加入Java架構開發:760940986 群內提供免費的Java架構學習資料(裡面有高可用、高併發、高效能及分散式、Jvm效能調優、Spring原始碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!