Git 使用大全:從入門到精通

在這里插入圖片描述

Git 是目前最流行的分布式版本控制系統,被廣泛應用于軟件開發中。本文將全面介紹 Git 的各種功能和使用方法,包含大量代碼示例和實踐建議。

文章目錄

    • Git 基礎概念
      • 版本控制系統
      • Git 的特點
      • Git 的三個區域
      • Git 文件狀態
    • Git 安裝與配置
      • 安裝 Git
        • Linux
        • macOS
        • Windows
      • 初始配置
    • Git 倉庫創建與管理
      • 初始化新倉庫
      • 克隆現有倉庫
      • 查看倉庫狀態
      • 忽略文件
    • Git 基本工作流程
      • 添加文件到暫存區
      • 提交更改
      • 查看提交歷史
      • 比較差異
    • Git 分支管理
      • 創建與切換分支
      • 合并分支
      • 解決沖突
      • 變基 (Rebase)
    • Git 遠程倉庫操作
      • 查看遠程倉庫
      • 添加/移除遠程倉庫
      • 獲取與拉取
      • 推送
    • Git 撤銷與回退
      • 撤銷工作目錄修改
      • 撤銷暫存區修改
      • 修改最后一次提交
      • 回退提交
      • 恢復刪除的文件
    • Git 標簽管理
      • 創建標簽
      • 查看標簽
      • 推送標簽
      • 刪除標簽
      • 檢出標簽
    • Git 高級操作
      • 儲藏更改
      • 二分查找
      • 子模塊
      • 重寫歷史
      • 打包與歸檔
    • Git 協作工作流
      • 集中式工作流
      • 功能分支工作流
      • Git Flow
      • Forking 工作流
    • Git 問題排查
      • 查看文件修改歷史
      • 查找問題提交
      • 恢復丟失的提交
      • 清理倉庫
    • Git 最佳實踐
      • 提交規范
      • 分支命名規范
      • 工作流程建議
      • 大型項目建議
      • 安全性建議
    • 總結

在這里插入圖片描述

Git 基礎概念

版本控制系統

版本控制系統 (Version Control System, VCS) 是記錄文件內容變化,以便將來查閱特定版本修訂情況的系統。

Git 的特點

  1. 分布式:每個開發者都有完整的倉庫副本
  2. 高效:大部分操作在本地完成
  3. 完整性:使用 SHA-1 哈希保證數據完整性
  4. 靈活性:支持多種非線性開發流程

Git 的三個區域

  1. 工作目錄 (Working Directory):實際文件所在目錄
  2. 暫存區 (Staging Area):準備提交的文件快照
  3. Git 倉庫 (Repository):永久存儲的文件快照

Git 文件狀態

  1. 未跟蹤 (Untracked):新文件,未被 Git 管理
  2. 已修改 (Modified):文件已修改但未暫存
  3. 已暫存 (Staged):文件已修改并標記為下次提交
  4. 已提交 (Committed):文件已安全保存在本地數據庫

Git 安裝與配置

安裝 Git

Linux
# Debian/Ubuntu
sudo apt-get install git# Fedora
sudo dnf install git# CentOS
sudo yum install git
macOS
# 使用 Homebrew
brew install git# 或下載官方安裝包
https://git-scm.com/download/mac
Windows

下載 Git for Windows: https://git-scm.com/download/win

初始配置

配置用戶信息:

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

配置默認編輯器:

git config --global core.editor "vim"

查看配置:

git config --list

常用別名配置:

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'

Git 倉庫創建與管理

初始化新倉庫

mkdir my-project
cd my-project
git init

克隆現有倉庫

git clone https://github.com/user/repo.git
git clone https://github.com/user/repo.git my-local-folder  # 指定本地目錄名
git clone --depth 1 https://github.com/user/repo.git  # 淺克隆,只獲取最新版本

查看倉庫狀態

git status
git status -s  # 簡潔輸出

忽略文件

創建 .gitignore 文件:

# 忽略所有 .a 文件
*.a# 但跟蹤所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a# 忽略當前目錄下的 TODO 文件
/TODO# 忽略 build/ 目錄下的所有文件
build/# 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt# 忽略 doc/ 目錄下所有 .pdf 文件
doc/**/*.pdf# 忽略所有 .log 文件
*.log# 忽略 node_modules 目錄
node_modules/# 忽略 .env 環境文件
.env

Git 基本工作流程

添加文件到暫存區

