Git版本控制工具的原理及應用詳解(四)

本系列文章簡介:

????????隨著軟件開發的復雜性不斷增加,版本控制成為了開發團隊中不可或缺的工具之一。在過去的幾十年里,版本控制工具經歷了各種發展和演變,其中Git無疑是目前最受歡迎和廣泛應用的版本控制工具之一。

????????Git的出現為開發者們帶來了許多便利和效率提升,但對于初學者來說,Git的原理和應用可能會顯得有些復雜和困惑。本系列文章將詳細介紹Git的原理和應用,幫助大家全面了解Git并能夠熟練運用。

????????在本系列文章中,我們將首先介紹版本控制的基本概念和作用,以及為什么需要使用版本控制工具。接下來,我們將深入剖析Git的原理,包括工作區、暫存區和倉庫的概念,以及Git的基本操作和常用命令。我們還將討論分支管理、合并和沖突解決等高級話題,幫助大家更好地理解和運用Git。

????????除了理論知識的介紹,本系列文章還將提供大量的實例和實戰經驗,幫助大家更好地理解和應用Git。我們將介紹如何在團隊協作中使用Git,如何利用分支進行開發和版本控制,以及如何解決常見的沖突和問題。通過學習本系列文章,讀者將能夠掌握Git的基本原理和應用技巧,并能夠在實際項目中運用Git進行版本控制和團隊協作。

????????無論是初學者還是有一定經驗的開發者,本系列文章都能為你提供有價值的知識和技巧。希望本系列文章能夠幫助你深入理解和應用Git,提升你的開發效率和團隊協作能力。讓我們一起開始這段關于Git的學習之旅吧!

????????歡迎大家訂閱《Java技術棧高級攻略》專欄(PS:近期會漲價),一起學習,一起漲分!

一、引言

????????Git 是一個分布式版本控制系統(Distributed Version Control System, DVCS),用于跟蹤和管理文件(如源代碼)的更改。與傳統的集中式版本控制系統(如 Subversion 或 CVS)不同,Git 將每個開發者的工作目錄視為一個完整的代碼倉庫,允許開發者在本地進行提交、查看版本歷史、創建分支和合并更改等操作,而不必連接到中心服務器。

????????本文將跟隨《Git版本控制工具的原理及應用詳解(三)》的進度,繼續介紹Git版本控制工具。希望通過本系列文章的學習,您將能夠更好地理解Git版本控制工具的內部工作原理,掌握Git版本控制工具的使用技巧,以及通過合理的設計完成最佳實踐,充分發揮優化Git版本控制工具的潛力,為系統的高效運行提供有力保障。

二、Git版本控制工具的原理

2.1?Git Flow

2.1.1 介紹Git Flow的基本概念和工作流程

Git Flow是一個基于Git的代碼管理模型,旨在幫助開發團隊更有效地協同工作,特別是在處理復雜項目時。以下是Git Flow的基本概念和工作流程的詳細介紹:

基本概念

  1. 分支類型:Git Flow模型定義了兩種主要的分支類型:主分支(master、develop)和輔助分支(feature、release、hotfix)。

    • 主分支:master分支是項目的主線,包含了已經發布到生產環境的代碼。develop分支是開發主線,包含了所有已經開發完成但還未發布的代碼。
    • 輔助分支:feature分支用于開發新功能,每個功能對應一個feature分支。release分支用于準備發布新版本,基于develop分支創建。hotfix分支用于快速修復生產環境中的緊急問題,基于master分支創建。
  2. 開發流程:Git Flow通過定義清晰的分支和合并策略,確保代碼的穩定性和可追溯性。在開發過程中,開發人員首先在feature分支上開發新功能,然后將完成的代碼合并到develop分支進行集成測試。當需要發布新版本時,從develop分支創建release分支進行發布前的測試和修復工作,最后將release分支的代碼合并到master和develop分支。

