GitLab版本管理工具

来源:http://www.cnblogs.com/bananaaa/archive/2017/12/04/7975598.html
-Advertisement-
Play Games

第1章 GitLab管理 1.1 版本控制系統 版本控制系統(version control system)是記錄一個或若幹文件內容變化,以便將來查閱特定版本修訂情況的系統。版本控制系統不僅可以應用於軟體源代碼的文本文件,而且可以對任何類型的文件進行版本控制,廣泛應用的如svn,git等 1.2 常 ...


第1章 GitLab管理

1.1 版本控制系統

版本控制系統(version control system)是記錄一個或若幹文件內容變化,以便將來查閱特定版本修訂情況的系統。版本控制系統不僅可以應用於軟體源代碼的文本文件,而且可以對任何類型的文件進行版本控制,廣泛應用的如svn,git等

1.2 常見版本管理工具

1.2.1 SVN

集中式的版本控制系統,只有一個中央數據倉庫,如果中央數據倉庫掛了或者不可訪問,所有的使用者無法使用SVN,無法進行提交或備份文件

1.2.2 Git

分散式的版本控制系統,在每個使用者電腦上就有完整的數據倉庫,沒有網路依然可以使用。為了習慣及團隊協作,會將本地數據同步到Git伺服器或GitHub等代碼倉庫

 

第2章 Git軟體安裝

2.1 配置安裝GIT

Git是分散式的版本控制系統,我們只要有一個原始Git版本倉庫,就能讓其他主機克隆這個原始版本倉庫,從而使一個Git版本倉庫可以被同時分佈到不同主機上,並且每台主機的版本庫都是一樣的,沒有主次之分

這極大的保證了數據安全性,並使得用戶能夠自主選擇向Git伺服器推送文件

 官網:https://git-scm.com 

2.1.1 準備環境

 1 [root@gitlab ~]# rpm -qa centos-release
 2 centos-release-7-4.1708.el7.centos.x86_64
 3 [root@gitlab ~]# uname -a
 4 Linux gitlab 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
 5 [root@gitlab ~]# getenforce
 6 Disabled
 7 [root@gitlab ~]# systemctl status firewalld.service
 8 ● firewalld.service - firewalld - dynamic firewall daemon
 9    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
10    Active: inactive (dead)
11      Docs: man:firewalld(1)

2.1.2 安裝查看git

 1 [root@gitlab ~]# rpm -qa git # Centos系統自帶git軟體,故無需安裝 2 git-1.8.3.1-11.el7.x86_64 3 4 yum install -y git #沒有則進行安裝 

2.2 初次運行Git前的配置

2.2.1 Git全局配置

1 git config --global user.name "banana"   #配置git使用用戶
2 git config --global user.email "[email protected]"   #配置git使用郵箱
3 git config --global color.ui true   #語法高亮,顯示加顏色
4 git config --list   #查看全局配置

2.2.2 查看配置文件

1 [root@gitlab ~]# cat .gitconfig   #上述操作即對配置文件進行的編輯
2 [user]
3        name = banana
4        email = [email protected]
5 [color]
6        ui = true

 

第3章 GitLab使用

3.1 初始化工作目錄

用來存放所有筆記代碼等,其中目錄下具備隱藏目錄,存放歷史記錄和備份(密文存在)

1 mkdir git_data   #創建併進入本地工作目錄
2 cd git_data/
3 git init   #初始化工作目錄
1 [root@gitlab git_data]# git status   #查看git工作區的狀態信息
2 # On branch master   ->當前處於主分支
3 # Initial commit   ->最初的提交
4 nothing to commit (create/copy files and use "git add" to track)   ->無文件要提交

3.2 創建/提交數據文件

01.創建文件

 1 touch README 

02.查看git狀態

1 [root@gitlab git_data]# git status
2 # On branch master   ->位於分支 master
3 # Untracked files:   ->未跟蹤的文件
4 # (use "git add <file>..." to include in what will be committed) ->使用"git add <file>."以包含要提交的內容
5 #     README
6 nothing added to commit but untracked files present (use "git add" to track)   ->提交為空,但是存在尚未跟蹤的文件(使用"git add"建立跟蹤) 註意:git預設不提交空目錄

03.添加到暫存區域[add後接*/file]

 1 git add README 

04.提交暫存區域文件至git本地倉庫

1 git commit -m 'first commit'  
2 # -m後接註釋信息,內容關於本次提交的說明,方便自己或他人查看

04.1簡便方法

