日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

【大学四年自学Java的学习路线】写了一个月,这是一份最适合普通大众、非科班的路线,祝你零基础快速找到一份满意的工作

發布時間:2024/3/24 java 65 豆豆

零基礎自學 Java,大概多久可以找到工作?

最近又有一個讀者“在你的世界各地”向我提了上面這個問題。但說實話,這個問題并不太好問答。因為 Java 是一門“歷史悠久”的編程語言,它的學習資料多到令人眼花繚亂。

但不能為自己找借口啊,畢竟讀者就是上帝。于是我花了一個月的時間,精心為你準備了一份萬字長文,史上最佳的 Java 自學指南,保證你能找到一份滿意的工作。

先來梳理一下讀者強調的關鍵詞,有 3 個,分別是“零基礎”、“自學”、“找到工作”。

1)“零基礎”意味著我提供的學習路線不能太難,或者說應該是循序漸進的。

2)“自學”意味著我提供的學習素材不能太枯燥,或者說應該是幽默風趣的。

3)“找到工作”意味著學習周期要盡可能的短,但還要學有所成。

01、為什么要學 Java

因為 Java 是世界第一的編程語言啊!誰給的底氣?大概是 TIOBE 這個編程語言排行榜吧。

TIOBE 是編程語言流行趨勢的一個指標,每月更新,基于互聯網上有經驗的程序員、課程和第三方廠商的數量。排名使用著名的搜索引擎(Google、Bing、Wikipedia)進行計算。

上面這幅圖是幾個熱門編程語言(Java、C、Python、JavaScript 等等)近些年來的增長趨勢。可以看得出,Java 霸占這份榜單很多年,并且還會持續更久。

1)簡單易學,老少咸宜。Java 繼承了 C++ 語言面向對象的核心技術,舍棄了容易引起錯誤的指針,移除了運算符重載和多重繼承等難以理解的概念,增加了垃圾回收機制,這些大大簡化了程序員的開發成本。

2)跨平臺。任何平臺只要安裝了 JVM(Java 虛擬機),就能運行 Java 程序。真正實現了“Write once, run anywhere”。

3)豐富的類庫。全球約有 900 萬名 Java 開發人員,創造了一個充滿活力和積極進取的 Java 社區,開源類庫非常豐富。借助這些類庫可以讓開發者避免重復造輪子,不用去關注 Java 底層的開發,只關注業務的實現。

4)廣泛使用。據估計,全球范圍內有超過 30 億部設備運行 Java,超過其他任何一種語言。Java 被用于眾多全球知名的網站中,包括 eBay.com、Linkedin.com、Amazon.com 和 Facebook.com。這一點應該是 Java 屹立不倒的深層次原因吧,大家都在用,才是真的強啊。

5)薪資可觀。很多企業都需要 Java 方面的人才,這是一個非常現實的原因,為了生計著想,學習 Java 這個方向不會有錯!

02、哪些 Java 知識不需要再學了

張無忌在學太極拳的時候,他爹的師父張三豐告誡他一定要把之前所學習的武功全部忘掉,忘得越多就會學得越快。

同樣的,自學 Java 的時候一定要先知道哪些 Java 知識不需要再學了,畢竟技術的更新迭代就好像火箭一樣快,Java 的一些知識點早已經過時了。如果不懂得斷舍離,那學起來就不免太痛苦了。

1)AWT 和 Swing

真不知道為什么,有些書籍還在介紹 AWT 和 Swing,這就好像不知道大清朝早已經亡了幾百年一樣。已經 9102 了,誰還會用 AWT 和 Swing 去開發桌面應用呢?

就我所知,C++ 程序員會用 MFC,C# 程序員會用 Winform 和 WPF。甚至還可以用一種更時髦的技術(比如 Electron)把 Web 網頁裹一層華麗的外衣,變成可執行文件。

2)Applet

作為網頁插件技術,Applet 壓根就沒流行起來,就連曾經的熱門 Flash 也要淘汰了。

3)XML

XML 還沒有被淘汰,應用的地方還有不少。但是作為一種數據傳輸格式,它正在被 JSON 替代。

4)JDBC

我個人不建議再學習偏底層的 JDBC 了,尤其是對于時間寶貴的自學程序員來說。與其花這點時間,不如把精力投入到 MyBatis 的學習上。

5)Struts

Struts 是早年一個優秀的 MVC 框架,單從技術的角度來看,還是蠻不錯的。但是自從有了 SpringMVC 后,Struts 就被拍死在沙灘上了。

6)Hibernate

