【Git】萬字詳解 Git 的原理與使用(上)

🥰🥰🥰來都來了,不妨點個關注叭!
👉博客主頁:歡迎各位大佬!👈

在這里插入圖片描述

文章目錄

  • 1. 初識 Git
    • 1.1 Git 是什么?
    • 1.2 為什么要有 Git
  • 2. 安裝 Git
    • 2.1 Linux-Ubuntu 安裝 Git
    • 2.2 Windows 安裝 Git
  • 3. Git 初始化與配置
    • 3.1 創建 Git 本地倉庫
    • 3.2 配置 Git
    • 3.3 查看配置
    • 3.4 刪除配置
  • 4. Git 工作流程 - 認識工作區、暫存區、版本庫
  • 5. Git 基本操作
    • 5.1 添加文件
      • 5.1.1 場景一
      • 5.1.2 場景二
    • 5.2 查看.git文件
      • 【可能遇到的問題】 Windows下的 Git Bash 環境下并沒有安裝 tree工具
    • 5.3 修改文件
    • 5.4 版本回退
    • 5.5 撤銷修改
      • 5.5.1 情況一:對于工作區代碼還未 add
      • 5.5.2 情況二:已經 add,但沒有 commit
      • 5.5.3 情況三:已經 add,并且 commit 了
    • 5.6 刪除本地倉庫中的文件

1. 初識 Git

1.1 Git 是什么?

Git 是一個開源的分布式版本控制系統,用于高效地跟蹤和管理項目代碼的變更歷史(不僅僅是代碼,還有其它格式也是可以的~)

1.2 為什么要有 Git

在學習或者是工作的時候,比如編寫各種文檔,為了防止文檔丟失,更改失誤,我們不得不復制出一個副本,保留歷史記錄,方便找回歷史記錄,比如:

“設計文檔-v1”
“設計文檔-v2”
“設計文檔-v3”
“設計文檔-確定版”
“設計文檔-最終版”

每個版本有各自的內容,但最終會只有?份文檔是需要被使用的,在此之前的?作都需要這些不同版本的報告,于是每次都是復制粘貼副本,文件就越來越多,不僅文件多,更重要的是,隨著版本數量的不斷增多,我們可能記不太清每一個版本具體修改的哪些內容,文檔如此,我們編寫的項目代碼也如此!

在這里插入圖片描述

那么,如何解決呢?

答:版本控制器 ,記錄每次修改以及版本迭代的一個管理系統,目前,最主流的版本控制器就是 Git,可以控制電腦上所有格式的文件

為了能夠更方便管理這些不同版本的?件,便有了版本控制器! 所謂的版本控制器,就是能讓你了解到?個文件的歷史,以及它的發展過程的系統。通俗的講就是?個可以記錄?程的每?次改動和版本迭代的?個管理系統,同時也方便多人協同作業,目前最主流的版本控制器就是 Git,Git 可以控制電腦上所有格式的文件,例如doc、excel、dwg、dgn、rvt等等,對于我們開發?員來說,Git 最重要的就是可以幫助我們管理軟件開發項目中的源代碼文件!

注意事項
所有的版本控制系統,Git也不例外,其實只能跟蹤文本文件的改動,比如 txt文件,網頁,所有的程序代碼等等,版本控制系統可以告訴你每次的改動,比如在第10行加了"name",在第12行刪除了一個"Windows",而圖片、視頻等這些二進制文件,雖然也能由版本控制系統管理,但沒辦法跟蹤文件的變化,只能把?進制文件每次改動串起來,即只知道圖片從90KB改成了100KB,但到底改了啥,版本控制系統無法記錄,所有并不知道,也沒法知道~

在這里插入圖片描述

2. 安裝 Git

接下來,我們來進行實操!安裝 Git ~

Git 是開放源代碼的代碼托管工具,最早是在 Linux 下開發的,當然,最開始也只能應用于 Linux 平臺,后面慢慢的被移植到 Windows下,現在 Git 可以在 Linux、Unix、Mac 和 Windows 這幾大平臺上正常運行了~

2.1 Linux-Ubuntu 安裝 Git

