萬字長文!嘔心瀝血整理的Java零基礎入門到精通全套知識點教程

經常在知乎看到一個問題:Java學到什麼程度可以算是精通?

今天就圍繞這個問題,

其實學習 Java 學到什麼程度算是精通,這個其實沒有蓋棺定論的,也不是說你拿個年薪幾十萬的 offer 就可以自詡精通了。

我認為,如果市面上這些資料、書籍你都啃的差不多,你能在所有的 Java 程式設計師中躋身前 0。1% 的話,你就可以達到“精通” 這個階段了,因為沒人比你強了,你當然是精通了。

所以,我今天羅列一些知識點,如果你都能夠掌握並且真正理解這些東西的話,那你就可以到了精通這個階段了。

首先要學的是計算機基礎知識,因為 Java 不是像 Python 那樣簡單,它是需要一定基礎的,如果你上來直接硬肝 Java,那麼 90% 的機率你會放棄。

因為要想學好 Java ,你就得理解什麼是面向物件的設計思想,而面向物件的這種設計思想又不是剛開始學習程式設計的新人能夠熟練掌握呢?那怎麼辦呢?這不是死局了嗎?

其實,如果要想真正理解這種設計思想的話,首先可以先去了解下C語言,再學習Java。

為什麼呢

?因為 C 語言是面向過程的,什麼是面向過程和麵向物件的設計思想呢?

我給你舉個例子你就知道了。

面向過程與面向物件的區別,由“如何把大象裝進冰箱”來看:

一、面向過程

為了把大象裝進冰箱,需要3個過程。

思路:

1、把冰箱門開啟(得到開啟門的冰箱)。

2、把大象裝進去(開啟門後,得到裡面裝著大象的冰箱)。

3、把冰箱門關上(開啟門、裝好大象後,獲得關好門的冰箱)。

根據上面的思路,可以看到,每個過程都有一個階段性的目標,依次完成這些過程,就能把大象裝進冰箱。

二、面向物件

為了把大象裝進冰箱,需要做三個動作(或者叫行為)。每個動作有一個執行者,它就是物件。

思路:

1、冰箱,你給我把門開啟。

2、冰箱,你給我把大象裝進去(或者說,大象,你給我鑽到冰箱裡去)。

3、冰箱,你給我把門關上。

依次完成這些動作,你就可以把大象裝進去。

這裡我只是舉個例子。

好了,那麼從現在開始,我們就要進入 Java 的學習環節了。

學習 Java,我將會從三個階段來介紹,分為初級、中級和高階

計算機基礎

計算機基礎都包括哪些呢?

計算機組成原理、作業系統、計算機網路、資料結構與演算法。

計算機組成原理

先說計算機組成原理,這部分內容主要涉及

計算機系統概述

資料與運算

CPU 概述

儲存子系統概述

匯流排和 IO 概述

Java 基礎

什麼是初級 Java 的水平呢?我認為就是理解 Java 的語法規則、語言特性,這麼說有點乾癟,直接上思維導圖!

萬字長文!嘔心瀝血整理的Java零基礎入門到精通全套知識點教程

就這一張圖,如果你能把圖中內容都理解的差不多,那你就可以說是入門 Java 了,但是這裡要注意一個概念,這並不等於說你是一個合格的初級 Java 程式設計師了,因為要想達到初級 Java 程式設計師的水平,你要會能幹活,能幹活的標準是你要懂框架,不要急,我們後面會說。

有人問圖中為什麼沒有併發或者 Java 虛擬機器這些,這些屬於中高階內容,剛開始學 Java 不用懂什麼併發和 JVM!!!

那麼話又說回來了,如何才能學習並瞭解到上面這些內容呢?接下來重點來了!!!

如果你能看到這裡,我就認為你養成了每日程式設計的習慣,此時的你能夠靜下心來程式設計了。

那麼我首先給你推薦一本初學 Java 非常合適的一本書

Head First Java

