本文已經收錄到Github倉庫,該倉庫包含計算機基礎、Java基礎、多執行緒、JVM、資料庫、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服務、設計模式、架構、校招社招分享等核心知識點,歡迎star~
Github地址:https://github.com/Tyson0314/Java-learning
大家好,我是大彬~
我本科學的不是計算機,大四開始自學Java,并且找到了中大廠的offer,自學路上遇到不少問題,每天晚上都是堅持到一兩點才睡覺,最終也拿到了30w的offer,

在這里也提醒學弟學妹們,要盡早確定以后的方向,讀研還是作業,找作業的話,也要盡快確定作業崗位,想轉行的,需要花更多的時間準備,很多同學到了大四快畢業的時候,才思考自己未來要做什么,這個時候已經有點晚了,如果錯過了校招,走社招渠道去找作業,難度將會提升一個等級,到時后悔也來不及!
下面來說說自己的經歷吧(附自學路線),
接觸編程
大學以前基本沒碰過電腦,家里沒電腦,也沒去過網吧,高中的計算機課程,期末作業要完成一個自我介紹的PPT,也不會做,最后直接抄同桌的作業(復制粘貼都不會,,還得同桌教,捂臉),
高考完一個月后,買了電腦,真正開始使用上了電腦,
大一上學期的時候,系里開了一門C語言的課程,這也是我第一次接觸編程,教材是英文的,剛開始學還是挺頭大的,每次課程作業,周圍的同學都是一頓復制粘貼,我也一樣嘿嘿,
記得在講指標那一章的時候,聽的一頭霧水,稍微走神,回過頭來,已經不知道講的是啥了,
后面系里開設了興趣小組,因為平時比較閑,也想著去搗鼓點東西,就去參加了,剛開始的時候,什么都不懂,老師推薦我學一下51單片機,拿了一本厚厚的51單片機的書籍,跟著書里的demo敲了一遍,發現了新天地!原來編程這么有意思!

記得第一次跑出流水燈的時候,那叫一個激動啊,滿滿的都是成就感!后面也寫了一些電機、紅外遙控等demo,從那以后,激發了我學習編程的興趣,
到了大二,輔導員在群里發布全國電子設計大賽的資訊,參賽題跟四軸飛行器相關,那段時間對四軸飛行器比較感興趣,于是約了兩個小伙伴一塊參加,距離比賽時間只有一個月,在那一個月的時間里,每天都是早出晚歸,吃飯的時候還在想著哪一塊代碼出了bug,雖然最后沒能獲獎,但是在這個程序中,學到很多知識,編程能力也有了很大的提升,
決定轉碼
轉眼間,大三開學,開始糾結考研還是作業,思考了一周時間,也進了系里的實驗室體驗了一把研究生生活,最后還是聽從內心的想法,決定直接找作業,
我咨詢了本專業的師兄師姐們往年的就業情況,他們大部分人還是找了互聯網方向的作業,有一個在傳統行業的師兄,也勸我投互聯網公司的崗位,因為在傳統行業加班也不少,但是工資賊低,,最后決定轉行程式員,找后端相關的作業,
那么學習哪一種語言呢?當時有三個選擇:c++,Java,python,
那段時間python比較火,但是經過一番深思熟慮之后,還是選擇了Java,為什么選擇Java呢?
很簡單,市場需求大,學習難度適中,相比科班同學來說,我缺乏系統的計算機基礎知識,而距離秋招也只有不到一年時間,所以還是選擇學習難度低一點的Java,
閉關自學
確定方向后,便開始制定學習路線,不得不說,Java要學的東西是真的多,,
自學期間遇到挺多問題,比如一些環境配置問題,有時候搞上好幾天,很打擊積極性,中途也有很多次懷疑自己的水平,是不是不適合干編程,差點就放棄了,幸好最后還是堅持了下來,
半年多的時間,除了平時上課,其他時間就是在圖書館,周末或者節假日,每天都是7點起床,八點到圖書館開始學習,到了晚上十點,圖書館閉館,才回宿舍,每天都是圖書館最后走的一批,回到宿舍,洗完澡,繼續肝到十二點多(卷王!),