在我剛參加工作那會(2010 年的時候),持久層框架用的正是 Hibernate。但時過境遷,Hibernate 太重量級了,學習成本太高,取而代之的是輕量級的 MyBatis(支持定制化 SQL、存儲過程以及高級映射)。

7)JSP

說起來慚愧,我現在維護的一個項目,視圖層用的依然是 JSP。但如今流行的是“前后端分離”,JSP 就顯得不合時宜了。

03、學習 Java 需要安裝的軟件

工欲善其事必先利其器,戰斗之前我們要先配備好武器。

1)JDK

JDK 是 Java Development ToolKit 的簡稱,也就是 Java 開發工具包。JDK 是整個 Java 的核心,包括 Java 運行環境(Java Runtime Envirnment,簡稱 JRE),Java 工具(比如 javac、java、javap 等等),以及 Java 基礎類庫(比如 rt.jar)。

2)IDE

集成開發環境(IDE,Integrated Development Environment )是用于提供程序開發環境的應用程序,一般包括代碼編輯器、編譯器、調試器和圖形用戶界面工具。集成了代碼編寫功能、分析功能、編譯功能、調試功能等一體化的開發軟件服務套。

在我初學 Java 的時候,老師竟然告誡我們不要使用 IDE(當時是 MyEclipse 風靡的年代),而要使用文本編輯工具,比如說 Editplus、Nodepad++。

老師說的有一定的道理,比如說,在沒有代碼提醒的幫助下,我們能夠通過不停的手敲記住一些 Java 的常見名詞。但在我看來也就僅此而已。

沒有 IDE 的幫助,讓初學者對編程望而生畏,因為那些名詞實在是太多了。我們班當時很多同學就是因為覺得太痛苦了,就放棄編程了。

我到現在也不太會敲 extends、implements(在 Eclipse 中復制出來的),不會敲又怎樣呢?有好的工具,我們就應該利用,不應該受苦

下面是最為受歡迎的 IDE 的榜單。

對于我來說,一直喜歡的是 Eclipse,這可能是一種情懷吧。

據說,喜歡 IntelliJ IDEA 的 Java 程序員越來越多了。

3)JAD

將源代碼轉換成二進制執行代碼的過程叫做“編譯”,一般指的是將 Wanger.java 編譯成 Wanger.class 字節碼文件;而將字節碼文件轉換成源代碼的過程叫做“反編譯”,比如將 Wanger.class 轉成 Wanger.java。

JAD 是一款老牌的、經典的 Java 反編譯工具。更重要的是,JAD 能夠讓我們深入的了解 Java 代碼的工作機制。

比如說有這樣一段代碼:

String chenmo = "沉默"; String wanger = "王二";System.out.println(chenmo + wanger);

它的“廬山真面目”是下面這樣子的。

String chenmo = "\u6C89\u9ED8"; // 沉默 String wanger = "\u738B\u4E8C"; // 王二 System.out.println((new StringBuilder(String.valueOf(chenmo))).append(wanger).toString());

4)Maven

Maven 是一個項目管理和自動化構建工具,基于項目對象模型(POM)的概念,可以管理項目的構建、報告以及文檔。作為 Apache 組織中的一個頗為成功的開源項目,Maven 主要服務于基于 Java 的項目構建、依賴管理和項目信息管理。

04、推薦一些優質的 Java 學習網站

經常有一些讀者問我:“二哥,學習 Java 應該關注哪些網站?”,我之前的態度一直是上知乎、上搜索引擎搜一下不就知道了。但讀者對我這個態度很不滿意,他們說,“我在問你,又不是問知乎,問搜索引擎。”你還別說,讀者說得有道理。

于是我想,那就推薦一些吧。先說我心目中的前三名,但不局限于 Java 學習者。

1)Google

啥都不說了,說多了都是淚,可氣的是 Robin 李的搜索引擎實在是不爭氣。說句良心話,Google 的搜索結果比前者的質量高出一百(零一)倍。

Google 也算是網站?必須算啊。只要你想要學習,它會給你所有。

2)Stack Overflow

Stack Overflow 可以說是解決問題的殺手锏。下面這些問題是不是都很常見?

如果英語能力不太好的話,可以借助一下 Chrome 瀏覽器的自動翻譯功能。

3)GitHub

GitHub 是一個擁有數十億行代碼的網站,每天有數百萬開發者聚集在一起,研究開源軟件中存在的問題。

對于普通的程序員來說,如果不想重復造輪子,就必須要站在巨人的肩膀上,那么巨人是誰呢?就是 GitHub。那些牛逼的開源軟件庫,99% 的情況下會在 GitHub 上找到它。