1 git commit -a -m "註釋信息"
2 #若不加-m添加說明信息,後面會自動進入編輯模式,仍需添加說明的信息。
3 #-a表示直接添加文件(即本地倉庫的原有文件後來經過改變時,我們就可以使用-a直接在倉庫裡面進行修改)

05.再次查看git狀態

 1 [root@gitlab git_data]# git status 2 # On branch master ->位於分支master 3 nothing to commit, working directory clean ->無文件要提交,乾凈的工作區 

3.2.1 查看目錄內容

 1 [root@gitlab git_data]# tree .git/   #存儲所有歷史版本信息即配置文件,是通過git init生成的目錄
 2 .git/
 3 ├── branches
 4 ├── config
 5 ├── description
 6 ├── HEAD
 7 ├── hooks
 8 │   ├── applypatch-msg.sample
 9 │   ├── commit-msg.sample
10 │   ├── post-update.sample
11 │   ├── pre-applypatch.sample
12 │   ├── pre-commit.sample
13 │   ├── prepare-commit-msg.sample
14 │   ├── pre-push.sample
15 │   ├── pre-rebase.sample
16 │   └── update.sample
17 ├── index
18 ├── info
19 │   └── exclude
20 ├── objects
21 │   ├── e6
22 │   │   └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391   #伺服器只存儲加密文件信息
23 │   ├── info
24 │   └── pack
25 └── refs
26     ├── heads
27 └── tags

總結提交數據/文件分為兩步驟三區域:

在工作目錄git_data創建"README"數據文件;使用git add將文件提交到暫存區域(臨時存放可撤銷操作);將暫存區域的文件統一提交到Git倉庫中

3.2.2 工作原理

我們可以簡單的把工作目錄理解成是一個被Git服務程式管理的目錄,Git會時刻追蹤目錄內文件的改動。在安裝好Git服務程式後,預設就會創建一個master分支,可供我們直接提交數據

3.3 暫存區數據操作

3.3.1 git刪除數據

01. 未添加到暫存區的數據->直接使用rm命令刪除即可

02.已添加到暫存區的數據

 1 git rm --cached database 2 #將文件從git暫存區域的追蹤列表移除,並不刪除當前工作目錄內的數據文件->只刪除緩存 3 git rm -f database 4 #將文件數據從git暫存區和工作目錄一起刪除->永久刪除 

3.3.2 git重命名數據

01.未添加到暫存區的數據->直接mv/rename改名即可

02.已添加到暫存區數據

 1 git mv README NOTICE # README修改前/NOTICE修改後;最後進行提交git倉庫 2 註意:也可mv修改名稱→刪除git倉庫的文件快照git rm '*.txt'→將新的文件添加進去→提交git倉庫 

3.4 歷史記錄數據

3.4.1 查看歷史記錄

1 git log   #查看提交歷史記錄
2 git log -2   #查看最近幾條記錄
3 git log -p -1   #-p顯示每次提交的內容差異,例如僅查看最近一次差異
4 git log --stat -2   #--stat簡要顯示數據增改行數(能夠看到提交中修改過的內容,對文件添加或移動的行數,併在最後列出所有增減行的概要信息)
5 git log --pretty=oneline   #--pretty根據不同的格式展示提交的歷史信息
6 git log --pretty=fuller -2   #以更詳細的模式輸出提交的歷史記錄
7 git log --pretty=fomat:"%h %cn"   #查看當前所有提交記錄的簡短SHA-1哈希字串與提交著的姓名

使用format參數來指定具體的輸出格式

 1 %s     提交說明
 2 %cd    提交日期
 3 %an    作者的名字
 4 %cn    提交者的姓名
 5 %ce    提交者的電子郵件
 6 %H    提交對象的完整SHA-1哈希字串
 7 %h    提交對象的簡短SHA-1哈希字串
 8 %T    樹對象的完整SHA-1哈希字串
 9 %t     樹對象的簡短SHA-1哈希字串
10 %P    父對象的完整SHA-1哈希字串
11 %p    父對象的簡短SHA-1哈希字串
12 %ad    作者的修訂時間

3.4.2 還原歷史記錄

Git服務程式中有一個版本指針HEAD,當用戶申請還原數據時,將HEAD指針指向到某個特定的提交版本。但Git為避免歷史記錄衝突用SHA-1算出十六進位的哈希字串來區分提交版本。預設HEAD指針會指向到最近一次提交記錄,上一個提交版本即HEAD^,上上一個版本即HEAD^^ (HEAD~5簡化表示往上數第五個提交版本)

 1 git reset --hard HEAD^ #還原歷史提交版本上一次 2 git reset --hard 3de15d4 #找到歷史還原點的SHA-1值後,就可以還原(值未寫全時系統會自動匹配) 

