Java基礎 做java開發,java基礎是最需要下功夫的一項。在校招時最註重的就是基礎,拿不出像樣的項目沒關係,但是基礎萬萬不可不牢固。 JavaWeb基礎 JavaWeb是一系列技術的綜合,也是大多數Java學習者日後的技術方向。及早的瞭解JavaWeb也有利於更深層面理解,Java在完整的應用 ...
Java基礎
做java開發,java基礎是最需要下功夫的一項。在校招時最註重的就是基礎,拿不出像樣的項目沒關係,但是基礎萬萬不可不牢固。
- 想要基礎扎實,看書沉澱是必須的,有一些編程基礎的同學推薦閱讀《JAVA核心技術 捲1》,可以跳過圖形程式設計、事件處理、Swing、applet以及部分日誌章節,如果比較吃力也可以先跳過多線程章節。
- 看完一本書,一定要多加練習去理解和吸收。科班的同學可以用java寫實驗,寫的同時一定要多多運用學到的特性。練習階段各種設計模式套上去用,不要怕笨重,即使是濫用特性和設計模式也是一種有效的學習。
- 有了一定量的編程經驗後,可以再回過頭將《JAVA核心技術 捲1》速讀一遍,查漏補缺。同時我們開始擴寬我們的知識領域,開始進行JavaWeb的學習。
JavaWeb基礎
JavaWeb是一系列技術的綜合,也是大多數Java學習者日後的技術方向。及早的瞭解JavaWeb也有利於更深層面理解,Java在完整的應用中,是如何與各個模塊交互併發揮作用的。
基礎篇包括Servlet和JSP的學習、tomcat的使用、理解MVC分層模式、mysql的基礎用法及JDBC、瞭解http協議。
- 這部分的學習,我是通過《Head First Servlets and JSP》 。這本書輕鬆幽默讀起來很愉快,但是實在是很厚,而且部分技術已經過時,有時間的同學可以選讀。
- 可以看到這部分的內容是很雜且多的,此階段註重廣度的基礎學習,日後慢慢深入。這裡推薦個線上教程:
- Servlet系列教材 (一)- 基礎 - 教程:開發第一個Servlet - how2j.cn
- mysql系列教材 (一)- 安裝mysql-server - how2j.cn
- Tomcat系列教材 (一)- 教程 - how2j.cn
- JSP系列教材 (一)- 教程 - how2j.cn
- HTTP協議系列教材 (一)- 教程 - how2j.cn
- JDBC系列教材 (一)- Java 使用JDBC之前,先要準備mysql
- MVC系列教材 (一)- 教程 - how2j.cn
3. 重點要理解Servlet的原理以及生命周期。在完成這一部分的學習後,可以簡單的做個小網站,包括註冊登陸,增刪改查等功能。如果想繼續折騰,可以考慮將項目部署在阿裡雲或者騰訊雲上,一個完整可供他人訪問的項目,所獲得的成就感是非凡的。
部署到Linux系列教材 (一)- 介紹 - 如何把J2EE應用部署到Linux - how2j.cn
Java進階
Java始終是我們JavaWeb開發體系中最核心的一環,唯有不停地探索,才能把握住方向和機遇。
- 在做完一個簡單完整的JavaWeb項目後,我們對代碼的認知和理解會提高不少,這對接下來的深入學習打下基礎。Java聖經:《JAVA編程思想》 值得仔細品讀,作者的功力十分深厚,即使很多內容還無法理解,但每次讀完一定會有所收穫。同樣建議跳過“圖形化用戶界面“章節,這是一本伴隨我們技術成長的好書,買一本放在旁邊,摸著就有底氣。
- 讀完編程思想,建議寫一個有一定複雜度和代碼量的後臺項目。可以是一個http伺服器,一個大型聊天室,也可以參考我的項目實現一個DBMS:wwwyanxin/wyxDBMS 這一部分要強化我們的Java基礎,同時也為日後的招聘積累項目經驗。
- 做完項目我們又該看書沉澱技術了,此時我推薦《Effective Java》,這本書並不厚但是乾貨十足,作者講述Java的最佳實踐和經驗規則。它能幫助我們寫出清晰、健壯、高效的代碼,同時這本書涵蓋了非常多的面試考點,一定要牢記於心!
- 最後還要深入學習Java多線程技術以及Java虛擬機原理,這兩部分難度較大,理解起來比較抽象。也許日後工作中,我們很少遇到併發問題,不一定有機會進行JVM調優,但是這部分一定要認真對待,越理解底層寫出的代碼越高效,查bug時越準確,另外更重要的是面試常考!推薦兩本書《Java併發編程的藝術》《深入理解Java虛擬機》,以及併發編程網:併發編程網 - ifeve.com 重點掌握java記憶體模型,各種鎖的原理及應用,JVM GC垃圾回收原理。
JavaWeb進階
圍繞整個java體系學習,我們要築起高高的城牆。
- Linux,現在的伺服器基本都是Linux系統,也不存在圖形化操作界面。作為開發工程師推薦閱讀《The Linux Command Line》,有中文線上免費版本TLCL。那本《鳥哥的Linux私房菜》更適合運維工程師,就不推薦給大家了。學習的時候,可以去阿裡雲或騰訊雲租一個學生伺服器,每個月大概10元左右,直接ssh到雲伺服器上操作,能更好地模擬公司的開發及生產環境。
- 操作系統原理,主要學習進程式控制制調度、進程通信、存儲和設備管理、文件管理以及系統安全。這一部分可以通過看教材或者自行找一些網課補充。
- 資料庫,可以買一本《MySQL必知必會》小冊子作為基礎入門,沒有什麼理論的堆砌,是一本實踐指南。學習資料庫原理可以閱讀《MySQL技術內幕》索引優化、事務、鎖、範式都是重點。
- 網路協議,入門可以讀《圖解HTTP》《圖解TCP/IP》如果要深入研究可以讀《UNIX網路編程 捲1》和《TCP/IP詳解 捲1》大多數開發者接觸http和tcp、udp、ip協議比較多,但是對整體網路協議棧有個完整瞭解是必要的。
- 數據結構與演算法,數據結構是演算法的基礎,一定要清晰明瞭。演算法則是筆試面試中無法繞過的難關,推薦去LeetCode刷題,現在也有了中文官方網站:力扣 (LeetCode) 中國官網 - 全球極客摯愛的技術成長平臺 從easy難度開始刷起,積累一定題量之後,做演算法題會很快找到類型方法。
- SSM框架,Spring+SpringMVC+MyBatis可以說是開發必備了,但框架只是錦上添花,不要太依賴框架進行學習。當我們能不依賴任何框架開發完整項目時,才是真正掌握了它。最為重要的是理解Spring的兩個特性:IOC 反轉控制和DI 依賴註入。明白實現原理以及為什麼要使用Spring,只有這樣才能在層出不窮的框架中靈活應對,立於不敗之地。
加分技能
- 前端,一些崗位要求全棧,即使不是全棧,懂得前端技術的後臺能寫出更加合理的介面,與前端工程師合作起來會更順利,理解項目更通透,解決問題準確迅速。
- 學習一門動態語言,動態語言開發起來更靈活迅速。同時比較動態靜態語言的特點,可以更好去提煉跳出語言束縛的代碼思想。推薦學習JavaScript或者Python等。
- 大數據,大數據開發近幾年也是熱門方向之一,有興趣的同學可以學習。
- 熱門工具及框架,包括分散式Dubbo、緩存優化redis、nginx、虛擬化技術docker等。一般來說本科應屆生不會要求很高,但是要對熱門技術有一定的瞭解。
常用網站推薦
- GitHub: Build software better, together
- Java學習:How2J 的 Java教程
- Linux命令行:TLCL
- 演算法: 力扣 (LeetCode) 中國官網 - 全球極客摯愛的技術成長平臺
- 正則表達式測試:PHP, PCRE, Python, Golang and JavaScript