【Git】企業級使用

?🔥個人主頁:?中草藥

?🔥專欄:【中間件】企業級中間件剖析


?基本概念

Git 有三個核心區域,分別是工作區、暫存區和版本庫,理解這三個區域是掌握 Git 的基礎。?

?

工作區就是我們電腦里能看到的文件目錄,比如我們在項目文件夾里寫代碼,這個文件夾就是工作區。舉個例子,我們在 “myproject” 文件夾里編寫 Java 代碼,這個 “myproject” 文件夾就是工作區,我們所有的代碼修改都在這里進行。?

暫存區就像一個臨時的中轉站,它位于.git 目錄下的 index 文件中。當我們在工作區完成文件修改后,需要先將這些修改提交到暫存區。比如我們在工作區修改了一個名為 “app.java” 的文件,通過 “git add app.java” 命令,就把這個修改后的文件添加到了暫存區,暫存區會記錄這些修改,等待我們進一步確認。?

版本庫也叫本地倉庫,它位于工作區目錄下的.git 隱藏文件夾中,里面包含了 Git 管理項目所需的所有信息,包括所有的版本數據、分支信息等。當我們把暫存區的內容提交到版本庫后,這些修改就被正式記錄下來了,形成一個新的版本。

基本使用

git的功能非常強大,其中,git中我們常見的操作有以下幾種

類別命令說明
倉庫初始化git init初始化當前目錄為 Git 倉庫
git clone <url>克隆遠程倉庫到本地
文件操作git add <file>添加文件到暫存區
git rm <file>刪除工作區文件并暫存操作
git mv <old> <new>移動/重命名文件并暫存
提交更改git commit -m "消息"提交暫存區的更改并添加描述
git commit --amend修改最新一次提交(可追加更改或修改提交信息)
狀態查看git status查看工作區與暫存區狀態
git log顯示提交歷史
git diff比較工作區與暫存區的差異

下面對部分操作進行一個詳細介紹?

創建倉庫

以下操作均在Ubuntu界面呈現

初始化倉庫

????????要使用 Git 管理項目,首先需要初始化一個倉庫。在命令行中進入項目所在的目錄,例如我們的項目在 “D:\myproject” 文件夾下,輸入 “cd D:\myproject” 進入該目錄,然后輸入 “git init” 命令。?

????????執行這個命令后,會在當前目錄下生成一個隱藏的.git 文件夾,這個文件夾就是 Git 的版本庫,里面包含了 Git 進行版本控制所需的各種文件和配置信息(不允許在.git目錄下手動修改)。此時,我們就可以使用 Git 來管理這個項目了。

?

配置本地倉庫

使用git config 實現 git config --global 配置全局配置(一臺服務器可以實現多個本地倉庫)

?

添加文件

在工作區創建或修改文件后,需要將這些文件添加到暫存區。使用 “git add” 命令,其格式為 “git add < 文件名 >”。?

如果要添加當前目錄下的所有文件,可以使用 “git add .” 命令。例如,我們在工作區新建了 “index.html” 和 “style.css” 兩個文件,輸入 “git add index.html style.css” 可以將這兩個文件添加到暫存區;如果想添加所有修改的文件,輸入 “git add .” 即可。?

添加文件到暫存區的作用是告訴 Git,這些文件的修改是我們想要提交到版本庫的。

?

將暫存區的文件提交到版本庫,需要使用 “git commit” 命令,格式為 “git commit -m "提交說明"”。其中,“-m” 后面的字符串是對本次提交的描述,方便我們日后查看提交記錄時了解本次修改的內容。?

例如,我們將暫存區的文件提交到版本庫,輸入 “git commit -m "初次提交項目文件"”,執行后,版本庫就會記錄下這次提交的所有修改,形成一個新的版本。?

每次提交都會生成一個唯一的 commit ID,用于標識這個版本,我們可以通過這個 ID 回退到相應的版本。