對于成功的程序員來說,如果想要被別人膜拜,最好能在 GitHub 上貢獻一個開源庫,如果星標超過 1W,那可是相當的牛逼,在業界應該算是響當當的人物。

然后,我再推薦一些 Java 程序員必須要關注的網站。

4)IBM Developer

IBM developerWorks 提供了中文版,里面的文章都屬于非常高質量的。

5)Java SE 技術文檔,https://docs.oracle.com/javase/8/docs/api/

即使是 Java 編程的大牛 , 也離不開這份文檔。中文版的 API 可以參照:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh

6)Java World

這個網站包含了大量的 Java 教程 , 涉及各種各樣的話題。其中很多文章都寫的很好 , 并且有圖片、插圖進行說明。它可以被用來當作深度學習的教科書。英文能力有限的話,可以使用谷歌翻譯。

7)Program Creek

Program Creek 在維護方面做的很好 , 文章讀起來也比較有趣。在這里 , 你可以找到其他任何網站都不曾涉及到的話題 , 而且幾乎每篇文章都包含漂亮的插圖或者示例代碼。

8)LeetCode

備戰技術面試?力扣提供了海量技術面試資源,幫助你高效提升編程技能,輕松拿下世界 IT 名企 Dream Offer。

刷題的話,還有一個牛客網值得推薦,里面各個公司的面試題和面經分享,找工作前認真刷一刷,一定會大有所獲。這里強調一下刷題的重要性:

  • 可以讓思維保持活躍
  • 強化對基本知識的理解
  • 要想找到工作,就要過面試,不刷題怎么能行

9)CSDN,https://www.csdn.net/

網站很多,重要的是挑幾個自己喜歡的關注,持續不斷地學習,就能夠取得顯著的進步。

05、推薦一些優質的 Java 書籍

不知不覺,我已經接觸 Java 11 年了——從 2008 年北京奧運會那年開始,到現在;未來還會更久。

這期間我讀了不少 Java 方面的書籍,紙質版的少說有三十來本吧,更何況還有不少的電子書。萬事都有好壞,書也一樣。有的是精神糧食,有的純粹是浪費時間。

這里就分享一些我精挑細選后的優質書籍,希望能幫大家少走點彎路。

1)《Java 編程思想》

這本書在豆瓣的評分高達 9.1 分,但我總覺得有點虛高。

記得剛上大學那會,就在某寶上買了一本影印版的《Java 編程思想》,但由于初學 Java,對編程極度缺乏信心,導致看這本書有一種看天書的感覺。后來,去蘇州參加工作的時候把它作為最寶貴的紀念品帶了過去。

2014 年回洛陽的時候把它送給了一位關系還不錯的同事,權當是分別的禮物吧。2016 年的時候,我又重新買了一本,希望自己能夠夯實一下基礎。但事與愿違,它被我束之高閣了,讀起來無比的枯燥。2018 年的時候,我重新捧起它讀了一遍,總覺得有一種莫名的負罪感。

《Java 編程思想》是個大部頭,足足 880 頁,文字更是密密麻麻。我不建議大家一個字一個字的讀,知曉其中的精華就可以了。如果你覺得這本書讀起來很痛苦,不妨來讀一讀我加工潤色后分享博文,足足 25 篇,每一篇都很精彩。

先來通過思維導圖看一下這 25 篇 Java 博文涉及到的知識點。

下面是這 25 篇 Java 技術博文對應的鏈接。

Java 的核心目的和并發編程
Java:程序不過是幾行代碼的集合
什么是面向對象編程(OOP)?
如何理解 Java 中的繼承?
吃人的那些 Java 名詞:對象、引用、堆、棧
Java 的操作符——“=”號
害死人的自動遞增,不償命的自動遞減
Java 流程控制語句
Java是通過什么機制來確保對象初始化呢?
Java 訪問權限控制:public、private、protected
Java代碼復用的三種常用方式:繼承、組合和代理
Java:多態乃幸福本源
Java 抽象類和接口,看這一篇就夠了
Java內部類
Java String,看這篇就夠了
Java 數組,看這一篇就夠了
Java 集合類入門篇
HashMap,難的不在Map,而在Hash
Java泛型的重要目的:別讓貓別站在狗隊里
Java異常處理:給程序罩一層保險
如果有人再問你 Java 的反射,把這篇文章扔給他
Java枚舉:小小enum,優雅而干凈
Java注解(Annotation):請不要小看我!
Java I/O 入門篇
Java:并發不易,先學會用