工作流程

  1. 開始新功能:從develop分支創建一個新的feature分支,用于開發新功能。
  2. 開發新功能:在feature分支上進行新功能的開發。
  3. 完成新功能:當新功能開發完成后,將feature分支的代碼合并到develop分支。
  4. 準備發布:從develop分支創建一個新的release分支,用于發布前的測試和修復工作。
  5. 發布新版本:當release分支的測試通過后,將release分支的代碼合并到master和develop分支,并打上一個標簽(tag)以標記版本號。
  6. 修復生產問題:如果生產環境中出現緊急問題,從master分支創建一個新的hotfix分支進行修復。修復完成后,將hotfix分支的代碼合并到master和develop分支。

總的來說,Git Flow通過定義清晰的分支和合并策略,使得產品、開發與測試等各個部門能夠更高效地協同工作,提高開發效率和質量。

2.1.2 如何在項目中應用Git Flow

在項目中應用Git Flow,你需要遵循Git Flow所定義的工作流程和分支模型。以下是如何在項目中應用Git Flow的基本步驟:

  1. 初始化中央倉庫
    首先,完成中央倉庫的初始化,將新項目搭建起框架后的工程代碼或要轉Git Flow的項目代碼上傳至Git中央倉庫。

  2. 創建主分支
    在Git中央倉庫中,創建兩個主分支:masterdevelop

    • master分支:這個分支應該只包含已經發布到生產環境的代碼。
    • develop分支:這個分支包含了所有已經開發完成但還未發布的代碼。它是日常開發活動的主要分支。
  3. 克隆倉庫并創建分支
    項目負責人克隆中央倉庫到本地,并創建masterdevelop分支的本地副本。然后,將develop分支推送到服務器。

  4. 開發團隊克隆develop分支
    開發團隊中的其他成員克隆中央倉庫的develop分支到本地,形成全體成員統一的唯一的develop分支軌跡。

  5. 從develop分支創建feature分支
    按照需求及成員各自的分工,各個成員可以從develop分支拉取出各自的feature分支進行獨立的開發。

  6. 在feature分支上開發
    在各自的feature分支上開發新功能,并進行必要的測試。

  7. 合并feature分支到develop分支
    當各成員完成各自的功能開發后,需將完成后的代碼提交到feature分支,然后合并到develop分支。這通常涉及代碼審查和測試。

  8. 準備發布
    develop分支上的代碼已經包含了所有即將發布的版本中所計劃包含的軟件功能,并且已通過所有測試時,就可以準備創建release分支了。在release分支上,可以進行小的缺陷修正、準備發布版本所需的各項說明信息(版本號、發布時間、編譯時間等)。

  9. 發布新版本
    release分支準備好后,將其合并到masterdevelop分支。在master分支上打個標簽(tag)來記住Release版本號。然后,可以刪除release分支。

  10. 修復生產問題
    如果在生產環境中發現緊急問題,可以從master分支創建一個新的hotfix分支進行修復。修復完成后,將hotfix分支的代碼合并到masterdevelop分支。

在整個過程中,確保遵循Git Flow的分支模型和合并策略,以保持代碼的清晰和可維護性。同時,使用Git工具(如命令行、Git圖形界面工具等)來執行分支的創建、合并和刪除等操作。

2.2?常見Git命令

2.2.1 列出常用Git命令及其功能