很多人在問,大三才開始自學Java,來的及嗎? 我覺得,還是看個人的投入程度和學習能力,有些人自學能力強一點,每天可以投入10小時及以上的時間去學習,那完全沒問題,
自學程序還是挺辛苦的,要耐得住寂寞,最最重要的還是得堅持!
我根據自己的自學經歷,整理了一些學習程序中踩坑總結的經驗,希望自學的小伙伴可以少走彎路:
- 注重實踐,不要只是埋頭看書,一定要多動手寫代碼,
- 剛開始自學的時候,可以不用太深究細節,不然可能會懷疑自己的學習能力,等到后面有了一定的基礎,回過頭來重新回顧,可能會恍然大悟,沒有當初想的那么難,
- 可以適當加一些交流群,遇到不懂的知識點,多與其他人交流,
好了,下面給大家分享一下我的自學經驗,
自學路線
首先看一下Java學習路線圖:

在這里也給大家分享一份精心整理的大廠高頻面試題PDF,小伙伴靠著這份手冊拿過阿里offer,需要的小伙伴可以自行下載:
http://mp.weixin.qq.com/s?__biz=Mzg2OTY1NzY0MQ==&mid=2247485445&idx=1&sn=1c6e224b9bb3da457f5ee03894493dbc&chksm=ce98f543f9ef7c55325e3bf336607a370935a6c78dbb68cf86e59f5d68f4c51d175365a189f8#rd
Java

推薦書籍:
- 《head first java》
- 《JAVA核心技術卷》
head first系列的書籍講解比較有趣,比較好理解,《JAVA核心技術卷》難度相對適中,內容也比較全面,部分章節(如Swing)可以跳過,
這些書籍,我已經整理了電子版,放到github上了,總共200多本經典的計算機書籍,包括C語言、C++、Java、Python、前端、資料庫、作業系統、計算機網路、資料結構和演算法、機器學習、編程人生等,可以star一下,下次找書直接在上面搜索,倉庫持續更新中(花了一個多月的時間整理的,希望對大家有幫助,歡迎star)
倉庫持續更新中~
有需要的自取:
github倉庫:https://github.com/Tyson0314/java-books
視頻推薦動力節點老杜的視頻教程,1000w的播放量!視頻總體上質量很不錯,講解挺詳細,適合新手,跟著老杜的視頻學下來,可以學到很多知識!
https://www.bilibili.com/video/BV1Rx411876f
再次強調:多敲代碼!多敲代碼!多敲代碼!
學習編程就是看書加實踐,要多動手,不然看過的知識點很快就會忘,而且多實踐也會遇到很多坑,豐富經驗, 可以到github上找一些專案練練手,通過做專案鞏固知識,而且每實作一個功能之后,會有滿滿的成就感,也會激勵你不斷去學習,
Java基礎知識主要有:
-
面向物件特性
-
Java語言基礎、回圈、陣列 ; 了解類和物件
- 掌握強制資料型別轉換和自動型別提升規則;
- 常量如何宣告及賦值;
- 回圈的語法及作用;
- 陣列的宣告及定義;
- 掌握類的概念以及什么是物件,
-
抽象類和介面
-
資料型別、重寫多載、封裝繼承多型
-
容器類Map/List/Set等
-
例外處理
-
反射機制
-
泛型
-
常用類:String、時間類
-
函式式編程
-
Stream API
-
Lambda 運算式
-
IO流操作,多執行緒及Socket
- 掌握IO讀寫流相關的類,了解位元組流,字符流和字符流緩沖區;
- 掌握執行緒的概念,多執行緒的創建、啟動方式,鎖和同步的概念及運用;
- 掌握Socket通信的概念,如何宣告客戶端服務端,如何完成雙端資料通信,
Java Web
Java Web是一系列技術的綜合,也是大多數Java開發者的技術方向,有必要學習一下,這部分可以看看視頻教程,
視頻推薦尚硅谷的JavaWeb全套教程,HTML/CSS/JavaScript等跟前端相關的可以倍速觀看,
https://www.bilibili.com/video/BV1Y7411K7zz
黑馬程式員的Java web教程總體也不錯
https://www.bilibili.com/video/BV1qv4y1o79t
下面列舉Java web需要掌握的知識點,
HTML:
- 掌握網頁的基本構成;
- 掌握HTML的基本語法;
- 表格的作用以及合并行、合并列;
- 表單標簽的使用,提交方式get/post的區別;
- 框架布局的使用
CSS:
- 掌握CSS的語法及作用,在html中的宣告方式;
- 掌握CSS布局的函式使用;
- 掌握CSS外部樣式的引入,
JavaScript:
- 掌握JS的語法及作用,在HTML中的宣告方式;
- 掌握JS的運行方式;
- 掌握JS中的變數宣告、函式宣告、引數傳遞等;
- 掌握HTML中的標簽事件使用;
- 掌握JS中的DOM原型
jQuery:
- 了解如何使用jQuery,下載最新版或者老版本的jQuery.js
- 掌握選擇器、檔案處理、屬性、事件等語法及使用;
- 能夠靈活使用選擇器查找到想要查找的元素并操作他們的屬性;
- 動態宣告事件;
- 動態創建元素,
Servlet
- 掌握Java中的Web專案目錄結構;
- 掌握Java Web專案的重要中間件Tomcat;
- 掌握Servlet中的Request和Response;
- 掌握Servlet的基本運行程序,
- 掌握Servlet的宣告周期
Ajax
- 掌握Ajax的基本概念;
- 掌握jQuery中的Ajax請求;
- 掌握JSON
Filter、Listener:
- 掌握Filter和Listener
- 掌握Session過濾器和編碼過濾器
JSP資料互動
- JSP中如何撰寫Java代碼,如何使用Java中的類;
- JSP中的引數傳遞,
狀態管理Session和Cookie
- 掌握Session、Cookie的作用及作用域;
- 掌握Session及Cookie的區別,存盤位置,宣告周期等;
- 掌握Session及Cookie分別在JSP和Cookie中的使用
框架
主流框架主要有:
- spring:面向切面、依賴注入,
- springboot:習慣優于配置、自動配置,目前很多公司內部都是使用Spring Boot,
- springmvc:基于MVC架構模式的輕量級Web框架
- Mybatis:orm框架,
- springcloud
Spring