git add file1.txt  # 添加單個文件
git add file2.txt file3.txt  # 添加多個文件
git add .  # 添加所有修改和新文件
git add -A  # 添加所有修改、新文件和刪除操作
git add -u  # 添加所有修改和刪除,但不包括新文件
git add -p  # 交互式添加

提交更改

git commit -m "Initial commit"  # 簡單提交
git commit -a -m "Commit all changes"  # 跳過暫存區,直接提交所有已跟蹤文件的修改
git commit --amend  # 修改最后一次提交
git commit --amend --no-edit  # 修改最后一次提交但不修改提交信息

查看提交歷史

git log
git log -p  # 顯示每次提交的內容差異
git log -2  # 顯示最近2次提交
git log --stat  # 顯示簡略統計信息
git log --pretty=oneline  # 單行顯示
git log --pretty=format:"%h - %an, %ar : %s"
git log --since=2.weeks  # 顯示兩周內的提交
git log --author="John"  # 按作者篩選
git log --grep="bug fix"  # 按提交信息篩選
git log -S"function_name"  # 按代碼內容篩選
git log -- path/to/file  # 查看特定文件的修改歷史
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit  # 漂亮的圖形化輸出

比較差異

git diff  # 工作目錄與暫存區的差異
git diff --staged  # 暫存區與最后一次提交的差異
git diff HEAD  # 工作目錄與最后一次提交的差異
git diff branch1..branch2  # 兩個分支間的差異
git diff commit1 commit2  # 兩次提交間的差異
git diff --name-only commit1 commit2  # 只顯示有差異的文件名
git diff --word-diff  # 單詞級別的差異

Git 分支管理

創建與切換分支

git branch  # 查看本地分支
git branch -a  # 查看所有分支(包括遠程)
git branch new-branch  # 創建新分支
git checkout branch-name  # 切換分支
git checkout -b new-branch  # 創建并切換到新分支
git checkout -b new-branch origin/remote-branch  # 基于遠程分支創建本地分支
git branch -d branch-name  # 刪除已合并的分支
git branch -D branch-name  # 強制刪除分支
git branch -m old-name new-name  # 重命名分支
git branch --merged  # 查看已合并到當前分支的分支
git branch --no-merged  # 查看未合并到當前分支的分支

合并分支

git merge branch-name  # 合并指定分支到當前分支
git merge --no-ff branch-name  # 禁用快進合并
git merge --squash branch-name  # 壓縮合并
git merge --abort  # 中止合并

解決沖突

當合并發生沖突時,Git 會在沖突文件中標記沖突部分:

<<<<<<< HEAD
當前分支的內容
=======
要合并的分支的內容
>>>>>>> branch-name

手動解決沖突后:

git add resolved-file.txt
git commit

變基 (Rebase)

git rebase branch-name  # 將當前分支變基到指定分支
git rebase --continue  # 解決沖突后繼續變基
git rebase --abort  # 中止變基
git rebase -i HEAD~3  # 交互式變基,修改最近3次提交

交互式變基常用操作:

  • pick: 使用提交
  • reword: 使用提交但修改提交信息
  • edit: 使用提交但暫停修改
  • squash: 將提交合并到前一個提交
  • fixup: 類似 squash 但丟棄提交信息
  • drop: 刪除提交

Git 遠程倉庫操作

查看遠程倉庫

git remote  # 列出遠程倉庫
git remote -v  # 顯示遠程倉庫URL
git remote show origin  # 顯示遠程倉庫詳細信息

添加/移除遠程倉庫

git remote add origin https://github.com/user/repo.git  # 添加遠程倉庫
git remote rename origin new-name  # 重命名遠程倉庫
git remote remove origin  # 移除遠程倉庫
git remote set-url origin https://github.com/user/new-repo.git  # 修改遠程倉庫URL

獲取與拉取

git fetch origin  # 從遠程獲取最新信息但不合并
git fetch --prune  # 清理已不存在的遠程分支的本地引用
git pull origin master  # 獲取并合并遠程分支
git pull --rebase  # 使用變基方式拉取

推送

git push origin master  # 推送本地分支到遠程
git push -u origin master  # 推送并設置上游分支
git push origin --delete branch-name  # 刪除遠程分支
git push origin --tags  # 推送所有標簽
git push origin HEAD  # 推送當前分支
git push --force  # 強制推送(慎用)
git push --force-with-lease  # 更安全的強制推送

Git 撤銷與回退

撤銷工作目錄修改

git checkout -- file.txt  # 撤銷工作目錄中文件的修改
git checkout -- .  # 撤銷所有工作目錄修改