可以通過git log查找日志

?

git reflog 用于查看本地的每一次提交命令

?

git status 查看工作區和緩存區的狀態

?

版本回退

git能夠維護版本的重要原因,便是它能夠靈活的回退版本

git reset [--soft | --mixed | --hard] [HEAD]
選項工作區暫存區版本庫
(原本狀態)A? BA? BA? B
--softA? BA? BA
--mixed(默認)A? BAA
--hard(慎用)AAA

?

撤銷修改

工作區暫存區版本庫解決方式
A? BA??A??

1、手動撤銷(不推薦,容易出錯)

2、git checkout -- [filename](推薦使用,--不能省略)

A? BA? BAgit reset --mixed
A? BA? BA? Bgit reset --hard HEAD^(前提條件:commit之后沒有push)

命令別名

舉例:如給?git status 命令起一個別名可以用命令

git config --global alias.st status

分支管理?

基礎

分支是 Git 的核心功能,允許多線并行開發。

分支 = 指向提交的指針
每個分支都是一個指向某個提交(commit)的輕量級指針,默認分支通常為?main?或?master

HEAD 指針:指向當前所在分支的指針(即工作目錄的狀態來源)。

?

常見操作?

命令作用示例
git branch查看本地分支(-a?包含遠程分支,-v?顯示最近提交)git branch -av
git branch <name>創建新分支(不切換)git branch feature/payment
git checkout <branch>切換到已有分支git checkout dev
git checkout -b <new-branch>創建并切換到新分支(常用!)git checkout -b fix/issue-123
git merge <branch>合并指定分支到當前分支git checkout main
git merge dev
git branch -d <branch>刪除已合并的分支git branch -d feature/old
git branch -D <branch>強制刪除未合并的分支(謹慎!)git branch -D experiment
git push origin <branch>推送分支到遠程倉庫git push origin feature/login
git push origin --delete <branch>刪除遠程分支git push origin --delete temp-branch

與遠程分支建立連接

git checkout -b [dev] [origin/dev]git branch --set-upstream-to=origin/dev dev

合并沖突

當兩個分支修改了同一文件的同一區域時,合并會觸發沖突:?

此時需要手動解決并進行一次提交操作

沖突標記

<<<<<<< HEAD         # 當前分支的修改
當前分支的內容
=======
要合并分支的內容
>>>>>>> feature

可以通過

git log --graph --abbrev-commit 以試圖的方式查看分支

分支管理策略

1、快進合并(Fast-Forward)

  • 條件:目標分支是當前分支的直接祖先(無分叉)。

  • 效果:移動分支指針,不生成新提交(歷史線性)。

?

??在這種 Fast forward 模式下,刪除分支后,查看分支歷史時,會丟掉分支信息,看不出來最新提交到底是 merge 進來的還是正常提交的。

git支持我們強制禁用fast forward模式,在merge的時候會產生一個新的commit,這樣可以便于我們更好地去追溯這個改動是merge進來的還是commit的

git merge -no-ff -m ' ' dev

?

Bug分支

假如我們現在正在 dev2 分支上進行開發,開發到一半,突然發現 master 分支上面有 bug,需要解決。在Git中,每個bug都可以通過一個新的臨時分支來修復,修復后,合并分支,然后將臨時分支刪除。

舉例說明場景

此時,為了保存dev2中開發到一半的代碼

Git 提供了 git stash 命令,可以將當前的工作區信息進行儲藏,被儲藏的內容可以在將來某個時間恢復出來。

儲藏 dev2 工作區之后,由于我們要基于master分支修復 bug,所以需要切回 master 分支,再新建臨時分支來修復 bug

修復完成后,切換到 master分支,并完成合并,最后刪除fix_bug 分支:(假設情況如下圖)

?

先使用git stash pop去恢復現場 此時狀態圖為

?