大部分公司都會用到 Spring框架,必學!,主要理解 Spring 面向切面、依賴注入的特性,學會使用 Spring 構建應用程式,推薦書籍《Spring實戰》,通過demo的方式帶你一步步搭建Spring應用
視頻推薦尚硅谷王澤老師的Spring5框架最新版教程,視頻剛出不久,內容也是與時俱進,值得學習!
https://www.bilibili.com/video/BV1Vf4y127N5
SpringMVC
SpringMVC是基于MVC架構模式的輕量級Web框架,對于初學者,需要掌握Web請求從發出到相應的這個程序,SpringMVC做了什么,還有MVC模式的思想,
視頻推薦狂神說Java的SpringMVC最新教程,
【狂神說Java】SpringMVC最新教程IDEA版通俗易懂:https://www.bilibili.com/video/BV1aE41167Tu
Mybatis
MyBatis 是一款優秀的持久層框架,MyBatis 幫助我們做了很多事情:建立連接、操作 Statment、ResultSet、處理 JDBC 相關例外等,簡化了開發流程,推薦書籍《深入淺出Mybatis》,
視頻推薦狂神說的Mybatis最新完整教程,b站播放量最高,獲得了很多小伙伴的一致好評,
https://www.bilibili.com/video/BV1NE411Q7Nx
SpringBoot
學完 SSM,就要進一步學習 SpringBoot 了,相信很多人在學了 Spring 之后,面對各種各樣的配置,想必都會頭疼,而 SpringBoot 的出現解決了這個問題,SpringBoot 去除了大量的 XML 組態檔,簡化了復雜的依賴管理,書籍推薦《Spring Boot實戰》,
視頻推薦尚硅谷雷神的2021版最新SpringBoot2權威教程,
https://www.bilibili.com/video/BV1Et411Y7tQ
SpringCloud
現在面試基本都會問到微服務相關的內容,最好了解下微服務相關的知識,服務注冊與發現、負載均衡、服務降級、API網關等,推薦書籍《spring cloud微服務實戰》
視頻教程可以看看尚硅谷周陽老師的:
https://www.bilibili.com/video/BV18E411x7eT
并發

什么是并發編程,簡單來說就是為了充分利用cpu,多個任務同時執行,快速完成任務,
并發編程的相關內容可以看看《JAVA并發編程實戰》這本書,
視頻推薦狂神說Java,很不錯的視頻:
https://www.bilibili.com/video/BV1B7411L7tE
主要知識點有:
- 執行緒的概念以及案例
- 執行緒池原理
- 執行緒間通信方式
- 鎖(synchronized、ReentrantLock)
- 并發工具類(CountDownLatch/CyclicBarrier/Semaphore)
- 原子類
- AQS
- Thread生命周期狀態
- Java記憶體模型
Redis