《Head First Java》是本完整的面向物件(object-oriented,OO)程式設計和Java的學習指導。此書是根據學習理論所設計的,讓你可以從學習程式語言的基礎開始一直到包括執行緒、網路與分散式程式等專案。最重要的,你會學會如何像個面向物件開發者一樣去思考。

影片觀看:

https://www.ixigua.com/6798426044178104839

如果你能掌握上面的基礎內容部分,我覺得你應該花至少 3 - 6 個月,如果你能堅持下來的話,這裡我需要鼓勵一下你,但是不要自滿,因為這才只是最最最最基礎的部分,但是現在你可以說是一隻腳踏入 Java 大門了。

MySQL

MySQL 其實要和 Java 基礎一起學習,你學完 Java 基礎就可以學 MySQL 了。

此時的 MySQL 我指的是 MySQL 基礎,因為 MySQL 博大精深,想要深入理解 MySQL 不容易,而且我們一般 Java 開發把 MySQL 掌握到中級水平就可以了。

MySQL 初級水平就是要求你會寫 MySQL ,這裡推薦個影片教程,由初級到高階一套搞定!

影片觀看:

https://www.ixigua.com/6794696042571891204

MySQL需要掌握的知識點:

MySQL資料庫概述及資料準備

MySQL安裝教程

SQL分類

MySQL匯入資料

MySQL資料庫表與MySQL表結構

MySQL資料庫常用命令

MySQL查詢欄位

MySQL條件查詢

MySQL排序

MySQL函式

MySQL分組函式/聚合函式/多行處理函式

MySQL分組查詢

MySQL連線查詢

MySQL子查詢

MySQL UNION

MySQL中limit的用法

MySQL表

MySQL儲存引擎

MySQL事務

MySQL索引

MySQL檢視

MySQL DBA命令

MySQL資料庫設計的三大正規化

MySQL 高階內容是在工作中慢慢掌握的,如果你想要成為初級 Java 程式設計師,掌握這些內容,並且跟著敲下來,那麼就可以說你的 MySQL 已經達到入門水準了,可以進行下面的學習了!!

Javaweb

JavaWeb用Java技術來解決相關web網際網路領域的技術總和。Java提供了技術方案可以解決客戶端和伺服器端的實現,特別是伺服器的應用,比如Servlet,JSP和第三方框架等等。

對於JavaWeb,我們需要掌握的知識有:

Servlet,JSP,MVC設計模式,Cookie,Session,JavBean元件技術,EL表示式,JSTL表示式,過濾器Filter,監聽器Listener,檔案的上傳下載,國際化。

影片觀看:

https://www.ixigua.com/6935719174542983718

設計模式

設計模式放在這裡不是讓你馬上就要學習的(當然你也可以學習,沒有人能阻礙你學習),因為設計模式涉及到你工作的方方面面。有些設計模式你可能這輩子都用不到,但是你需要了解其思想,以便寫出思路嚴謹,條理清晰的程式碼。

設計模式我給你推薦幾本書,你看哪個都行。

Head First 設計模式

這本書雖然只有 14 章,但是卻介紹到了所有的二十三種設計模式,每一種設計模式都有對應的應用案例,以風趣幽默的語言描述來一步一步為你揭開設計模式的面紗,告訴你設計模式的演進過程。

讀這本書不僅僅是學習知識,而是在學習一種思考的方法,學習一種認知的技巧,學習一種成長的階梯。總之,用你閒暇的時間來讀這本書,並不亞於你專注的工作或學習。

圖解設計模式

設計模式更多是一種思想,而不是一種固定的程式碼編寫方式,千萬不要侷限於這些條條框框。日本人的書寫的就是非常通俗易懂,適合小白。194張圖表 + Java示例程式碼 = 輕鬆理解 GoF 的23種設計模式。

