高效學習之一篇搞定分布式管理系統Git !

一、Git是什么


1.Git是目前世界上最先進的分布式版本管理系統
2.工作原理/流程

workspace:工作區
Index/Stage:暫存區
Repository:倉庫區(本地倉庫)
Remote:遠程倉庫

二、SVN和Git的最主要的區別


1.SVN是集中式版本控制系統,版本庫是集中放在中央服務器的,而干活的時候,用的都是自己的電腦,所以首先要從中央服務器那里得到最新的版本,然后干活,干完后,需要把自己做的活推送到中央服務器,集中式版本控制系統是必須聯網才能工作,如果在局域網中還可以,帶寬夠大,速度夠快,如果是在互聯網中,如果網速慢的話,就納悶了。
2.Git是分布式版本控制系統,它沒有中央服務器,每個人的電腦就是一個完整的版本庫,這樣,工作的時候就不需要聯網了,因為版本都在自己的電腦上,既然每個人的電腦都有一個完整的版本庫,那么多人如何協作呢?比如說自己在電腦上改了文件A,其他人也在電腦上改了文件A,這時,你們倆之間只需要把各自修改推送給對方,就可以看到對方修改了。

三、Git的安裝


1.比較傻瓜化,一路向前一下步即可

四、如何操作Git


1.創建版本庫
什么是版本庫,版本庫又名倉庫,英文名Repository,你可以簡單的理解就是一個目錄,只是這個目錄里面的所有文件都被Git管理起來了,每個文件的修改、刪除,Git都能跟蹤,一般任何時刻都可以追蹤歷史,或者在將來的某個時刻將文件“還原”。
所以創建版本庫也比較簡單,比如在某一個盤下面新建一個文件夾”testgit”作為版本庫,例如在F盤創建一個testgit文件夾,然后右鍵該文件夾使用”Git Bash Here”打開:

然后在Git的命令窗口中運行”git init”將當前的testgit目錄初始化成Git可以管理的倉庫,如下:

此時,在testgit目錄下會多一個”.git”的隱藏目錄,這個目錄是Git用來跟蹤和管理版本的,不要亂動這個目錄的文件,否則會將Git倉庫破壞掉:

2.把文件添加到版本庫
在testgit目錄下新建一個文件readme.txt,輸入內容:111111111111111111

第一步:使用”git add readme.txt”將文件添加到暫存區(Index/Stage)

第二步:使用命令”git commit”將暫存區的文件提交給本地倉庫(倉庫/版本庫)

-m后面的文字是注釋
此時,我們可以使用”git status”命令來查看是否還有其他文件沒有提交給本地倉庫:

說明沒有任何文件未提交

現在我們繼續修改readme.txt,比如添加一行222222222222222,繼續使用”git status”來查看:

上面的命令告訴我們readme.txt文件已經被修改,但是沒有添加到暫存區從而可以提交給本地倉庫,如果我們想看看readme.txt文件到底修改了哪些內容,可以使用如下命令:git diff readme.txt

可以看到,readme.txt增加了22222222222222222的內容,知道了readme.txt修改了什么內容之后,我們就可以將其提交給倉庫,提交修改的方式和提交文件的方式相同:

總結:
添加新文件或修改文件:
1. 添加到暫存區:git add 文件名
2. 提交到本地倉庫:git commit -m ‘注釋’

五、版本回退


之前我們已經學習了修改文件,現在我們繼續修改readme.txt,再增加一行33333333333333,繼續add和commit:

現在我們已經對readme.txt進行了3次修改,那么我們想查看一下歷史記錄,如何查看呢?我們可以使用”git log”來查看:

“git log”命令顯示從近到遠的日志,最近一次是增加33333333333333,上一次是添加22222222222222,第一次是默認的111111111111111,如果覺得日志顯示內容太多,可以使用命令”git log --pretty=oneline”:

現在我們想使用版本回退功能,把當前版本回退到上一個版本,可以使用如下兩個命令:
第一種:”git reset --hard HEAD^”,表示回退到上一個版本,要回退到上上版本,就把HEAD^改為HEAD^^,以此類推,如果要回退100個版本,這種方式肯定不方便,可以使用第二種方式。
第二種:”git reset --hard HEAD~100”,回退到之前的第100個版本
示例:

當然我們可以繼續使用”git log”來查看當前的歷史記錄:

我們可以看到增加3333333333333的歷史記錄不見了,但是現在我們又想回退到最新的版本,我們可以通過“版本號”回退,使用命令:”git reset --hard 版本號”,現在的問題是如何獲取版本號,我們可以通過”git reflog”來查看版本號:

我們可以看到,增加3333333333333的版本號是:2fa4a8e,現在我們可以通過命令來恢復:

現在我們又恢復到了增加3333333333333333的版本上了。
總結:
回退版本:git reset --hard HEAD^,git reset --hard HEAD~100
查看歷史記錄:git log,git log --pretty=oneline
查看版本:git reflog
回退到指定版本:git reset --hard 版本號

六、理解工作區和暫存區的區別


1.工作區:就是你電腦上看到的目錄,比如目錄testgit里面的文件(.git隱藏目錄版本庫除外),或者以后需要再新建的目錄文件等等都是屬于工作區范疇。
2.版本庫:Repository,工作區中有一個隱藏目錄.git,這個不屬于工作區,是版本庫,其中包含了很多東西,其中最重要的就是stage(暫存區),還有Git為我們自動創建的第一個分支master,以及指向master分支的一個指針HEAD。
我們前面說明使用Git提交文件到版本庫有兩步:
第一步:使用”git add”把文件添加到暫存區
第二步:使用”git commit”將暫存區的內容提交到版本(本地倉庫)的當前分支上
現在我們在readme.txt中增加444444444444444444內容,并且在該目錄中新加文件test.txt,先用”git status”查看一下狀態:

然后我們使用”git add”將兩個文件都添加到暫存區,再使用”git status”查看:

接著使用”git commit”一次性將兩個文件都提交到當前分支:

所以我們總結出來,不管是第一次創建文件,還是修改文件,還是新增文件,處理方式都一致,都是add之后commit就行。

七、Git撤銷修改和刪除文件操作


1.撤銷修改
比如我們在readme.txt中增加一行555555555555555555,先通過命令查看一下:

在還沒有提交之前,我們發現添加的5555555555555555有錯,需要恢復到以前的版本,可以有如下做法:
(1)如果我們知道要刪除哪些內容的話,直接手動修改文件,然后再add到暫存區,最后commit掉

2.刪除文件
假如版本庫testgit目錄中添加了一個文件b.txt,然后提交:

我們可以直接在目錄下刪除文件:

再運行git status:

可以看到b.txt文件已經被刪除,此時有兩種選擇:一種是直接commit掉,二是從版本庫中恢復被刪除的文件。
一般情況下,可以直接在文件目錄中將文件刪除,如果想徹底從版本庫中刪除此文件的話,可以再運行commit命令提交,只要沒有commit之前,我們可以通過”git checkout -- 文件名”就可以恢復被刪除的文件:

如果想徹底刪除:

從暫存區刪除:

提交版本庫:

總結:
已經提交的文件被刪除
恢復:git checkout -- 文件名
徹底刪除:
暫存庫刪除:git rm 文件名
提交:git commit -m ‘注釋’

八、遠程倉庫


如何添加遠程倉庫:
現在的場景是:我們已經在本地創建了Git倉庫,又想在Gitee(碼云)(或GitHub(國外))上創建Git的遠程倉庫,并且希望這兩個倉庫同步,這樣Gitee的遠程倉庫可以作為備份,其他人也可以通過該遠程倉庫來協作。
首先,注冊Gitee,登陸Gitee,創建一個新的倉庫:



因為Git是分布式版本控制系統,所以需要填寫用戶名和郵箱來作為一個標識,注意:git config --global參數,有了這個參數,標識你的機器上的所有的Git倉庫都會使用這個配置,當然你可以對某個倉庫指定不同的用戶名和郵箱:
現在我們對本地倉庫進行Git全局設置:

然后給Git指定遠程個倉庫的地址:git remote add origin 遠程倉庫的URL地址,URL地址在這里:


我們把之前testgit目錄下的所有文件commit到本地倉庫:

當所有文件都add到暫存區,并且commit到本地倉庫后,就可以使用push命令把本地倉庫的內容推送到遠程倉庫,而上面設置的就是遠程倉庫的地址:(第一次推送的時候要加上-u參數)

注意:有時候要輸入用戶名和密碼:你需要輸入你注冊Gitee的手機號和密碼
到遠程倉庫看一下:

把本地倉庫的內容推送到遠程倉庫,使用”git push”命令,實際上是把當前分支master推送到遠程,由于遠程是空的,所以第一次推送master分支的時候,要加上”-u”參數,Git不但會把本地的master分支內容推送到遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在以后的推送或拉取時就可以簡化命令。從現在起,只要本地做了提交commit,就可以通過”git push origin master”把本地的master分支的最新修改推送到Gitee遠程倉庫上,現在你就擁有了真正的分布式版本庫了。

如何從遠程倉庫克隆到本地:
假如遠程倉庫有新的內容,我們想克隆到本地,如何克隆?首先登陸Gitee,創建一個新的倉庫,名叫testgit2,并添加文件到倉庫中:

點擊“初始化readme.txt”生成遠程倉庫的新文件:


此時,遠程倉庫就準備好了,下一步使用”git clone”克隆一個本地庫,首先在本地創建一個testgit2文件夾,然后在該文件夾中克隆:

克隆的地址在這里:



此時我們就可以在克隆的目錄中進行修改,然后再add,commit,push到遠程倉庫

遠程倉庫:

九、創建合并分支


1.在版本回退里,我們知道,每次提交,Git都把它們串成一條時間線,這條時間線就是第一個分支,到目前為止,我們只有一條時間線,在Git中這個分支(時間線)叫做主分支,即master分支,HEAD嚴格來說不是指向提交,而是指向master,而master才是指向提交的,所以HEAD指向的就是當前分支。
(1)首先我們來創建dev分支,然后切換到dev分支(使用之前的testgit倉庫):
?
查看分支:

其中”git checkout”命令加上”-b”參數表示創建并切換分支,相當于執行了如下兩條命令:
git branch dev #創建dev分支
git checkout dev #切換到dev分支
git branch命令會列出所有的分支,并且當前分支前面有一個”*”。

(2)然后我們在dev分支繼續做,比如現在給readme.txt增加6666666666666

(3)現在dev分支工作已經完成,現在我們切換到master分支,繼續查看readme.txt內容

發現沒有66666666666666內容,因為現在不是dev分支

十、分支管理策略


通常合并分支時,Git一般使用”Fast forward”模式,在這種模式下,刪除分支后,會丟掉分支信息,我們可以使用帶參數”--no-ff”禁用”Fast forward”模式。

(1)現在我們可以將dev分支的內容合并到master分支,使用命令”git merge dev”:


“git merge”命令用于合并指定分支到當前分支,合并后,再查看readme.txt內容,可以看到和dev分支最新提交的內容完全一致。
注意到上的”Fast-forward”信息,Git告訴我們,這次合并使用”快進方式”,也就是直接把master分支指向dev的當前提交,所以合并速度非常快,合并完成之后,我們就可以把dev分支刪除了:

(2)如何解決分支的沖突?
我們新建一個分支,名叫fenzhi1,然后在readme.txt中添加一行7777777777777777,然后提交:

同樣,切換到master分支,也在最后一行增加88888888888888888

現在我們在master分支上合并fenzhi1:

查看merge之后的文件,發現Git使用<<<<<<<<,========,>>>>>>>>>標記出不同分支的內容,其中<<<<<<<<<<HEAD是指主分支內容,>>>>>>>>>fenzhi1是指fenzhi1上修改的內容,我們可以手動修改文件之后提交:

如果我們想查看分支合并的情況的話,可以使用”git log”:

十一、Bug分支


在開發過程中,經常會碰到bug,那么有了bug就要修復,在Git中,分支是很強大的,每個bug都可以通過一個臨時分支來修復,修改完成后,合并分支,然后將臨時分支刪除掉。
比如我們在開發過程中遇到了一個404 bug的時候,可以創建一個404分支來修復它,但是當前dev分支上還有工作沒有提交,比如:

并不是我們不想commit這個dev分支,而是工作進行了一半,還不能提交,比如dev分支還需要2天完成,但是issue-404的bug需要5小時內完成,那怎么辦呢?Git還提供了一個stash的功能,可以將當前的工作現場”隱藏起來”,等到以后要用的時候恢復現場繼續工作,例如:

此時查看dev分支的狀態,發現所有內容已經提交,是干凈的。
現在我們就可以創建issue-404分支來修復404的bug了
首先我們要確定在哪個分支上修改bug,比如我們現在是在主分支master上來修復的,所以要在master分支上創建一個臨時分支issue404:
?
修復bug完成之后,切換到master分支,完成合并,最后刪除issue-404分支:

切換到master分支,然后禁用了”Fast Forward”模式的前提下進行issue-404分支merge到master分支,然后刪除issue-404分支。

現在我們可以回到dev分支繼續干活:

運行”git status”發現dev分支是干凈的,那么我們的工作現場在哪里呢?我們可以使用命令”git stash list”來查看:

工作現場還在,Git把stash內容存在了某個地方,需要恢復一下,有兩種方法恢復現場:
1)”git stash apply”恢復后,在使用”git stash drop”刪除
2)“git stash pop”恢復現場的同時把stash內容刪除

然后我們就可以在dev分支上繼續做后面的工作了。

十二、多人協作‘


當你從遠程倉庫克隆的時候,實際上Git自動把本地的master分支和遠程的master分支對應起來,并且遠程庫默認的名稱是origin
查看遠程庫的信息使用:git remote,如果要查看詳細信息:git remote -v

1. 推送分支
推送分支就是把該分支上的所有本地內容提交到遠程庫中,推送時,要指定本地分支,這樣Git就會把該分支推送到遠程對應的分支上,使用命令:git push origin master
比如本地的readme.txt:

遠程倉庫:

現在我們想把本地更新的readme.txt推送到遠程倉庫,可以使用如下命令:

遠程庫:
?
可以看到推送成功,如果我們現在要推送到其他分支,比如dev分支,那么還是這個命令:
git push origin dev
那么一般情況下,哪些分支要推送呢?
master是主分支,因此要與遠程同步,一些修復bug的分支不需要推送到遠程,可以先合并到主分支(master),然后再把主分支master推送到遠程去。

2. 抓取分支
多人協作時,大家都會往master分支推送各自的修改,現在我們可以模擬另一個同事,可以在另外一臺電腦或同一個電腦的另一個目錄中克隆,新建目錄名為testgit2,接著進入testgit2目錄,進行克隆遠程庫到本地來:

如下目錄:

現在我們的同事要在dev分支上做開發,就必須把遠程的origin的dev分支弄到本地來,于是可以使用命令創建dev分支:git checkout -b origin/dev
首先我們需要將dev分支推送到遠程倉庫(在testgit目錄中完成):

遠程倉庫:

其次使用”git checkout -b dev origin/dev”命令把遠程origin庫的dev分支弄到本地來(在testgit2目錄中完成)

如果命令運行出錯,則運行”git fetch origin”進行遠程同步即可
修改readme.txt(在testgit2中):

遠程倉庫:

同事已經向origin/dev分支推送了修改內容,而我的目錄文件中也對同一個地方做修改,也試圖推送到遠程庫時,如下:


由上可知:推送失敗,因為我的同事最新提交的和我試圖推送的有沖突,解決辦法也很簡單,上面已經給出提示了,先用”git pull”把最新的提交從”origin/dev”抓取下來,然后在本地合并,解決沖突,再推送:


git pull也失敗了,原因是沒有指定本地dev分支與遠程origin/dev分支的連接,根據提示,設置本地dev分支和遠程origin/dev的連接:

這會”git pull”成功了,并且提示合并有沖突,需要手動解決,解決辦法和分支管理中解決沖突的辦法一致,解決沖突后,在提交,再push到遠程庫:

現在我們已經手動將沖突解決了,所以可以再次提交,再次push:

遠程庫:

因此,多人協作的工作模式一般是這樣的:
首先:可以試圖使用”git push origin 分支名”去推送自己的修改,如果推送失敗,則因為遠程分支比你本地更新的早,需要先試用”git pull”試圖合并,如果合并有沖突,則手動解決沖突,然后在本地再次提交,再次”git push origin 分支名”去推送。多人遠程協作的經驗就是,先pull之后進行本地修改,改完再去提交和push。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/913699.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/913699.shtml
英文地址,請注明出處:http://en.pswp.cn/news/913699.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AdsPower API 新增查詢環境 Cookies 接口,自動化更進一步!

你是不是有過這樣的經歷&#xff1f;賬號在 AdsPower 環境中已經成功登錄&#xff0c;但你還要花時間手動導出 Cookies、再整理處理&#xff0c;過程繁瑣、效率低下。 現在&#xff0c;我們上線了 API 查詢環境 Cookies 的接口&#xff0c;支持通過 API 直接獲取已登錄環境的 …

Craftium游戲引擎中的客戶端同步機制解析

Craftium游戲引擎中的客戶端同步機制解析 craftium A framework for creating rich, 3D, Minecraft-like single and multi-agent environments for AI research based on Minetest 項目地址: https://gitcode.com/gh_mirrors/cr/craftium 游戲狀態同步的核心問題 在分…

spring cloud負載均衡之FeignBlockingLoadBalancerClient、BlockingLoadBalancerClient

本文主要分析被 FeignClient 注解的接口類請求過程中負載均衡邏輯&#xff0c;流程分析使用的源碼版本信息如下&#xff1a;<spring-boot.version>3.2.1</spring-boot.version><spring-cloud.version>2023.0.0</spring-cloud.version>背景 平常我們代碼…

提示工程(Prompt Engineering)研究進展

提示工程(Prompt Engineering)研究進展 以及它如何幫助大語言模型(LLMs)和視覺語言模型(VLMs)更好地工作。用簡單的話說,就是通過設計巧妙的“提示”(比如指令、例子),讓模型在不修改內部參數的情況下,更精準地完成各種任務,比如回答問題、推理、生成內容等。 文檔…

【ARM】AI開發板A7處理器JTAG實現指南

一、文檔背景盡管開發板原廠提供了相關文檔&#xff0c;但可能缺乏對 A7 處理器 JTAG 功能的詳細說明。這可能會導致以下問題&#xff1a;開發人員難以理解和利用 A7 處理器的基本功能&#xff0c;阻礙調試和開發進度。在進行Uboot移植過程中&#xff0c;無法應用圖形界面的調試…

FPGA(一)Quartus II 13.1及modelsim與modelsim-altera安裝教程及可能遇到的相關問題

零.前言 在學習FPGA課程時&#xff0c;感覺學校機房電腦用起來不是很方便&#xff0c;想著在自己電腦上下載一個Quartus II 來進行 基于 vhdl 語言的FPGA開發。原以為是一件很簡單的事情&#xff0c;沒想到搜了全網文章發現幾乎沒有一個完整且詳細的流程教學安裝&#xff08;也…

軟考(軟件設計師)存儲管理—存儲空間管理,文件共享保護

一、文件存取方法 1. 順序存取&#xff08;Sequential Access&#xff09; 原理&#xff1a;按記錄寫入順序依次訪問特點&#xff1a; 讀操作&#xff1a;讀取當前位置&#xff0c;指針自動前移寫操作&#xff1a;追加到文件末尾 適用場景&#xff1a;磁帶設備、日志文件 #merm…

Thinkphp6中如何將macro方法集成到Request類中

在學習crmeb的時候發現他使用了一個macro的方法用在中間件中&#xff0c;于對macro進行了簡單的研究&#xff0c;發現這個方法可以在中間件中進行定義一些方法&#xff0c;然后讓后面的控制器進行使用。 如&#xff1a; 在授權的中間件中&#xff0c;定義了$request->macro…

Java List 使用詳解:從入門到精通

一、List 基礎概念1.1 什么是 List&#xff1f;List 就像是一個智能書架&#xff1a;可以按順序存放書籍&#xff08;元素&#xff09;每本書都有固定位置&#xff08;索引&#xff09;可以隨時添加、取出或重新排列書籍// 創建一個書架&#xff08;List&#xff09; List<S…

Java零基礎筆記06(數組:一維數組、二維數組)

明確: 程序是用來處理數據的, 因此要掌握數據處理的數據結構數組是編程中常用的數據結構之一&#xff0c;用于存儲一系列相同類型的元素。在Java中&#xff0c;數組是一種對象&#xff0c;可以存儲固定大小的相同類型元素的集合。1.一維數組數組是一個數據容器,可用來存儲一批同…

10倍處理效率提升!阿里云大數據AI平臺發布智能駕駛數據預處理解決方案

阿里云大數據AI平臺重磅發布智能駕駛數據預處理解決方案&#xff0c;可幫助汽車行業客戶實現構建高效、穩定的數據預處理產線流程&#xff0c;數據包處理效率相比自建可提升10倍以上&#xff0c;數據處理推理任務優化提速1倍以上&#xff0c;相同資源產能提升1倍[1]&#xff0c…

SAP HANA內存數據庫解析:特性、優勢與應用場景 | 技術指南

SAP HANA 是一款列式內存關系數據庫&#xff0c;集 OLAP 和 OLTP 操作于一體。相較于同類產品&#xff0c;SAP HANA 需要的磁盤空間更少&#xff0c;并且可擴展性高。SAP HANA 可以部署在本地、公有云或私有云以及混合場景中。該數據庫適用于各種數據類型的高級分析和事務處理。…

Openharmony4.0 rk3566上面rknn的完美調用

一 背景&#xff1a; 我們都知道如果要在android上面使用rknn推理模型需要按照如下的步驟&#xff1a; 詳細請參考筆者的文章&#xff1a;Android11-rk3566平臺上采用NCNN&#xff0c;RKNN框架推理yolo11官方模型的具體步驟以及性能比較-CSDN博客 簡而言之就是 模型轉換&#…

Java多線程知識小結:Synchronized

在Java中&#xff0c;synchronized 關鍵字是實現線程同步的核心工具&#xff0c;用于保證同一時刻只有一個線程可以執行被修飾的代碼塊或方法。以下從基本原理、鎖升級過程、應用場景及優化建議四個維度詳細解析&#xff1a; 一、基本原理 1. 同步的對象 synchronized 鎖的是對…

MTK項目wifi.cfg文件如何配置的Tput和功耗參數

下面的MTK參數主要與無線網絡(Wi-Fi)配置相關,特別是與WMM(Wi-Fi Multimedia)和功率控制相關的設置 WMM相關參數: WmmParamCwMax/WmmParamCwMin:定義競爭窗口的最大/最小值,這里設置為10/4,用于控制信道訪問的退避機制13 WmmParamAifsN:仲裁幀間間隔數,設置為3影響不同…

分水嶺算法:圖像分割的浸水原理

分水嶺算法&#xff1a;基于拓撲地貌的邊界提取核心原理 分水嶺算法將圖像視為拓撲地貌&#xff0c;灰度值代表海拔高度。通過模擬浸水過程&#xff1a;局部極小值&#xff1a;對應集水盆&#xff08;區域內部&#xff09;。分水嶺線&#xff1a;集水盆之間的山脊&#xff08;區…

汽車功能安全系統階段開發【技術安全方案TSC以及安全分析】5

文章目錄1 技術安全方案 (Technical Safety Concept - TSC)2 系統安全架構設計 (System Safety Architecture Design)3 如何進行安全分析 (Safety Analysis)4 技術安全需求 (TSR) 如何分配到系統架構1 技術安全方案 (Technical Safety Concept - TSC) 技術安全方案 (Technical…

學習軟件測試的第十二天(接口測試)

一.如果一個接口請求不通&#xff0c;那么你會考慮那些方面的問題&#xff1f;如果一個接口請求不通&#xff0c;我會像“排查水管漏水”一樣一步步定位問題發生在哪一段&#xff0c;主要從這幾個方向去思考&#xff1a;當一個接口請求不通時&#xff0c;我會從以下幾個方面進行…

Linux下的C/C++開發之操作Zookeeper

ZooKeeper C 客戶端簡介與安裝ZooKeeper C API 簡介ZooKeeper 官方提供了多語言客戶端&#xff0c;C 語言客戶端是最底層的實現之一&#xff0c;功能全面且穩定&#xff0c;適合嵌入式開發、系統級組件、C 項目集成等場景。zookeeper.h 是 ZooKeeper 提供的 C 語言客戶端頭文件…

【openp2p】學習3:【專利分析】一種基于混合網絡的自適應切換方法、裝 置、設備及介質

本專利與開源項目無關,但可能是實際商用的一種專利。專利地址從此專利,可見p2p的重要性。透傳服務可能是實時轉發服務,提供中繼能力 透傳服務可以是指一種通過公網服務器將數據從第一客戶端傳遞到另一個設備 或客戶端的服務。這種服務通常用于克服網絡中的障礙,如防火墻、…