回覆列表
  • 1 # 宋v第三幕

    Java 後端究竟需要學什麼,究竟要從哪裡學起,哪些是主流的 Java 後端技術等等,導致想學,但又很迷茫,不知從何下手。我就以過來人的經歷,寫一些,不一定都對,但都是我根據自己的經歷總結出來的,供你的參考。

    Java 基礎

    Java 是一門純粹的面向物件的程式語言,所以除了基礎語法之外,必須得弄懂它的 oop 特性:封裝、繼承、多型。此外還有泛型、反射的特性,很多框架的技術都依賴它,比如 Spring 核心的 Ioc 和 AOP,都用到了反射,而且 Java 自身的動態代理也是利用反射實現的。此外還有 Java 一些標準庫也是非常常見,比如集合、I/O、併發,幾乎在 Web 開發中無處不在,也是面試經常會被問到的,所以在自學 Java 後端之前,不妨先打好這些基礎,另外還有 Java8 的一些新特性,也要重點關注,比如 Lambda 表示式、集合的 Stream 流操作、全新的 Date API 等等

    關於書籍推薦,我是不建議初學者一開始就拿著「Java 程式設計思想」啃的。說實話,我當時真的不懂它在說啥,因為我沒有一點的面嚮物件語言程式設計的基礎,而這本書又寫得太博大精深了,在當時的我來說,完全是天書,但是我認為它仍然是 Java 界的聖經,每讀一次都有所收穫。我在這裡推薦你們一開始先看「Java 核心技術」,這本書講得比較通俗易懂,初學者比較能接受。

    資料庫

    關於 sql 方面:SQL 教程、MySQL 教程

    我是瞭解了一些基礎語法之後,就直接跟著做一些表操作實戰練習了,比如單表查詢、多表查詢等。我建議學 sql 切勿眼高手低,需多加練習,不要只看懂了就行,因為工作中寫得一手簡練的 sql 是非常重要的。在這裡我說下我在專案一直秉承著 sql 語句是能避免多表查詢就避免多表查詢,能夠分開多條語句就分開多條語句,因為這裡涉及到多表查詢效能和資料庫擴充套件的問題。

    關於 JDBC 方面:JDBC 教程、 JDBC 獲取連線物件原始碼分析

    你需要弄懂 JDBC API 的用法,其實它只是一組規範介面,所有資料庫驅動只要實現了 JDBC,那麼我們就可以透過標準的 API 呼叫相應的驅動,完全不用知道驅動是怎麼實現的,這就是面向介面程式設計的好處。

    Web 基礎

    曾經開源中國創始人紅薯寫了一篇文章「初學 Java Web 開發,請遠離各種框架,從 Servlet 開發」,我覺得他說的太對了,在如今 Java 開發中,很多開發者只知道怎麼使用框架,但根本不懂 Web 的一些知識點,其實框架很多,但都基本是一個套路,所以在你學習任何框架前,請把 Web 基礎打好,把 Web 基礎打好了,看框架真的是如魚得水。

    關於 Http 協議,這篇文章就寫得很清楚:Http協議

    關於 Web 基礎這方面資料推薦,我當時是看的是「Tomcat 與 Java Web 開發技術詳解」,很詳細地講解了整個 Java Web 開發的技術知識點,但現在看來,我覺得裡面講的有一些技術確實有點老舊了,不過可以瞭解一下 Java Web 開發的歷史也是不錯的。所以在 Web 基礎這方面我都是看某客的崔老師講的「超全面 Java Web 影片教程」,講得很詳細很生動,還有實戰專案!

    關於 JSP,你只要瞭解它其實就是一個 Servlet 就行了,關於它的一些標籤用法,我認為可以直接忽略,因為現在網際網路幾乎沒哪間公司還用 JSP,除了一些老舊的專案。現在都是流行前後端分離,單頁應用,後端只做 API 介面的時代了,所以時間寶貴,把這些時間重點放在 Servlet 規範上面吧。

    關於 Tomcat,它是一個 Web 容器,我們寫的後端專案都要部署到Web容器才能執行,它其實是一個遵循 Http,透過 Socket 通訊與客戶端進行互動的服務端程式

    Web 主流框架

    Java Web 框架多如牛毛,等你有一定經驗了,你也可以寫一個 Web 框架,網上很多說 Spring、Struts2、Hibernate 是 Java 三架馬車,我只想說,那是很久遠的事情了,我嚴重不推薦 Struts2、Hibernate,相信我,一開始只需要上手 Spring、SpringMVC、Mybatis 就可以了,特別是 Spring 框架,其實 Spring 家族的框架都是很不錯的。

    但是提醒一點就是,千萬不要沉迷於各種框架不能自拔,以會多種用法而沾沾自喜,導致知其然而不知其所以然。

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

    談談對 Spring IOC 的理解

    Spring 面向切面程式設計

    SpringMVC 初始化過程

    SpringMVC 處理請求過程

    Mybatis 它可實現動態拼裝 sql,避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集:

    mybatis 入門教程

    Mybatis 深入淺出系列

    Web 框架進階

    使用了 SSM 框架後,你會覺得框架也不過這麼回事,如果你對 Spring 有過大概瞭解,你也會產生想寫一個「山寨版」Spring 的心思了,一個輕量級 Web 框架主要具備以下功能:

    可讀取使用者自定義配置檔案,並以此來初始化框架;

    具備 Bean 容器,管理專案的類的物件生命週期;

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

    具備 AOP 功能,使專案可進行橫向程式設計,可不改變原有程式碼的情況增加業務邏輯;

    具備 MVC 框架模式。

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

    SpringBoot 彌補了 Spring 配置上的缺點,再也不用為繁雜的 xml 費勁精力了,堪稱是 Java 後端開發的顛覆者,推薦書籍「Java EE 開發的顛覆者:SpringBoot實戰」

    SpringBoot 構建 web 專案

    SpringBoot 自動化配置原始碼

    SpringCloud 是一個微服務架構,能夠將專案按照業務分成一個個微服務,每個微服務都可獨立部署,服務之間互相協調。當一個專案越來越大時,隨之而來的是越來越難以維護,此時將專案拆分成若干個微服務、單獨維護、單獨部署,也可以降低專案不同業務間的耦合度。推薦書籍「Spring Cloud 與 Docker 微服務架構實戰」,這本書將 Docker 與微服務完美地結合在一起,堪稱完美!

    其它技術

    Redis:一個高效能的 key-value 資料庫,當有併發量很高的請求時,將資料快取在 Redis 中,將提高伺服器的響應效能,大大減輕資料庫的壓力。

    redis 中文官網

    redis 教程

    Git:世界上最先進的分散式版本控制系統,建議所有初學者從命令列開始使用 Git!

    Git 官網

    最全 Git 教程

    Git 的一些常用命令

    Maven:一個用於構建專案的工具,將專案間的依賴透過 xml 完美地組織到一起,可透過編譯外掛將專案編譯成位元組碼檔案。還有類似的 Gradle 也是不錯的選擇。

    maven 的 pom.xml 檔案詳解

    Linux:至少要求常用的命令會用,能夠在 linux 環境下部署專案。

    Linux 命令大全

    最全的 SSH 連線遠端終端教程

    Docker:簡直是專案部署神器啊,來不及解釋了,看我 Docker 系列部落格,開啟 Docker 之旅吧!推薦書籍「Docker 技術入門與實戰」,中國首部 Docker 著作!

    Docker 實戰(一)

    Docker 實戰(二)

    Docker 實戰(三)

    docker-deploy-tutorial

  • 2 # ict技術圈

    看影片學習,不要看書學習。我自己是日語專業的,此前完全沒有接觸過程式設計,對程式設計是完全沒概念的。知乎上很多人都說看影片慢,建議直接看優秀的書籍,所以我就買了C語言的一些書和Java的一些書(都是初學入門的),但都看不懂,看不下去。反而是後期跟著影片學習一段時間後,再翻開書本(其實幾乎沒看過書),慢慢能知道書裡在講什麼了。大家千萬不要覺得看影片會顯得自己學習能力不夠強。實際上,大學選擇計算機專業的同學,又有多少比例是不靠老師上課,自己躲圖書館把程式設計學會的呢?從這個角度來說,看影片相當於大學課堂聽課。並沒什麼不妥。

    1,不懂的知識點影片多看幾遍,如果影片有配套筆記,第二天起來複習一遍,加深印象。自己也可用word做筆記,寫學習日誌。JavaSE有不懂的,可以百度或谷歌,看看別人的技術部落格。再回過頭看影片可能就突然明白了。因為我也這麼試過,對我幫助很大,希望你也能試試。

    2,根據影片內容畫思維導圖!

    畫思維導圖的好處在我看來至少有兩個:

    ·        理清講解思路,讓自己有全域性觀。初學Java,每一天的影片剛聽完就基本忘得差不多了。很多知識點腦海中也只剩下一個名詞,具體講了什麼已經記不得!做筆記長遠來看是最省時間的。因為筆記內容都是自己消化過的,後期不用再去看影片複習(太麻煩了),直接看自己的筆記效率更高!反而蜻蜓點水,不做筆記一味求快的人,學到後面跟不上。因為這些知識點你只是聽懂了,而不是理解,也沒有實際編碼操作過,印象是不深的!!

    ·        方便日後複習,以及遺忘時的檢索回憶。

    ·        初級階段不建議買任何書籍,專心看影片和附帶的筆記足夠了。包括知乎上推薦的《head first Java》,《瘋狂Java講義》,《Java核心技術》都不太適合現階段完全零基礎的我們。太厚,知識點太詳細。要知道,我們現在剛學完C,才瞭解程式設計的迴圈語句而已。再怎麼好的入門書籍,它對受眾也是有一定要求的。而這個階段的我們,就像小嬰兒,即使給我們一輛帶輔助輪的腳踏車,我們也騎不了...我買過一本《瘋狂Java講義》,就翻了幾次。看著密密麻麻完全不熟悉的知識點,很煩躁很焦慮。當然,我不是說看書不好,只是本階段不推薦。至少我從零基礎到學習框架,從書本上學到的可能就佔了0.5%,看部落格學到的也比書本多。幾乎完全是靠影片學來的。而且影片也有原始碼和筆記,已經很方便。

    ·        對零基礎的學習者來說,JavaSE的學習非常困難。比如我,學了一個多月才學到畢老師的異常一章。之前在面向物件一章就已經很崩潰,哪知異常也這麼抽象,完全不知道它是幹嘛的....很多人是科班出身,早就忘了當初自己連軟體都不會裝的窘境。就像我們現在根本不會覺得用筷子還需要學習,但你爸媽當年為了教你用筷子,可是頭疼過不止一次呢!

    初學者也容易想走捷徑。我相信很多人都會有這個想法:能不能只學工作上要用的?根本原因是知識點真的太多了。以劉意老師影片為例,面向物件(封裝,繼承,多型),異常,多執行緒,集合框架,IO,網路程式設計都挺難的。其中面向物件是JavaSE的重中之重,裡面的知識點個人認為是最難的。後面的知識點都是建立在這之上展開的,沒學好面向物件,後面就會稀裡糊塗。

    當然,也不是真的一點都不能跳,但最好完整地學下來。

    按照後面JavaWeb的學習來看,我的建議是:

    ·        面向物件是基石,JavaSE中最重要的一是集合,二是IO,希望大家學習這兩個知識點時認真對待,多敲程式碼,多思考。

    ·        常用API裡,String及其相關類StringBuilder, StringBuffer等必須熟悉,後面會不斷用到。不學好的話,後面怎麼死都不知道!

    ·        泛型一般只出現在集合中,個人覺得如果一時無法掌握,那麼暫時會在集合中使用泛型就行了。

    ·        反射對於初學者來說是非常抽象的!!但它又無比重要。它雖然不是JavaSE的重點,但是它是JavaWeb很多難點的底層支撐,不懂反射,寸步難行。

  • 3 # javaDemo哥

    Java 後端需要學的東西很多,但是很多人不知道從哪學起。我來告訴你 Java 後端主流技術,讓你不再迷茫,作為一個老碼農,一些經驗分享給你

    Java 基礎

    Java 是一門純粹的面向物件的程式語言,所以除了基礎語法之外,必須得弄懂它的 oop 特性:封裝、繼承、多型。此外還有泛型、反射的特性,很多框架的技術都依賴它,比如 Spring 核心的 Ioc 和 AOP,都用到了反射,而且 Java 自身的動態代理也是利用反射實現的。此外還有 Java 一些標準庫也是非常常見,比如集合、I/O、併發,幾乎在 Web 開發中無處不在,也是面試經常會被問到的,所以在自學 Java 後端之前,不妨先打好這些基礎,另外還有 Java8 的一些新特性,也要重點關注,比如 Lambda 表示式、集合的 Stream 流操作、全新的 Date API 等等

    關於書籍推薦,我是不建議初學者一開始就拿著「Java 程式設計思想」啃的。說實話,我當時真的不懂它在說啥,因為我沒有一點的面嚮物件語言程式設計的基礎,而這本書又寫得太博大精深了,在當時的我來說,完全是天書,但是我認為它仍然是 Java 界的聖經,每讀一次都有所收穫。我在這裡推薦你們一開始先看「Java 核心技術」,這本書講得比較通俗易懂,初學者比較能接受。

    資料庫

    關於 sql 方面:SQL 教程、MySQL 教程

    我是瞭解了一些基礎語法之後,就直接跟著做一些表操作實戰練習了,比如單表查詢、多表查詢等。我建議學 sql 切勿眼高手低,需多加練習,不要只看懂了就行,因為工作中寫得一手簡練的 sql 是非常重要的。在這裡我說下我在專案一直秉承著 sql 語句是能避免多表查詢就避免多表查詢,能夠分開多條語句就分開多條語句,因為這裡涉及到多表查詢效能和資料庫擴充套件的問題。

    關於 JDBC 方面:JDBC 教程、 JDBC 獲取連線物件原始碼分析

    你需要弄懂 JDBC API 的用法,其實它只是一組規範介面,所有資料庫驅動只要實現了 JDBC,那麼我們就可以透過標準的 API 呼叫相應的驅動,完全不用知道驅動是怎麼實現的,這就是面向介面程式設計的好處。

    Web 基礎

    曾經開源中國創始人紅薯寫了一篇文章「初學 Java Web 開發,請遠離各種框架,從 Servlet 開發」,我覺得他說的太對了,在如今 Java 開發中,很多開發者只知道怎麼使用框架,但根本不懂 Web 的一些知識點,其實框架很多,但都基本是一個套路,所以在你學習任何框架前,請把 Web 基礎打好,把 Web 基礎打好了,看框架真的是如魚得水。

    關於 Http 協議,這篇文章就寫得很清楚:Http協議

    關於 Web 基礎這方面資料推薦,我當時是看的是「Tomcat 與 Java Web 開發技術詳解」,很詳細地講解了整個 Java Web 開發的技術知識點,但現在看來,我覺得裡面講的有一些技術確實有點老舊了,不過可以瞭解一下 Java Web 開發的歷史也是不錯的。所以在 Web 基礎這方面我都是看某客的崔老師講的「超全面 Java Web 影片教程」,講得很詳細很生動,還有實戰專案!

    關於 JSP,你只要瞭解它其實就是一個 Servlet 就行了,關於它的一些標籤用法,我認為可以直接忽略,因為現在網際網路幾乎沒哪間公司還用 JSP,除了一些老舊的專案。現在都是流行前後端分離,單頁應用,後端只做 API 介面的時代了,所以時間寶貴,把這些時間重點放在 Servlet 規範上面吧。

    關於 Tomcat,它是一個 Web 容器,我們寫的後端專案都要部署到Web容器才能執行,它其實是一個遵循 Http,透過 Socket 通訊與客戶端進行互動的服務端程式

    Web 主流框架

    Java Web 框架多如牛毛,等你有一定經驗了,你也可以寫一個 Web 框架,網上很多說 Spring、Struts2、Hibernate 是 Java 三架馬車,我只想說,那是很久遠的事情了,我嚴重不推薦 Struts2、Hibernate,相信我,一開始只需要上手 Spring、SpringMVC、Mybatis 就可以了,特別是 Spring 框架,其實 Spring 家族的框架都是很不錯的。

    但是提醒一點就是,千萬不要沉迷於各種框架不能自拔,以會多種用法而沾沾自喜,導致知其然而不知其所以然。

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

    談談對 Spring IOC 的理解

    Spring 面向切面程式設計

    SpringMVC 初始化過程

    SpringMVC 處理請求過程

    Mybatis 它可實現動態拼裝 sql,避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集:

    mybatis 入門教程

    Mybatis 深入淺出系列

    Web 框架進階

    使用了 SSM 框架後,你會覺得框架也不過這麼回事,如果你對 Spring 有過大概瞭解,你也會產生想寫一個「山寨版」Spring 的心思了,一個輕量級 Web 框架主要具備以下功能:

    可讀取使用者自定義配置檔案,並以此來初始化框架;

    具備 Bean 容器,管理專案的類的物件生命週期;

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

    具備 AOP 功能,使專案可進行橫向程式設計,可不改變原有程式碼的情況增加業務邏輯;

    具備 MVC 框架模式。

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

    SpringBoot 彌補了 Spring 配置上的缺點,再也不用為繁雜的 xml 費勁精力了,堪稱是 Java 後端開發的顛覆者,推薦書籍「Java EE 開發的顛覆者:SpringBoot實戰」

    SpringBoot 構建 web 專案

    SpringBoot 自動化配置原始碼

    SpringCloud 是一個微服務架構,能夠將專案按照業務分成一個個微服務,每個微服務都可獨立部署,服務之間互相協調。當一個專案越來越大時,隨之而來的是越來越難以維護,此時將專案拆分成若干個微服務、單獨維護、單獨部署,也可以降低專案不同業務間的耦合度。推薦書籍「Spring Cloud 與 Docker 微服務架構實戰」,這本書將 Docker 與微服務完美地結合在一起,堪稱完美!

    其它技術

    Redis:一個高效能的 key-value 資料庫,當有併發量很高的請求時,將資料快取在 Redis 中,將提高伺服器的響應效能,大大減輕資料庫的壓力。

    redis 中文官網

    redis 教程

    Git:世界上最先進的分散式版本控制系統,建議所有初學者從命令列開始使用 Git!

    Git 官網

    最全 Git 教程

    Git 的一些常用命令

    Maven:一個用於構建專案的工具,將專案間的依賴透過 xml 完美地組織到一起,可透過編譯外掛將專案編譯成位元組碼檔案。還有類似的 Gradle 也是不錯的選擇。

    maven 的 pom.xml 檔案詳解

    Linux:至少要求常用的命令會用,能夠在 linux 環境下部署專案。

    Linux 命令大全

    最全的 SSH 連線遠端終端教程

    Docker:簡直是專案部署神器啊,來不及解釋了,看我 Docker 系列部落格,開啟 Docker 之旅吧!推薦書籍「Docker 技術入門與實戰」,中國首部 Docker 著作!

    Docker實戰一定要好好練習!

  • 4 # Lucifer351

    我也是零基礎,先是自學了點,後來又去了尚學堂進行了系統學習。起初我自己學習Java就是看影片,練習影片的例子,但是一直沒有好的效果,影片和真人授課之間還是有很大差距的。所以去找培訓機構,透過比較,最後就去了北京尚學堂Java培訓機構進行系統的學習,培訓後我發現比自學輕鬆多了,還可以學到別人的很多經驗。 培訓完之後就業部的老師順利的幫我找到了適合我的公司,薪資待遇都不錯,感謝尚學堂~

  • 中秋節和大豐收的關聯?
  • 《小李飛刀》中如果李尋歡練《憐花寶鑑》,他的武功會更高嗎?