這里介紹 Ubuntu 下的安裝(因為 Centos 現在不維護了~,因此,本文不作過多介紹)

在 Ubuntu 安裝 git 相當簡單~ 一起來看看!

  1. 首先查看系統有沒有安裝過 Git,輸入命令:git --version
  • 如果出現 git 版本號已經安裝:
    在這里插入圖片描述
  • 如果出現這類提示,則沒安裝
Command 'git' not found, but can be installed with:
sudo apt install git
  1. 沒有則進行安裝,輸入安裝命令:sudo apt-get install git -y(在安裝過程中,出現了圖形化界面,回車即可~)
    再次輸入 git --version,就可以看到 git 版本號啦!此時,安裝完成!(是不是非常簡單!)

2.2 Windows 安裝 Git

Git 官網直接下載:Git 下載官網

  1. 選擇 Windows 操作系統

在這里插入圖片描述

  1. 根據自己的電腦選擇相應的下載

在這里插入圖片描述

  1. 下載完成后,找到下載到的文件,進行雙擊進行安裝
    在這里插入圖片描述

  2. 接著,按照指示,一步步安裝~

非常簡單的~ 按照指示點下一步就好啦(勇敢牛牛,不怕困難!)

  1. 檢測是否安裝好 Git,打開 Git Bash

在這里插入圖片描述

輸入:git -- verison,出現對應安裝的 git 版本號,就是安裝成功啦!!!
在這里插入圖片描述

3. Git 初始化與配置

Git 的安裝是很簡單的,現在我們來看看 Git 的初始化與配置~

3.1 創建 Git 本地倉庫

可以將倉庫理解成是進行版本控制的一個文件目錄,如果我們想要對文件進行版本控制,就必須先創建一個倉庫出來!

創建?個 Git 本地倉庫對應的命令為 git init ,注意命令要在文件目錄下執行,例如:

  1. 首先找到自己想要的文件目錄~

在這里插入圖片描述

  1. 右鍵,找到選項【Git Bash Here】 ,進入界面,輸入倉庫初始化命令

在這里插入圖片描述

我們就會發現,當前目錄下多了一個.git 的隱藏文件,.git 目錄是 Git 用來跟蹤管理倉庫的,千萬不要手動修改里面的文件!!! 如果修改了,很容易亂,就會把 Git 倉庫給破壞了~(感興趣的小伙伴,可以點擊進行詳細了解哦)

3.2 配置 Git

當安裝 Git 后首先要做的事情就是設置你的用戶名稱和 e-mail 地址,這是非常非常重要的,配置命令為:

git config [--global] user.name "Your Name" 
git config [--global] user.email "email@example.com" # 把 Your Name 改成你的用戶名
# 把 email@example.com 改成你的郵箱的格式,只要格式正確即可

示例:

git config [--global] user.name "xxx" 
git config [--global] user.email "1234567@163.com" 

注意 --global 是?個可選項,如果使用了該選項,就表示這臺機器上所有的 Git 倉庫都會使用這個配置,如果你希望在不同倉庫中使用不同的 name 或 e-mail ,即可以不要 --global 選項,但需要注意的是,執行命令時必須要在倉庫里面~

3.3 查看配置

查看配置命令:git config -l

在這里插入圖片描述

3.4 刪除配置

刪除對應的配置命令如下:

git config [--global] --unset user.name
git config [--global] --unset user.email

4. Git 工作流程 - 認識工作區、暫存區、版本庫

  • 工作區:是在電腦上要寫的代碼或者是文件的目錄

  • 暫存區(stage/index):一般存放在 .git 目錄下的 index 文件(.git/index)中,把暫存區有時也叫作索引(index)

  • 版本庫(repository):也叫倉庫,工作區有?個隱藏目錄 .git ,它不算工作區,而是 Git 的版本庫,這個版本庫里面的所有文件都可以被 Git管理起來,每個文件的修改、刪除,Git 都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以"還原"