本書以淺顯易懂的語言逐一說明了 GoF 的 23 種設計模式。在講解過程中,不僅搭配了豐富的圖片,而且理論結合例項,用 Java 語言編寫程式碼實現了設計模式的程式,讓程式真正地執行起來,並提供了運用模式解決具體問題的練習題和答案。

除此以外,本書在必要時還對 Java 語言的功能進行補充說明,以加深讀者對 Java 的理解,在學習設計模式的同時也在複習 Java。

上面這兩本書非常適合初學者學習設計模式

設計模式並不適合一口氣讀完,因為你看完幾個設計模式就會容易混,相信我,你可以一週熟悉一個設計模式,這樣在工作中你也可以使用。一口氣看完所有,就會記住最後一個設計模式,相信我,親身實踐。

Java 進階

Java 進階需要學習的東西就有很多了,內容涉及許多方面,我們接下來就來和你聊聊。

注意:當你學會這些 Java 進階的內容後,不代表你就是一箇中級程式設計師了,恰恰相反,你需要把這些知識融會貫通並運用到專案/實踐中去。掌握多少就看你自己了。

首先是 Java 多執行緒,下邊列出來多執行緒應該掌握的知識點:

什麼是程序、執行緒?執行緒和程序的區別?

多執行緒的優勢

Java中建立執行緒方法

用Runnable還是ThreadJava以及建立執行緒兩種方法對比?

Thread 類中的start() 和 run() 方法有什麼區別?

執行緒的生命週期

java控制執行緒方法

sleep()方法和yield()方法的區別

為什麼Thread類的sleep()和yield()方法是靜態的?

sleep方法與wait方法的區別?

執行緒安全問題

同步程式碼塊

同步方法

何時會釋放對同步監視器鎖定?

同步鎖(Lock)與死鎖

說到這裡,推薦幾本關於 Java 併發方面的書。

Java 併發程式設計實戰

不要猶豫了,這本書就是併發程式設計界的王者,也是你必看的一本書。

外版書籍不會和你討論什麼原始碼啥的,他們只看思想,思想有了,實現也就輕而易舉。所以併發程式設計實戰討論更多的是思想,這本書同時也羅列了很多虛擬碼和應用場景來驗證這些思想。

這本書並不完全適合國內網際網路現狀,因為在八股文、背書如此盛行的今天,想要進大廠,成為“高階程式設計師”,你還要懂一些八股文。

Java 併發程式設計藝術

所以如果你想要在國內找工作的話,那麼下面這本書,更適合你。不要為我為什麼,阿里人寫的。

這本書羅列出來的一些知識點,其實都是大廠所經常問到的,所以這本書值得你仔細研讀。

說到這裡,那麼 Java 併發這塊你應該掌握的知識點都有哪些呢?

程序和執行緒的概念

Java 多執行緒基礎,

Java 執行緒狀態以及執行緒狀態的轉換

Java 執行緒間的通訊機制

理解 Java 記憶體模型

happens-before

volatile 關鍵字解析

Synchronized 關鍵字解析

CAS 與原子操作

AQS 大廠面試必問的 AQS

執行緒池相關原理

上面的內容如果你能理解,那麼你 Java 這部分已經可以算是高階水平了,你去大廠面試問一些八股文,多執行緒這塊問題不大了。

JVM

Java 虛擬機器也叫做 JVM ,這部分是判斷一個 Java 程式設計師分水嶺的關鍵,如果你想要達到中高階 Java 程式設計師的層次,那麼 JVM 是你必須要突破和提高的一個點。下面我就來和大家聊一下 JVM 都需要了解哪些內容。

還是照例先給大家介紹幾本瞭解 JVM 非常優秀的書籍

深入理解 Java 虛擬機器

這本書是你必看的一本,而且作者是我們國內的周志明,國內作者一般講實現比較多,專業術語比較少,這本書講的更是通俗易懂,雖然有許多概念,不過周志明大佬都給出了示例和解釋