撤銷暫存區修改

git reset HEAD file.txt  # 將文件從暫存區移出
git reset HEAD .  # 將所有文件從暫存區移出

修改最后一次提交

git commit --amend  # 修改提交信息或內容
git commit --amend --no-edit  # 修改提交內容但不修改信息

回退提交

git reset --soft HEAD~1  # 回退提交但保留修改在暫存區
git reset --mixed HEAD~1  # 回退提交并保留修改在工作目錄(默認)
git reset --hard HEAD~1  # 徹底回退提交,丟棄所有修改
git revert HEAD  # 創建新提交來撤銷之前的提交

恢復刪除的文件

git checkout HEAD -- deleted-file.txt  # 恢復已刪除的文件
git checkout $(git rev-list -n 1 HEAD -- deleted-file.txt)^ -- deleted-file.txt  # 恢復在之前提交中刪除的文件

Git 標簽管理

創建標簽

git tag v1.0  # 輕量標簽
git tag -a v1.0 -m "Version 1.0"  # 附注標簽
git tag -a v1.0 9fceb02  # 給特定提交打標簽
git tag -s v1.0 -m "Signed version 1.0"  # 簽名標簽

查看標簽

git tag  # 列出所有標簽
git show v1.0  # 查看標簽詳情
git tag -l "v1.*"  # 過濾標簽

推送標簽

git push origin v1.0  # 推送單個標簽
git push origin --tags  # 推送所有標簽

刪除標簽

git tag -d v1.0  # 刪除本地標簽
git push origin --delete v1.0  # 刪除遠程標簽
git push origin :refs/tags/v1.0  # 另一種刪除遠程標簽的方式

檢出標簽

git checkout v1.0  # 檢出標簽(進入分離頭指針狀態)
git checkout -b version1 v1.0  # 基于標簽創建新分支

Git 高級操作

儲藏更改

git stash  # 儲藏當前工作目錄和暫存區的修改
git stash save "message"  # 帶消息的儲藏
git stash list  # 列出所有儲藏
git stash apply  # 應用最近的儲藏
git stash apply stash@{1}  # 應用特定儲藏
git stash pop  # 應用并移除最近的儲藏
git stash drop stash@{1}  # 刪除特定儲藏
git stash clear  # 清除所有儲藏
git stash branch new-branch  # 從儲藏創建新分支
git stash -u  # 儲藏包括未跟蹤文件
git stash -a  # 儲藏包括所有文件(包括.gitignore忽略的)

二分查找

git bisect start  # 開始二分查找
git bisect bad  # 當前版本有問題
git bisect good v1.0  # v1.0版本是好的
git bisect reset  # 結束二分查找
git bisect run test-script.sh  # 自動運行測試腳本進行二分查找

子模塊

git submodule add https://github.com/user/repo.git path/to/submodule  # 添加子模塊
git submodule init  # 初始化子模塊
git submodule update  # 更新子模塊
git submodule update --init --recursive  # 遞歸初始化并更新所有子模塊
git submodule foreach 'git checkout master'  # 對所有子模塊執行命令
git clone --recurse-submodules https://github.com/user/repo.git  # 克隆包含子模塊的倉庫

重寫歷史

git filter-branch --tree-filter 'rm -f passwords.txt' HEAD  # 從所有提交中刪除文件
git filter-branch --commit-filter 'if [ "$GIT_AUTHOR_EMAIL" = "old@email.com" ];thenGIT_AUTHOR_NAME="New Name";GIT_AUTHOR_EMAIL="new@email.com";git commit-tree "$@";elsegit commit-tree "$@";fi' HEAD  # 修改作者信息

注意:重寫歷史會改變提交哈希,只適用于尚未共享的提交。

打包與歸檔

git bundle create repo.bundle HEAD master  # 創建包含master分支的bundle文件
git clone repo.bundle repo -b master  # 從bundle文件克隆
git archive --format=zip HEAD > archive.zip  # 創建當前提交的zip歸檔
git archive --format=tar --prefix=project/ HEAD | gzip > project.tar.gz  # 創建帶前綴的tar.gz歸檔

Git 協作工作流

集中式工作流

  1. 開發者克隆中央倉庫
  2. 在本地提交更改
  3. 推送更改到中央倉庫
  4. 解決沖突(如果有)

功能分支工作流

  1. 為每個新功能創建獨立分支
  2. 在功能分支上開發
  3. 完成后合并到主分支
  4. 刪除功能分支