Git是一個廣泛使用的版本控制系統,它提供了許多命令來管理代碼庫和版本歷史。以下是一些常用的Git命令及其功能:

  1. git init

    • 功能:在當前目錄初始化一個新的Git倉庫。
    • 說明:將當前目錄轉化為一個Git倉庫,開始進行版本控制。
  2. git clone [repository]

    • 功能:克隆遠程倉庫到本地。
    • 說明:將遠程倉庫的代碼完整地復制到本地。
  3. git add [file]

    • 功能:將文件添加到暫存區。
    • 說明:將指定文件添加到暫存區,準備提交到版本庫。
  4. git commit -m "message"

    • 功能:提交暫存區的代碼到版本庫。
    • 說明:將暫存區的修改提交到版本庫,并添加一條描述性的提交消息。
  5. git push

    • 功能:將本地代碼推送到遠程倉庫。
    • 說明:將本地的代碼提交到遠程倉庫,同步代碼。
  6. git pull

    • 功能:從遠程倉庫拉取最新的更新。
    • 說明:與遠程倉庫同步,拉取最新的代碼或合并最新的修改。
  7. git branch

    • 功能:查看本地分支。
    • 說明:列出所有本地分支。
  8. git branch -r

    • 功能:列出所有遠程分支。
    • 說明:查看與本地倉庫關聯的遠程倉庫的所有分支。
  9. git branch -a

    • 功能:列出所有本地分支和遠程分支。
    • 說明:同時列出本地和遠程的所有分支。
  10. git branch [branch-name]

    • 功能:創建分支。
    • 說明:創建一個新的本地分支。
  11. git checkout [branch-name]

    • 功能:切換分支。
    • 說明:切換到指定的本地分支。
  12. git merge [branch]

    • 功能:合并分支。
    • 說明:將指定分支的代碼合并到當前分支。
  13. git log

    • 功能:查看歷史記錄。
    • 說明:顯示提交歷史,包括每次提交的哈希值、作者、日期和提交消息。
  14. git status

    • 功能:查看倉庫當前狀態。
    • 說明:顯示當前工作目錄和暫存區的狀態,包括哪些文件已修改、哪些文件已添加到暫存區等。
  15. git revert [commit]

    • 功能:撤銷某次提交。
    • 說明:創建一個新的提交來撤銷指定的提交,但不會改變歷史記錄。
  16. git reset

    • 功能:代碼回滾。
    • 說明:用于撤銷之前的提交或修改。具體用法包括軟重置(保留暫存區的更改)、混合重置(保留工作目錄的更改)和硬重置(丟棄所有更改)。
  17. git tag

    • 功能:標簽管理。
    • 說明:用于給特定的提交打上標簽,方便后續查找和引用。
  18. git stash

    • 功能:暫存更改。
    • 說明:當你有一些未提交的更改但需要切換到其他分支時,可以使用git stash來暫存這些更改,以便稍后恢復。
  19. git remote

    • 功能:遠程倉庫管理。
    • 說明:用于查看、添加、刪除和修改與本地倉庫關聯的遠程倉庫。

這些只是Git命令的冰山一角,Git還提供了許多其他命令和選項來滿足不同的需求。要深入了解Git的完整功能和使用方法,建議查閱Git的官方文檔或相關教程。

2.2.2 示例操作與說明

Git 是一個強大的版本控制系統,它提供了一系列的命令來管理代碼倉庫。以下是一些常見的 Git 命令示例及其說明:

1. 配置用戶信息

  • 查看全局用戶名
    git config --global user.name
  • 設置全局用戶名
    git config --global user.name "Your Name"
  • 查看全局用戶郵箱
    git config --global user.email
  • git config --global user.email "your.email@example.com"

2. 初始化倉庫

  • 初始化一個新的本地倉庫
    git init
    (如果你在一個已經存在的倉庫中,這個命令將不會有任何效果)

3. 克隆倉庫

  • 克隆一個遠程倉庫到本地
    git clone https://github.com/username/repository.git

4. 提交更改

  • 添加文件到暫存區
    git add filename.txt
    或者添加所有更改
    git add .
  • 提交暫存區的更改到本地倉庫
    git commit -m "Commit message"

5. 查看狀態

  • 查看倉庫狀態
    git status

6. 分支操作

  • 查看所有分支
    git branch
  • 創建新分支
    git branch new_branch
  • 切換到分支
    git checkout new_branch
    或者創建并切換到新分支
    git checkout -b new_branch
  • git merge new_branch
  • 刪除分支
    git branch -d new_branch
    (如果分支未被合并,可能會失敗,可以使用?-D?強制刪除)

7. 拉取和推送更改

  • 從遠程倉庫拉取最新更改
    git pull origin branch_name
  • 將本地更改推送到遠程倉庫
    git push origin branch_name

8. 查看提交歷史

  • 查看提交歷史
    git log

9. 撤銷更改

  • 撤銷暫存區的更改
    git reset HEAD filename.txt
  • 撤銷工作區的更改
    git checkout -- filename.txt

10. 其他常用命令

  • 查看 Git 配置
    git config --list
  • 查看 Git 全局設置文件地址
    git config --global --list --show-origin
  • 比較工作區與暫存區的差異
    git diff
  • 比較暫存區與最新提交的差異
    git diff --cached
  • 刪除暫存區的文件
    git rm --cached filename.txt

這些命令涵蓋了 Git 的基本操作和常用功能。在實際使用中,可以根據需要組合和擴展這些命令來管理代碼倉庫。

三、Git版本控制工具的優缺點

3.1 優點

3.1.1 分布式管理,支持無網絡環境下的代碼操作

Git版本控制工具的分布式管理以及支持無網絡環境下的代碼操作是其顯著優點之一。以下是這些優點的詳細解釋:

  1. 分布式管理:

    • 分布式版本控制系統(如Git)允許每個開發者在本地擁有完整的代碼倉庫。這意味著每個開發者都可以在自己的電腦上存儲項目的完整歷史記錄,包括所有提交、分支和標簽。
    • 這種分布式架構使得代碼管理更加靈活和高效。開發者可以在本地進行代碼修改、提交和分支操作,而無需持續連接到中央服務器。這大大減少了網絡依賴,提高了開發效率。
    • 同時,由于每個開發者都擁有完整的代碼倉庫,因此在出現網絡故障或服務器問題時,開發者仍然可以繼續進行開發工作,而不必擔心代碼丟失或無法訪問。
    • 分布式版本控制系統還允許開發者在本地創建私有分支,以進行實驗性或敏感的開發工作。這些分支可以與主分支或其他開發者進行隔離,從而確保代碼的穩定性和安全性。
  2. 支持無網絡環境下的代碼操作:

    • 由于Git的分布式特性,開發者可以在沒有網絡連接的情況下進行代碼操作。他們可以在本地提交代碼、查看歷史記錄、切換分支等,而無需連接到遠程倉庫。
    • 這為開發者提供了極大的靈活性,尤其是在網絡不穩定或無法連接的情況下。開發者可以繼續進行開發工作,并在有網絡連接時將更改推送到遠程倉庫。
    • 此外,Git還支持離線提交。即使在沒有網絡連接的情況下,開發者仍然可以將代碼更改提交到本地倉庫。一旦網絡連接恢復,他們就可以將這些更改推送到遠程倉庫。

3.1.2 靈活高效,支持并行開發

Git版本控制工具在靈活高效以及支持并行開發方面的優點主要體現在以下幾個方面:

  1. 靈活高效

    • 輕量級:Git是一個輕量級的版本控制系統,安裝和使用都非常方便,不會給開發環境帶來過大的負擔。
    • 高效性能:Git的設計目標是高效性能,尤其在大型項目或文件中表現出色。它使用了一些優化技術,例如對文件內容進行壓縮和存儲差異數據,以最小化存儲和傳輸開銷。
    • 快速操作:Git的操作速度非常快,無論是查看狀態、提交更改還是合并分支等,都能迅速完成,大大提高了開發效率。
  2. 支持并行開發

    • 強大的分支管理:Git具有出色的分支管理功能,可以輕松創建、切換和合并分支。這使得多個開發人員可以在不同的分支上同時進行開發工作,而不會相互干擾。
    • 并行開發的好處:Git分支并行開發允許團隊成員在不同的分支上獨立進行開發工作,這樣可以提高開發效率。每個開發人員可以在自己的分支上獨立開發,并且可以隨時切換到其他分支獲取最新的代碼。
    • 合并分支:當開發人員完成各自的功能開發后,可以通過合并分支的方式將代碼整合到主分支中。Git提供了強大的合并策略,可以處理各種復雜的合并場景,確保代碼的正確性和一致性。

3.1.3 完整的歷史記錄,便于追蹤和管理

Git版本控制工具提供完整的歷史記錄功能,這是其最顯著和重要的優點之一。以下是Git在追蹤和管理歷史記錄方面的具體優勢:

  1. 完整的版本歷史
    • Git會保存項目中每一次提交(commit)的完整快照,包括所有的文件及其修改。這意味著你可以隨時查看項目中任何時間點的狀態。
  2. 易于追蹤變更
    • 通過git log命令,你可以查看提交歷史,包括每次提交的作者、日期、提交信息以及所修改的文件列表。這使得追蹤變更變得非常簡單。
    • 你還可以使用git blame命令來查看文件的每一行代碼是由誰修改的,以及何時修改的。
  3. 分支和合并
    • Git支持強大的分支(branch)和合并(merge)功能。你可以輕松地創建新的分支來開發新功能或修復錯誤,并在完成后將分支合并回主分支。由于Git保存了完整的版本歷史,合并操作變得更加容易,因為你可以清楚地看到每個分支的變更。
  4. 撤銷和回滾
    • 如果你不小心提交了錯誤的代碼,或者想要撤銷之前的某個更改,Git可以輕松幫助你完成。你可以使用git revert命令來撤銷某個提交,或者使用git reset命令來重置到之前的某個狀態。由于Git保存了完整的版本歷史,這些操作都不會丟失任何數據。
  5. 協同工作
    • 在多人協作的項目中,Git可以確保每個開發人員都能看到其他人的工作進度和更改。通過拉取(pull)和推送(push)操作,開發人員可以輕松地共享代碼和合并更改。Git的分布式特性使得即使在網絡不穩定或斷開的情況下,開發人員也能繼續工作,并在稍后與遠程倉庫同步。
  6. 可視化工具
    • 除了命令行工具外,還有許多Git的可視化工具(如GitKraken、SourceTree等)可以幫助你更直觀地查看和管理版本歷史。這些工具通常提供了圖形化的界面來展示提交歷史、分支和合并等操作。
  7. 安全性
    • Git使用SHA-1哈希算法來生成每個提交的唯一標識符(哈希值)。這確保了提交歷史的完整性和安全性,使得在未經授權的情況下篡改提交變得非常困難。

總之,Git提供的完整歷史記錄功能使得追蹤和管理項目的變更變得非常容易和直觀。無論是單人開發還是多人協作的項目,Git都能幫助你保持代碼的整潔和有序。


3.2 缺點

3.2.1 分布式管理可能導致個別新手污染代碼

Git版本控制工具的分布式管理特性確實在某些情況下可能導致個別新手污染代碼。以下是一些可能導致這種情況的原因:

  1. 缺乏中心化控制:與SVN等集中式版本控制系統不同,Git允許每個開發者在本地進行完整的版本控制操作,包括提交、合并等。這種分布式特性使得代碼的管理和維護更加靈活,但同時也增加了代碼被污染的風險。如果個別新手開發者不熟悉Git的操作規范或者對代碼庫的結構不熟悉,他們可能會在錯誤的分支上進行提交,或者錯誤地合并代碼,導致代碼庫出現混亂。
  2. 缺乏權限控制:Git的權限控制相對較為靈活,但也可能導致一些問題。例如,如果團隊沒有正確地設置權限,某些新手開發者可能獲得了過多的權限,能夠修改或合并不應該修改的代碼。這可能會導致代碼庫中出現不必要的更改或錯誤。
  3. 分支管理不當:Git的分支功能非常強大,但也可能導致分支混亂。如果新手開發者不熟悉分支的使用和管理,他們可能會創建過多的分支,或者在錯誤的分支上進行操作。這可能會導致代碼庫中出現多個并行的開發線,增加了代碼合并和管理的難度。
  4. 缺乏溝通和協作:分布式版本控制系統需要團隊成員之間的密切溝通和協作。如果新手開發者沒有與團隊成員進行有效的溝通,或者沒有遵循團隊的協作規范,他們可能會在不了解其他開發者工作的情況下進行提交或合并,導致代碼庫出現沖突或錯誤。