豆瓣能給出國內作者 9。5 的評分,可知這本書寫的有多好了,這本書是瞭解 JVM 非常經典的一本書,五星強烈推薦。

Java 虛擬機器規範

Java 虛擬機器規範同樣也是周志明大佬參與翻譯的一本,這本書的權威性不容置疑,其實就是按照 Java 官方文件來寫的,可以說看完這一本在面試的時候聊到 JVM 你都能夠給出 “官方” 回答,大大增加你的面試通過幾率。

雖然有很多高質量JVM書籍,但由於JVM晦澀難懂的技術原理以及術語描述導致新手看書過程中很容易從入門到放棄

影片觀看:

https://www.ixigua.com/6981367790372389414

主要掌握知識點:

Java 記憶體劃分與記憶體管理

JVM 中的垃圾收集器

JVM 效能監控

JVM 調優

JVM 中的類檔案結構

JVM 類載入機制

JVM 位元組碼

上面這些內容真正掌握起碼要花 2 - 3 年的時間,也不是說這三年你就學上面這些東西,你可以學習其他的,我下面推薦的這些,就是在這個時間段內你應該掌握的。

Maven

在學習框架前,我建議你先了解一下什麼是 Maven,以及專案為什麼要使用 Maven

Maven 對於初學者來說,只做為了解即可,但是 Maven 這個優秀的架構是如何簡化程式碼的,如何讓我們更方便的使用,以及 Maven 中的一些不為人知的秘密。

影片觀看:

https://www.ixigua.com/6772335925071446531

下面該學啥了?終於到了框架了!!! 作為一門開發,框架就是你的武器!!!就是玩兒!在抗美援朝的時候,志願軍使用輕武器加迫擊炮照樣幹翻米國騎兵第一師和陸戰第一師這種王牌軍隊。

框架要學習的就是 SpringMVC 、Spring 、MyBatis

框架首先要學的就是 MyBatis

MyBatis

MyBatis 入門

推薦這本書是我剛開始學 MyBatis 的時候看的,書中的內容我對照著都敲了一遍,可以說是非常有參考價值的一本。

《MyBatis從入門到精通》中從一個簡單的MyBatis查詢入手,搭建起學習MyBatis的基礎開發環境。透過全面的示例程式碼和測試講解了在MyBatis XML方式和註解方式中進行增、刪、改、查操作的基本用法,介紹了動態SQL在不同方面的應用以及在使用過程中的最佳實踐方案。針對MyBatis高階對映、儲存過程和型別處理器提供了豐富的示例,透過自下而上的方法使讀者更好地理解和掌握MyBatis的高階用法,同時針對MyBatis的程式碼生成器提供了詳細的配置介紹。

MyBatis 這部分內容可以看下影片,更容易理解

https://www.ixigua.com/6772337398400418307

那麼 MyBatis 都應該掌握哪些內容呢?當然你要會用 MyBatis 了,用法直接看影片教程或者 MyBatis 從入門到精通這本書就可以了。

MyBatis框架概述

MyBatis框架快速入門案例

MyBatis框架Dao代理

MyBatis框架動態SQL

MyBatis配置檔案

擴充套件

Spring

在學完 MyBatis ,就該學習我們的核心框架 Spring 了,Spring 能風靡到現在一定有他的道理,等你到工作中再慢慢體會它的精髓。

學習 Spring ,我首先給你推薦的一本書就是 Spring 實戰,也就是 Spring In Action,這本書我認為即使學習 Spring 最好的一本,沒有之一了。

影片觀看:

https://www.ixigua.com/6772336469072675339

關於 Spring,有哪些需要學習的東西呢?

Spring概述

loC控制反轉

AOP面向切面程式設計

Spring整合MyBatis

Spring事務

Spring與Web