用來快取熱點資料,加快讀寫速度,從而提高性能,現在Java后端的面試基本都會問到Redis,
書籍推薦《redis實戰》和《redis設計與實作》,
視頻推薦狂神說Java的Redis最新超詳細版教程,不僅教你學Redis,還會教你學習的方式,
https://www.bilibili.com/video/BV1S54y1R7SB
訊息佇列
訊息佇列是基礎資料結構中FIFO的一種資料結構,用來解決應用解耦、異步訊息、流量削鋒等問題,可以實作高性能、高可用、可伸縮和最終一致性,
視頻推薦黑馬的RocketMQ教程和百知教育的RabbitMQ教程,兩者挑一個學習就可以!
【編程不良人】MQ訊息中間件之RabbitMQ:
https://www.bilibili.com/video/BV1dE411K7MG
黑馬程式員Java教程RocketMQ系統精講:
https://www.bilibili.com/video/BV1L4411y7mn
JVM

JVM也是面試經常會問的內容,Java開發者不用自己進行記憶體管理、垃圾回收,JVM幫我們做了,但是還是有必要了解下JVM的作業原理,這樣在出現oom等問題的時候,才有思路去排查和解決問題,書籍推薦周老師的《深入理解Java虛擬機》,
視頻推薦尚硅谷宋紅康的全套課程,全套課程分為三個篇章:《記憶體與垃圾回收篇》、《位元組碼與類的加載篇》和《性能監控與調優篇》,
尚硅谷JVM全套教程:
https://www.bilibili.com/video/BV1PJ411n7xZ
JVM的基礎知識:
- jvm記憶體結構(程式計數器、虛擬機堆疊、本地方法堆疊、堆、方法區、運行時常量池、直接記憶體)
- 類加載程序
- 雙親委派
- 垃圾回收演算法
- 垃圾回收器
- 調優工具(jsp/jstack/jstat/jmap,了解即可)
計算機基礎知識
學編程一定要打好計算機基礎!
對于非科班同學來說,與科班同學最大的差距在于基本理論知識,如果你是非科班自學編程的,想要進入大廠,那么計算機基礎知識一定不能落下,
每一個合格的程式員,應該要知道計算機體系的結構,內在的邏輯是什么,要有自己的思考,
總之,基本功非常重要!
作業系統
無論學習什么編程語言,和需要和作業系統打交道,如果對作業系統不熟悉,那么你在未來的學習路上將會遇到很多障礙,比如執行緒行程調度、記憶體分配、Java的虛擬機等知識,都會一頭霧水,因此,只有把作業系統搞明白了,才能夠更好地學習計算機的其他知識,
書籍推薦
入門級別書籍:《現代作業系統》、《作業系統導論》,進階:《深入理解計算機系統》
強推《深入理解計算機系統》 這本書,

CSAPP是一本很好的書,糅合了計算機組成原理、作業系統、網路編程、并行程式設計原理等課程的基礎知識,對于剛接觸編程,或者像大彬這種非科班出身的人來說,這是一本指導性的書,它會告訴你,要想成為一個優秀的程式員,應當重點理解哪些計算機底層原理,告訴你應該在以后的自學程序中,應該重點學習哪些課程,比如作業系統和體系結構等,
視頻教程推薦
Udacity的Advanced OS公開課:https://www.classcentral.com/course/udacity-advanced-operating-systems-1016
還有國內不錯的作業系統的課程,清華大學的公開課:https://www.xuetangx.com/course/THU08091000267/5883104?channel=search_result

由清華大學兩位老師向勇、陳渝講授,同時配有一套完整的實驗,實驗內容是從無到有地建立起一個小卻五臟俱全的作業系統,以主流作業系統為實體,以教學作業系統ucore為實驗環境,講授作業系統的概念、基本原理和實作技術,為學生從事作業系統軟體研究和開發,以及充分利用作業系統功能進行應用軟體研究和開發打下扎實的基礎,
另外,推薦另一門MIT作業系統課程:MIT6.268
課程地址:https://pdos.csail.mit.edu/6.828/2018/schedule.html