Master 分支目前最新的提交,是要領先于新建 dev2 時基于的 master 分支的提交的,所以我們在 dev2 中當然看不見修復 bug 的相關代碼。

我們的最終目的是要讓 master 合并 dev2 分支的,那么正常情況下我們切回 master 分支直接合并即可,但這樣其實是有一定風險的。

是因為在合并分支時可能會有沖突,而代碼沖突需要我們手動解決(在 master 上解決)。我們無法保證對于沖突問題可以正確地一次性解決掉,因為在實際的項目中,代碼沖突不只一兩行那么簡單,有可能幾十上百行,甚至更多,解決的過程中難免手誤出錯,導致錯誤的代碼被合并到 master上。此時的狀態為:

?

此時的解決辦法是在當前分支合并master,解決沖突之后,再去使用master合并dev

?

?

這只是某一種bug情況的提醒,實際的業務場景可能比這復雜的多

遠程操作

Git 的遠程操作是連接本地倉庫與遠程倉庫(如 GitHub、GitLab 等)的橋梁,用于實現多人協作和代碼同步。雖然 Git 是分布式系統,本地可以獨立工作,但實際開發中幾乎都需要通過遠程操作與他人共享代碼。

創建遠程倉庫-去往gitee去操作

?

clone 倉庫

?

git clone https://gitee.com/……

克隆后,本地會自動關聯遠程倉庫,別名為?origin

SSH 協議和 HTTPS 協議是 Git 最常使用的兩種數據傳輸協議。SSH 協議使用了公鑰加密和公鑰登陸機制,體現了其實用性和安全性,使用此協議需要將我們的公鑰放上服務器,由Git服務器進行管理。使用 HTTPS 方式時,沒有要求,可以直接克隆下來。

SSH

使用 SSH方式克隆倉庫,由于我們沒有添加公鑰到遠端庫中,服務器拒絕了我們的clone 鏈接。需要我們設置一下:

第一步:創建SSHKey。在用戶主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa 和 id_rsa.pub 這兩個文件,如果已經有了,可直接跳到下一步。如果沒有,需要創建SSH Key:

ssh-keygen -t rsa -C "123456@qq.com"?

此時,順利的話,可以在用戶主目錄里找到.ssh 目錄,里面有id_rsa和 id_rsa.pub 兩個文件,這兩個就是SSH Key的秘鑰對,id_rsa 是私鑰,不能泄露出去,id_rsa.pub 是公鑰,可以放心地告
訴任何人

從遠程倉庫拉取代碼

pull操作實際上是pull + merge

拉取遠程倉庫的最新代碼到本地,并合并到當前分支:

# 拉取 origin 遠程的默認分支(通常是 main/master)并合并到本地當前分支
git pull origin# 拉取指定遠程分支(如 dev)并合并到本地當前分支
git pull origin dev# 首次拉取時可能需要指定本地分支與遠程分支的關聯
git pull origin dev:dev  # 拉取遠程 dev 到本地 dev 分支

注意:git pull?=?git fetch(獲取遠程更新) +?git merge(合并到本地)

向遠程倉庫推送代碼

push操作是分支與分支的操作

將本地倉庫的提交推送到遠程倉庫:

# 推送本地當前分支到 origin 遠程的對應分支(首次推送需要 -u 關聯)
git push -u origin main  # -u 表示設置默認關聯,后續可直接用 git push# 推送指定本地分支到遠程指定分支
git push origin dev:dev  # 本地 dev → 遠程 dev

忽略特殊文件

.gitignore

并不是所有文件都需要推送到遠程倉庫,比如本地的數據庫的配置信息,包含在.gitignore 的文件不會進行推送(可以使用git add -f 強制進行add)

?

上述的.gitignore文件配置了以下規則

忽略所有.so(Linux 共享庫)和.ini(配置文件)類型的文件

特殊排除 c.so 文件,使其能被 Git 追蹤


查看指定文件被哪些?.gitignore?規則匹配而被忽略,幫助排查「為什么某個文件沒被 Git 追蹤」的問題。

git check-ignore -v 文件名

-v(或?--verbose):顯示詳細信息,包括?匹配的規則來源(哪個?.gitignore?文件)和?具體規則內容


解決 git branch -a打印已被刪除的遠程分支的方法

git remote prune origin


標簽管理

基礎

在 Git 中,標簽(tag)是指向某個提交對象的固定指針,常用于標記特定版本,比如發布版本、里程碑版本等,方便快速定位到對應的代碼狀態。Git 的標簽分為輕量級標簽(lightweight tag)和附注標簽(annotated tag),以下是關于標簽管理的詳細介紹:

輕量級標簽實際上就是一個保存著對應提交對象的校驗和(哈希值)的文件,創建輕量級標簽非常簡單,命令格式如下:

git tag <tagname> [<commit>]

其中,<tagname>?是你要創建的標簽名,<commit>?是可選參數,用于指定標簽要指向的提交對象,若不指定,默認指向當前所在的提交對象。例如,在當前提交上創建一個名為?v1.0?的輕量級標簽:

git tag v1.0

附注標簽是存儲在 Git 數據庫中的一個完整對象,包含標簽名、打標簽者的名字和電子郵件地址、日期時間、標簽說明等信息。創建附注標簽使用?-a?選項,命令格式如下:

git tag -a <tagname> -m "<tag message>" [<commit>]

其中,-m?選項用于指定標簽的說明信息,<tag message>?就是標簽說明內容。比如,創建一個名為?v2.0?的附注標簽,并添加說明信息:

git tag -a v2.0 -m "這是項目的第二個正式發布版本"

查看標簽

列出所有標簽

使用以下命令可以列出當前倉庫中的所有標簽:

git tag

默認情況下,標簽會按字母順序列出。如果想按照創建時間順序列出標簽,可以使用?sort -V?命令進行排序:

git tag | sort -V

查看標簽詳細信息

要查看某個特定標簽的詳細信息,對于附注標簽,可以使用?git show?命令:

git show <tagname>

例如,查看?v2.0?標簽的詳細信息:

git show v2.0

對于輕量級標簽,git show?命令會顯示標簽指向的提交對象的詳細信息。


推送標簽

默認情況下,git push?不會推送標簽到遠程倉庫。要推送某個標簽到遠程倉庫,可以使用以下命令:

git push origin <tagname>

如果要一次性推送所有本地標簽到遠程倉庫,可以使用:

git push origin --tags

拉取遠程標簽

當遠程倉庫新增了標簽,你可以使用以下命令拉取遠程標簽到本地:

git fetch origin tag <tagname>  # 拉取單個標簽
git fetch origin --tags  # 拉取所有標簽

刪除標簽

可以直接在倉庫管理界面刪除

刪除本地標簽

要刪除本地的某個標簽,可以使用?-d?選項,命令格式如下:

git tag -d <tagname>

例如,刪除名為?v1.0?的本地標簽:

git tag -d v1.0

刪除遠程標簽

刪除遠程標簽需要先刪除本地標簽,然后通過?git push?命令將刪除操作同步到遠程倉庫,命令格式如下:

git push origin :<tagname>

例如,刪除遠程倉庫中的?v2.0?標簽:

git push origin :refs/tags/v2.0

使用標簽

在實際開發中,當需要切換到某個標簽對應的版本時,可以使用?git checkout?命令。不過,由于標簽是只讀的,直接?checkout?標簽會讓你處于 “分離 HEAD” 狀態(即 HEAD 指針直接指向某個提交對象,而不是指向某個分支 )。如果要基于標簽創建一個新分支進行開發,可以使用:

git checkout -b <branchname> <tagname>

例如,基于?v2.0?標簽創建一個名為?feature/v2.0-dev?的新分支:

git checkout -b feature/v2.0-dev v2.0

標簽管理是 Git 中一個非常有用的功能,能夠幫助開發者更方便地管理項目版本,追蹤重要的代碼狀態。


Git Flow模型

一般根據不同的環境來設計分支

Git Flow 是一種常用的 Git 分支管理模型,由 Vincent Driessen 提出,適用于大型項目或多人協作的項目,它定義了一系列分支及其使用規則,以規范代碼管理和版本發布流程 ,以下是 Git Flow 模型中主要分支及其作用:

分支名稱適用環境
master主分支生產環境
release預發布分支預發布 / 測試環境
develop開發分支開發環境
feature需求開發分支本地
hotfix緊急修復分支本地

master 分支

  • master 為主分支,該分支為只讀且唯一分支。用于部署到正式發布環境,一般由合并 release 分支得到。
  • 主分支作為穩定的唯一代碼庫,任何情況下不允許直接在 master 分支上修改代碼
  • 產品的功能全部實現后,最終在 master 分支對外發布,另外所有在 master 分支的推送應該打標簽(tag)做記錄,方便追溯。
  • master 分支不可刪除。

release 分支

  • release 為預發布分支,基于本次上線所有的 feature 分支合并到 develop 分支之后,基于 develop 分支創建。可以部署到測試或預發布集群。
  • 命名以 release/ 開頭,建議的命名規則: release/version_publishtime 。
  • release 分支主要用于提交給測試人員進行功能測試。發布提測階段,會以 release 分支代碼為基準進行提測。
  • 如果在 release 分支測試出問題,需要回歸驗證 develop 分支看否存在此問題。
  • release 分支屬于臨時分支,產品上線后可選刪除。

develop 分支

  • develop 為開發分支,基于 master 分支創建的只讀且唯一分支,始終保持最新完成以及 bug 修復后的代碼。可部署到開發環境對應集群。
  • 可根據需求大小程度確定是由 feature 分支合并,還是直接在上面開發(非常不建議)。

feature 分支

  • feature 分支通常為新功能或新特性開發分支,以 develop 分支為基礎創建 feature 分支
  • 命名以 feature/ 開頭,建議的命名規則: feature/user_createtime_feature 。
  • 新特性或新功能開發完成后,開發人員需合到 develop 分支。
  • 一旦該需求發布上線,便將其刪除。

hotfix 分支

  • hotfix 分支為線上 bug 修復分支或叫補丁分支,主要用于對線上的版本進行 bug 修復。當線上出現緊急問題需要馬上修復時,需要基于 master 分支創建 hotfix 分支。
  • 命名以 hotfix/ 開頭,建議的命名規則: hotfix/user_createtime_hotfix
  • 當問題修復完成后,需要合并到 master 分支和 develop 分支并推送遠程。一旦修復上線,便將其刪除。

先相信你自己,然后別人才會相信你。 —— 屠格涅夫

🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀

以上,就是本期的全部內容啦,若有錯誤疏忽希望各位大佬及時指出💐

? 制作不易,希望能對各位提供微小的幫助,可否留下你免費的贊呢🌸?

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

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

相關文章

Druid學習筆記 02、快速使用Druid的SqlParser解析

文章目錄前言本章節源碼描述認識作者官方文檔快速入門demo案例引入依賴獲取到SQL的AST(抽象語法樹)使用visitor完成表、字段、表達式解析匯總總結一、簡介1.1、和Antlr生成Parser的區別1.2、Druid SQL Parser的使用場景二、各種語法支持三、性能四、Druid SQL Parser的代碼結構…

時間復雜度計算(以for循環為例)

本文理論內容來自嚴蔚敏版《數據結構(C語言版 第2版)》 *本文僅為復習時的總結&#xff0c;描述不準確、過程不嚴謹之處&#xff0c;還請理解 一、算法的相關概念 首先復習一下算法的定義及5個重要特性 其次是算法的評價標準 可以看到 時間復雜度 屬于算法評價標準中的高效性…

圖論(1):圖數據結構

目錄 一、圖的定義 1.1 圖的基本概念 1.2 圖的分類 &#xff08;1&#xff09;按邊的方向&#xff1a; &#xff08;2&#xff09;按邊的權值&#xff1a; &#xff08;3&#xff09;按邊的數量和類型&#xff1a; &#xff08;4&#xff09;按連通性&#xff1a; 1.3 圖…

等保測評-Nginx中間件

Nginx *排查有無Nginx中間件&#xff0c;可使用以下命令&#xff1a; ps -ef | grep nginx、netstat -nutlp *確認Nginx中間件有運行&#xff0c;查看其目錄&#xff1a; find / -name nginx.conf、ps -ef | grep Nginx *確認好目錄后&#xff0c;查看版本&#xff1a; …

Milvus向量數據庫版本升級

創建時間&#xff1a;2025-3-11 更新時間&#xff1a;2025-8-8 作者&#xff1a;薄刀刀、散裝DBA 聯系方式&#xff1a;bulkdba&#xff0c;1511777 背景&#xff1a;當前版本無法使用分組搜索功能&#xff0c;通過升級版本解決&#xff0c;計劃將milvus升級到2.4.15&#xf…

若依前后端分離版學習筆記(六)——JWT

在上一節已經提到了傳統Session認證和JWT認證內容&#xff0c;這一節對JWT進行更加詳細的了解。 一 JWT介紹 1、傳統的session認證 1.1 傳統session認證流程 1.用戶向服務器發送用戶名和密碼 2.服務器通過驗證后&#xff0c;在當前對話&#xff08;session&#xff09;中保存相…

如何永久刪除三星手機中的照片?

如果你計劃出售你的三星 Galaxy 手機&#xff0c;或者整理其接近滿容量的存儲空間&#xff0c;你可能會擔心如何從設備中移除照片和其他文件。這對于確保你的個人信息保持安全至關重要&#xff0c;即使你選擇通過各種平臺捐贈或出售舊手機也是如此。在本文中&#xff0c;我們介…

【數字圖像處理系列筆記】Ch06:圖像壓縮

一、基礎知識信源編碼器&#xff1a;減少或消除輸入圖像中的編碼冗余、像素 間冗余以及心理視覺冗余。 數據的冗余 一、空間冗余&#xff08;Spatial Redundancy&#xff09;1. 定義圖像中相鄰像素間的強相關性導致的冗余 —— 同一區域內相鄰像素的像素值&#xff08;如灰度、…

windows線程基礎

Windows線程機制詳解 線程的基本概念 在Windows操作系統中&#xff0c;線程是程序執行的最小單位。每個進程至少包含一個線程&#xff08;主線程&#xff09;&#xff0c;但可以創建多個線程來并行執行任務。線程與進程的主要區別在于&#xff1a; 資源分配&#xff1a;進程擁有…

Numpy科學計算與數據分析:Numpy隨機數生成入門

Numpy隨機數生成實戰 學習目標 通過本課程&#xff0c;學員將掌握如何使用Numpy庫生成不同類型的隨機數&#xff0c;包括隨機整數、隨機浮點數以及從特定分布中抽樣的方法。本課程將通過理論講解與實踐操作相結合的方式&#xff0c;幫助學員深入理解Numpy在隨機數生成方面的強…

使用 C# 通過 .NET 框架開發應用程序的安裝與環境配置

文章目錄1. .NET介紹2. IDE2.1 Rider 安裝2.2 Visual Studio 安裝3. SDK安裝與環境配置3.1 單獨下載安裝 .NET SDK3.2 Visual Studio 工作負荷安裝SDK4. 相關問題4.1 我以前使用 Unity 寫 C# 腳本不需要額外的編譯器&#xff0c;為什么現在需要&#xff1f;1. .NET介紹 .NET 是…

