主頁 > 軟體設計 > 0 基礎 Java 自學之路(2021年最新版)

0 基礎 Java 自學之路(2021年最新版)

2021-04-09 10:51:09 軟體設計

前言

無論你是否想自學 Java,認真看完本文,你以后的職場生涯至少少走1年彎路,

本文會持續更新,建議收藏,

初衷

在 CSDN 上經常有同學私聊我詢問 “如何自學 Java”、“想轉行 Java 靠譜嗎” 等問題,因為自己也是在大學時自學的 Java,所以我能理解這些同學的痛苦和迷茫,

寫這篇文章前,我看了一些網上 Java 自學的文章,很多我都不太滿意,有的甚至讓我感到憤怒,要么是站在現有的視角侃侃而談,要么是純粹的瞎編騙小白,

很多文章都有一個老毛病:完全沒有從小白的視角去思考,內容太多,什么微服務、架構、大資料都來了,這根本不是自學階段該去看的東西,小白看了這些文章,只會越看越懵逼,根本沒法下手,

其實我在18年寫過一篇“0基礎Java自學之路”,但是現在來看,當時那篇文章寫的過于簡單,只是提供了一個思路,但是很多內容沒有寫,

如今已經過去了3年,我對于這個話題又有了一些新的思考,同時為了拯救廣大正處于水深火熱的同學們,于是,我決定重新寫一篇自學教程,

自我介紹

在寫本文前有必要介紹下我自己,讓大家更好的去比較和參考,

我大學是普通本科,大三開始自學的 Java,自學了一年,但是我是計算機專業的,所以有C語言基礎,但是我這一年的自學走了不少彎路,花了很多時間學了很多后面根本沒用到的東西:Oracle、Hibernate、Struct2、JBPM 等等,還有就是缺少有經驗的人的指導,所以容易抓不到重點,所以也浪費了不少時間,

不過當時還沒有現在這么內卷,所以我在大四秋招剛開始就找到作業了,

行業現狀

程式員現狀

由于程式員的薪水比較高,最近幾年有很多其他專業的人涌進了程式員行業,加速了這個行業的內卷,但是據某招聘網上的資料統計,程式員當前的需求量還是遠高于全行業的平均線的,所以,程式員的現狀我覺得是不錯的,至少幾年內是無需擔心的,

Java 現狀

最近幾年,Go、Python 等語言快速崛起,大有挑戰 Java 地位的趨勢,但是 Java 毋庸置疑仍是當前互聯網行業里招聘需求量最大的,

眾多大廠:阿里、美團、快手、拼多多、滴滴、網易等,都是以 Java 為公司的主語言,部分大廠:騰訊、百度、位元組等,雖然以其他語言為主語言,但是多多少少也會有一些 Java 崗,

所以,Java 的現狀及未來,我覺得都是比較不錯的,崗位多也代表著機會多,對于新人來說比較友好,所以我個人是比較推薦新人學 Java 的,

自學前你應該知道

自學前請做好心理準備,自學是一個既寂寞又漫長的程序,如果想踏進來,請做好放棄幾乎所有娛樂生活的準備,包括過年的時候,如果只是抱著三天打魚兩天曬網的態度,那我建議還是放棄吧,

但是如果你能堅持下來,我相信一定能有所回報,我自己就是個例子,我走了那么多彎路,跟著本文走,你們沒理由比我當時更差,

自學預估周期

自學的周期我給大家定了一個參考時間:6個月,平均每天6-8小時,共1200個小時左右,大致安排:

1、3個月基礎知識學習和強化,

2、2個月 SSM 專案實戰反復練習,專案實戰同時也在復習和鞏固之前的基礎知識,

3、1個月面試高頻題準備,看面試題其實也會增加自己的專業知識,而且可能比你想象的要多,不夸張的說,前幾年我從面試題里學到的知識可能比作業里獲得的還多,

自學教程獲取

授人以魚不如授人以漁,一個簡單又靠譜的的教程獲取方式:B站搜索關鍵字+教程,例如:Java基礎教程、MySQL教程、JavaWeb教程、SSM整合教程、Java專案實戰等等,然后按“最多點擊”排序,在前幾個里尋找一個合適的即可,一般點擊高的都是質量還可以的,

很重要的建議

1、愛因斯坦的成功公式:成功 = 效率 * 時間,自學也一樣,需要勞逸結合,不要搞的太累,否則效率下降,花再多時間也沒用,

2、自學是一個漫長的程序,循序漸進、保持耐心,如果可以,找個伴一起學習,互相鼓勵,互相交流,可以讓自己更有動力堅持下去,

3、將自己的學習程序記錄下來,當你發現累計的越來越多的時候,心里會有一種小成就感,這會提高你學習的動力,

4、專注于重點知識的學習,本文介紹的基本涵蓋了當前你應該學習的內容,沒有提到的大部分是沒那么重要的,如果你無法判斷是否重要,可以在本文下面留言,我會一一解答,至于像一些什么:k8s、hadoop、hbase 等等,看都別看,對于當前的你來說只是浪費時間,

5、利用好搜索引擎,有什么問題就百度,新手大部分的問題百度都能解決,

6、看視頻不要看書,當前階段的你看任何書,包括大名鼎鼎的《Java編程思想》都是浪費時間,

7、看視頻要跟著敲一遍甚至多遍,如果只看視頻不跟著敲,你會發現最后啥都學不會,

8、視頻中一些介紹歷史的視頻可以過一遍簡單了解就行,節省點時間,

9、關于視頻教程的選取:選擇近2~3年的教程,講師讓自己聽著舒服即可,點擊高的視頻水平基本差不多,

自學知識點

1、Java SE

1.1、Java基礎

基礎概念/語法:面向物件(繼承、封裝、多型)基礎、包、類、介面、方法、物件、屬性、第一個 Java 程式,

資料型別:1)基本資料型別8種:byte、short、int、long、float、double、char、boolean;2)參考資料型別

變數型別:區域變數、實體變數(成員變數)、類變數(靜態變數)

修飾符:public、private、不寫、protected、static、final、abstract、synchronized ,volatile

運算子:1)算術運算子:+、-、*、/、%、++、--;2)關系運算子:==、!=、>、<、>=、<=;3)邏輯運算子:&&、||、!;4)賦值運算子:=、+=、-=、*=、/=;5)條件運算子:Object x = (expression) ? value if true : value if false;

回圈結構:for 回圈、while 回圈、do...while 回圈

條件陳述句:if...else、if...else if...else

例外處理:try...catch...finally、throws、throw

字串:String、StringBuilder、StringBuffer

其他:switch case、陣列、日期時間、列舉、使用 IDE 進行 DEBUG

1.2、集合

Map:HashMap(最重要)、ConcurrentHashMap、TreeMap、Hashtable

List:ArrayList(最重要)、LinkedList

Set:HashSet(最重要)、TreeSet

1.3、多執行緒

執行緒生命周期

創建執行緒的三種方式:繼承 Thread、實作 Runnable;實作 Callable

ThreadPoolExecutor(執行緒池)

鎖:synchronized 和 Lock

1.4、I/O流

1.5、網路編程

1.6、反射

1.7、泛型

1.8、注解

小結:該階段很重要,建議多看幾遍,其中的:Java基礎、集合、多執行緒是核心中的核心,

章節目標:熟練掌握該章節所列的所有 Java 核心基礎知識,能熟練的撰寫 Java 程式,

2、SQL

2.1、SQL

1)了解基礎概念;2)掌握 DML 陳述句的使用:SELECT、UPDATE、INSERT 和 DELETE;3)掌握 DDL 陳述句的使用:操作表時用到的一些SQL陳述句,例如:CREATE、ALTER、DROP等,

2.2、JDBC

掌味訓本的使用,

2.3、MySQL

掌味訓本的使用,

章節目標:熟練掌握SQL陳述句的基礎使用,了解JDBC和MySQL的基礎使用,

3、Java Web

3.1、偏前端內容

HTML、CSS、JS(JavaScript)、Ajax、jQuery

3.2、偏后端內容

Servlet、JSP、Request、Response、HTTP、Session、Cookie、Filter、Listener

Java Web初級內容的相關技術在當前 Java 后端已經比較少直接使用到了,最近幾年的 Java 程式員甚至可能都沒接觸過,大部分是被下一節的 SSM 框架給封裝代替掉了,但是這一章節初學者還是有必要認真學習一下,做到能看得懂、能照著改,

章節目標:了解該章節所涉及的知識,做到能看得懂、能照著改,對于 Servlet 可以稍微多留意一下,Servlet 是本章節比較重要的知識,

4、常用工具

4.1、Tomcat

Web 應用服務器,

4.2、Maven

專案構建管理,簡單理解為用于匯入 Jar 依賴的工具,

4.3、Git

分布式版本控制系統,簡單理解為代碼管理工具,

章節目標:需要知道有這么些工具,然后掌握其基本的使用即可,

5、核心框架

5.1、Spring

1)掌味訓本的使用;2)掌握核心概念,需重點注意的知識點:IoC(控制翻轉)、DI(依賴注入)、AOP(面向切面編程)、事務控制,

5.2、SpringMVC

1)掌味訓本的使用;2)掌握核心概念,需重點注意的知識點:MVC 架構、Controller 里的各種注解、一個 HTTP 請求的流程,