Spring 單獨拿來使用的場景非常少,更多是作為框架的整合來用,Spring 最主要的特點就是兩個:IOC 容器和 Aop,IOC 容器就是 Spring 和 各種資源整合的基礎,可以說有了 IOC 的這個特點,才會有 bean 的裝配,自動裝配等等特性,而 Aop 就是減少業務耦合性的一種技術,讓我們能夠以“切面”的方式來看到業務關聯性。最主要的就是這兩項技術,把這兩項技術弄懂了 Spring 就差不多了。

Spring MVC

SpringMVC 終於來了!!!!為什麼最後再說 SpringMVC,因為Spring MVC 其實就是 Servlet 的一種封裝,而且 Spring MVC 打交道的物件是 HTTP 協議,所以你需要先掌握上面知識再學 Spring MVC。

學習 SpringMVC,影片可以看看這個

https://www.ixigua.com/6772336921155731976

那麼關於 SpringMVC 都需要掌握哪些內容呢?

Spring MVC概述

Spring MVC 解析之 DispatcherServlet

Spring Web MVC-過濾器與攔截器 Handler and Filter

SpringMVC全域性異常處理

SpringMVC 單檔案上傳與多檔案上傳

SpringMVC上傳檔案的三種方式

SpringMVC中的檔案上傳與下載

Spring MVC列印@RequestBody、@Response日誌

Spring MVC攔截器實現使用者登入許可權驗證

Spring MVC框架原理分析

SpringMVC - 檢視解析過程

RestTemplate

Spring MVC中使用RestTemplate訪問REST服務詳解

SpringMVC之Controller常用註解功能全解析

MVC設計模式介紹 & SpringMVC實現

當你從 Java 基礎 -> MySQL基礎 ->Javaweb -> MyBatis -> Spring -> SpringMVC 學完之後,我覺得你應該需要花 1 - 2 年左右的時間,此時的你應該能夠具備完成一個小型 SSM 專案的能力了,現在先不忘下面繼續學習了,你應該把你的知識進行整合,你可以按照書中的內容搭建小型專案,或者完成一些 SSM 專案等,很多 Java 方向的畢業設計也就到這裡就能完事兒了。

Java畢業設計影片:

https://www.ixigua.com/6969831045722178061

此時的你,可以說能夠具備一個初級 Java 開發的基本素質了,但是你可能還找不到工作,為什麼?因為現階段最最最流行的框架你還沒有接觸,下面有請大名鼎鼎的 SpringBoot 大佬登場。

SpringBoot

SpringBoot 可以說是當今 Java 領域最火的框架了,那麼 SpringBoot 為什麼這麼火呢?

從設計理念談起

要說到 Spring Boot 為什麼這麼火,就必須得聊聊 Spring Boot 的設計理念,正是此設計理念奠基了Spring Boot 開發設計的基準,讓 Spring Boot 走到了今天。

那 Spring Boot 的設計理念是什麼呢?

它就是約定優於配置(convention over configuration)。

約定優於配置並不是一個新概念,它是一種軟體設計正規化,很早就應用在軟體架構設計中,它的作用是減少軟體開發人員需做決定的數量,獲得簡單的好處,而又不失靈活性。

只是 Spring Boot 讓這個設計理念上升了一個層次,Spring Boot 不止在某個功能上實現此設計理念,而是整個軟體體系都在踐行約定優於配置。

Spring Boot 體系將約定優於配置的思想展現得淋淋盡致,小到配置檔案,中介軟體的預設配置,大到內建容器、生態中的各種 Starters 無不遵循此設計規則。

Spring Boot Jpa 80% 大部分查詢功能都以約定的方式給與提供,另外 20% 複雜的場景,提供另外的技術手段來解決,典型的約定優於配置的實現。

Spring Boot Starter ,在專案啟動的時候,根據約定資訊對元件進行載入、初始化。因此專案中引入了對於的 Starter 之後,就可以到達開箱即用的效果。

甚至 Spring Cloud 的設計,也借鑑了約定優於配置的思想,很多元件都是在啟動時,預設提供了其相關的功能,可以讓我們的使用到達很少配置或者零配置。