3.4.3 還原未來數據

即還原到歷史數據後想再次撤銷更改,但是git log已經找不到這個版本了

 1 git reflog #查看未來歷史更新點 

3.4.4 標簽使用(於commit之後)

1 git tag v1.0     #當前提交內容打一個標簽(方便快速回滾),每次提交都可以打個tag
2 git tag          #查看當前所有的標簽
3 git show v1.0   #查看當前1.0版本的詳細信息
4 git tag v1.2 -m "version 1.2 release is test"
5 #對當前版本(最新)打標記,用於commit提交之後接著進行打標記(-a指定標簽名,-m為說明信息)
6 git tag -d v1.0    #我們為同一個提交版本設置了兩次標簽,刪除之前的v1.0
1 [root@gitlab git_data]# git reset --hard 0bdf2e7
2 HEAD is now at 0bdf2e7 modified README file
3 [root@gitlab git_data]# git reset --hard V20171130
4 HEAD is now at a66370a add oldboy dir

3.5 分支管理

在實際的項目開發中儘量保證master分支穩定,僅用於發佈新版本,平時不要直接修改裡面的數據文件。而開發都在dev分支進行修改,即每個人從dev分支創建自己個人分支,開發完合併到dev分支,最後合併到master分支

3.5.1 創建分支

1 git branch linux   #創建分支
2 git branch        #查看分支情況,當前分支前有*3 git checkout linux  #Switched to branch 'linux' 切換分支
4 git checkout --<file>  #一鍵還原,直接將git倉庫的文件覆蓋當前文件[危險]

3.5.2 合併分支(自動合併)

需求:把linux的工作成果合併到master分支上

 1 git checkout master #切換到master分支 2 git merge linux #合併Linux分支至master 3 git branch -d linux #確認合併完成後,建議刪除分支 

註意:系統預設不編輯空分支

3.5.3 合併衝突模擬(手動合併)

註意:只有同目錄同文件同行才會造成合併衝突的情況,只要有一點不同就能夠進行合併

01.準備:

1 cd git_data
2 echo 'master code' >>README
3 git commit -a -m 'this master branch commit'
4 git checkout linux
5 cat README
6 
7 echo 'linux code' >>README
8 git commit -a -m 'this linux branch second commit'
9 git checkout master

02.現象:

1 [root@gitlab git_data]# git merge linux
2 Auto-merging README   ->自動合併 README
3 CONFLICT (content):Merge conflict in README   ->衝突(內容):合併衝突於 READM
4 Automatic merge failed; fix conflicts and then commit the result.
5 ->自動合併失敗;修正衝突然後提交修正的結果

03.解決:人工選擇想要的內容,同時修改master和linux分支同文件並提交,最後merge

1 [root@gitlab git_data]# vim README
2 this is linux branch hello world
3 master code
4 linux code
5 [root@gitlab git_data]# git commit -a -m '解決合併衝突'
6 [master 19cb918] 解決合併衝突
7 [root@gitlab git_data]# git merge linux
8 Already up-to-date.

3.6 刪除分支

由於之前已合併了linux分支,故現在看到它在列表中,在這個列表中分支名字前沒*號的分支通常可用git branch -d刪除且不會失去任何東西

1 [root@gitlab git_data]# git branch --no-merged   #查看所有包含未合併工作的分支
2   testing
3 [root@gitlab git_data]# git branch -d testing   ->刪除分支
4 error: The branch 'testing' is not fully merged.   ->分支'testing'未進行合併
5 If you are sure you want to delete it, run 'git branch -D testing'.   ->若確定想刪除它,即使用-D強制刪除

 

第4章 客戶端安裝軟體

 1 軟體下載地址https://github.com/git-for-windows/git/releases/tag/v2.10.0.windows.1/Git-2.10.0-64-bit.exe 

4.1 windows上安裝Git

用於直接管理windows。安裝方法預設下一步→桌面右鍵"Git Bash Here"→命令行

 1 shine@shine MINGW64 ~/Desktop
 2 $ pwd
 3 /c/Users/shine/Desktop
 4 shine@shine MINGW64 ~/Desktop
 5 $ mkdir git_data
 6 shine@shine MINGW64 ~/Desktop
 7 $ cd git_data
 8 shine@shine MINGW64 ~/Desktop/git_data
 9 $ git init
10 Initialized empty Git repository in C:/Users/shine/Desktop/git_data/.git/

01.桌面右鍵"Git Gui Here"→"打開文件"

