天天看點

知乎4000贊,自學Java怎麼入門?

這個教程将 Java 的入門基礎知識貫穿在一個故事中,逐漸深入,可以幫助你快速進入 Java 程式設計的世界。萬事開頭難,逐漸跟着這個教程走一遍,對 Java 應該就會有一種入門的感覺了。然後再去學習更進階的主題,或者更深入地學習其中的某些知識點。

第 1 課 什麼是 Java

第 2 課 Java 的曆史

第 3 課 Java 的特性

第 4 課 Hello World

第 5 課 Java 程式在編譯和運作時發生了什麼

第 6 課 JDK,JRE 和 JVM 之間有什麼差別?

第 7 課 究竟什麼是 JVM?

第 8 課 初識 Java 變量

第 9 課 一文搞懂 Java 中的基本資料類型

第 10 課 Unicode 字元集簡介

第 11 課 操作符簡介

第 12 課 一文搞懂 Java 的所有關鍵字

第 13 課 if/else

第 14 課 一文徹底搞懂 Java 命名約定

目前已經連載 41 篇,這裡就不再貼了,希望能夠對你有所幫助。

入門之後,可以考慮以下學習路徑和内容:

1、學習的基本路徑

首先建立好開發環境非常重要,工欲善其事,必先利其器。做任何開發,首先就是要把這個環境準備好,之後就可以去做各種嘗試,嘗試過程中就能逐漸建立信心。初學者往往在環境配置中被各種預想不到的問題弄得很沮喪。

建立起來環境了,改變世界就靠你的代碼了。學習一門程式設計語言沒有太多的訣竅,你可能可以去找一本比較好的經典的入門書籍,現在網絡上也有非常多的資料,圖文或者視訊都可以,根據個人喜好選擇。最重要的練習,熟能生巧,在不斷的練習中去加深自己對程式語言的了解。

事實上要成為一個資深的 Java 開發者,對各種 API 和架構的學習,可能是花時間最多的一個地方。在軟體開發中也有二八原則,少數的 API 能夠勝任開發中的大部分場景。是以你隻需要掌握這些關鍵部分,當在新場景下遇到不能解決的新問題時,再去檢視幫助文檔。是以幫助文檔的閱讀也是技術學習的一個關鍵因素。了解了基礎原理之後一般就能上手開發了,幫助文檔可以幫助你在實踐中學習。

2、三個神器

三個神器,對于軟體開發者來說非常重要。

第一個 Google,雖然因為各種原因的話有時候我們通路不了,但是這基本上是可以去尋找技術資料最好的方式。

第二個是 Github,Github 就是一個可以找到大量第三方庫的地方,那是别人給我們封裝好的可以複用的代碼。比方說造一輛汽車的話,我們經常不要自己造輪子,而 Github 上可以找到很多優質的輪子,這些輪子還是免費(代碼都是開源的),我們應該盡量利用它們來拼裝自己的汽車。

第三個是 StackOverflow 網站,在這個問答網站上你遇到的幾乎任何開發問題都能快速找到答案。

3、Java Web 全棧開發的推薦學習内容

簡單總結一下,大概包括下面這些内容。每一部分都可以細化成很多知識點,這隻是一個粗略的羅列。把它當做技術地圖就好了。

開發環境的建立與項目管理:Intellij IDEA、Maven 和 Git

Java 程式設計基礎:基本文法、面向對象特性、Java8 新特性、更進階庫(比如 Guava)的使用等

前端開發技術:HTML、CSS、Vue 和 JavaScript 基礎

Spring 基礎:依賴注入 IoC、面向切面程式設計 AOP、SpringBoot

MVC 架構:Spring MVC,包括 URL 路由、模闆、表單、Session、攔截器等知識

資料通路:關系型資料庫、JDBC、Spring JDBC、事務、ORM 架構(MyBatis)

成熟應用的關鍵功能實作:郵件發送、異步任務、緩存、日志等

應用的測試和部署

4、Java Web 涉及到的内容

Web 基礎,HTTP 協定

C/S 模型,浏覽器通路網站過程

URL 基礎知識

HTTP 消息——請求和響應

處理 HTTP 請求的應用程式

處理使用者輸入

HTTP 方法——GET v.s. POST

讀取表單資料

建構 MVC 應用

Session

Session&&Cookie 基本概念

通過 Cookie 記錄使用者狀态(類似購物車的例子)

使用 Session 跟蹤使用者(登入)

5、資料庫相關的内容

除了動态的 Web 界面,一個有價值的 Web 應用必然需要進行資料存儲,開發上我們一般稱之為資料持久化(Data Persistence)。

從業務功能的角度出發,簡單的應用可以認為就是資料的增删改查。比如一個産品級的部落格應用,最核心的功能就是對部落格内容的建立、修改、删除和查詢,而這些功能都離不開 Web 伺服器背後的資料庫系統。

資料庫基本概念

實體、關系(表)、記錄(行)、列(屬性)

