0基礎是否能夠自學Java,有必要參加培訓班嗎?

學習編程語言不僅要學得會,更要用得上和用得好,所以學習Java編程通常需要遵循一個系統的步驟,尤其是對於利用業餘時間學習Java的人來說,更是如此。自學Java需要注重以下幾個方面:


第一:掌握java原理
在程序真正運行在CPU上之前,必須要讓OS的kernel理解我們在編輯器或者IDE里根據每種語言的語法規則敲入的源代碼,kernel才能做出相關的調度,所以需要先將源代碼轉化成可執行的二進制文件,這個過程通常由編譯器完成。有些編譯器直接將源代碼編譯成機器碼,載入內存後CPU可以直接運行。而機器碼的格式與跟具體的CPU架構相關連,例如ARM CPU無法理解Intel CPU機器碼。因此,同樣的源代碼需要根據不同的硬件進行特定的編譯。高級語言轉換到低級語言的橋樑就是編譯器。程序員寫好源代碼,編譯器將源碼編譯成可執行的機碼,然後CPU讀取機器碼,執行程序。


第二:掌握數據庫

要說數據庫,一般以SQL Server作為入門的學科,它適合中小型項目開發,而現在比較流行於大型開發的有:

Oracle

現在具有企業大型軟件的絕對佔有率

DB2 在以IBM服務的公司以及單位(中國銀行)

MySql 相對不是很正式的開發,使用MySql

當然還有一些:Access(桌面數據庫),FoxPro(中國教育),Informix的數據庫系統.剛開始入門的時候可以找點視頻教程來學習,視頻教程一般講得比較好,但不要企圖於通過它達到比較高的水平。然後要學會將自己所知道的去實踐,多實踐。當覺得實踐到一定程度而沒有什麼衝勁了,就去學習理論,當覺得理論知識需要發揮的時候就去實踐,時間的週期不一定,沒有什麼定論,但自己的時間安排需要定論就可以了。


第三:高級進階:


已經有了相對較好的java基礎後,需要學習一些java使用較高級的東西,大體有兩方面,一個是併發,一個是JVM(java虛擬機),分別推薦兩本書吧: 《Java併發編程的藝術》、《深入理解Java虛擬機》,前者較好的講解了java中併發編程的實現,內容通俗易懂,主要理解volitile和sychornizer,涉及到底層封裝,主要是通過CAS和AQS實現的,而原子類、JUL下的工具類等實現也是上述兩種方法實現的,而併發最重要的技術體現就是線程池技術(此處是重點,源碼)和鎖(主要理解對象的頭部 mark hard部分,在此基礎上學習下重入鎖、讀寫鎖,而悲觀鎖、樂觀鎖、輕量鎖、重量鎖等概括要通過相應的關鍵字來理解);後者較深,不建議入門學習,只要對JVM底層結構有一定了解,對內存模型有概念,對GC的實現理解其算法和流程就好。


第四:框架相關:


經典的SSM(spring、spring MVC、mybatis),要對其使用、結構、源碼實現有一定理解,其中spring的IOC和AOP,spring MVC和服務器/bean層的關係及實現,mybatis的源碼實現(mybatis源碼流程相對簡單,便於學習java代碼)。現在用的最多的是spring boot,便於快速構建,但是缺點是缺少對具體實現的感知,需要有SSM或SSH的組合理解(不推薦SSH呀,太老了)。Netty框架是一種網絡通信框架,基於Netty可以實現客戶端和服務端的消息通信,基於Netty可以學習一下NIO的具體實現(AIO,BIO最好懂一下原理)。

總結:

所以,學習Java的過程中,你最大的任務是提高自己的影響力,為自己未來的十年工作生涯那一天做準備。如果你能夠靠你的影響力和以前積累的技術,參與到一個偉大的項目當中,那麼你後面的五年也就有著落了。當然了,我現在滿打滿算,做程序猿也就4年半不到,因此關於4年到5年這一部分,我的見解不一定是對的,就算是對的,也不一定是適合任何人的。



分享到:


相關文章: