<menu id="ycqsw"></menu><nav id="ycqsw"><code id="ycqsw"></code></nav>
<dd id="ycqsw"><menu id="ycqsw"></menu></dd>
  • <nav id="ycqsw"></nav>
    <menu id="ycqsw"><strong id="ycqsw"></strong></menu>
    <xmp id="ycqsw"><nav id="ycqsw"></nav>
  • java編程入門基礎(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 章,但是卻介紹到了所有的二十三種設計模式,每一種設計模式都有對應的應用案例,以風趣幽默的語言描述來一步一步為你揭開設計模式的面紗,告訴你設計模式的演進過程。

    讀這本書不僅僅是學習知識,而是在學習一種思考的方法,學習一種認知的技巧,學習一種成長的階梯??傊媚汩e暇的時間來讀這本書,并不亞于你專注的工作或學習。

    圖解設計模式

    設計模式更多是一種思想,而不是一種固定的代碼編寫方式,千萬不要局限于這些條條框框。日本人的書寫的就是非常通俗易懂,適合小白。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,便可以創建本地分支存儲沒寫完的代碼,待問題處理完后,再回到本地分支繼續完成代碼。

    版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

    發表評論

    登錄后才能評論
    国产精品区一区二区免费