主鍵、外鍵等

資料庫表設計的基本原則

SQL 基礎

MySQL 基本使用

SQL 中的 DDL——create,drop,alter,建立主鍵外鍵等限制

SQL 中的 DML——insert, select, delete, update,join

JDBC

資料庫連接配接,連接配接池

使用 JDBC API 通路資料庫

分頁查詢

事務的基本概念

JDBC 代碼的封裝與資料通路的三層架構

6、Spring 相關的内容

Spring 最重要的兩個核心功能是依賴注入(DI,Dependency Injection)和面向切面程式設計(AOP,Aspect Oriented Programming)。其中 DI 用于管理 Java 對象之間的依賴關系,AOP 用于解耦業務代碼和公共服務代碼(如日志,安全,事務等)。DI 和 AOP 能夠讓代碼更加簡單,具有良好的松耦合特性和可測試性,極大地簡化開發。了解這兩者是使用 Spring 架構的基礎。

Spring 的核心思想

依賴注入

面向切面程式設計(AOP)

基于 POJO 的程式設計模型

預置的模闆代碼(如 Spring JDBC)

依賴注入的基本原理

依賴注入的優點

依賴注入如何實作

依賴注入的使用

基于 XML 的裝配方式

基于 Java Configuration 的裝配方式

自動裝配

多種裝配方式的混用

處理裝配的歧義

如何注入屬性值

Spring Bean 的作用域

Singleton

Prototype

Request

Global

AOP

切面、目标對象、切點、通知、織入等基本概念

如何定義切點:定義切點的 aspectJ 文法

定義通知

前置通知(Before)

後置通知(AfterReturning)

異常通知(AfterThrowing)

最終通知(After)

環繞通知(Around)

如何給切面傳參

7、Spring MVC 相關内容

Spring 作為 Java 系的全棧(full-stack)開發架構,當然也對 Web 開發有着非常好的支援。Spring 的 Web MVC 架構能夠使開發者非常容易的開發 Web 應用,同時能夠無縫享受到 Spring 本身的諸多好處——IoC 容器、AOP 程式設計等等。

Spring MVC 基本原理、配置

DispatcherServlet

WebApplicationContext

處理 HTTP 請求過程

實作 Controller

@Controller, @RequestMapping 注解

URL 模闆模式,@PathVariable

擷取 HTTP 請求參數,@RequestParam

@RequestMapping 方法支援的參數

@RequestMapping 方法支援的傳回值

視圖解析

處理靜态資源

前後端分離

配置其它模闆引擎

重定向

表單處理

表單資料綁定

Spring 表單标簽

表單驗證

檔案上傳

攔截器 Interceptors

Spring MVC 請求處理流程

HandlerInterceptor 接口

配置 Interceptor

異常處理

配置錯誤頁面

使用 HTTP 狀态碼

@ExceptionHandler

ControllerAdvice 全局異常處理

REST API

@ResponseBody 和@RequestBody

處理 PUT 和 DELETE 請求

8、MyBatis 相關内容

MyBatis 是支援定制化 SQL、存儲過程以及進階映射的優秀的持久層架構。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設定參數以及擷取結果集。MyBatis 可以對配置和原生 Map 使用簡單的 XML 或标注,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 對象)映射成資料庫中的記錄

MyBatis 基礎

ORM 的概念

如何定義 Mapper 接口

如何定義 XML Mapper 映射

如何使用 Mapper

MyBatis 的基本使用

SqlSessionFactory

SqlSessionFactoryBuilder

SqlSession

MyBatis-Spring

基于 Spring 如何配置和使用 Mapper

SqlSessionFactoryBean 的配置

MyBatis Spring Boot Starter 的使用

增删改查

熟悉 Mapper 配置檔案

select 元素

select 的 resultType 屬性

insert 元素

update 元素

delete 元素

複雜查詢

resultMap 元素

association 元素

嵌套結果與嵌套查詢

collection 元素

discriminator 元素

動态 SQL

分頁查詢(分頁插件)

9、Java Web 應用的部署

War 包規範和結構

在 IDE 中調試和部署

使用 IDE 導出 War 包

将 War 包部署到伺服器

基于 Spring Boot 的部署

10、其它主題

緩存:EhCache、Spring Cache Manager、資料層緩存、服務層緩存、頁面緩存、Redis

安全:Spring Security(HTTP 基本驗證,角色驗證,權限驗證)

任務排程:Spring 任務執行器(Executor)

郵件發送:SMTP 協定、spring-boot-starter-mail

Web Socket:@SubscribeMapping, WebSocketConfig

日志:SLF4J 與 Logback、 Spring Boot Logging、 ConsoleAppender/RollingFileAppender 、Sentry、ELK

11、設計模式

12、更進一步

分布式、深入 Java 虛拟機、針對不同場景的 Java 技術架構,到這個階段已經不僅僅是 Java 的學習了,而是大型應用場景的技術積累、架構設計的精進了。