5.3、MyBatis

1)掌味訓本的使用;2)掌握核心概念,需重點注意的知識點:XML 檔案力的 SQL 語法、介面(interface)和 SQL 的映射,

5.4、Spring Boot

掌味訓本的使用,

章節目標:了解 SSM 框架的基本使用,該階段可以不用做到完全理解,可以在專案實戰里去通過實際的例子加深自己對 SSM 的理解,

6、專案實戰

準備 2~3個專案實戰,將之前所學的知識點應用起來,做出一個真正的專案(網站),學習的專案必須使用 SSM 框架,加深自己對 SSM 的理解,該階段所做的專案,也是未來寫在你簡歷里的“專案經驗”,需要跟著敲一遍,

目標:將之前所學知識串聯起來,熟練掌握一個 Web 專案的完整流程,通過專案加深對之前所學知識的理解,特別是 SSM 框架知識,

7、面試準備

如果對于上述的 Java 基礎知識你已經能熟練使用,然后也能熟練搭建一個簡單的 SSM 的專案,那我建議你可以將時間多花在面試準備這一章節上,面試準備的重要程度可能超過很多人的想象,同時在看面試題的程序中也能加深自己對之前知識的認知,

7.1、重點知識點

  • Java 基礎
  • 集合
  • 多執行緒
  • MySQL
  • Spring/SpringMVC/MyBatis
  • SSM 實戰專案

該模塊對應我們上面學習的知識,但是只會使用是很難滿足當前的面試要求的,因此需要針對這些知識進行面試強化,具體的題目可以看下我的面試系列文章,

7.2、進階知識點

  • JVM
  • Redis
  • Kafka
  • Zookeeper
  • Dubbo
  • 演算法:常見的演算法,二分、排序等,可以刷劍指offer的題目

你可能會有疑問,為什么進階里列的知識點都是之前上面沒有提過的,還需要準備面試題,之所以補充進階部分,主要是為了應對當前互聯網行業內卷越來越嚴重的現象,這幾個知識點都是當前 Java 面試的高頻考點,但是要像前面的基礎知識一樣,系統的學習這些知識對于初學者當前階段來說基本不太可能,所以一個比較合適的方式是直接看高頻面試題,然后將高頻面試題帶著理解記下來,

章節目標:各個知識點的高頻面試題熟記于心,盡量做到理解,不能理解就先硬背,

面試真題可以參考我的文章:Java 基礎高頻面試題(2021年最新版),

常見問題

1、自學時遇到不懂的知識怎么辦?

答:百度/谷歌找答案,初學者遇到的問題基本百度上都能找得到,多利用搜索引擎,鍛煉自己的解決問題的能力,這個能力會貫穿你的整個程式員生涯,

2、普通人按本文自學后能達到什么程度?

答:如果你確實很努力的花了超過1000個小時,按本文的路線去學習,掌握了本文所介紹的知識,那我相信你找個作業是不難的,

3、在網上看到有人自學6個月進 BAT?

答:自學6個月進 BAT 有嗎?我相信是有的,多嗎?我相信是海底撈針,

針對這個話題,大部分是假的,更多的是一些人/機構用于打廣告的,看了文章內容99%要你付費加群或買資料,

4、自學還是培訓機構?

答:坦白的講,培訓機構肯定比自學要輕松點,至少培訓機構會幫你們制定好方向,但是自學其實會給公司留下不錯的印象,公司會覺得你的學習能力不錯,同時自學也很鍛煉人,對你以后的成長有幫助,

我只能幫你們分析,你們可以根據自己的情況去選擇,但是,我覺得如果你無法靠自學進入這一行,你以后的路可能也會走得比較艱難,

5、演算法是否重要?

答:對于0基礎自學的同學來說,演算法的地位可以稍微放后面一點,當前的目標還是先打好 Java 基礎,能寫 Java 代碼,

6、是否應該先學 C 語言?

答:說實話,我個人并不建議,雖然 C 語言確實是挺重要的,但是我覺得如果有這個時間,還不如把 Java 基礎多鞏固一下,

最后

如果你的問題沒有在本文提到,或者你對本文有疑問,你可以在文章下方留我留言,對于每個留言我基本都會在24小時內回復,極端情況下可能會放到周末回復,原則上只要是與本文相關的正常留言我都會回復,

對于評論里的題目,如果是很多人關注的,我在后續會添加到文章的“常見問題”里,

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/274105.html

標籤:其他

上一篇:第三章 了解C語言的常見關鍵字

下一篇:輕量級網路的學習(僅供自己學習觀看)(Objection Detection Backbone系列一)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more