02.定義倉庫的路徑"git_data"→添加用戶信息(如下)

1 shine@shine MINGW64 ~/Desktop/git_data
2 $ git config  --global user.email "[email protected]"
3 shine@shine MINGW64 ~/Desktop/git_data
4 $ git config  --global user.name "banana"

03.軟體使用

至此,Git的安裝使用完成

4.2 linux上安裝GitLab

交互數據:

• 使用GitHub或者碼雲等公共代碼倉庫

• 使用GitLab私有倉庫

 1 官方安裝文檔 https://about.gitlab.com/installation/ 2 國內軟體鏡像站 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/ 

1 mkdir -p /application/tools
2 cd /application/tools
3 rz -E   #上傳gitlab-ce-9.1.4-ce.0.el7.x86_64.rpm
4 
5 yum localinstall gitlab-ce-9.1.4-ce.0.el7.x86_64.rpm
6 gitlab-ctl reconfigure   #初始化,僅執行一次
7 註意:gitlab預設開機自啟,無需修改;開機不自啟會導致軟體服務無法啟動

4.2.1 web網頁測試

 1 http://10.0.0.63 

命令行測試:

 1 ps -ef 2 netstat -lntup 3 gitlab-ctl status 4 註意:軟體安裝預設在/opt下,其資料庫為postgresql;當該機器有apache服務需手動關閉 

 

註意:創建密碼預設即為8位,生產環境太過簡單不可用;賬戶預設root

提示:git本身沒有任何許可權控制,因為git就是為了開發者共同編輯代碼而出現,如果沒有許可權,也會導致信息泄露,於是出現web界面

4.2.2 網頁頁面使用

01.創建新項目

說明:一個目錄初始化完就是一個項目,不能再進行修改,只能進行重新創建

 

02.進行網頁編輯

 

03.通過密鑰進行認證

 

 1 ssh-keygen #生成密鑰對(一路回車) 2 cat /root/.ssh/id_rsa.pub #查看公鑰id_rsa.pub值並添加如下: 

 

04.連接推送測試

1 ssh git@10.0.0.63
2 git clone git@10.0.0.63:root/shine.git
3 ls /root
4 #在哪個目錄克隆的就預設存在於那個目錄(想切換到別的目錄需提前切換再git clone)

 

1 cd shine   #這裡名稱與上文相同
2 touch README.md
3 git add README.md
4 git commit -m "add README"
1 [root@gitlab shine]# git push -u origin master   #把本地代碼向遠端倉庫(gitlab網頁)推送
2 Counting objects: 3, done.
3 Writing objects: 100% (3/3), 208 bytes | 0 bytes/s, done.
4 Total 3 (delta 0), reused 0 (delta 0)
5 To git@10.0.0.63:root/shine.git
6  * [new branch]      master -> master
7 Branch master set up to track remote branch master from origin.

刷新頁面查看,即下圖

05.創建文件測試

 1 cd shine/ 2 git pull #將代碼拉取到本地(需要在git的工作目錄中進行操作) 

 

至此,GitLab的安裝使用完成

4.3 安裝GitHub托管服務

Github是Git版本庫的托管服務,是目前全球最大的公網倉庫,擁有上百萬的開發者用戶,也是軟體開發和尋找資源的最佳途徑。不僅可以托管各種Git版本倉庫,還擁有更美觀的Web界面。代碼可被任何人克隆,使開發者為開源項貢獻代碼變得容易

01.註冊GitHub

 1 瀏覽器訪問github官網https://github.com/ 

02.填寫個人用戶名等信息→預設下一步→跳過描述

03.創建項目

說明:創建新的項目之前要現驗證郵箱

04.添加git伺服器上生成的公鑰id_rsa.pub

 1 [root@gitlab ~]# cat .ssh/id_rsa.pub 

 

05.準備工作已經完畢→創建一個新的倉庫

 

06.根據以下信息創建代碼倉庫→推送測試

 

1 mkdir -p banana
2 cd banana/
3 echo "# test" >> README.md
4 git init
5 git add README.md
6 git commit -m "first commit"
7 git remote add origin [email protected]:banana-tong/test.git

 推送測試

 1 [root@gitlab banana]# git push -u origin master
 2 The authenticity of host 'github.com (192.30.255.113)' can't be established.
 3 RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
 4 RSA key fingerprint is MD5:16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
 5 Are you sure you want to continue connecting (yes/no)? yes
 6 Warning: Permanently added 'github.com,192.30.255.113' (RSA) to the list of known hosts.
 7 Counting objects: 3, done.
 8 Writing objects: 100% (3/3), 209 bytes | 0 bytes/s, done.
 9 Total 3 (delta 0), reused 0 (delta 0)