在這里插入圖片描述

  • 左側為工作區,右側為版本庫,Git 的版本庫里存放了很多東西,其中最重要的是暫存區
  • 在創建版本庫的時候, Git 會自動為我們自動創建一個唯一的 master 的分支,以及指向 master 的一個指針 HEAD (分支與HAED后續介紹)
  • 當對工作區修改或者是新增的文件,執行 git add 命令,暫存區目錄樹的文件索引會被更新
  • 當執行提交操作 git commit 時,master 分支會做相應的更新,可以簡單理解為暫存區的目錄樹才會被真正寫到版本庫中

Git 工作流程:

  1. 工作區:開發者實際編輯代碼的目錄
  2. 暫存區:通過 git add 將修改添加到暫存區,準備提交
  3. 本地倉庫(Local Repository):通過 git commit 將暫存區的修改保存到本地倉庫,生成一個提交記錄(上述介紹的是本地倉庫)
  4. 遠程倉庫(Remote Repository):通過 git push 將本地提交推送到遠程倉庫,如Gitee、GitHub(后續介紹如何連遠程倉庫)

5. Git 基本操作

(碎碎念:筆者每次都喜歡先看到命令集合,有啥先用啥,之后再慢慢了解原理,因此,這里先介紹幾個常用的命令,方便查找~同時,筆者后續內容均基于 Windows 11 系統展示操作)

命令作用
git init初始化一個Git倉庫
git clone 克隆遠程倉庫到本地
git status查看當前倉庫狀態
git log查看歷史提交記錄
git reflog記錄本地的每?次命令
git add 添加文件到暫存區
git commit -m “msg”提交修改到本地倉庫
git push origin main推送到遠程倉庫的main分支
git pull origin main從遠程倉庫拉取最新代碼
git branch查看分支
git checkout 切換分支
git merge 合并分支
git reset版本回退

5.1 添加文件

5.1.1 場景一

在包含.git 的目錄下新建?個 Read 文件,

  1. 可以使用 git add 命令可以將文件添加到暫存區:
  • 添加?個或多個文件到暫存區: git add [file1] [file2] ...

  • 添加指定目錄到暫存區,包括子目錄: git add [dir]

  • 添加當前目錄下的所有文件改動到暫存區: git add .

  1. 再使用 git commit 命令將暫存區內容添加到本地倉庫中:
  • 提交暫存區全部內容到本地倉庫中: git commit -m "message"

  • 提交暫存區的指定文件到倉庫區: git commit [file1] [file2] ... -m "message"

注意 git commit 后?的 -m 選項,要跟上描述本次提交的 message,由用戶自己完成,這部分內容千萬不能省略,并且要好好描述,這是記錄提交的細節,方便自己看也是方便別人看的~(不好好描述,自己和別人都不好理解哦!)

示例:

在這里插入圖片描述
git commit 命令執行成功后會告訴我們,1個文件被改動,就是我們新添加的 Read 文件,插入了一行內容,Read 有一行內容

也可以多次 add 不同的?件,而只 commit ?次便可以提交所有文件,是因為需要提交的文件是通通被 add 到暫存區中,然后?次性再commit暫存區的所有修改,如下:

在這里插入圖片描述
這樣就一次性將暫存區的三個文件都提交了~

可以使用 git log 命令,來查看歷史提交記錄:可以看到剛剛提交的兩次記錄
在這里插入圖片描述
git log 命令顯示從最近到最遠的提交?志,并且可以看到我們 commit 時的日志消息,如果覺得輸出信息太多,可以加上 --pretty=oneline 參數,即 git log --pretty=oneline,日志更加簡單,可以清楚了解~

5.1.2 場景二

為了更深刻理解工作區、暫存區、版本庫,這里再展示一種場景,如下:

在這里插入圖片描述
提交后發現打印了 1 file changed, 0 insertions(+), 0 deletions(-) ,只有?個文件改變了,但是,我們新增了兩個文件呀!
仔細觀察, git add 是將文件添加到暫存區, git commit 是將暫存區的內容添加到本地倉庫中。在上述命令,并沒有使用 git add file5 ,file5 就不在暫存區中維護,因此,commit 的時候其實只是把已經在暫存區的 file4 提交了,遺漏了工作區的 file5,那如何提交 file5 呢?很簡單,再次 git add file5 , commit 即可~

所以,有時候你 commit 了,結果該內容并沒有提交,需要排查一下是否將這個內容添加到了暫存區哦~

5.2 查看.git文件

首先,我們來看看 .git 的目錄結構,進入 .git 文件(注意,是點擊進入.git隱藏文件哦!),使用命令:tree,查看樹形結構

如下:這是沒有任何提交記錄的哦~

在這里插入圖片描述
在上一小節中,我們添加了文件,再添加文件后,我們再來觀察 .git 文件的樹形結構

在這里插入圖片描述

總結】在本地的 git 倉庫中,有幾個文件或者目錄很特殊:

  • index: 暫存區, git add 后會更新該內容
  • HEAD: 默認指向 master 分支的?個指針
  • refs/heads/master: 文件里保存當前 master 分支的最新 commit id
  • objects: 包含了創建的各種版本庫對象及內容,可以簡單理解為放了 git 維護的所有修改

小建議】:在后面的學習過程中,我們最好能將常見的 git 操作與 .git 目錄當中的結構內容變化對應起來,這樣有利于我們理解 git 細節流程

【可能遇到的問題】 Windows下的 Git Bash 環境下并沒有安裝 tree工具

問題:如果出現 bash: tree: command not found ,則說明在 Windows下的 Git Bash 環境下并沒有安裝 tree工具,因此,導致無法使用

在這里插入圖片描述
解決方式:git bash 默認是沒有 tree 命令的!下載 tree

  1. 下載

在這里插入圖片描述

  1. 解壓,在 bin 目錄下找到 tree.exe

在這里插入圖片描述
3. 將 tree.exe 拷貝到 git bash 的應用程序位置,找到自己的 git安裝路徑\usr\bin

在這里插入圖片描述

  1. 再次輸入 tree 命令,即可:

在這里插入圖片描述

5.3 修改文件

Git 比其他版本控制系統設計得優秀,是因為 Git 跟蹤并管理的是修改,而并非文件,就比如新增了一行內容,這就是?個修改,刪除了一行內容,也是?個修改,更改了某些字符,也是?個修改,刪了?些?加了?些,同樣是?個修改!

現在對 Read 文件,進行修改,通過 git status,查看上次提交之后是否有對文件進行再次修改
(注意倉庫中的 Read 和 工作區的 Read 是不同的,我們這里是在工作區進行修改的!通過 git status,查看當前倉庫的狀態)

在這里插入圖片描述
圖中結果顯示,Read 已經被修改過,但是還沒有完成添加與提交,目前,只知道文件被修改了,但是不知道具體哪些地方被修改了!(知道這個是很重要的!)

使用 git diff [file] 命令用來顯示暫存區和工作區文件的差異,也可以使用 git diff HEAD -- [file] 命令來查看版本庫和工作區文件的區別,知道了對 Read 做了什么修改后,再把它提交到本地倉庫就會放心許多!

在這里插入圖片描述
使用 add 添加到暫存區,再 commit 提交到本地倉庫~

在這里插入圖片描述

5.4 版本回退

我們知道,Git 能夠管理文件的歷史版本,這也是版本控制器最重要的能力,如果想在某個特定的歷史版本重新開始,這個時候,就需要版本回退的功能~ 執行回退版本命令: git reset
可以指定退回某?次提交的版本,注意,"回退"本質是要將版本庫中的內容進行回退,?作區或暫存區是否回退由命令參數決定!

git reset 命令語法格式為: git reset [--soft | --mixed | --hard] [HEAD]

  • --mixed 為默認選項,使用時可以不帶該參數,該參數是將暫存區的內容退回為指定提交版本內容,而工作區文件保持不變

  • --soft 該參數對于工作區和暫存區的內容都不變,只是將版本庫回退到某個指定版本

  • --hard 參數將暫存區和工作區都退回到指定版本,切記!!!工作區有未提交的代碼時千萬不要使用這個命令,因為工作區會回滾,沒有提交的代碼就再也找不回了,因此,使用這個參數的時候,一定要慎重

  • HEAD 可直接寫成 commit id,表示指定退回的版本,也可以這樣寫:

寫法1:使用 ^

HEAD 表示當前版本
HEAD^ 表示上?個版本
HEAD^^ 表示上上?個版本
以此類推…

寫法2:可以使用 ~ 數字表示

HEAD~0 表示當前版本
HEAD~1 表示上?個版本
HEAD~2 表示上上?個版本
以此類推…

示例:為了方便演示回退功能,先做一些準備工作,更新 3 個版本的 Read,并進行 3 次提交,準備工作如下:

在這里插入圖片描述
操作一】提交 version3 后,發現 version3 編寫有誤,想回退到 version2,重新基于 version2 開始寫,這里希望工作區的內容也回退到 version2 版本,因此需要 --hard 參數,如下:

在這里插入圖片描述
可以看到 Read 文件的內容,已經回退到 version2 了,使用 git log 查看提交?志,也發現 HEAD 指向了 version2

操作二】后悔回退到 version2,想再回到 version3

可以繼續使用 git reset 命令,回退到 version3 版本,but 我們必須要拿到 version3 的 commit id 去指定回退的版本,從上圖中,看到 git log 并不能打印出 version3 的 commit id ,如果運氣好的話,可以在終端找之前的記錄,運氣不好的話,commit id 已經被我們搞丟啦,不過不用擔心!Git 還提供了?個 git reflog 命令,可以補救?下,該命令用來記錄本地的每?次命令!!!

在這里插入圖片描述
使用git reflog 可以很方便找到所有操作記錄,但 e9980d9 是什么呢?是 version3 的 commit id 的部分,Git 版本回退的時候,也可以使用部分 commit id 來代表目標版~

操作三】在實際開發中,由于長時間開發,導致 commit id 早就找不到了,但是又想回到 version3,貌似現在不可能~

我們要知道 Git 版本回退速度非常快,因為 Git 在內部有個指向當前分支,這里是 HEAD 指針默認指向 master 分支,在.git 隱藏文件中refs/heads/master 文件里面保存了當前 master 分支的最新 commit id,當我們在回退版本的時候, Git 僅僅是給 refs/heads/master 中存儲?個特定的 version,可以簡單理解為下圖:

在這里插入圖片描述

可以查看 refs/heads/master 文件內容,保存了最新的 commit id,如下:

如果是操作二,回退到 version3 版本,則保存的 commit id 為 version3 的:

在這里插入圖片描述
如果是操作一,回退到 version2 版本,則保存的 commit id 為 version2 的:

在這里插入圖片描述

5.5 撤銷修改

有一種場景,比如在工作區寫了很久的代碼,但是越寫越寫不下去,覺得自己寫得不太好,想恢復到上?個版本~ 我們需要撤銷修改,這里分三種情況:

5.5.1 情況一:對于工作區代碼還未 add

操作一】可以直接刪除目前在工作區中新增的代碼(不推薦),如下:

在這里插入圖片描述
萬幸!才寫了一行內容,就發現需要刪除了,萬一寫了很多,一直都沒有提交,可能都忘記自己新增的哪些內容了,那如何刪除呢?

Git 為我們提供了更好的方式!!!

操作二】使用 git checkout -- [file] 命令,使工作區文件回到最近一次 add 或者是 commit 狀態(注意,該命令中的 -- 千萬不能省略,省略就變成其它意思了!!!)

在這里插入圖片描述

5.5.2 情況二:已經 add,但沒有 commit

add 了,保存到了暫存區,如何撤銷呢?

還記得剛介紹的 git reset 回退命令嘛!! 該命令使用 --mixed 參數,則可以將暫存區的內容回退到指定版本的內容,工作區文件保持不變,這樣,我們就可以回退暫存區的內容了~

命令:git reset HEAD Read (注意,這里為啥沒有帶上 --mixed 參數呢?因為 --mixed 參數是默認的!!!)

在這里插入圖片描述

5.5.3 情況三:已經 add,并且 commit 了

這種情況也無需擔心,使用 git reset --hard HEAD^ 回退到上一個版本

不過這里是有條件的,即還沒有將自己本地版本庫推送到遠程!!!(一旦推送到遠程版本庫,那就…)

在這里插入圖片描述

5.6 刪除本地倉庫中的文件

在 Git 中,刪除也是一個修改操作

下面演示刪除 file4 文件:

使用 rm file4

在這里插入圖片描述

這樣直接刪除是沒有用的,此時只是刪除了工作區的 file4,git status 會告訴你哪些文件被刪除了,但是,這個時候,工作區和版本庫就不一致了,要刪除文件,除了要刪除工作區的文件,還要清除版本庫的文件

到這里,有兩種情況:

情況一確實需要從版本庫刪除該文件

使用 git rm [文件名],將文件從工作區和暫存區中刪除,并且 commit ~

在這里插入圖片描述

情況二刪錯了

使用 git checkout -- file4 來恢復, 刪除也是修改哦,這是剛剛學過的命令~

在這里插入圖片描述

這期 git 內容介紹到這里,可以自己動手操作,加深印象哦~

💛💛💛本期內容回顧💛💛💛

在這里插入圖片描述
???本期內容到此結束啦~

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

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

相關文章

【原創開發】無印去水印[特殊字符]短視頻去水印工具[特殊字符]支持一鍵批量解析

支持:快手,抖音,小紅書,嗶哩嗶哩,等多款應用去水印,支持圖集解析下載 【應用名稱】:無印 【應用版本】:1.3 【應用大小】:17M 【測試機型】:小米14 【下載鏈…

qemu(3) -- qemu-arm使用

1. 前言 qemu中有很多的特技,此處記錄下qemu-arm的使用方式,簡單來說qemu-system-xx用于虛擬整個設備,包括操作系統的運行環境,而qemu-xx僅虛擬Linux應用程序的環境,不涉及操作系統,應用程序的系統調用有宿…

Docker的簡單使用(不全)

Docker Hello World Docker 允許在容器內運行應用程序,使用docker run命令來在容器內運行一個應用程序 輸出Hello World runoobrunoob:~$ docker run ubuntu:15.10 /bin/echo "Hello world"Hello world docker:Docker的二進制執行文件 run…

SALOME源碼分析: 命令系統

本文分析SALOME中命令系統,涉及的知識點包括, MDF框架數據對象模型 注1:限于研究水平,分析難免不當,歡迎批評指正。注2:文章內容會不定期更新。 一、命令對象 1.1 Class Hierarchy 1.2 SUIT_Operation #…

Bootstrap(自助法)??:無需假設分布的統計推斷工具

核心思想?? Bootstrap 是一種??重采樣(Resampling)技術??,通過在原始數據中??有放回地重復抽樣??,生成大量新樣本集,用于估計統計量(如均值、方差)的分布或模型性能的不確定性。 ??…

沙箱逃逸(Python沙盒逃逸深度解析)

沙箱逃逸(Python沙盒逃逸深度解析) 一、沙盒逃逸的核心目標 執行系統命令 通過調用os.system、subprocess.Popen等函數執行Shell命令,例如讀取文件或反彈Shell。 文件操作 讀取敏感文件(如/etc/passwd)、寫入后門文件…

融智學數學符號體系的系統解讀(之一)

融智學數學符號體系的系統解讀 一、道函數(Dao Function) 數學表達式: f(x,y,z)0(狹義) f(x,y,z,ict)0(廣義) 符號解析: x: 形象思維坐標軸 數學意義: 表征基于感官輸入的多模…

Java 中使用正則表達式

1. 引入包 在使用正則表達式之前,需要引入包: import java.util.regex.Matcher; import java.util.regex.Pattern; 2. 常用模式規則 元字符 :這些是正則表達式中的特殊字符,用于匹配特定的模式。 . :匹配任意單個字符(換行符除外)。例如,a.b 可以匹配 "acb&quo…

cat file.tar.gz | tar -xzf - -C /target/dir兩個減號之間為什么有個空格?是寫錯了嗎?(管道命令后續)

在 tar 命令的參數 -xzf - -C 中,兩個減號(-)之間的空格是故意保留的語法,沒有寫錯。具體原因如下: 1. -xzf - 的語法解析 -xzf 是 tar 命令的組合參數: x:表示解壓(extract&#x…

Linux中的系統延時任務和定時任務與時間同步服務和構建時間同步服務器

延時任務 在系統中我們的維護工作大多數時在服務器行對閑置時進行 我們需要用延遲任務來解決自動進行的一次性的維護 延遲任務時一次性的,不會重復執行 當延遲任務產生輸出后,這些輸出會以郵件的形式發送給延遲任務發起者 在RHEL9中默認系統中的所有普通…

C++之IO流

目錄 一、C語言的輸入與輸出 二、流是什么 三、CIO流 3.1、C標準IO流 3.2、C文件IO流 四、stringstream的簡單介紹 一、C語言的輸入與輸出 C語言中我們用到的最頻繁的輸入輸出方式就是scanf ()與printf()。 scanf(): 從標準輸入設備(鍵盤)讀取數據,并將值存放…

Fedora升級Google Chrome出現GPG check FAILED問題解決辦法

https://dl.google.com/linux/linux_signing_key.pub 的 GPG 公鑰(0x7FAC5991)已安裝 https://dl.google.com/linux/linux_signing_key.pub 的 GPG 公鑰(0xD38B4796)已安裝 倉庫 "google-chrome" 的 GPG 公鑰已安裝,但是不適用于此軟件包。 請檢查此倉庫的…

極光PDF編輯器:高效編輯,輕松管理PDF文檔

在日常工作和學習中,PDF文件的使用越來越普遍。無論是學術論文、工作報告還是電子書籍,PDF格式因其穩定性和兼容性而被廣泛采用。然而,編輯PDF文件往往比編輯Word文檔更加復雜。今天,我們要介紹的 極光PDF編輯器,就是這…

MySQL進階(一)

一、存儲引擎 1. MySQL體系結構 連接層: 最上層是一些客戶端和鏈接服務,主要完成一些類似于連接處理、授權認證、及相關的安全方案。服務器也會為安全接入的每個客戶端驗證它所具有的操作權限 服務層: 第二層架構主要完成大多數的核心服務…

OpenCV 圖形API(67)圖像與通道拼接函數-----水平拼接(橫向連接)兩個輸入矩陣(GMat 類型)函數concatHor()

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 該函數用于水平拼接兩個 GMat 矩陣,要求輸入矩陣的行數必須一致: GMat A { 1, 4,2, 5,3, 6 }; GMat B { 7, 10,8, 11,9, 12 }; GM…

1.1 點云數據獲取方式——引言

圖1-1-1點云建筑場景圖 點云數據是指能夠描述外部場景、對象表面的三維空間位置,并具有相關屬性的點集,其每個離散點通常包括三維空間位置(x,y,z)以及強度、顏色等屬性信息。大量分布的離散點集能夠清晰而直接地描繪場景、對象的3…

[Verilog]跨時鐘域數據傳輸解決方案

跨時鐘域數據傳輸解決方案 摘要:跨時鐘域數據傳輸 (Clock Domain Crossing, CDC) 是 SoC 設計中常見且關鍵的問題,因為現代 SoC 通常包含多個時鐘域,不同模塊可能運行在不同頻率或相位的時鐘下。跨時鐘域傳輸數據時,如果處理不當,可能會導致亞穩態 (Metastability)…

Kotlin與Jetpack Compose的詳細使用指南

Kotlin與Jetpack Compose的詳細使用指南,綜合最新技術實踐和官方文檔整理: 一、環境配置與基礎架構 ?項目創建? 在Android Studio中選擇Empty Compose Activity模板,默認生成包含Composable預覽的MainActivity2要求Kotlin版本≥1.8.0&…

預訂接口優化:使用本地消息表保證訂單生成、庫存扣減的一致性

🎯 本文介紹了一種優化預訂接口的方法,通過引入本地消息表解決分布式事務中的最終一致性問題。原先的實現是在一個事務中同時扣減庫存和創建訂單,容易因網絡不穩定導致數據不一致。改進后的方法將業務操作和消息發送封裝在本地事務中&#xf…

計算機網絡——客戶端/服務端,URI與URL的區別,以及TCP/IP核心機制全解析

文章目錄 客戶端/服務端,URI與URL的區別,以及TCP/IP核心機制全解析一、客戶端/服務端通信模型概述二、URI 與 URL 的概念與區別1. URL(統一資源定位符)2. URI(統一資源標識符)3. URI 與 URL 的關系 三、SYN…