為了避免這些問題,團隊可以采取以下措施:

  1. 加強培訓和指導:對于新手開發者,團隊應該提供充分的培訓和指導,幫助他們熟悉Git的使用和管理規范。這包括分支的創建和管理、權限的設置、代碼提交和合并的規范等。
  2. 設置合適的權限:團隊應該根據開發者的職責和經驗,設置合適的權限。確保每個開發者只能訪問和修改他們應該訪問和修改的代碼部分。
  3. 加強溝通和協作:團隊應該建立有效的溝通和協作機制,確保每個開發者都了解其他開發者的工作內容和進度。這有助于減少沖突和錯誤,并提高代碼的質量和效率。
  4. 使用代碼審查機制:代碼審查是一種有效的質量保證機制,可以確保代碼的質量和一致性。團隊應該建立代碼審查機制,對每個開發者的代碼進行審查,確保它們符合團隊的規范和標準。

3.2.2 學習曲線較陡峭,對于初學者可能有一定難度

確實,Git 作為一款強大的版本控制工具,其學習曲線對于初學者來說可能會顯得較為陡峭。以下是一些導致 Git 學習難度較高的原因:

  1. 分布式版本控制的概念:Git 是一個分布式版本控制系統(DVCS),與傳統的集中式版本控制系統(CVCS)如 SVN 有很大不同。初學者需要理解分布式系統的概念和優點,如去中心化、本地倉庫、分支操作等,這可能需要一些時間來適應。

  2. 命令行界面:Git 主要通過命令行界面(CLI)進行操作,對于沒有命令行經驗的用戶來說,這可能會增加學習難度。雖然有一些圖形用戶界面(GUI)工具可以幫助用戶更直觀地操作 Git,但它們通常只覆蓋了一部分常用功能,對于高級功能還是需要命令行。

  3. 分支和合并:Git 的分支和合并功能非常強大,但也相對復雜。分支操作可以輕松地創建、切換和合并代碼的不同版本,但同時也需要用戶了解分支的創建時機、合并沖突的處理方法等。

  4. 鉤子(Hooks)和自定義操作:Git 提供了大量的鉤子(hooks)供用戶自定義操作,如提交前檢查代碼風格、自動推送代碼等。這些功能雖然強大,但對于初學者來說可能會增加學習負擔。

  5. 文檔和教程:雖然 Git 的官方文檔非常詳細,但對于初學者來說可能會覺得過于復雜或難以理解。此外,由于 Git 的使用場景廣泛,不同的項目和團隊可能會有不同的使用習慣和最佳實踐,這也增加了學習的難度。

為了降低 Git 的學習難度,以下是一些建議:

  1. 從基礎開始:先學習 Git 的基本概念和常用命令,如初始化倉庫、添加文件、提交修改、查看歷史記錄等。

  2. 使用 GUI 工具:在學習的初期,可以使用一些 Git 的 GUI 工具來幫助理解 Git 的操作方式和原理。

  3. 閱讀教程和文檔:閱讀一些針對初學者的 Git 教程和文檔,這些教程通常會以更直觀的方式解釋 Git 的概念和使用方法。

  4. 實踐項目:通過在實際項目中使用 Git 來加深對其理解和掌握。

  5. 尋求幫助:在學習的過程中遇到問題時,可以通過搜索引擎、社區論壇或同事等途徑尋求幫助。

四、結語