《Java編程思想》無疑一直都會被大力推薦,可是第四版的出版時間竟然早在 2007 年,全書大部分的代碼是基于 JDK 1.5 完成的。如今什么年代了?

告訴你一個好消息,《Java編程思想》的作者 Bruce Eckel 在 2017 年的時候發布了第五版,沒想到吧?為什么在網上都看不到這本書的消息呢?因為改名了,而且只有電子版。

這本書的所有源代碼已經開源在 GitHub,傳送門:

https://github.com/BruceEckel/OnJava8-Examples

如果英語水平像我一樣菜,看英文版比較費勁,可以在 GitHub 上查看大嬸們的譯本,傳送門:

https://github.com/LingCoder/OnJava8

如果英語水平還不錯,可以自行購買電子版的《On Java 8》,雖然比較貴。

2)《Java 核心技術卷一》

《Java核心技術卷一》是唯一可以和《Java編程思》媲美的一本 Java 入門書。單從技術的角度來看,前者更好一些。但上升到思想層面嘛,自然后者更好,兩者的偏重點不同。

思想不會變,所以《Java編程思想》還停留在第 4 版(2007 年);而技術是要更新迭代的,所以《Java核心技術卷一》來到了第十版(2016 年)。

我們來看一下《Java核心技術卷一》第十版的大綱。

前九章:包括 “Java 程序設計概述”、“Java 程序設計環境”、“Java 的基本程序設計結構”、“對象與類”、“繼承”、“接口”、“lambda 表達式與內部類”、“異常”、“斷言和日志”、“泛型程序設計”、“集合”。這九章講述的是 Java 基礎知識點,是 Java 程序員必須要掌握的內容,所以必看。

第十到第十二章:講的是 AWT 和 Swing,個人感覺這部分內容屬于不需要再學的 Java 知識點。當然了,窗口編程涉及到的“事件驅動-監聽-方法回調”的機制蠻重要的,需要掌握,但和 AWT 和 Swing 的關聯度不大。就好像,我們取錢直接去招商銀行,沒必要把招商銀行的錢轉到工商銀行再取出來。

第十三章:講的是應用部署和 Applet,顯然 Applet 也沒必要學了。出版社沒有把這部分內容刪掉,純粹是為了讓這本書變得更笨重(定價就高了)。

第十四章:并發編程。這也是 Java 學習過程中最難的一塊之一,另外一難是 Java 虛擬機。但這是初級程序員邁向高手的必經之路。

整體上來講,《Java核心技術卷一》非常值得一讀,廣度和深度都恰到好處。強烈推薦。

我知道,有些同學因為工作時間的原因,一直沒有時間讀書。像《Java核心技術卷一》這樣厚得像特朗普的臉皮一樣的書,更是沒有時間讀了。不過,不要擔心,二哥替大家解決了這個煩惱,我用了一個月的時間把這本書完整地讀了一遍,并寫了 9 篇高質量且通俗易懂的文章,供大家作為參考。

先來通過思維導圖看一下這 9 篇 Java 核心技術博文涉及到的內容。

下面是這 9 篇 Java 核心技術博文對應的鏈接。

Java面試官:兄弟,你確定double精度比float低嗎?

請用面向對象的思想,談一談這次面試的過程

再談 Java 的繼承和超類 Object

Java:接口和抽象類,傻傻分不清楚?

Java生成二維碼分享海報

Java:優雅地處理異常真是一門學問啊!

教妹學 Java:晦澀難懂的泛型

教妹學Java:大有可為的集合

教妹學 Java:難以駕馭的多線程

3)《Head First Java》

在我遇到《Head First Java》之前,如果你要我推薦 Java 技術書,我會毫不猶豫地推薦《Java 編程思想》和《Java 核心技術卷》,因為大家都說好嘛,我只能“同流合污”了(強顏歡笑);但換成是現在的話,我會優先推薦《Head First Java》。

盡管《Head First Java》也非常的厚,至少比我的臉皮后,但趣味性就要甩前面兩本好幾條街了。這年頭,大家都沒時間讀枯燥的技術書,尤其是厚的。上一張圖大家感受一下《Head First Java》的調皮吧。

就沖著這張圖,我覺得《Head First Java》的作者就足夠的大膽。作者挑選的圖片可以說張張經典,真正實現了“圖文并茂”的需求,搞得你感覺有點不好意思,仿佛不是在讀一本 Java 技術書,而是在讀一本《知音》。

不止是圖片,還有游戲、拼圖、解謎題以及意想不到的內容。真的是一點都不“正經”,正因為如此,閱讀起來才感覺興趣盎然。

