更新時間:2019-09-03 14:42:22 來源:動力節(jié)點 瀏覽6316次
最近有些網(wǎng)友問小編如何自學(xué)Java后端,還有些是想從別的方向想轉(zhuǎn)過來,但都不太了解Java后端究竟需要學(xué)什么,究竟要從哪里學(xué)起,哪些是主流的Java后端技術(shù)等等,導(dǎo)致想學(xué),但又很迷茫,不知從何下手。我就以過來人的經(jīng)歷,寫在這篇博客里,不一定都對,但都是我根據(jù)自己的經(jīng)歷總結(jié)出來的,供你們的參考。
Java基礎(chǔ)
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流操作、全新的DateAPI等等,關(guān)于新特性,我也寫了幾篇關(guān)于這方面的博客,請自行找吧,就不貼出來了。
關(guān)于Java書籍推薦,我是不建議初學(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)于視頻推薦,推薦動力節(jié)點杜老師講的Java零基礎(chǔ)視頻教程,杜老師講的實在是太生動有趣了,不知不覺就能吧你帶進Java的坑里無法自拔。
數(shù)據(jù)庫
關(guān)于sql方面:SQL教程、MySQL教程
我是了解了一些基礎(chǔ)語法之后,就直接跟著視頻的老師做一些表操作實戰(zhàn)練習(xí)了,比如單表查詢、多表查詢等。我建議學(xué)sql切勿眼高手低,需多加練習(xí),不要只看懂了就行,因為工作中寫得一手簡練的sql是非常重要的。在這里我說下我在項目一直秉承著sql語句是能避免多表查詢就避免多表查詢,能夠分開多條語句就分開多條語句,因為這里涉及到多表查詢性能和數(shù)據(jù)庫擴展的問題。
關(guān)于JDBC方面:JDBC教程、JDBC獲取連接對象源碼分析
你需要弄懂JDBCAPI的用法,其實它只是一組規(guī)范接口,所有數(shù)據(jù)庫驅(qū)動只要實現(xiàn)了JDBC,那么我們就可以通過標(biāo)準(zhǔn)的API調(diào)用相應(yīng)的驅(qū)動,完全不用知道驅(qū)動是怎么實現(xiàn)的,這就是面向接口編程的好處。而且對于JDBC我是直接看視頻去理解的,跟著視頻做了一個基于ApacheDbutils工具做了一個具有事務(wù)性的小工具,我特意用思維導(dǎo)圖總結(jié)了一下:
Web基礎(chǔ)
曾經(jīng)開源中國創(chuàng)始人紅薯寫了一篇文章「初學(xué)JavaWeb開發(fā),請遠(yuǎn)離各種框架,從Servlet開發(fā)」,我覺得他說的太對了,在如今Java開發(fā)中,很多開發(fā)者只知道怎么使用框架,但根本不懂Web的一些知識點,其實框架很多,但都基本是一個套路,所以在你學(xué)習(xí)任何框架前,請把Web基礎(chǔ)打好,把Web基礎(chǔ)打好了,看框架真的是如魚得水。
關(guān)于Http協(xié)議,這篇文章就寫得很清楚:Http協(xié)議
關(guān)于Web基礎(chǔ)這方面數(shù)據(jù)推薦,我當(dāng)時是看的是「Tomcat與JavaWeb開發(fā)技術(shù)詳解」,很詳細(xì)地講解了整個JavaWeb開發(fā)的技術(shù)知識點,但現(xiàn)在看來,我覺得里面講的有一些技術(shù)確實有點老舊了,不過可以了解一下JavaWeb開發(fā)的歷史也是不錯的。所以在Web基礎(chǔ)這方面我都是看某客的崔老師講的「超全面JavaWeb視頻教程」,講得很詳細(xì)很生動,還有實戰(zhàn)項目!
關(guān)于JSP,你只要了解它其實就是一個Servlet就行了,關(guān)于它的一些標(biāo)簽用法,我認(rèn)為可以直接忽略,因為現(xiàn)在互聯(lián)網(wǎng)幾乎沒哪間公司還用JSP,除了一些老舊的項目。現(xiàn)在都是流行前后端分離,單頁應(yīng)用,后端只做API接口的時代了,所以時間寶貴,把這些時間重點放在Servlet規(guī)范上面吧。
關(guān)于Tomcat,它是一個Web容器,我們寫的后端項目都要部署到Web容器才能運行,它其實是一個遵循Http,通過Socket通信與客戶端進行交互的服務(wù)端程序:Tomcat結(jié)構(gòu)及處理請求過程
Web主流框架
JavaWeb框架多如牛毛,等你有一定經(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ù)剬pringIOC的理解
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ā)的顛覆者,推薦書籍「JavaEE開發(fā)的顛覆者:SpringBoot實戰(zhàn)」
SpringCloud是一個微服務(wù)架構(gòu),能夠?qū)㈨椖堪凑諛I(yè)務(wù)分成一個個微服務(wù),每個微服務(wù)都可獨立部署,服務(wù)之間互相協(xié)調(diào)。當(dāng)一個項目越來越大時,隨之而來的是越來越難以維護,此時將項目拆分成若干個微服務(wù)、單獨維護、單獨部署,也可以降低項目不同業(yè)務(wù)間的耦合度。推薦書籍「SpringCloud與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ā)工具:
IntellijIDEA:Java開發(fā)最好的IDE,這個是公認(rèn)的,我一開始是用Eclipse的,后來用了IntellijIDEA,才發(fā)現(xiàn)Eclipse就是一坨屎,所以我以過來人勸你們不要使用Eclipse,直接IntellijIDEA!
Iterm2:macOS最好用的終端!
Chrome:人生苦短,請用Chrome,來不及解釋了,快上車!
Postman:很好用的一個接口調(diào)試工具。
以上就是動力節(jié)點Java培訓(xùn)機構(gòu)小編介紹的“2019年Java后端的學(xué)習(xí)線路總結(jié)”的內(nèi)容,希望能夠幫助到大家,更多Java新資訊請繼續(xù)關(guān)注動力節(jié)點Java培訓(xùn)機構(gòu)官網(wǎng),每天會有精彩內(nèi)容分享與你。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743