MIT6.828 是一門非常值得學習的課程,廣受好評,是理論與實踐相結合的經典,
只要你跟著專案一步一步走,做完 6 個實驗,就能實作一個簡單的作業系統內核,
每個實驗都有對應的知識點,學完理論知識后會有相應的練習,學習體驗非常棒!
建議在開始學習這門課之前先熟悉C和匯編,對計算機組成有一定了解,
作業系統主要知識點:
- 作業系統的基礎特征
- 行程與執行緒的本質區別、以及各自的使用場景
- 行程的幾種狀態
- 行程通信方法的特點以及使用場景
- 行程任務調度演算法的特點以及使用場景
- 死鎖的原因、必要條件、死鎖處理,手寫死鎖代碼、Java是如何解決死鎖的,
- 執行緒實作的方式
- 協程的作用
- 記憶體管理的方式
- 虛擬記憶體的作用,分頁系統實作虛擬記憶體原理
- 頁面置換演算法的原理
- 靜態鏈接和動態鏈接
資料結構和演算法

為什么學習資料結構與演算法?對于計算機專業的同學來說,這門課程是必修的,考研基本也是必考科目,對于程式員來說,資料結構與演算法也是面試、筆試必備的非常重要的考察點,
資料結構與演算法是程式員內功體現的重要標準之一,且資料結構也應用在各個方面,資料結構也蘊含一些面向物件的思想,故學好掌握資料結構對邏輯思維處理抽象能力有很大提升,
書籍推薦
《大話資料結構》和《演算法圖解》
《大話資料結構》 這本書最大的特點是,通篇以一種趣味方式來敘述,大量參考了各種各樣的生活知識來類比,并充分運用圖形語言來體現抽象內容,對資料結構所涉及到的一些經典演算法做到逐行分析、多演算法比較,這本書特別適合初學者,

《演算法圖解》是非常好的入門演算法書,示例豐富,圖文并茂,以讓人容易理解的方式闡釋了演算法,旨在幫助程式員在日常專案中更好地發揮演算法的能量,
很多學Java的同學,可能會問有沒有Java版本的資料結構和演算法書籍?
當然有的,可以看看《資料結構與演算法分析 java語言描述》這本書,用Java語言描述各種資料結構和演算法,對于Java開發者來說,更容易理解,
視頻推薦
UCSanDiego的資料結構與演算法專項課程:https://www.coursera.org/specializations/algorithms
浙大陳越姥姥的資料結構課程:
https://www.bilibili.com/video/BV1H4411N7oD

浙江大學陳越姥姥和何欽銘教授聯合授課,非常經典的課程,姥姥我的偶像!
小甲魚的資料結構和演算法課程:https://www.bilibili.com/video/BV1jW411K7yg
資料結構與演算法主要學習以下內容:
- 基本資料結構(陣列、鏈表、堆疊、佇列等)
- 樹(二叉樹、avl樹、b樹、紅黑樹等)
- 堆結構
- 排序演算法(冒泡排序、選擇排序、插入排序、快速排序、歸并排序、堆排序等及時間空間復雜度)
- 動態規劃、回溯、貪心演算法(多刷刷leetcode)
- 遞回
- 位運算
學完感徑訓很吃力?可以借助一些刷題網站鞏固下,下面推薦幾個刷題網站,
牛客網

作為牛客紅名大佬,來給牛客宣傳一波!(牛客打錢!)
牛客網擁有超級豐富的 IT 題庫,題庫+面試+學習+求職+討論,基本涵蓋所有面試筆試題型,堪稱"互聯網求職神器",在這里不僅可以刷題,還可以跟其他牛友討論交流,一起成長,牛客上還會各種的內推機會,對于求職的同學也是極其不錯的,
LeetCode

力扣,強推!力扣虐我千百遍,我待力扣如初戀!
從現在開始,每天一道力扣演算法題,堅持幾個月的時間,你會感謝我的(傲嬌臉)
我剛開始刷演算法題的時候,就選擇在力扣上刷,最初刷easy級別題目的時候,都感覺有點吃力,堅持半年之后,遇到中等題目甚至hard級別的題目都不慌了,
不過是熟能生巧罷了,
LintCode

與Leetcode類似的刷題網站,
LeetCode/LintCode的題目量差不多,LeetCode的test case比較完備,并且LeetCode有討論區,看別人的代碼還是比較有意義的,
LintCode的UI、tagging、filter更加靈活,更有優點,大家選擇其中一個進行刷題即可,
資料庫