第一章主要介紹了 Java 的工作原理、發展簡史、程序結構。

第二章主要介紹了 Java 的面向對象,包括繼承、覆蓋等內容。

什么是面向對象編程(OOP)?

第三章主要介紹了 Java 的變量。關鍵點:引用變量存儲的是對象的地址(儲存方式)、數組也是對象。

為什么要將局部變量的作用域最小化?

第四章主要介紹了 Java 的方法。關鍵點:實參和形參、值傳遞和引用傳遞、== 和 equals()。

Java到底是值傳遞還是引用傳遞?

如何比較 Java 的字符串?

第五章主要介紹了程序設計與實現的步驟。

第六章主要介紹了 Java 的 API。關鍵點:ArrayList。

第七章主要介紹了繼承和多態。關鍵點:覆蓋和重載。

第八章主要介紹了接口和抽象類。關鍵點:超類 Object。

再談 Java 的繼承和超類 Object

第九章主要介紹了構造器與垃圾收集器。關鍵點:對象存儲在堆中,對象引用在棧中;當對象失去最后一個引用變量時,它會被回收。

第十章主要介紹了靜態類、靜態方法、靜態變量。關鍵點:final、常量、數字格式化、日期表示法。

第十一章主要介紹了異常處理。

第十二章和第十三章,主要介紹了 GUI 和 Swing。關鍵點:事件處理機制。

第十四章主要介紹了序列化和文件輸入/輸出。關鍵點:Serializable接口。

Java Serializable:明明就一個空的接口嘛

第十五章主要介紹了網絡 Socket 和多線程。

Java Socket:飛鴿傳書的網絡套接字

Java 網絡編程:必知必會的 URL 和 URLConnection

第十六章主要介紹了集合和泛型。

第十七章主要介紹了程序的打包和發布。

第十八章主要介紹了遠程服務調用。

4)《Effective Java》

《Effective Java》除了翻譯讓眾多 Java 程序員詬病之外,再沒有任何缺點了(有讀者戲稱:“這本書為翻譯們作出了杰出的表率”)。其目標是幫助 Java 程序員更加有效地使用 Java 編程語言及其基本類庫,主要涉及到 java.lang、java.util、 java.io 包下面的類。

《Effective Java》第三版一共包含了 90 條極具實用價值的經驗規則,每條規則都值得 Java 程序員在實戰中去參照。這本書不需要按部就班地從頭到尾讀,可以隨意挑選任意小節進行閱讀,因為每條規則相對都是獨立的,盡管它們之間會交叉引用,但并不妨礙我們隨心所欲地閱讀。

作者 Josh Bloch 非常的牛逼,曾是 Google 的首席 Java 架構師,《Java開發者雜志》將他列為世界上最頂尖的四十名軟件人物之一。Java 之父詹姆斯·高斯林對《Effective Java》的評價也非常的高。

這里有一份第三版的中文在線翻譯文檔,大家可以參照一下。

https://github.com/sjsdfg/effective-java-3rd-chinese/tree/master/docs/notes

我在讀這本書的時候,曾寫過兩篇文章,大家也可以閱讀一下。

為什么要將局部變量的作用域最小化?
面試官:兄弟,說說基本類型和包裝類型的區別吧

5)《Java網絡編程》

《Java網絡編程》全面介紹了如何使用 Java 開發網絡程序。網絡編程是指編寫運行在多個設備(計算機)上的程序,這些設備可以通過網絡連接起來。這也是 Java 基礎學習完后必須要學習的一大塊內容,包括:Internet 底層協議(TCP/IP 和 UDP/IP)、網絡輸入和輸出、DNS 交互、定位、識別和下載網絡資源、HTTP 協議(REST、HTTP 頭部和 Cookie)、Socket 通信等等。

這本書的整體評價并不算高,吐槽的反而更多。但是,對于學習 Java 網絡編程的基礎知識非常的有用。

6)《Java 并發編程實戰》

《Java并發編程實戰》深入淺出地介紹了 Java 線程和并發編程,是一本還算不錯的 Java 并發編程參考手冊。本書從并發和線程安全性的基本概念出發,介紹了如何使用類庫來提供基本的并發方案,包括如何利用線程來提高并發應用程序的吞吐量、如何識別可并發執行的任務、如何提高單線程子系統的響應性、如何確保并發程序執行預期的任務,如何提高并發代碼的性能和可伸縮性等等內容。

但我必須要說的是,《Java并發編程實戰》這本書并沒有擺脫翻譯枯燥的老毛病,讀起來很需要耐住性子,不然就很難把這本書吃透。當然了,并發編程本身就很難,大家要做好心理準備。