? ? ? ? 文章至此,已接近尾聲!希望此文能夠對大家有所啟發和幫助。同時,感謝大家的耐心閱讀和對本文檔的信任。在未來的技術學習和工作中,期待與各位大佬共同進步,共同探索新的技術前沿。最后,再次感謝各位的支持和關注。您的支持是作者創作的最大動力,如果您覺得這篇文章對您有所幫助,請分享給身邊的朋友和同事!

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

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

相關文章

Apache Flink典型應用場景全面解析

Apache Flink作為一個高度靈活且功能強大的開源流處理框架,因其在實時數據處理、大規模數據分析以及事件驅動應用方面的卓越表現而受到廣泛青睞。以下是Flink幾個典型的使用場景,展示了其在不同行業和業務需求中的應用潛力。 實時數據分析與監控 應用描述…

工作小記2——二周年記

不知不覺,工作已經有二周年, 由于公司電腦不能登錄csdn,不能登github,我已經好久沒有碰過我的個人博客空間啦。現在從大廠跳到小公司,舒適度翻倍提升!現在我要回歸CSDN啦! 總體感受&#xff1a…

playwright 自動化框架python教程(九)

Playwright 提供了一系列API來處理各種瀏覽器中的特殊操作 Playwright 提供了一系列API來處理各種瀏覽器中的特殊操作,包括彈窗(如alert、confirm、prompt)、新窗口的打開與管理,以及其他一些高級交互。以下是處理這些情況的一些…

Solon Cloud Event 新的事務特性與應用

1、Solon Cloud Event? 是 Solon 分布式事件總線的解決方案。也是 Solon “最終一致性”分布式事務的解決方案之一2、事務特性 事務?就是要求 Event 有原子性,當多個 Event 發布時,要么全成功,要么全失敗。 public …

PyQt5 中的 List View

文章目錄 1. 基礎概念2. 創建 List View2.1 PyQt5 中一個簡單的 List View 實例2.2 代碼解釋2.3 運行結果 3. 數據模型3.1 標準模型3.2 自定義模型 4. 自定義 List View4.1 使用樣式表 (QSS)4.2 設置項委托 (Item Delegate) 5.事件處理6. 與數據交互6.1 添加數據6.2 刪除數據6.…

【哈希】Leetcode 205. 同構字符串【簡單】

同構字符串 給定兩個字符串 s 和 t ,判斷它們是否是同構的。 如果 s 中的字符可以按某種映射關系替換得到 t ,那么這兩個字符串是同構的。 每個出現的字符都應當映射到另一個字符,同時不改變字符的順序。不同字符不能映射到同一個字符上&am…

如何解決 Scrapy 下載圖片時的文件名錯誤問題

在使用 Scrapy 的 ImagesPipeline 下載圖片時,有時會遇到因為文件名的問題導致下載失敗的情況。本文將詳細解釋這種錯誤的原因,并提供一個簡單易懂的解決方案,幫助大家避免類似的問題。 問題描述 在下載圖片時,如果圖片的名字是…

C語言到底怎么學?

C語言到底怎么學? 1、工欲善其事,必先利其器 這里介紹幾個華清遠見學習C語言必備的工具: VMware、ubuntu。 VMware是一家提供虛擬化軟件和解決方案的公司,VMware的旗艦產品是VMware Workstation,這是一種虛擬機軟件,…

echers配置項:數據過多時,折疊數據縮放查看