所以你只需要再學習完 SpringBoot ,就能夠完成一個初級 Java 開發的用人需求了。所以你必須要學好 SpringBoot。

影片觀看:

https://www.ixigua.com/6824729668344611340

其實你學了一段時間就會發現,SpringBoot 就完全是個腳手架,方便我們快速搭建一個專案,簡化了配置,不用再讓你寫繁雜的 XML 表示式,相反的而是用 註解 來實現,他們的原理類似,只不過使用註解能讓你的專案更加簡潔。

Spring Cloud

Spring Cloud 是以 SpringBoot 為基礎的微服務專案架構,現在大多數網際網路公司甚至一些傳統行業都開始用 Spring Cloud 為基礎架構,有些是因為業務需求,有些是為了裝 B,反正不管怎樣,面試官問起你會不會 Spring Cloud,你說不會的話,那麼你的印象分估計會降低,所以初級程式設計師,或多或少要了解一下 Spring Cloud 。

影片觀看:

https://www.ixigua.com/6885622656545391116

Dubbo

說完了 Spring Cloud,怎能少的了 Dubbo?

https://www.ixigua.com/6824745322846093838

Redis

Redis 可以說是最流行的 NoSQL 資料庫了,你可能不知道 Redis 是幹什麼用的,我先給你普及一下。

快取資料庫目前最常用的兩種就是 Redis 和 Memcached,與 Memcached 相比 Redis 其一大特點是支援豐富的資料型別(Memcached 只能用 string 型別)。Redis 因為其豐富的資料結構因此應用範圍不侷限於快取,有很多場景用 Redis 來實現可以大大減少工作量。

影片觀看:

https://www.ixigua.com/6772338007803429387

Nginx

Nginx 基礎知識

Nginx 是什麼?

Nginx 是一個 web 伺服器,主要處理客戶端和伺服器的請求分發。

特點和優勢:

高併發

熱部署

低功耗

熱部署

使用和擴充套件

開源免費的Nginx與商業版Nginx Plus,與之對應的是免費OpenResty與商業版OpenResty

開源版 http://nginx。org

商業版 NGINX Plus

阿里巴巴 Tengine

開源版 OpenResty

商業版 OpenResty

Nginx 正向代理與反向代理

為了便於理解,首先先來了解一下一些基礎知識,nginx是一個高效能的反向代理伺服器那麼什麼是反向代理呢?

代理是在伺服器和客戶端之間假設的一層伺服器,代理將接收客戶端的請求並將它轉發給伺服器,然後將服務端的響應轉發給客戶端。

不管是正向代理還是反向代理,實現的都是上面的功能。

影片觀看:

https://www.ixigua.com/6907437541557797390

正向代理

正向代理(forward)意思是一個位於客戶端和原始伺服器 (origin server) 之間的伺服器,為了從原始伺服器取得內容,客戶端向代理傳送一個請求並指定目標 (原始伺服器),然後代理向原始伺服器轉交請求並將獲得的內容返回給客戶端。

正向代理是為我們服務的,即為客戶端服務的,客戶端可以根據正向代理訪問到它本身無法訪問到的伺服器資源。

正向代理對我們是透明的,對服務端是非透明的,即服務端並不知道自己收到的是來自代理的訪問還是來自真實客戶端的訪問。

反向代理

反向代理(Reverse Proxy)方式是指以代理伺服器來接受 internet 上的連線請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給 internet 上請求連線的客戶端,此時代理伺服器對外就表現為一個反向代理伺服器。

反向代理是為服務端服務的,反向代理可以幫助伺服器接收來自客戶端的請求,幫助伺服器做請求轉發,負載均衡等。

反向代理對服務端是透明的,對我們是非透明的,即我們並不知道自己訪問的是代理伺服器,而伺服器知道反向代理在為他服務。

Netty

Netty 是一個利用 Java 的高階網路的能力,隱藏其背後的複雜性而提供一個易於使用的 API 的客戶端/伺服器框架。