7)《深入理解Java虛擬機》

《深入理解 Java 虛擬機:JVM 高級特性與最佳實踐(第 2 版)》是唯一一本我們國內程序員寫的經典書,可以媲美《Java 編程思想》。

這本書牛逼到什么程度,幾乎所有寫 Java 虛擬機方面的文章,沒有一個不在文章最后注明:本文參考字周志明老師的《深入理解 Java 虛擬機》。假如這篇文章最后沒有注明的話,那保不準是不尊重版權。

第 1 版兩年內印刷近 10 次,好評(五星)如潮,是整個 Java 圖書領域公認的經典著作和暢銷書。

第 2 版共分為 5 大部分,圍繞內存管理、執行子系統、程序編譯與優化、高效并發等核心主題對 JVM 進行了全面深入的分析,深刻揭示了 JVM 的工作原理。

第一部分主要介紹了 Java 的技術體系、Java 和 JVM 的發展歷程。

第二部分主要介紹了 JVM 的自動內存管理,包括虛擬機的內存區域劃分原理,內存溢出產生的原因、常見的垃圾收集算法、垃圾收集器的工作原理等等。

第三部分主要介紹了類文件結構、虛擬機類加載機制、虛擬機字節碼執行引擎。

第四部分主要介紹了程序的編譯和代碼的優化,闡述了泛型、自動裝箱拆箱、條件編譯等語法糖的原理;還有 HotSpot 的即時編譯器。

第五部分主要介紹了 Java 實現高效并發的原理,包括 JVM 內存模型等。

作者周志明更成為了廣大 Java 程序員心目中的大神級人物,厲害厲害了!有讀者曾這樣感嘆道:“國內程序員很難再寫出這么經典的書了!”

如果大家想要成為一名優秀的 Java 程序員,本書不得不讀啊!并且是細細品味的那種。

8)《Java性能權威指南》

市面上專注于 Java 性能的書不多,《Java性能權威指南》算是一本很不錯的。通過閱讀本書,我們可以運用 4 個基本原則最大程度地提升性能測試的效果、使用 JDK 自帶的工具收集程序的性能數據、理解 JIT(即時編譯器)編譯器的優缺點、調優 JVM 垃圾收集器、最大程度優化多線程等等。

9)《代碼整潔之道》

我可以這么肯定地說:《代碼整潔之道》值得所有的程序員讀一讀。軟件的質量,不僅依賴于架構,更與代碼質量息息相關。而代碼的質量與其整潔度成正比關系,越整潔的代碼,其質量毫無疑問的就會越高。由于本書中的例子是由 Java 實現的,因此 Java 程序員在讀這本書的時候有著天然的優勢。

如何寫出整潔的代碼呢?Keep It Simple Stupid:代碼簡單直接,不僅能夠提高代碼的效率,還能夠讓閱讀代碼的人賞心悅目。

本書的第一章,對整潔代碼下了一個定義,每個程序員都應該銘記在心。

1、整潔的代碼力求專注,每個方法、每個類都應該全神貫注于一件事;命名更要給人一種“顧名思義”的感覺。
2、整潔的代碼簡單直接,從不隱藏設計者的意圖。
3、整潔的代碼應當有單元測試。
4、整潔的代碼拒絕重復,其表達力直擊人的心靈。

10)《設計模式之禪》

《設計模式之禪(第 2 版)》是設計模式領域公認的 3 本經典著作之一,也是我們國內程序員寫的一本書,趣味化十足,讀起來也非常容易理解。這本書值得所有的程序員讀一讀,但 Java 程序員讀起來更容易上手,因為源碼是 Java 完成的。作者名叫秦小波,和我最喜歡的作家王小波同名。

本書可以分為五個部分:

第一部分(第 1~6 章),包含有單一職責原則、里氏替換原則、依賴倒置原則、接口隔離原則、迪米特法則、開閉原則等內容,對面向對象程序員設計的 6 大原則進行了深刻解讀。

第二部分(第 7~29 章)通過大量生動的案例講解了 23 種最常用的設計模式。包含單例模式、工廠方法模式、抽象工廠模式、模板方法模式、建造者模式、代理模式、原型模式、中介者模式、命令模式、責任鏈模式、裝飾模式、策略模式、適配器模式、迭代器模式、組合模式、觀察者模式、門面模式、備忘錄模式、訪問者模式、狀態模式、解釋器模式、享元模式、橋梁模式。

第三部分(第 30~33 章)對同類型和相關聯的模式進行了比較,旨在說明它們之間的差別。