當數據過多時,如上圖所示的時間點,會自動折疊,此時鼠標縮放還不起作用,我們配置如下代碼 let option {dataZoom: [{startValue: 05:00}, // 這個值需要跟 第一條 時間數據對應上{type: inside}], }配置后,就可以進行…

echers配置項:折線圖,折現的顏色修改

如上圖所示:紅框內的折現顏色修改,并隱藏默認的點 series: [{data: [1, 230, 224, 218, 135, 147, 760,1500,1200,2500,2000],type: line,lineStyle: {color: #00DBFE // 折現顏色},symbol:none, // 不顯示點smooth: true, // 折現角度:圓滑…

hadoop生態圈集群搭建(持續更新240513)

Hadoop生態圈 Linux1.修改ip地址2.重啟network服務3.安裝插件4.關閉防火墻5.創建用戶6.創建目錄7.修改目錄的所屬主和所屬組為lxy8.修改主機名:hadoop102 (注意名字后面不要加空格)9.修改hosts文件10.等插件都裝完后再重啟Linux11.把xshell的登錄用戶換成lxy (注意&…

5W 3KVAC隔離 寬電壓輸入 AC/DC 電源模塊——TP05AL系列

TP05AL系列產品是一款經濟型開板式開關電源,輸出功率為5W,具有可靠性高、小體積、性價比高等特點,廣泛用于工控和電力儀器、儀表、智能家居等相關行業。

通過 Apple Vision Pro 釋放創造力:深入研究空間計算

Apple 最新進軍空間計算領域的 Apple Vision Pro,標志著重新定義我們與技術交互方式的重大飛躍。空間計算超越了傳統界限,允許用戶以無縫集成到物理世界的方式參與 2D 和 3D 內容。 我們可以關注兩種類型的體驗: 在空間中渲染 2D 內容。這涉及將現有設備窗口投影到空間領域…

通過C++和libcurl下載網易云音樂音頻文件的5個簡單步驟

概述 在網絡編程中,使用C和libcurl庫下載文件是一項常見的任務。網易云音樂作為中國領先的在線音樂服務平臺之一,以其豐富的音樂資源、優質的音質和智能推薦系統而廣受歡迎。由于其平臺提供了大量的正版音樂資源,用戶在下載音頻文件時可能會…

開源發布:JAVA版低代碼報文網關-通過簡單配置快速對接銀行渠道

大家好,我是隱墨星辰,自從《百圖解碼支付系統設計與實現》專欄中的文章《圖解支付報文網關:一種低代碼報文網關的設計思路與核心代碼實現》發表以來,不少同學留言或私信問我如何實現,說是雖然看懂了思路,但…

pycharm 里面安裝 codeium 插件的時候,不能夠彈出登錄界面

pycharm 里面安裝 codeium 插件的時候,不能夠彈出登錄界面 pycharm 里面安裝 codeium 插件的時候,不能夠彈出登錄界面--解決如下A pycharm 里面安裝 codeium 插件的時候,不能夠彈出登錄界面–解決如下 #踩坑/pycharm/codeium插件無法登錄 安…

微信聯登報invalid code, rid: 66446806-0826d0b4-3a94ce3a ,錯誤碼:40029解決方法

目錄 一、問題描述二、問題原因三、解決方法 一、問題描述 微信登錄報錯: invalid code, rid: 66446806-0826d0b4-3a94ce3a ,錯誤碼:40029二、問題原因 后端設置的 appsecret 和 appid 與前端的 appid 不一致。 三、解決方法 檢查是否已…

用Ai編寫一個電機驅動程序

問:幫我寫一個步進電機的控制程序,要有包括加減速,以及電機步中斷處理函數。 答:編寫一個步進電機的控制程序涉及到硬件層面的操作,通常需要依賴特定的硬件平臺和相應的驅動程序。以下是一個簡化的示例,它展…

制氧機負離子的作用與好處深度解析

隨著現代生活節奏的加快,空氣質量逐漸下降,人們對健康生活的追求也日益增強。在這樣的背景下,制氧機負離子功能因其多重健康效益而備受關注。本文將深入探討制氧機負離子的作用與功效,幫助大家更好地了解并應用這一健康科技。 我們…

單片機燒錄程序時“DTR的低電平復位,RTS高電平進入bootloader”有關的串口Modem聯絡信號

燒錄程序時常見DTR和RTS引腳 參考,參考視頻 因為常常使用的都是串口下載程序,常用的芯片CH340系列,下圖中標紅的引腳是MODEM聯絡信號,其中常見的DTR和RTS就是常見的串口Modem網絡輸出信號,也就是通過燒錄軟件控制的接…