Java資料圖Java后端路線
最近有些網(wǎng)友問我如何自學(xué) Java 后端Java蓬抄,還有些是想從別的方向想轉(zhuǎn)過來,但都不太了解 Java 后端究竟需要學(xué)什么夯到,究竟要從哪里學(xué)起嚷缭,哪些是主流的 Java 后端技術(shù)等等,導(dǎo)致想學(xué),但又很迷茫阅爽,不知從何下手路幸。我就以過來人的經(jīng)歷,寫在這篇博客里付翁,不一定都對简肴,但都是我根據(jù)自己的經(jīng)歷總結(jié)出來的,供你們的參考百侧。
Java 基礎(chǔ)
最后砰识,如果大家如果在自學(xué)遇到困難,想找一個java的學(xué)習(xí)環(huán)境佣渴,可以加入我們的java學(xué)習(xí)圈辫狼,點擊我加入吧,會節(jié)約很多時間辛润,減少很多在學(xué)習(xí)中遇到的難題膨处。
Java 是一門純粹的面向?qū)ο蟮木幊陶Z言,所以除了基礎(chǔ)語法之外频蛔,必須得弄懂它的 oop 特性:封裝灵迫、繼承、多態(tài)晦溪。此外還有泛型瀑粥、反射的特性,很多框架的技術(shù)都依賴它三圆,比如 Spring 核心的 Ioc 和 AOP狞换,都用到了反射,而且 Java 自身的動態(tài)代理也是利用反射實現(xiàn)的舟肉。此外還有 Java 一些標(biāo)準(zhǔn)庫也是非常常見修噪,比如集合、I/O路媚、并發(fā)办陷,幾乎在 Web 開發(fā)中無處不在,也是面試經(jīng)常會被問到的呵曹,所以在自學(xué) Java 后端之前酱讶,不妨先打好這些基礎(chǔ),另外還有 Java8 的一些新特性裤园,也要重點關(guān)注撤师,比如 Lambda 表達(dá)式、集合的 Stream 流操作拧揽、全新的 Date API 等等剃盾,關(guān)于新特性腺占,我也寫了幾篇關(guān)于這方面的博客,請自行找吧痒谴,就不貼出來了衰伯。
關(guān)于書籍推薦,我是不建議初學(xué)者一開始就拿著「Java 編程思想」啃的闰歪,因為當(dāng)初我就是那個當(dāng)天下午決定自學(xué) Java嚎研,晚上就抱著這本書啃的人,說實話库倘,我當(dāng)時真的不懂它在說啥临扮,因為我沒有一點的面向?qū)ο笳Z言編程的基礎(chǔ),而這本書又寫得太博大精深了教翩,在當(dāng)時的我來說杆勇,完全是天書,但是我認(rèn)為它仍然是 Java 界的圣經(jīng)饱亿,每讀一次都有所收獲蚜退。我在這里推薦你們一開始先看「Java 核心技術(shù)」,這本書講得比較通俗易懂彪笼,初學(xué)者比較能接受钻注。
關(guān)于視頻推薦,我當(dāng)初就是聽某客的畢向東老師講的 Java 基礎(chǔ)教程)配猫,高老師講的實在是太生動有趣了幅恋,不知不覺把我?guī)нM Java 的坑里無法自拔,有時候我會聽他視頻時笑出聲來泵肄,也許是我那段自學(xué)階段最有趣的時刻了捆交。
數(shù)據(jù)庫
關(guān)于 sql 方面:SQL 教程、MySQL 教程
我是了解了一些基礎(chǔ)語法之后腐巢,就直接跟著視頻的老師做一些表操作實戰(zhàn)練習(xí)了品追,比如單表查詢、多表查詢等冯丙。我建議學(xué) sql 切勿眼高手低肉瓦,需多加練習(xí),不要只看懂了就行胃惜,因為工作中寫得一手簡練的 sql 是非常重要的风宁。在這里我說下我在項目一直秉承著 sql 語句是能避免多表查詢就避免多表查詢,能夠分開多條語句就分開多條語句蛹疯,因為這里涉及到多表查詢性能和數(shù)據(jù)庫擴展的問題。
關(guān)于 JDBC 方面:JDBC 教程热监、 JDBC 獲取連接對象源碼分析
你需要弄懂 JDBC API 的用法捺弦,其實它只是一組規(guī)范接口,所有數(shù)據(jù)庫驅(qū)動只要實現(xiàn)了 JDBC,那么我們就可以通過標(biāo)準(zhǔn)的 API 調(diào)用相應(yīng)的驅(qū)動列吼,完全不用知道驅(qū)動是怎么實現(xiàn)的幽崩,這就是面向接口編程的好處。而且對于 JDBC 我是直接看視頻去理解的寞钥,跟著視頻做了一個基于 Apache Dbutils 工具做了一個具有事務(wù)性的小工具慌申,我特意用思維導(dǎo)圖總結(jié)了一下:
Web 基礎(chǔ)
曾經(jīng)開源中國創(chuàng)始人紅薯寫了一篇文章「初學(xué) Java Web 開發(fā),請遠(yuǎn)離各種框架理郑,從 Servlet 開發(fā)」蹄溉,我覺得他說的太對了,在如今 Java 開發(fā)中您炉,很多開發(fā)者只知道怎么使用框架柒爵,但根本不懂 Web 的一些知識點,其實框架很多赚爵,但都基本是一個套路棉胀,所以在你學(xué)習(xí)任何框架前,請把 Web 基礎(chǔ)打好冀膝,把 Web 基礎(chǔ)打好了唁奢,看框架真的是如魚得水。
Web 主流框架
Java Web 框架多如牛毛窝剖,等你有一定經(jīng)驗了麻掸,你也可以寫一個 Web 框架,網(wǎng)上很多說 Spring枯芬、Struts2论笔、Hibernate 是 Java 三架馬車,我只想說千所,那是很久遠(yuǎn)的事情了狂魔,我嚴(yán)重不推薦 Struts2、Hibernate淫痰,相信我最楷,一開始只需要上手 Spring、SpringMVC待错、Mybatis 就可以了籽孙,特別是 Spring 框架,其實 Spring 家族的框架都是很不錯的火俄。
但是提醒一點就是犯建,千萬不要沉迷于各種框架不能自拔,以會多種用法而沾沾自喜瓜客,導(dǎo)致知其然而不知其所以然适瓦。
Spring其核心思想就是 IOC 和 AOP:
談?wù)剬?Spring IOC 的理解
Spring 面向切面編程
SpringMVC 它的思想是全部請求統(tǒng)一用一個 Servlet 去做請求轉(zhuǎn)發(fā)與控制竿开,這個 Servlet 叫 DispatcherServlet
Mybatis 它可實現(xiàn)動態(tài)拼裝 sql,避免了幾乎所有的 JDBC 代碼和手動設(shè)置參數(shù)以及獲取結(jié)果集
Web 框架進階
使用了 SSM 框架后玻熙,你會覺得框架也不過這么回事否彩,如果你對 Spring 有過大概了解,你也會產(chǎn)生想寫一個「山寨版」Spring 的心思了嗦随,一個輕量級 Web 框架主要具備以下功能:
可讀取用戶自定義配置文件列荔,并以此來初始化框架;
具備 Bean 容器枚尼,管理項目的類的對象生命周期贴浙;
具備依賴注入,降低類之間的耦合性姑原;
具備 AOP 功能悬而,使項目可進行橫向編程,可不改變原有代碼的情況增加業(yè)務(wù)邏輯锭汛;
具備 MVC 框架模式笨奠。
其實除了 SSM 之外,Web 框架可謂是百家齊放唤殴,其中以 Spring 全家桶最為耀眼般婆,在這里我極力推薦兩個 Spring 家族框架:SpringBoot 和 SpringCloud。
SpringBoot 彌補了 Spring 配置上的缺點朵逝,再也不用為繁雜的 xml 費勁精力了蔚袍,堪稱是 Java 后端開發(fā)的顛覆者,推薦書籍「Java EE 開發(fā)的顛覆者:SpringBoot實戰(zhàn)」
SpringCloud 是一個微服務(wù)架構(gòu)配名,能夠?qū)㈨椖堪凑諛I(yè)務(wù)分成一個個微服務(wù)啤咽,每個微服務(wù)都可獨立部署,服務(wù)之間互相協(xié)調(diào)渠脉。當(dāng)一個項目越來越大時宇整,隨之而來的是越來越難以維護,此時將項目拆分成若干個微服務(wù)芋膘、單獨維護鳞青、單獨部署,也可以降低項目不同業(yè)每個微服務(wù)都可獨立部署为朋,服務(wù)之間互相協(xié)調(diào)臂拓。當(dāng)一個項目越來越大時,隨之而來的是越來越難以維護习寸,此時將項目拆分成若干個微服務(wù)胶惰、單獨維護、單獨部署霞溪,也可以降低項目不同業(yè)務(wù)間的耦合度童番。推薦書籍「Spring Cloud 與 Docker 微服務(wù)架構(gòu)實戰(zhàn)」精钮,這本書將 Docker 與微服務(wù)完美地結(jié)合在一起,堪稱完美剃斧!
其它技術(shù)
Redis:一個高性能的 key-value 數(shù)據(jù)庫,當(dāng)有并發(fā)量很高的請求時忽你,將數(shù)據(jù)緩存在 Redis 中幼东,將提高服務(wù)器的響應(yīng)性能,大大減輕數(shù)據(jù)庫的壓力科雳。
Git:世界上最先進的分布式版本控制系統(tǒng)根蟹,建議所有初學(xué)者從命令行開始使用 Git!
Git 官網(wǎng)
Maven:一個用于構(gòu)建項目的工具糟秘,將項目間的依賴通過 xml 完美地組織到一起简逮,可通過編譯插件將項目編譯成字節(jié)碼文件。還有類似的 Gradle 也是不錯的選擇尿赚。
maven 的 pom.xml 文件詳解
Linux:至少要求常用的命令會用散庶,能夠在 linux 環(huán)境下部署項目。
最全的 SSH 連接遠(yuǎn)程終端教程
Docker:簡直是項目部署神器啊凌净,來不及解釋了悲龟,推薦書籍「Docker 技術(shù)入門與實戰(zhàn)」,中國首部 Docker 著作冰寻!
開發(fā)工具
工欲善其事须教,必先利其器,以下是我推薦的一些開發(fā)工具:
Intellij IDEA:Java 開發(fā)最好的 IDE斩芭,這個是公認(rèn)的轻腺,我一開始是用 Eclipse 的,后來用了 Intellij IDEA划乖,才發(fā)現(xiàn) Eclipse 就是一坨屎贬养,所以我以過來人勸你們不要使用 Eclipse,直接 Intellij IDEA迁筛!
Iterm2:macOS 最好用的終端煤蚌!
Chrome:人生苦短,請用 Chrome细卧,來不及解釋了尉桩,快上車!