第四部分(第 34~36 章)探討了如何在實際開發中將各種設計模式混合起來使用的可能性,以發揮設計模式的最大功效。

第五部分(第 37~38 章)主要講解了 5 種新的設計模式的原理、意圖和最佳實踐。

大家都聽說過,學習設計模式非常的重要,那么為什么這么重要呢,設計模式到底是什么?打個比喻學編程就像學武功一樣。

武功要練得很牛逼,有兩樣東西不能丟。第一,是內功;第二,是武功秘籍。內功對應到編程就是我們編程基礎能力,那編程的設計模式就可以想象成武術中的武功秘籍。

設計模式就是根據不同類型場景,設計優雅的(編碼)解決方案。學好設計模式有很多好處,比如,容易看懂經典代碼中的邏輯(很多優秀的開源框架大量使用了設計模式);應對面試時對答如流(設計模是面試重點);可以編寫出優雅的解決方案(或者代碼)。

11)《Java開發手冊》

《Java開發手冊》是每個 Java 程序員都值得擁有的一本參考指南。該手冊涵蓋了編程規約、異常日志、單元測試、安全規約、MySQL 數據庫、工程結構、設計規約燈 7 個部分,參考價值極大。

《Java 開發手冊》作為阿里官方的 Java 代碼規范標準,是行業內領先的開發規范文檔。如果能夠認真踐行該手冊中提到的規約,絕壁能夠幫助 Java 程序員養成良好的編程習慣,并且提高代碼的質量和降低項目維護的難度。

據說,這本手冊在阿里內部打磨了很久很久才對外開放的,所以傾注了很多大佬們的心血。況且,阿里作為一個大廠,拿出來一份有瑕疵的手冊,多少會丟臉,所以這本手冊絕對值得讀一讀。

本手冊的作者孤盡曾說:

代碼規范這事情,它是一個吃力不討好,短期沒結果,費心又費力的事情。唯有自己內心的技術情懷。

06、推薦一些優質的 Java 學習視頻

我知道,有些同學更喜歡看視頻教學,那么我也為大家精心準備了一些。這些視頻我已經分門別類了,大家可以按需下載。

這些視頻分為兩大類,Java 基礎和 Java 高級,先來看一下清單。

Java 基礎視頻名稱口令
Java 基礎語法javaboy4096
Java 面向對象javaboy6148
深入面向對象和數組javaboy8200
Java 常用類詳解javaboy4105
Java 集合與數據結構javaboy2062
Java 數據結構和算法javaboy6184
Java IO 流全解析javaboy8209
Java 網絡編程javaboy6166
Java 異常機制解析javaboy6157
深入理解 Java 多線程javaboy4114
手動開發一個 Web 服務器javaboy2071
獨立開發 SORM 框架javaboy8227
深入理解 Java 注解+反射javaboy8218
Java 23 種設計模式javaboy4123
學會 Java 正則表達式javaboy6175
JDBC 詳解javaboy2080
深入理解 Java 虛擬機javaboy2089
Java 解析XML文件javaboy8236
IntelliJIDEA 視頻教程javaboy4285
Java 編程規范javaboy4222
Java 高級視頻名稱口令
Java 高并發秒殺方案javaboy8299
高并發編程與線程池javaboy2170
Java 并發編程與高并發實戰javaboy6256
Activiti 工作流實戰解析javaboy4204
ActiveMQ 消息中間詳解javaboy8326
Dubbo 詳解javaboy8335
Linux 快速入門javaboy2161
Linux 基本操作javaboy6328
Linux 基本命令javaboy6409
Maven 詳解javaboy8308
Maven 實戰視頻javaboy8443
Git 應用詳解javaboy4213
Gradle 從入門到精通javaboy6391
Svn 入門教程javaboy6265
系統優化與 JVM 調優javaboy8317
JVM 虛擬機優化javaboy2224
AIO、BIO、NIO 詳解javaboy6274
Netty 高級視頻教程javaboy2179
單點登錄視頻教程javaboy4231
Redis緩存詳解javaboy6319
Redis全解析javaboy4240
Redis 內存數據javaboy4402
Nginx 視頻教程javaboy4267
VSFTPD+Nginx 視頻教程javaboy6292
Nginx 和高并發javaboy2323
MyBatis 視頻教程javaboy2197
Hibernate4 視頻教程javaboy8353
Spring4 視頻教程javaboy8344
SpringMVC 視頻教程javaboy4249
MySQL 基礎javaboy2107
MySQL 高級教程javaboy2305
MySQL 優化javaboy6211
SSM 框架整合視頻教程javaboy6301
Jfinal 視頻教程javaboy4258
Shiro 視頻教程javaboy6310
Solr 視頻教程javaboy2215
Struts2 視頻教程javaboy8362
Zookeeper 詳解視頻javaboy8371
JUC 視頻教程javaboy6400
Java 郵件開發教程javaboy8452
自己 DIY 一個 Tomcatjavaboy4339
架構師面試攻略(文檔)javaboy2233
架構師面試攻略(視頻)javaboy8380