Netty 是一個廣泛使用的 Java 網路程式設計框架(Netty 在 2011 年獲得了Duke’s Choice Award,見https://www。java。net/dukeschoice/2011)。它活躍和成長於使用者社群,像大型公司 Facebook 以及流行 開源專案如 Infinispan, HornetQ, Vert。x, Apache Cassandra 和 Elasticsearch 等,都利用其強大的對於網路抽象的核心程式碼。

Git

Git 是一款優秀的分散式版本控制平臺,程式碼協作通常用於團隊或者多人共同開發一個專案的情況,剛開始接觸程式碼協作可能無法理解,就是說你和你的同事共同開發一個專案的話,你們的程式碼也要放在一起,你提交的程式碼對方能夠看到,對方提交的程式碼你也能夠看到。

不用在說什麼我改了程式碼我發給你,一方面你知道你改過內容可能會有遺漏,有一些人說那記錄好改了哪些檔案不就行了嗎?但是你這樣工作量多大?而且假如你和你同事改的是同一個檔案呢?還要記住同一個檔案中有多少內容是改沒改過的嘛?

這太麻煩而且低效了,所以 Git 就是用於解決這種情況的,Git 目前是大多數企業的選擇,但是仍舊還有一些傳統的軟體公司使用 SVN,SVN 也是程式碼協作平臺,下面具體介紹一下 Git:

Git 是分散式的,SVN 是集中式的

Git是分散式的,SVN是集中式的

這是 Git 和 SVN 最大的區別。若能掌握這個概念,兩者區別基本搞懂大半。因為 Git 是分散式的,所以 Git 支援離線工作,在本地可以進行很多操作,包括接下來將要重磅推出的分支功能。而 SVN 必須聯網才能正常工作。

Git 複雜概念多,SVN 簡單易上手

所有同時掌握 Git 和 SVN 的開發者都必須承認,Git 的命令實在太多了,日常工作需要掌握add,commit,status,fetch,push,rebase等,若要熟練掌握,還必須掌握rebase和merge的區別,fetch和pull的區別等,除此之外,還有cherry-pick,submodule,stash等功能,僅是這些名詞聽著都很繞。

在易用性這方面,SVN 會好得多,簡單易上手,對新手很友好。但是從另外一方面看,Git 命令多意味著功能多,若我們能掌握大部分 Git 的功能,體會到其中的奧妙,會發現再也回不去 SVN 的時代了。

Git 分支廉價,SVN 分支昂貴

在版本管理裡,分支是很常使用的功能。在釋出版本前,需要釋出分支,進行大需求開發,需要 feature 分支,大團隊還會有開發分支,穩定分支等。在大團隊開發過程中,常常存在建立分支,切換分支的需求。

Git 分支是指標指向某次提交,而 SVN 分支是複製的目錄。這個特性使 Git 的分支切換非常迅速,且建立成本非常低。

而且 Git 有本地分支,SVN 無本地分支。在實際開發過程中,經常會遇到有些程式碼沒寫完,但是需緊急處理其他問題,若我們使用 Git,便可以建立本地分支儲存沒寫完的程式碼,待問題處理完後,再回到本地分支繼續完成程式碼。

影片觀看:

https://www.ixigua.com/6903813762755592716

學習 Git 的方式有很多種,但是最主要的還是你動手實踐,不管是看書也好還是根據教程進行實操,你都需要實踐一遍,那麼 Git 的使用你就差不多了。

最後,一些建議:

學程式設計,要記住兩個字“戒貪”!

不過學一半,還沒學透了,就想去學其他的技術。

這是非常致命的!學習務必要腳踏實地!

為什麼說這個,因為我自己曾經吃過這種虧,所以多嘴提了一句。

給自己一個目標,或者一個專案,在完成之前,不要去考慮其他的事情,道理和爬山是一樣的。等你學完後,再去學其他的!