Scikit-learn - 機器學習庫初步了解

目錄1. 主要算法分類1.1 監督學習 (Supervised Learning)1.2 非監督學習 (Unsupervised Learning)1.3 半監督學習 (Semi-Supervised Learning)1.4 強化學習 (Reinforcement Learning)1.5 遺傳算法 (Genetic Algorithm)2. 選擇合適的機器學習模型2.1 分類 (Classification)2.2 回…

關于 idea 里 properties 文件的中文亂碼問題

背景 你會發現 properties 文件里的中文可能會出現亂碼。 這個因為 properties 規范是使用 iso-8859-1 存儲的&#xff0c;不支持中文&#xff08;也不支持西歐里法語、德語里奇怪的字母&#xff09; properties 的標準制定于很早&#xff0c;所以沒考慮這么多&#xff0c;prop…

BVH文件 解析 解讀的python第三方類庫 推薦

我們面臨多個第三方庫選項用于解析BVH文件&#xff0c;根據您的列表&#xff0c;我將分析幾個關鍵庫的特點&#xff0c;并推薦最適合當前任務的庫。我們將基于以下標準進行選擇&#xff1a; ??功能性??&#xff1a;是否能準確解析關節角度數據&#xff0c;支持關鍵幀操作 ?…

uni-app X能成為下一個Flutter嗎?

哈嘍&#xff0c;我是老劉 老劉使用Flutter作為客戶端主要技術棧的這六七年的時間里&#xff0c;關于跨平臺開發的爭議和新技術始終沒有停過。 “一套代碼&#xff0c;多端運行”——這個讓無數開發者心動的承諾&#xff0c;究竟是技術革命還是美麗的謊言&#xff1f; 想象一…

Spring Cloud Gateway全棧實踐:動態路由能力與WebFlux深度整合

一、為什么需要下一代網關&#xff1f; 傳統網關的三大瓶頸&#xff1a; #mermaid-svg-Kdei9Io6KntYGQc4 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Kdei9Io6KntYGQc4 .error-icon{fill:#552222;}#mermaid-svg-…

MongoDB數據存儲界的瑞士軍刀:cpolar內網穿透實驗室第513號挑戰

軟件名稱&#xff1a;MongoDB 操作系統支持&#xff1a;Linux、Windows、macOS&#xff08;Docker版全平臺通用&#xff01;&#xff09; 軟件介紹&#xff1a; MongoDB是一個基于分布式架構的NoSQL數據庫&#xff0c;擅長處理復雜數據類型&#xff08;如嵌套對象、數組&…

SPI TFT全彩屏幕驅動開發及調試

簡介SPI&#xff08;Serial Peripheral Interface&#xff09;是一種廣泛使用的串行通信協議&#xff0c;常用于微控制器&#xff08;MCU&#xff09;與外圍設備&#xff08;如傳感器、顯示屏、存儲器等&#xff09;之間的通信。SPI具有全雙工傳輸、主從結構和較高的傳輸速率&a…

Linux學習—數據結構(鏈表2)

1.單向鏈表6.鏈表的查找在鏈表中找到指定的第一個元素沿用遍歷思想&#xff0c;每次訪問一個節點元素判斷是否為要找的節點符合條件返回該節點地址到最后沒有找到符號條件的節NULLlinknode *find_linklist(linknode *phead, datatype tmpdata) {linknode *ptmpnode NULL;ptmpn…

MySQL 備份利器 Xtrabackup 全解析:從部署到恢復的實戰指南

數據庫備份恢復是 DBA 的 “保命” 技能&#xff0c;生產業務不僅要保證有合適的備份策略&#xff0c;也要定期驗證備份的有效性和恢復演練流程&#xff0c;因為數據恢復和驗證可能會涉及多方合作&#xff0c;演練可以讓災難真正發生時&#xff0c;多方配合有條不紊的將數據恢復…