互聯網應用大多屬于資料密集型應用,對于真實世界的資料密集型應用而言,除非你準備從基礎組件的輪子造起,不然根本沒那么多機會去擺弄花哨的資料結構和演算法,
實際生產中,資料表就是資料結構,索引與查詢就是演算法,而應用代碼往往扮演的是膠水的角色,處理IO與業務邏輯,其他大部分作業都是在資料系統之間搬運資料,在最寬泛的意義上,有狀態的地方就有資料庫,它無所不在,網站的背后、應用的內部,單機軟體,區塊鏈里,甚至在離資料庫最遠的Web瀏覽器中,
書籍推薦
- 《MySQL必知必會》
- 《高性能mysql》
《MySQL必知必會》主要是Mysql的基礎語法,很好理解,后面有了基礎再看《高性能mysql》,這本書主要講解索引、SQL優化、高級特性等,很多Mysql相關面試題出自《高性能MySQL》這本書,值得一看,
視頻推薦
伯克利的 CS168 課程:https://archive.org/details/UCBerkeley_Course_Computer_Science_186

國內中國人民大學王珊老師的《資料庫系統概論》:https://www.bilibili.com/video/BV1pW411W7Do

MySQL基礎知識:
- 增刪改查
- 事務特性、隔離級別
- 索引原理、優化
- b+樹
- 最左匹配原則
- 存盤引擎
- MVCC
- 執行計劃
- 分庫分表
- 日志,bin log/undo log/redo log
- ...
計算機網路

計算機網路這門課需要學習計算機網路的概念、原理和體系結構,知道計算機分層結構,物理層、資料鏈路層、介質訪問子層、網路層、傳輸層和應用層的基本原理和協議,掌握以 TCP/IP 協議族為主的網路協議結構,并且了解網路新技術的最新發展,
書籍推薦
《計算機網路自頂向下方法》

這本書是經典的計算機網路教材,采用作者獨創的自頂向下方法來講授計算機網路的原理及其協議,自第1版出版以來已經被數百所大學和學院選作教材,書中從應用層講起,然后展開,擺脫了從物理層開始的枯燥,直接接觸應用實體,更能吸引讀者的興趣,而且,書上很多例子舉的很好,生動形象,
視頻推薦
視頻推薦中科大鄭烇、楊堅全套《計算機網路(自頂向下方法 第7版,James F.Kurose,Keith W.Ross)》課程,這門課是2020年秋科大自動化系本科課程錄制版,可與中科大學生一起完成專業知識的學習,
https://www.bilibili.com/video/BV1JV411t7ow?p=7&vd_source=2b77c4a826e636ae19a4f75a4b2ca146

另外還可以看看哈爾濱工業大學李全龍老師的計算機網路課程:https://www.bilibili.com/video/BV1Up411Z7hC

計算機網路核心知識點:
- 網路分層結構
- TCP/IP
- 三次握手四次揮手
- 滑動視窗、擁塞控制
- HTTP/HTTPS
- 網路安全問題(CSRF、XSS、SQL注入等)
linux
Linux 系統已經滲透到 IT 領域的各個角落,作為一名 IT 從業人員,不管你是專注于編程,還是專注于運維,都應該對 Linux 有所了解,甚至還要深入學習,掌握核心原理,
至少要熟悉常用的Linux命令,書籍推薦《鳥哥的linux私房菜》,
視頻推薦:
https://www.bilibili.com/video/BV1dW411M7xL
設計模式