學完這些視頻,可以再把之前推薦的書籍結合起來讀一讀,一定會大有所獲!要不,你來揍我😜!

07、推薦一些優質的 Java 實戰項目

聽過王陽明先生倡導的“知行合一”吧?我們學習,除了關注網站、博客、書籍、視頻,最重要的還是要實戰,總不能紙上談兵。那么優質的 Java 實戰項目就顯得至關重要了。這里不推薦太多,只推薦兩個。

1、mall :mall 項目是一套電商系統,包括前臺商城系統及后臺管理系統,基于 SpringBoot+MyBatis 實現。 前臺商城系統包含首頁門戶、商品推薦、商品搜索、商品展示、購物車、訂單流程、會員中心、客戶服務、幫助中心等模塊。 后臺管理系統包含商品管理、訂單管理、會員管理、促銷管理、運營管理、內容管理、統計報表、財務管理、權限管理、設置等模塊。

作者我們線上聊過,人很親切。他的 GitHub 地址:https://github.com/macrozheng/mall

2、vhr :微人事是一個前后端分離的人力資源管理系統,項目采用SpringBoot+Vue開發。

這是我的好朋友「江南一點雨」自己維護的一個項目,目標星標 12.3k。

GitHub 地址:https://github.com/lenve/vhr

GitHub 上還有很多不錯的開源項目,但活不在多,而在精。把這兩個實戰項目搞透徹,自學的道路上就已經成功了 70%。

08、推薦一份不錯的 Java 面試題

自學了這么長時間,我相信大家已經躍躍欲試了,能不能一舉拿下 offer,就需要面試題來測試一下了。

我們是 Java 程序員,那么有沒有掌握整個 Java 知識體系就顯得尤為重要了。很多小伙伴苦于沒有合適的資料來回顧整個 Java 知識體系,或者不知道從哪開始復習。

我找「純潔的微笑」要了一份資料,這份不論是從整個 Java 知識體系,還是從面試的角度來看,都是一份含技術量很高的資料。

至于出處,好像是一份美團的大佬整理的,這里表示感謝。我截了幾張圖,大家感受一下。

經過這一輪面試題的洗禮,我相信大家在面試官前面就不會再戰戰兢兢了,而是自信滿滿。

09、技術沒有終點

我記得,讀者“在你的世界各地”向我提問的時候是 1 個月前,不過,我沒有讓他失望,終于把這份 20000+ 字的指南整理完畢,其中花費了我大量的時間和精力,但我總覺得這份付出是值得的。我也相信,大家按照我制定的這份學習路線學習之后,肯定能夠在最短的時間內找到工作!那么現在,我為你送上最真誠的祝福,加油!

當然了,技術這條路是沒有終點的,即便是找到了工作,我們依然需要奮力前行,做最好的自己!

05、肯定會有很多讀者問我以上推薦的書籍、視頻、面試資料怎么獲取,那我干脆全部分享出來:

你可以在我的原創微信公眾號『沉默王二』回復「Java」獲取書單電子書;回復「免費視頻」獲取 500G 視頻資料,超高清的,并且是分門別類的,你按照口令清單想看哪個看哪個;回復「面試」獲取價值連城的面試資料。

有收獲?希望老鐵們來個三連擊,給更多的同學看到這篇文章

1、老鐵們,關注我的原創微信公眾號「沉默王二」,專注于有趣有益的程序人生,保證你看完有所收獲,不信你打我。

2、給二哥點個贊唄,可以讓更多的人看到這篇文章,順便激勵下我,嘻嘻。

作者info
作者:沉默王二,CSDN 2019 年度博客之星,《Web全棧開發進階之路》作者
原創公眾號:『沉默王二』,已寫了 250 多篇文章,專注于有趣的 Java 技術和有益的程序人生,期待你的關注。
轉載說明:務必注明來源(注明:來源于公眾號:沉默王二, 作者:沉默王二)

總結

以上是生活随笔為你收集整理的【大学四年自学Java的学习路线】写了一个月,这是一份最适合普通大众、非科班的路线,祝你零基础快速找到一份满意的工作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。