git checkout -b new-feature
# 開發功能...
git commit -a -m "Implement new feature"
git checkout master
git merge new-feature
git branch -d new-feature

Git Flow

Git Flow 是一種流行的分支模型,定義嚴格的分支角色和交互方式。

主要分支:

  • master: 生產代碼
  • develop: 集成開發分支

支持分支:

  • feature/*: 功能開發分支
  • release/*: 準備發布分支
  • hotfix/*: 緊急修復分支
# 初始化Git Flow
git flow init# 開始新功能
git flow feature start myfeature# 完成功能
git flow feature finish myfeature# 發布新版本
git flow release start 1.0.0
git flow release finish 1.0.0# 緊急修復
git flow hotfix start 1.0.1
git flow hotfix finish 1.0.1

Forking 工作流

  1. 開發者fork中央倉庫
  2. 克隆自己的fork到本地
  3. 創建功能分支開發
  4. 推送更改到自己的fork
  5. 創建Pull Request請求合并到中央倉庫
# 克隆fork的倉庫
git clone https://github.com/yourname/repo.git# 添加上游倉庫
git remote add upstream https://github.com/original/repo.git# 獲取上游更改
git fetch upstream
git merge upstream/master# 創建功能分支
git checkout -b new-feature# 開發完成后推送到自己的fork
git push origin new-feature# 然后在GitHub上創建Pull Request

Git 問題排查

查看文件修改歷史

git blame file.txt  # 查看文件的逐行修改歷史
git blame -L 10,20 file.txt  # 查看特定行的修改歷史
git log -p file.txt  # 查看文件的完整修改歷史
git show commit-id:file.txt  # 查看特定提交中的文件內容

查找問題提交

git bisect start  # 開始二分查找
git bisect bad  # 標記當前版本有問題
git bisect good v1.0  # 標記v1.0版本是好的
# Git會自動檢出中間版本,你測試后標記good或bad
git bisect reset  # 結束二分查找

恢復丟失的提交

git reflog  # 查看所有HEAD指向的歷史
git fsck --lost-found  # 查找懸空對象
git show commit-id  # 檢查找到的提交
git merge commit-id  # 恢復丟失的提交

清理倉庫

git gc  # 清理不必要的文件并優化本地倉庫
git clean -n  # 顯示將被刪除的未跟蹤文件(干跑)
git clean -f  # 刪除未跟蹤文件
git clean -fd  # 刪除未跟蹤文件和目錄
git prune  # 刪除懸空對象

Git 最佳實踐

提交規范

  1. 提交信息應清晰描述修改內容
  2. 第一行不超過50字符,作為摘要
  3. 第二行空行
  4. 第三行開始詳細說明(如有必要)
  5. 使用現在時態、命令語氣(如"Fix bug"而非"Fixed bug")

示例:

Summarize changes in around 50 characters or lessMore detailed explanatory text, if necessary. Wrap it to about 72
characters or so. In some contexts, the first line is treated as the
subject of the commit and the rest of the text as the body. The
blank line separating the summary from the body is critical (unless
you omit the body entirely); various tools like `log`, `shortlog`
and `rebase` can get confused if you run the two together.Explain the problem that this commit is solving. Focus on why you
are making this change as opposed to how (the code explains that).
Are there side effects or other unintuitive consequences of this
change? Here's the place to explain them.Further paragraphs come after blank lines.- Bullet points are okay, too- Typically a hyphen or asterisk is used for the bullet, precededby a single space, with blank lines in between, but conventionsvary here

分支命名規范

  1. feature/*: 新功能開發
  2. bugfix/*: 錯誤修復
  3. hotfix/*: 緊急修復
  4. release/*: 版本發布準備
  5. docs/*: 文檔更新
  6. test/*: 測試相關

工作流程建議

  1. 頻繁提交,原子性提交(每個提交只做一件事)
  2. 在推送前整理本地提交歷史
  3. 使用分支進行功能開發和問題修復
  4. 定期從上游拉取更改
  5. 使用Pull Request進行代碼審查

大型項目建議

  1. 使用子模塊或子樹管理依賴
  2. 使用淺克隆減少下載量
  3. 使用稀疏檢出只獲取需要的文件
  4. 使用Git LFS管理大文件
# 淺克隆
git clone --depth 1 https://github.com/user/repo.git# 稀疏檢出
git init repo
cd repo
git remote add origin https://github.com/user/repo.git
git config core.sparseCheckout true
echo "some/dir/" >> .git/info/sparse-checkout
git pull origin master

安全性建議

  1. 不要提交敏感信息(密碼、密鑰等)
  2. 使用.gitignore忽略不必要的文件
  3. 定期檢查提交歷史中的敏感信息
  4. 必要時重寫歷史刪除敏感信息
# 檢查歷史中是否包含敏感信息
git log -p | grep "password"

總結

Git 是一個功能強大且靈活的工具,掌握它可以極大提高開發效率。本文涵蓋了 Git 的各個方面,從基礎操作到高級技巧,從個人使用到團隊協作。建議讀者在實際項目中多加練習,逐步掌握 Git 的各種功能。

記住,Git 的核心概念是快照而非差異,理解這一點有助于更好地使用 Git。同時,遵循最佳實踐可以使版本控制更加高效和安全。

Git 的學習曲線可能較陡峭,但一旦掌握,它將成為你開發工作中不可或缺的利器。

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

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

相關文章

SpringBoot 框架第 1 次接口調用慢

文章目錄 背景分析思路 1:DeepSeek 分析思路 2:日志分析思路 3:Arthas 分析下載 Arthas啟動 Arthastrace 調用耗時分析Controller 調用耗時Service 調用分析ServiceImpl 耗時分析IService 耗時分析BaseMapper 耗時分析debug 執行鏈路MyBatisMapperProxy 解讀解決思路 1:預熱…

數據分析Agent構建

數據分析agent構建 代碼資料來源于 Streamline-Analyst&#xff0c;旨在通過該倉庫上的代碼了解如何使用大語言模型構建數據分析工具&#xff1b; 個人倉庫&#xff1a;Data-Analysis-Agent-Tutorial 不同的在于 Data-Analysis-Agent-Tutorial 是在 Streamline-Analyst 基礎…

Java后端檢查空條件查詢

通過拋出運行異常&#xff1a;throw new RuntimeException("請輸入查詢條件&#xff01;");BranchWarehouseServiceImpl.java // 查詢試劑交易&#xff08;入庫/出庫&#xff09;記錄Overridepublic List<BranchWarehouseTransactions> queryForReagent(Branch…

6??Go 語言中的哈希、加密與序列化:通往區塊鏈世界的鑰匙

Go 語言中的哈希、加密與序列化:通往區塊鏈世界的鑰匙 一、前言:離區塊鏈還有多遠? 區塊鏈聽起來可能遙不可及,似乎是只有密碼學專家和資深工程師才能涉足的領域。但事實上,構建一個區塊鏈的核心并不復雜,尤其當你已經掌握了一門系統編程語言,比如 Go。 要真正理解區…

python爬蟲——氣象數據爬取

一、導入庫與全局配置 python 運行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入數據解析、網絡請求、時間處理、數據庫操作等所需庫。requests&#xff1a;發送 …

Python爬蟲(三):BeautifulSoup庫

1. BeautifulSoup是什么&#xff1f; BeautifulSoup 是一個 Python 庫&#xff0c;專門用來解析 HTML 或 XML 文件&#xff0c;方便我們提取數據。它能把網頁源代碼轉換成樹形結構&#xff0c;讓我們可以輕松查找、修改內容&#xff0c;并自動處理編碼問題&#xff08;如 Unic…

AI電銷機器人智能的發展趨勢是什么?

AI電銷機器人智能的發展趨勢是什么&#xff1f;電銷機器人智能的發展前景怎么樣&#xff1f;隨著互聯網技術的不斷發展&#xff0c;AI電銷機器人智能已經成為了許多企業實現銷售數字化轉型的重要工具&#xff0c;我們一起來看看。 AI電銷機器人正突破傳統語音機械應答的邊界&a…

C++ 求圓面積的程序(Program to find area of a circle)

給定半徑r&#xff0c;求圓的面積。圓的面積應精確到小數點后5位。 例子&#xff1a; 輸入&#xff1a;r 5 輸出&#xff1a;78.53982 解釋&#xff1a;由于面積 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因為我們只保留小數點后 5 位數字。 輸…

C++_哈希表

本篇文章是對C學習的哈希表部分的學習分享 相信一定會對你有所幫助~ 那咱們廢話不多說&#xff0c;直接開始吧&#xff01; 一、基礎概念 1. 哈希核心思想&#xff1a; 哈希函數的作用&#xff1a;通過此函數建立一個Key與存儲位置之間的映射關系。理想目標&#xff1a;實現…

Mac M芯片 RAG 極簡流程 安裝 ragflow + LM studio

本文基于 【【知識科普】【純本地化搭建】【不本地也行】DeepSeek RAGFlow 構建個人知識庫】 https://www.bilibili.com/video/BV1WiP2ezE5a/?share_sourcecopy_web&vd_source9a55f12dd64d8e30ab6c0efc62844343 1 .docker-compose yml文件修改,指定平臺 platform: linux/…

Rsync+inotify+nfs實現數據實時備份方案

技術棧 NFS是 Network File System的簡寫&#xff0c;即網絡文件系統。NFS的優點是內核直接支持&#xff0c;部署簡單、運行穩定&#xff0c;協議簡單、傳輸效率高。缺點是僅依靠IP地址或主機名來決定用戶能否掛載共享目錄&#xff0c;容易出現單點故障。 rsync是linux系統下的…

Vue ⑥-路由

單頁應用程序 單頁應用程序&#xff0c;即 Single-Page Application&#xff0c;簡稱 SPA&#xff0c;是一種使用 JavaScript、HTML 和 CSS 構建的 Web 應用程序。SPA 的核心是前端路由&#xff0c;它使得用戶在訪問網站時&#xff0c;只需加載一次頁面&#xff0c;然后通過前…

Hadoop復習(九)

Azkaban工作流管理器 選擇 問題 1 判斷題 2 / 2 分 工作流是指具有依賴的一組job任務&#xff0c;被依賴的job任務最后執行 正確 錯誤 問題 2 判斷題 2 / 2 分 Azkaban兼容任何版本的Hadoop 正確 錯誤 問題 3 判斷題 2 / 2 分 獨立服務器模式下&#xff0c;Azkab…

SpringMVC相關知識(二)

一.重定向和轉發 1.ModelandView 設置ModelAndView對象 , 根據view的名稱 , 和視圖解析器跳到指定的頁面 頁面 : {視圖解析器前綴} viewName {視圖解析器后綴} 相關代碼&#xff1a; <!-- 視圖解析器 --> <bean class"org.springframework.web.servlet.vi…

std::ratio 簡單使用舉例

author: hjjdebug date: 2025年 06月 09日 星期一 14:28:40 CST descrip: std::ratio 簡單使用舉例 文章目錄 1. 先看一個簡單的例子 1/2/1/35/62 std::ratio 的手冊頁3. std::ratio_add 到底是什么呢&#xff1f;4. 代碼注釋5. 加深理解.6. 自定義的std::ratio 與 std::ratio_…

Docker 優勢與缺點全面解析:容器技術的利與弊

在當今云計算、微服務、DevOps盛行的時代&#xff0c;Docker 幾乎成了開發者、運維工程師的標配工具之一。自2013年誕生以來&#xff0c;Docker 以其輕量、快速、易移植的特點&#xff0c;徹底改變了應用的構建、交付與部署方式。 但任何技術都有兩面性&#xff0c;Docker 也不…

大語言模型(LLM)中的KV緩存壓縮與動態稀疏注意力機制設計

隨著大語言模型&#xff08;LLM&#xff09;參數規模的增長&#xff0c;推理階段的內存占用和計算復雜度成為核心挑戰。傳統注意力機制的計算復雜度隨序列長度呈二次方增長&#xff0c;而KV緩存的內存消耗可能高達數十GB&#xff08;例如Llama2-7B處理100K token時需50GB內存&a…

排序算法總結(C++)

目錄 一、穩定性二、排序算法選擇、冒泡、插入排序歸并排序隨機快速排序堆排序基數排序計數排序 三、總結 一、穩定性 排序算法的穩定性是指&#xff1a;同樣大小的樣本 **&#xff08;同樣大小的數據&#xff09;**在排序之后不會改變原始的相對次序。 穩定性對基礎類型對象…

使用Redis作為緩存優化ElasticSearch讀寫性能

在現代數據密集型應用中,ElasticSearch憑借其強大的全文搜索能力成為許多系統的首選搜索引擎。然而,隨著數據量和查詢量的增長,ElasticSearch的讀寫性能可能會成為瓶頸。本文將詳細介紹如何使用Redis作為緩存層來顯著提升ElasticSearch的讀寫性能,包括完整的架構設計、詳細…

獲取wordpress某個欄目的內容數量

獲取wordpress某個欄目的內容數量 <?php // 將以下 8 改成你的分類 ID 即可echo get_category(8)->count;?> 在制作wordpress模板時&#xff0c;有時會需要調用某個分類目錄下的所有內容數量&#xff0c;通過這段簡潔的代碼就可以實現。 給WordPress自定義字段加…