【干貨】java學(xué)習(xí)路線圖

對(duì)于軟件開(kāi)發(fā)來(lái)說(shuō)更是這樣,編程語(yǔ)言比較枯燥,學(xué)習(xí)難度大,沒(méi)有好的學(xué)習(xí)方法和學(xué)習(xí)路線,在過(guò)程中很容易就會(huì)失去了學(xué)習(xí)的興趣,甚至最后選擇了放棄。為此為大家支招,教你新手入門需要知道的Java學(xué)習(xí)路線。


Java 基礎(chǔ)

Java 是一門純粹的面向?qū)ο蟮木幊陶Z(yǔ)言,所以除了基礎(chǔ)語(yǔ)法之外,必須得弄懂它的 oop 特性:封裝、繼承、多態(tài)。此外還有泛型、反射的特性,很多框架的技術(shù)都依賴它,比如 Spring 核心的 Ioc 和 AOP,都用到了反射,而且 Java 自身的動(dòng)態(tài)代理也是利用反射實(shí)現(xiàn)的。此外還有 Java 一些標(biāo)準(zhǔn)庫(kù)也是非常常見(jiàn),比如集合、I/O、并發(fā),幾乎在 Web 開(kāi)發(fā)中無(wú)處不在,也是面試經(jīng)常會(huì)被問(wèn)到的,所以在自學(xué) Java 后端之前,不妨先打好這些基礎(chǔ),另外還有 Java8 的一些新特性,也要重點(diǎn)關(guān)注,比如 Lambda 表達(dá)式、集合的 Stream 流操作、全新的 Date API 等等,關(guān)于新特性,我也寫了幾篇關(guān)于這方面的博客,請(qǐng)自行找吧,就不貼出來(lái)了。

關(guān)于書籍推薦,我是不建議初學(xué)者一開(kāi)始就拿著「Java 編程思想」啃的,因?yàn)楫?dāng)初我就是那個(gè)當(dāng)天下午決定自學(xué) Java,晚上就抱著這本書啃的人,說(shuō)實(shí)話,我當(dāng)時(shí)真的不懂它在說(shuō)啥,因?yàn)槲覜](méi)有一點(diǎn)的面向?qū)ο笳Z(yǔ)言編程的基礎(chǔ),而這本書又寫得太博大精深了,在當(dāng)時(shí)的我來(lái)說(shuō),完全是天書,但是我認(rèn)為它仍然是 Java 界的圣經(jīng),每讀一次都有所收獲。我在這里推薦你們一開(kāi)始先看「Java 核心技術(shù)」,這本書講得比較通俗易懂,初學(xué)者比較能接受。

關(guān)于視頻推薦,我當(dāng)初就是聽(tīng)某客的畢向東老師講的 Java 基礎(chǔ)教程(可以關(guān)注我的微信公眾號(hào)獲?。?,畢老師講的實(shí)在是太生動(dòng)有趣了,不知不覺(jué)把我?guī)нM(jìn) Java 的坑里無(wú)法自拔,有時(shí)候我會(huì)聽(tīng)他視頻時(shí)笑出聲來(lái),也許是我那段自學(xué)階段最有趣的時(shí)刻了。

數(shù)據(jù)庫(kù)

關(guān)于 sql 方面:

SQL 教程? http://www.runoob.com/sql/sql-tutorial.html、

MySQL 教程 http://www.runoob.com/mysql/mysql-tutorial.html

我是了解了一些基礎(chǔ)語(yǔ)法之后,就直接跟著視頻的老師做一些表操作實(shí)戰(zhàn)練習(xí)了,比如單表查詢、多表查詢等。我建議學(xué) sql 切勿眼高手低,需多加練習(xí),不要只看懂了就行,因?yàn)楣ぷ髦袑懙靡皇趾?jiǎn)練的 sql 是非常重要的。在這里我說(shuō)下我在項(xiàng)目一直秉承著 sql 語(yǔ)句是能避免多表查詢就避免多表查詢,能夠分開(kāi)多條語(yǔ)句就分開(kāi)多條語(yǔ)句,因?yàn)檫@里涉及到多表查詢性能和數(shù)據(jù)庫(kù)擴(kuò)展的問(wèn)題。

關(guān)于 JDBC 方面:JDBC 教程JDBC 獲取連接對(duì)象源碼分析

你需要弄懂 JDBC API 的用法,其實(shí)它只是一組規(guī)范接口,所有數(shù)據(jù)庫(kù)驅(qū)動(dòng)只要實(shí)現(xiàn)了 JDBC,那么我們就可以通過(guò)標(biāo)準(zhǔn)的 API 調(diào)用相應(yīng)的驅(qū)動(dòng),完全不用知道驅(qū)動(dòng)是怎么實(shí)現(xiàn)的,這就是面向接口編程的好處。而且對(duì)于 JDBC 我是直接看視頻去理解的,跟著視頻做了一個(gè)基于 Apache Dbutils 工具做了一個(gè)具有事務(wù)性的小工具,我特意用思維導(dǎo)圖總結(jié)了一下:

jdbc-utils源碼地址:jdbc-utils

Web 基礎(chǔ)

曾經(jīng)開(kāi)源中國(guó)創(chuàng)始人紅薯寫了一篇文章「初學(xué) Java Web 開(kāi)發(fā),請(qǐng)遠(yuǎn)離各種框架,從 Servlet 開(kāi)發(fā)」,我覺(jué)得他說(shuō)的太對(duì)了,在如今 Java 開(kāi)發(fā)中,很多開(kāi)發(fā)者只知道怎么使用框架,但根本不懂 Web 的一些知識(shí)點(diǎn),其實(shí)框架很多,但都基本是一個(gè)套路,所以在你學(xué)習(xí)任何框架前,請(qǐng)把 Web 基礎(chǔ)打好,把 Web 基礎(chǔ)打好了,看框架真的是如魚得水。

關(guān)于 Http 協(xié)議,這篇文章就寫得很清楚:Http協(xié)議

關(guān)于 Web 基礎(chǔ)這方面數(shù)據(jù)推薦,我當(dāng)時(shí)是看的是「Tomcat 與 Java Web 開(kāi)發(fā)技術(shù)詳解」,很詳細(xì)地講解了整個(gè) Java Web 開(kāi)發(fā)的技術(shù)知識(shí)點(diǎn),但現(xiàn)在看來(lái),我覺(jué)得里面講的有一些技術(shù)確實(shí)有點(diǎn)老舊了,不過(guò)可以了解一下 Java Web 開(kāi)發(fā)的歷史也是不錯(cuò)的。所以在 Web 基礎(chǔ)這方面我都是看某客的崔老師講的「超全面 Java Web 視頻教程」,講得很詳細(xì)很生動(dòng),還有實(shí)戰(zhàn)項(xiàng)目!

關(guān)于 JSP,你只要了解它其實(shí)就是一個(gè) Servlet 就行了,關(guān)于它的一些標(biāo)簽用法,我認(rèn)為可以直接忽略,因?yàn)楝F(xiàn)在互聯(lián)網(wǎng)幾乎沒(méi)哪間公司還用 JSP,除了一些老舊的項(xiàng)目?,F(xiàn)在都是流行前后端分離,單頁(yè)應(yīng)用,后端只做 API 接口的時(shí)代了,所以時(shí)間寶貴,把這些時(shí)間重點(diǎn)放在 Servlet 規(guī)范上面吧。

關(guān)于 Tomcat,它是一個(gè) Web 容器,我們寫的后端項(xiàng)目都要部署到Web容器才能運(yùn)行,它其實(shí)是一個(gè)遵循 Http,通過(guò) Socket 通信與客戶端進(jìn)行交互的服務(wù)端程序:Tomcat結(jié)構(gòu)及處理請(qǐng)求過(guò)程

Web 主流框架

Java Web 框架多如牛毛,等你有一定經(jīng)驗(yàn)了,你也可以寫一個(gè) Web 框架,網(wǎng)上很多說(shuō) Spring、Struts2、Hibernate 是 Java 三架馬車,我只想說(shuō),那是很久遠(yuǎn)的事情了,我嚴(yán)重不推薦 Struts2、Hibernate,相信我,一開(kāi)始只需要上手 Spring、SpringMVC、Mybatis 就可以了,特別是 Spring 框架,其實(shí) Spring 家族的框架都是很不錯(cuò)的。

但是提醒一點(diǎn)就是,千萬(wàn)不要沉迷于各種框架不能自拔,以會(huì)多種用法而沾沾自喜,導(dǎo)致知其然而不知其所以然。

Spring其核心思想就是 IOC 和 AOP:

談?wù)剬?duì) Spring IOC 的理解

Spring 面向切面編程

SpringMVC 它的思想是全部請(qǐng)求統(tǒng)一用一個(gè) Servlet 去做請(qǐng)求轉(zhuǎn)發(fā)與控制,這個(gè) Servlet 叫 DispatcherServlet:

SpringMVC 初始化過(guò)程

SpringMVC 處理請(qǐng)求過(guò)程

Mybatis 它可實(shí)現(xiàn)動(dòng)態(tài)拼裝 sql,避免了幾乎所有的 JDBC 代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集:

mybatis 入門教程

Mybatis 深入淺出系列

Web 框架進(jìn)階

使用了 SSM 框架后,你會(huì)覺(jué)得框架也不過(guò)這么回事,如果你對(duì) Spring 有過(guò)大概了解,你也會(huì)產(chǎn)生想寫一個(gè)「山寨版」Spring 的心思了,一個(gè)輕量級(jí) Web 框架主要具備以下功能:

可讀取用戶自定義配置文件,并以此來(lái)初始化框架;

具備 Bean 容器,管理項(xiàng)目的類的對(duì)象生命周期;

具備依賴注入,降低類之間的耦合性;

具備 AOP 功能,使項(xiàng)目可進(jìn)行橫向編程,可不改變?cè)写a的情況增加業(yè)務(wù)邏輯;