10 To [email protected]:banana-tong/test.git
11  * [new branch]      master -> master
12 Branch master set up to track remote branch master from origin.

07.刷新界面即可以發現推送上去的README.md文件

 

08.此時可創建新文件→命令行git pull拉取進行測試

至此,GitHub的安裝使用完成

 

第5章 有關Git常用命令

 1 add        #添加文件內容至索引
 2 branch     #列出、創建或刪除分支
 3 checkout   #檢出一個分支或路徑到工作區
 4 clone      #克隆一個版本庫到一個新目錄
 5 commit    #記錄變更到版本庫
 6 init        #創建一個空的 Git 版本庫或重新初始化一個已存在的版本庫
 7 log        #顯示提交日誌
 8 merge     #合併兩個或更多開發歷史
 9 mv        #移動或重命名一個文件、目錄或符號鏈接
10 pull       #獲取併合並另外的版本庫或一個本地分支
11 push      #更新遠程引用和相關的對象
12 rm        #從工作區和索引中刪除文件
13 show     #顯示各種類型的對象
14 status     #顯示工作區狀態
15 tag       #創建、列出、刪除或校驗一個GPG簽名的 tag 對象

下節想跟大家一同探討一下有關代碼上線問題,如有不妥望海涵

 

此筆記是本人學習摘記整理而成,此為初稿(尚有諸多不完善之處),原創作品允許轉載,轉載時請務必以超鏈接形式標明文章原始出處,作者信息和本聲明,否則將追究法律責任。http://www.cnblogs.com/bananaaa/

此處感謝神奇海螺為本文章提供的聲明


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、尊重對象所有權  不要為實例或原型添加屬性; 不要為實例或原型添加方法; 不要重定義已存在的方法。 最佳的方法便是永遠不修改不是由你所有的對象。所謂擁有對象,就是說這個對象是你創建的,比如你自己創建的自定義類型或對象字面量。而 Array 、 document 這些顯然不是你的,它們在你的 ...
  • 1.正則表達式test方法 test() 方法用於檢測一個字元串是否匹配某個模式 返回值: 如果字元串 string 中含有與 RegExpObject 匹配的文本,則返回 true,否則返回 false。 2、正則表達式exec方法 exec() 方法用於檢索字元串中的正則表達式的匹配。 返回值: ...
  • 1、match方法 match() 方法可在字元串內檢索指定的值,或找到一個或多個正則表達式的匹配。 match()方法的返回值為:存放匹配結果的數組。 2、replace方法 replace() 方法用於在字元串中用一些字元替換另一些字元,或替換一個與正則表達式匹配的子串。 replace方法的返 ...
  • 在knockoutjs 上實現 Flux 單向數據流 狀態機,主要解決多個組件之間對數據的耦合問題。 一、其實簡單 flux的設計理念和實現方案,很大程度上人借鑒和參考了Vuex的實現,只是簡化了某些過程,數據流向圖如下:從上圖,中以看出數據的改變是單向迴圈的。我想這就是Flux理念的核心所在吧。V ...
  • vue cli vue在web前端可謂是大放異彩,尤其在國內與angular、react有三足鼎立之勢。很多人想入門vue2而又苦於不知從何下手。因為vue2是以組件化開發的,最好要搭配webpack構建工具開發,而webpack很多人還不能獨立配置。 而vue cli腳手架就能很好解決這一問題。即 ...
  • 第一種:傳統的ajax非同步請求,後臺代碼以及效果在最下邊 首先我們在eclipse中創建一個註冊頁面regist.jsp,創建一個form表單,註意,由於我們只是實現用戶名校驗的效果,下邊紅色部門是我們需要研究對象,所以其他的部門可以忽略不看。 內容如下: <%@ page language="ja ...
  • 1.indexof方法 indexOf() 方法可返回某個指定的字元串值在字元串中首次出現的位置。 語法: 註意:有可選的參數(即設置開始的檢索位置)。 2、search方法 search() 方法用於檢索字元串中指定的子字元串,或檢索與正則表達式相匹配的子字元串。 註意:search方法可以根據正 ...
  • 背景: 在面對生產環境的數據的異常問題診斷的時候,比如接到異常告警郵件,通常是CPU居高不下、長時間連續大批量發生物理IO(導致系統響應緩慢)、亦或是大量Session被阻塞或者大量session執行超出預期等等類似情況,筆者習慣性地利用sys.dm_exec_requests 和 sys.dm_e ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...