設計模式是軟體開發人員在軟體開發程序中面臨的一般問題的解決方案,對于具有豐富的開發經驗的開發人員,學習設計模式有助于了解在軟體開發程序中所面臨的問題的最佳解決方案;對于那些經驗不足的開發人員,學習設計模式有助于通過一種簡單快捷的方式來學習軟體設計,
為什么要學習設計模式:
- 設計模式是從許多優秀的軟體系統中總結出能夠實作可維護性、復用的設計方案,使用這些方案可以避免做一些重復性的作業
- 合理使用設計模式并對設計模式的使用情況進行檔案化,將有助于別人更快地理解系統
- 學習設計模式將有助于初學者更加深入地理解面向物件思想
設計模式分類:
1.1 創建型模式
創建型模式(Creational Pattern)對類的實體化程序進行了抽象,能夠將模塊中物件的創建和物件的使用分離,
創建型模式包括工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式
1.2 結構型模式
結構型模式(Structural Pattern)描述如何將類或者對 象結合在一起形成更大的結構,就像搭積木,可以通過 簡單積木的組合形成復雜的、功能更為強大的結構,
結構型模式包括配接器模式、裝飾模式、代理模式、外觀模式、橋接模式、組合模式、享元模式
1.3 行為型模式
行為型模式(Behavioral Pattern)是對在不同的物件之間劃分責任和演算法的抽象化,行為型模式不僅僅關注類和物件的結構,而且重點關注它們之間的相互作用,
行為型模式包括策略模式、模板模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式等,
推薦秦疆老師基于Java講解的23種設計模式視頻教程,
https://www.bilibili.com/video/BV1mc411h719
工具
Git
Git 是一個開源的分布式版本控制系統,用于敏捷高效地處理任何或小或大的專案,Git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放原始碼的版本控制軟體,
視頻推薦:https://www.bilibili.com/video/BV1BE411g7SV
Maven
Maven 是一個軟體專案管理工具,可以對 Java 專案進行全自動構建,管理專案所需要的依賴,Maven 也可被用于構建和管理各種專案,例如 C#,Ruby,Scala 和其他語言撰寫的專案,
視頻推薦:
https://www.bilibili.com/video/BV1Ah411S7ZE
docker
Docker 是一個開源的應用容器引擎,Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實作虛擬化,
Docker 是一個用于開發,交付和運行應用程式的開放平臺,Docker 使您能夠將應用程式與基礎架構分開,從而可以快速交付軟體,
Docker的應用場景
- Web 應用的自動化打包和發布,
- 自動化測驗和持續集成、發布,
- 在服務型環境中部署和調整資料庫或其他的后臺應用,
視頻推薦廣州云科的docker入門教程,非常詳細,
https://www.bilibili.com/video/BV11L411g7U1
專案
很多同學初學Java都會遇到一個問題,不知道去哪里找Java的專案練手,以前我也遇到這個問題,現在在這里分享下一些比較值得學習的專案,
首先給大家推薦幾個Java專案的視頻教程,都是B站上的視頻,風評很好,講解也非常詳細,有興趣的可以看一下~
尚硅谷尚籌網Java專案實戰開發教程:
https://www.bilibili.com/video/BV1bE411T7oZ
尚硅谷Java微服務+分布式+全堆疊專案【尚醫通】
https://www.bilibili.com/video/BV1V5411K7rT
Java Web專案實戰-暢購商城:
https://www.bilibili.com/video/BV13J411k7aQ
下面也推薦幾個Github上比較優質的開源專案,
newbee-mall
star:7.8k
https://github.com/newbee-ltd/newbee-mall
newbee-mall 專案是一套電商系統,包括 newbee-mall 商城系統及 newbee-mall-admin 商城后臺管理系統,基于 Spring Boot 2.X 及相關技術堆疊開發, 前臺商城系統包含首頁門戶、商品分類、新品上線、首頁輪播、商品推薦、商品搜索、商品展示、購物車、訂單結算、訂單流程、個人訂單管理、會員中心、幫助中心等模塊, 后臺管理系統包含資料面板、輪播圖管理、商品管理、訂單管理、會員管理、分類管理、設定等模塊,

litemall
star:16.2k
https://github.com/linlinjava/litemall
又一個小商城,litemall = Spring Boot后端 + Vue管理員前端 + 微信小程式用戶前端 + Vue用戶移動端,
小商城功能:
- 首頁
- 專題串列、專題詳情
- 分類串列、分類詳情
- 品牌串列、品牌詳情
- 新品首發、人氣推薦
- 優惠券串列、優惠券選擇
- ...


在這里也分享一份非常棒的Java學習筆記,Github標星137k+!這份筆記主要Java基礎、容器、Java IO、并發和虛擬機等內容,排版精良,內容更是無可挑剔,