具備 MVC 框架模式。

其實(shí)除了 SSM 之外,Web 框架可謂是百家齊放,其中以 Spring 全家桶最為耀眼,在這里我極力推薦兩個(gè) Spring 家族框架:SpringBoot 和 SpringCloud。

SpringBoot 彌補(bǔ)了 Spring 配置上的缺點(diǎn),再也不用為繁雜的 xml 費(fèi)勁精力了,堪稱是 Java 后端開(kāi)發(fā)的顛覆者,推薦書籍「Java EE 開(kāi)發(fā)的顛覆者:SpringBoot實(shí)戰(zhàn)」

SpringBoot 構(gòu)建 web 項(xiàng)目

SpringBoot 自動(dòng)化配置源碼分析

自定義 SpringBoot Starter

spring-boot-starter-tutorial

SpringCloud 是一個(gè)微服務(wù)架構(gòu),能夠?qū)㈨?xiàng)目按照業(yè)務(wù)分成一個(gè)個(gè)微服務(wù),每個(gè)微服務(wù)都可獨(dú)立部署,服務(wù)之間互相協(xié)調(diào)。當(dāng)一個(gè)項(xiàng)目越來(lái)越大時(shí),隨之而來(lái)的是越來(lái)越難以維護(hù),此時(shí)將項(xiàng)目拆分成若干個(gè)微服務(wù)、單獨(dú)維護(hù)、單獨(dú)部署,也可以降低項(xiàng)目不同業(yè)務(wù)間的耦合度。推薦書籍「Spring Cloud 與 Docker 微服務(wù)架構(gòu)實(shí)戰(zhàn)」,這本書將 Docker 與微服務(wù)完美地結(jié)合在一起,堪稱完美!

Spring Cloud 中文官網(wǎng)

史上最簡(jiǎn)單的 Spring Cloud 教程

我寫的有關(guān)于 Spring Cloud 的博客:

SpringCloud微服務(wù)架構(gòu)之服務(wù)注冊(cè)與發(fā)現(xiàn)

SpringCloud微服務(wù)架構(gòu)之服務(wù)消費(fèi)者

SpringCloud微服務(wù)架構(gòu)之?dāng)嗦菲?/a>

SpringCloud微服務(wù)架構(gòu)之服務(wù)網(wǎng)關(guān)

其它技術(shù)

Redis:一個(gè)高性能的 key-value 數(shù)據(jù)庫(kù),當(dāng)有并發(fā)量很高的請(qǐng)求時(shí),將數(shù)據(jù)緩存在 Redis 中,將提高服務(wù)器的響應(yīng)性能,大大減輕數(shù)據(jù)庫(kù)的壓力。

redis 中文官網(wǎng)

redis 教程

Git:世界上最先進(jìn)的分布式版本控制系統(tǒng),建議所有初學(xué)者從命令行開(kāi)始使用 Git!

Git 官網(wǎng)

最全 Git 教程

Git 的一些常用命令

Maven:一個(gè)用于構(gòu)建項(xiàng)目的工具,將項(xiàng)目間的依賴通過(guò) xml 完美地組織到一起,可通過(guò)編譯插件將項(xiàng)目編譯成字節(jié)碼文件。還有類似的 Gradle 也是不錯(cuò)的選擇。

maven 的 pom.xml 文件詳解

Linux:至少要求常用的命令會(huì)用,能夠在 linux 環(huán)境下部署項(xiàng)目。

Linux 命令大全

最全的 SSH 連接遠(yuǎn)程終端教程

Docker:簡(jiǎn)直是項(xiàng)目部署神器啊,來(lái)不及解釋了,看我 Docker 系列博客,開(kāi)啟 Docker 之旅吧!推薦書籍「Docker 技術(shù)入門與實(shí)戰(zhàn)」,中國(guó)首部 Docker 著作!

Docker 實(shí)戰(zhàn)(一)

Docker 實(shí)戰(zhàn)(二)

Docker 實(shí)戰(zhàn)(三)

docker-deploy-tutorial

開(kāi)發(fā)工具

工欲善其事,必先利其器,以下是我推薦的一些開(kāi)發(fā)工具:

Intellij IDEA:Java 開(kāi)發(fā)最好的 IDE,這個(gè)是公認(rèn)的,我一開(kāi)始是用 Eclipse 的,后來(lái)用了 Intellij IDEA,才發(fā)現(xiàn) Eclipse 就是一坨屎,所以我以過(guò)來(lái)人勸你們不要使用 Eclipse,直接 Intellij IDEA!

IntelliJ IDEA 使用教程

Iterm2:macOS 最好用的終端!

Iterm2 使用指南

Chrome:人生苦短,請(qǐng)用 Chrome,來(lái)不及解釋了,快上車!

Postman:很好用的一個(gè)接口調(diào)試工具。

Postman 官網(wǎng)


文章來(lái)源于:https://blog.csdn.net/chenshiyang0806/article/details/79879269

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容