需要的小伙伴可自行下載:
http://mp.weixin.qq.com/s?__biz=Mzg2OTY1NzY0MQ==&mid=100000392&idx=1&sn=f6c8e84651ce48f6ef5b0d496f0f6adf&chksm=4e98ffce79ef76d8dcebdc4787ae8b37760ec193574da9036e46954ae8954ebd56c78792726f#rd
eladmin
star:16.2k
https://github.com/elunez/eladmin
一個基于 Spring Boot 2.1.0 、 Spring Boot Jpa、 JWT、Spring Security、Redis、Vue的前后端分離的后臺管理系統,專案采用分模塊開發方式, 權限控制采用 RBAC,支持資料字典與資料權限管理,支持一鍵生成前后端代碼,支持動態路由,
專案提供了非常詳細的檔案,地址是https://el-admin.vip
專案體驗地址:https://el-admin.xin
使用的技術堆疊也比較新,給作者點贊!


vhr
star:22.2k
https://github.com/lenve/vhr
微人事是一個前后端分離的人力資源管理系統,專案采用SpringBoot+Vue開發,專案加入常見的企業級應用所涉及到的技術點,例如 Redis、RabbitMQ 等,

Blog
star1.2k
https://github.com/zhisheng17/blog
My-Blog 使用的是 Docker + SpringBoot + Mybatis + thymeleaf 打造的一個個人博客模板,此專案在 Tale 博客系統基礎上進行修改的,

community
star:1.8k
https://github.com/codedrinker/community
碼問社區,開源論壇、問答系統,現有功能提問、回復、通知、最新、最熱、消除零回復功能,技術堆疊 Spring、Spring Boot、MyBatis、MySQL/H2、Bootstrap,

vblog
star:6.5k
https://github.com/lenve/VBlog
V部落,Vue+SpringBoot實作的多用戶博客管理平臺!
后端主要采用了:
1.SpringBoot
2.SpringSecurity
3.MyBatis
4.部分介面遵循Restful風格
5.MySQL
前端主要采用了:
1.Vue
2.axios
3.ElementUI
4.vue-echarts
5.mavon-editor
6.vue-router

gpmall
star:4.3k
https://github.com/2227324689/gpmall
【咕泡學院實戰專案】基于SpringBoot+Dubbo構建的電商平臺,業務模塊劃分,盡量貼合互聯網公司的架構體系,所以,除了業務本身的復雜度不是很高之外,整體的架構基本和實際架構相差無幾,
后端的主要架構是基于springboot+dubbo+mybatis,


guns
star:3.4k
https://github.com/stylefeng/Guns
Guns是一個現代化的Java應用開發框架,基于主流技術Spring Boot2,Guns的核心理念是提高開發人員開發效率,降低企業資訊化系統的開發成本,提高企業整體開發水平,
Guns基于插件化架構,在建設系統時,可以自由組合細粒度模塊依賴,實作不同功能的組合和剔除,讓專案體積靈活控制,從而更方便地搭建不同的業務系統,
使用Guns可以快速開發出各類資訊化管理系統,例如OA辦公系統、專案管理系統、商城系統、供應鏈系統、客戶關系管理系統等,

music-website
star:2.3k
https://github.com/Yin-Hongwei/music-website
音樂網站,客戶端和管理端使用 Vue 框架來實作,服務端使用 Spring Boot + MyBatis 來實作,資料庫使用了 MySQL,
前端技術堆疊:Vue3.0 + TypeScript + Vue-Router + Vuex + Axios + ElementPlus + Echarts,

以上就是Java自學的學習路線,內容不少,轉行的小伙伴們加油!
另外,上面提到的書籍,我已經整理了電子版,放到github上了,總共200多本經典的計算機書籍,包括C語言、C++、Java、Python、前端、資料庫、作業系統、計算機網路、資料結構和演算法、機器學習、編程人生等,可以star一下,下次找書直接在上面搜索,倉庫持續更新中(花了一個多月的時間整理的,希望對大家有幫助,歡迎star)
倉庫持續更新中~

有需要的自取:
github倉庫:https://github.com/Tyson0314/java-books
碼字不易,小伙伴們覺得有幫助的話,點個贊唄 你的贊就是我創作的動力!
我是 @程式員大彬 ,定期會分享Java后臺硬核知識,歡迎大家關注~
最后給大家分享一個Github倉庫,上面有大彬整理的300多本經典的計算機書籍PDF,包括C語言、C++、Java、Python、前端、資料庫、作業系統、計算機網路、資料結構和演算法、機器學習、編程人生等,可以star一下,下次找書直接在上面搜索,倉庫持續更新中~


Github地址:https://github.com/Tyson0314/java-books
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/547475.html
標籤:其他
