【Git】零基礎入門:配置與初始操作實戰指南


目錄

1.前言

插播一條消息~

2.正文

2.1概念

2.2安裝與配置

2.3基礎操作

2.3.1創建本地倉庫

2.3.2配置Git

2.3.3認識工作區,暫存區,版本庫

2.3.4版本回退

2.3.5撤銷修改

2.3.6刪除文件

3.小結


1.前言

在 Java 開發場景中,團隊協作時的代碼管理問題常常困擾著開發者。例如,當多人同時參與 Spring Boot 項目開發時,如何有效避免因并行修改導致的代碼覆蓋沖突?當線上版本突發 bug 時,如何快速定位問題代碼并回退到歷史穩定版本?這些實際痛點的解決,離不開高效的版本控制工具。Git 作為目前最主流的分布式版本控制系統,正是應對此類挑戰的核心工具。

Git 的核心價值可概括為兩大能力:其一,它像一臺“時光機”,能完整記錄代碼的每一次變更,支持隨時回溯到任意歷史版本,讓開發者在出現問題時可精準定位修改軌跡;其二,它如同“協作保險箱”,通過分支管理與合并機制,確保多人并行開發時的代碼安全,避免沖突覆蓋,同時提供透明的修改記錄,便于團隊協作與責任追溯。

本文聚焦 Git 的“從 0 到 1”配置與基礎操作,旨在幫助 Java 開發者快速掌握環境搭建、用戶配置、倉庫初始化、代碼提交、版本回退等核心技能。內容設計上避免涉及復雜的分支策略或高級命令,以實用為導向,適合零基礎入門者系統學習,為后續參與企業級項目開發奠定版本控制基礎。


插播一條消息~

🔍十年經驗淬煉 · 系統化AI學習平臺推薦

系統化學習AI平臺https://www.captainbed.cn/scy/

  • 📚 完整知識體系:從數學基礎 → 工業級項目(人臉識別/自動駕駛/GANs),內容由淺入深
  • 💻 實戰為王:每小節配套可運行代碼案例(提供完整源碼)
  • 🎯 零基礎友好:用生活案例講解算法,無需擔心數學/編程基礎

🚀 特別適合

  • 想系統補強AI知識的開發者
  • 轉型人工智能領域的從業者
  • 需要項目經驗的學生

2.正文

2.1概念

在軟件開發過程中,版本控制器是管理代碼變更的核心工具,其必要性可通過“寫論文時的‘另存為’困境”直觀理解:手動通過“另存為”創建多個文件副本的方式存在顯著缺陷——版本命名混亂(如 paper_v1.docpaper_final_v2_revised.doc)、修改軌跡難以追溯、多人協作時易產生文件覆蓋沖突。而版本控制器能夠自動記錄每次修改的時間戳、修改內容及操作人員,實現版本歷史的精準管理與高效回溯,從根本上解決手動版本管理的痛點。

對于 Java 開發者而言,Git 作為主流分布式版本控制系統,其特性與 Java 項目的開發需求高度契合:

  • 大型項目支持:Java 生態中的企業級項目(如 Spring Framework、Apache Maven)通常包含數百個模塊與數萬行代碼,Git 的底層數據結構(基于哈希值的內容尋址)確保高效處理大規模代碼庫,即使歷史提交記錄達數十萬次,仍能保持快速的版本切換與差異對比性能。
  • 靈活分支管理:Java 項目普遍采用迭代開發模式(如 Agile、DevOps),Git 的輕量級分支模型支持創建獨立的 feature 分支(功能開發)、hotfix 分支(緊急修復)與 release 分支(發布準備),分支創建與合并操作耗時通常低于 1 秒,且可通過 rebasecherry-pick 等命令精細化管理代碼流向,完美適配多團隊并行開發場景。
  • 完整離線工作流:Java 開發者常需在無網絡環境下進行代碼編寫與單元測試,Git 本地倉庫可獨立完成提交、分支創建、版本回滾等核心操作,待網絡恢復后再同步至遠程倉庫,大幅提升開發連續性。

綜上,版本控制器不僅是代碼管理工具,更是 Java 項目工程化實踐的基礎設施,而 Git 憑借其分布式架構與靈活特性,已成為現代 Java 開發團隊的首選版本控制解決方案。


2.2安裝與配置

Git 的安裝與基礎配置是 Java 開發者使用版本控制系統的首要步驟,以下從安裝驗證、用戶信息配置到配置校驗進行系統化說明。

安裝與版本驗證

在基于Ubuntu 的系統中,通過 sudo apt-get install git -y 命令可快速完成 Git 安裝。該命令中 -y 參數的核心作用是自動確認所有安裝過程中的提示,無需手動輸入 yes,特別適用于服務器環境或自動化部署場景。安裝完成后,需執行 git --version 驗證安裝結果,成功時終端將返回類似 git version 2.34.1 的版本信息,表明 Git 已正確部署。

安裝關鍵命令

  • 快速安裝:sudo apt-get install git -y-y 參數實現無人值守安裝)
  • 版本驗證:git --version(返回版本號即表示安裝成功)

通過以上步驟,可完成 Git 的基礎安裝與配置,為后續版本控制操作奠定基礎。配置時需注意作用域的合理選擇,避免因身份信息混亂導致提交歷史不規范。


2.3基礎操作

2.3.1創建本地倉庫

在 Java 項目開發中,創建本地倉庫是版本控制的起點。通過初始化 Git 倉庫,開發者可對項目文件的修改進行追蹤、回溯與協作管理。以下以“在 Java 項目文件夾中初始化倉庫”為實戰場景,詳細演示操作流程及核心原理。

初始化本地倉庫

在執行倉庫初始化前,需通過 pwd 命令確認當前路徑,確保在目標 Java 項目文件夾中操作,避免因路徑錯誤導致倉庫創建位置偏差。例如,若 Java 項目位于 /home/user/java-project,執行命令及預期輸出如下:

pwd
# 輸出:/home/user/java-project

注意事項:若當前路徑非目標項目目錄,需通過 cd /path/to/java-project 切換至正確文件夾。錯誤的初始化路徑可能導致 Git 追蹤無關文件,增加后續版本管理復雜度。

執行初始化命令

在正確路徑下,執行 git init 命令初始化倉庫。該命令會在當前目錄創建一個隱藏的 .git 子目錄,用于存儲 Git 倉庫的元數據和對象數據庫。執行命令及系統反饋如下:

git init
# 輸出:Initialized empty Git repository in /home/user/java-project/.git/

上述輸出表明 Git 已在 /home/user/java-project/.git/ 路徑下創建空倉庫,此時當前目錄即成為 Git 可管理的工作區。

.git 目錄結構解析

.git 目錄是 Git 倉庫的核心,包含版本控制所需的所有數據和配置。其結構可通過以下示意圖直觀展示:

關鍵目錄/文件的作用如下:

  • branches:存儲分支引用文件(早期 Git 版本使用,現代 Git 更多通過 .git/refs/heads/ 管理分支),記錄項目的分支信息。
  • config:倉庫級別的配置文件,包含當前倉庫的個性化設置,如用戶信息、遠程倉庫地址等。可通過 git config 命令修改,例如 git config user.name "Your Name"
  • objects:存儲 Git 中的所有數據對象(如文件快照、提交記錄等),采用 SHA-1 哈希值命名,是版本控制的底層數據結構。每個文件的修改會生成新的對象并存儲于此,確保歷史版本可追溯。
  • HEAD:指向當前工作區所在的分支引用,通常鏈接到 .git/refs/heads/ 下的具體分支文件,標識用戶當前操作的分支。
  • index:暫存區(Stage)的索引文件,記錄下次提交的文件快照信息,是工作區與版本庫之間的橋梁。

2.3.2配置Git

用戶信息配置策略

Git 需通過用戶名和郵箱標識提交者身份,配置時需根據場景選擇全局或局部作用域:

  • 全局配置(--global:通過 git config --global user.name "Your Name"git config --global user.email "company@example.com" 設置,作用于當前用戶的所有 Git 倉庫。
  • 局部配置(無參數):進入特定項目目錄后執行 git config user.name "Your Name"git config user.email "personal@example.com",僅對當前倉庫生效。

Java 開發場景示例:若同時參與公司項目與個人開源項目,可全局配置公司郵箱(--global),在個人項目目錄下單獨配置個人郵箱(無參數),實現不同項目的身份自動切換,避免提交信息與項目要求沖突。

配置結果校驗

完成配置后,通過 git config -l 命令可列出所有生效的配置項,其中 user.nameuser.email 為必須存在的關鍵配置。典型輸出示例如下:

user.name=Zhang San
user.email=zhang.san@company.com
core.editor=vim
core.filemode=true

若需單獨查看全局配置,可使用 git config --global --list;查看當前倉庫配置則使用 git config --local --list,便于定位配置作用域問題。

配置校驗要點

  • 全量配置查看:git config -l(包含全局、局部及系統級配置)
  • 關鍵檢查項:確保輸出中存在 user.nameuser.email,且值與預期一致

Git 的核心配置與版本控制功能依賴于倉庫根目錄下的 .git 隱藏目錄,其內部結構包含多個關鍵組件,這些組件通過類比可幫助理解 Git 的工作機制。同時,通過 git config 命令進行的配置參數將直接影響 Git 的行為模式,需重點掌握其核心配置項與驗證方法。


2.3.3認識工作區,暫存區,版本庫

Git 的核心運作機制依賴于三個關鍵區域的協同工作,理解它們的關系是掌握版本控制的基礎。我們可以通過日常生活中的場景進行類比:工作區如同廚房中正在切菜的臺面,所有文件的創建、修改和刪除都在此進行;暫存區相當于備菜臺,用于臨時存放已準備好的食材(即已完成的修改),等待最終裝盤;版本庫則類似于冰箱,負責長期保存已確認的菜品(即已提交的版本記錄)。這個類比能幫助開發者快速建立對 Git 數據流轉邏輯的直觀認知。

三區核心職能

  • 工作區(Working Directory):本地文件系統中可見的目錄,直接編輯文件的區域
  • 暫存區(Staging Area):臨時存儲待提交的變更,通過索引(index)維護
  • 版本庫(Repository):存儲完整歷史版本的數據庫,位于 .git 目錄中

實戰場景:添加文件的版本控制流程

以下通過創建一個 Java 類文件的完整流程,演示三區如何協同工作:

創建并查看文件(工作區操作)
在工作區創建 Demo.java 并定義基礎類結構:

touch Demo.java  # 在工作區創建文件
cat Demo.java    # 查看文件內容
# 輸出:public class Demo{}

檢查初始狀態(工作區 → 暫存區)

使用 git status 命令查看文件在三區中的狀態:

git status
# 輸出:Untracked files: Demo.java (文件僅存在于工作區,未被 Git 跟蹤)

暫存文件(工作區 → 暫存區)

通過 git add 將工作區文件添加到暫存區:

git add Demo.java  # 將文件從工作區移動到暫存區
git status
# 輸出:Changes to be committed: new file: Demo.java (文件已在暫存區等待提交)

提交到版本庫(暫存區 → 版本庫)

使用 git commit 命令將暫存區內容永久記錄到版本庫:

git commit -m "init Demo class"  # -m 指定提交說明
# 輸出:[main (root-commit) xxxxxxx] init Demo class (版本庫生成新提交記錄)


2.3.4版本回退

在 Git 版本控制中,版本回退是修正錯誤提交或回溯歷史狀態的關鍵操作,核心通過 git reset 命令實現。該命令通過不同參數控制回退粒度,適用于多種開發場景。以下從參數對比、Java 場景應用、日志工具三個維度詳細說明。

git reset 命令通過 --soft--mixed--hard 三個核心參數控制回退行為,其對 HEAD 指針、暫存區、工作區的影響及適用場景如下表所示:

參數HEAD 指針暫存區工作區適用場景
soft回退不變不變僅撤銷 commit,保留暫存區修改
mixed回退回退到指定版本不變撤銷 commit 和 add,保留工作區修改
hard回退回退到指定版本回退到指定版本徹底回退到歷史版本,丟棄所有修改

版本回退場景實戰示例

1. --soft:提交后發現漏改代碼

場景:開發一個 Spring Boot 接口時,提交了 UserController.java 的修改,但后續發現遺漏了對 getUserById 方法的參數校驗邏輯。

原理--soft 僅回退 HEAD 指針,暫存區和工作區保持原樣,可直接補充修改后重新提交。

操作

# 回退到上一次提交(commit id 可通過 git log 獲取)
git reset --soft HEAD~1  
# 補充參數校驗代碼后重新提交
git add UserController.java  
git commit -m "fix: add parameter validation for getUserById"

2. --mixed:add 后發現暫存了錯誤文件

場景:修改 OrderService.java 后執行 git add .,但誤將本地測試文件 test-data.json 加入暫存區,需撤銷暫存并保留 OrderService.java 的修改。

原理--mixed 是默認參數,回退 HEAD 指針和暫存區,工作區不變,可重新選擇文件提交。

操作

# 回退到上一次提交(等價于 git reset HEAD~1)
git reset --mixed HEAD~1  
# 重新添加正確文件
git add OrderService.java  
git commit -m "feat: optimize order calculation logic"

3. --hard:提交錯誤代碼且未 push

場景:開發一個工具類 DateUtils.java 時,誤提交了包含死循環的版本,且尚未推送到遠程倉庫,需徹底丟棄錯誤修改。

原理--hard 強制回退 HEAD 指針、暫存區和工作區到指定版本,所有未提交的修改將被丟棄(慎用)。

操作

# 查看提交歷史,獲取錯誤提交前的 commit id(如 a1b2c3d)
git log  
# 回退到目標版本
git reset --hard a1b2c3d

注意--hard 會永久丟棄指定版本后的所有修改,若需恢復,需通過 git reflog 找回歷史操作記錄。


版本追溯工具:git log 與 git reflog

1. git log:查看提交歷史

git log 命令用于顯示提交日志,輸出格式包含四部分關鍵信息:

  • commit id:40 位哈希值,唯一標識版本(實際使用時可簡化為前 6-8 位);
  • 作者:提交者信息(格式為 用戶名 <郵箱>);
  • 日期:提交時間戳;
  • 提交信息:開發者填寫的改動描述。

示例輸出

commit a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0  
Author: Zhang San <zhangsan@example.com>  
Date:   Mon Sep 15 10:30:00 2025 +0800  feat: add date formatting method in DateUtils

2. git reflog:恢復 hard 回退版本

git log 僅顯示當前分支的提交歷史,而 git reflog 記錄所有本地操作(包括 commit、reset、checkout 等),即使通過 --hard 回退,仍可通過該命令找回歷史版本。

應用場景:使用 git reset --hard 誤刪版本后,通過 git reflog 獲取目標版本的 commit id,重新回退即可恢復。

示例

# 查看所有操作記錄,找到誤刪前的 commit id(如 f7g8h9i0)
git reflog  
# 恢復到目標版本
git reset --hard f7g8h9i0

通過合理選擇 reset 參數、結合日志工具,Java 開發者可高效處理版本回退場景,保障代碼庫的準確性與可追溯性。實際操作中,建議優先通過 git reflog 確認歷史操作,再執行 --hard 等高危命令。


2.3.5撤銷修改

在 Git 版本控制中,撤銷修改的場景可類比為日常文檔編輯的不同階段,通過直觀的比喻能更清晰地理解各操作的適用場景與執行邏輯。具體可分為以下三種核心場景:

  1. 未保存的草稿(工作區修改):如同編輯文檔時未執行“保存”操作,可通過“恢復到上次保存狀態”(對應 Git 的 checkout 命令)快速撤銷修改,避免手動刪除可能導致的遺漏。
  2. 已保存到“待提交”文件夾(暫存區修改):相當于文檔已保存到“待提交”目錄但尚未最終歸檔,需先將其移回“草稿區”(對應 Git 的 reset HEAD 命令),再進行修改調整。
  3. 已歸檔到“歷史文檔”(版本庫修改):類似文檔已完成歸檔但發現錯誤,需從歷史記錄中找回舊版本(對應 Git 的 reset --hard 命令),直接覆蓋當前版本。
場景處理命令注意事項
工作區修改未暫存git checkout -- file推薦使用命令而非手動修改,可避免遺漏未保存內容
暫存區修改(已add)git reset HEAD file執行后文件回到“工作區未暫存”狀態,需重新修改并提交
版本庫修改(已commit未push)git reset --hard commit_id會徹底覆蓋工作區和暫存區內容,執行前需確認目標 commit_id 及當前工作區無未備份修改

以 Java 項目中 Demo.java 文件的修改為例,具體說明各場景的撤銷流程:

1. 工作區修改未暫存(未執行 git add)

當修改 Demo.java 后尚未執行 git add,發現代碼存在語法錯誤或邏輯問題,可直接使用 checkout 命令恢復到最近一次提交或暫存的狀態:

git checkout -- Demo.java

執行后,Demo.java 的內容將恢復到最近一次 commitadd 時的狀態,工作區的未暫存修改被完全撤銷。

2. 暫存區修改(已執行 git add 但未 commit)

若已通過 git add Demo.java 將修改暫存,但隨后發現邏輯漏洞,需先將文件從暫存區移回工作區,再進行修改:

git reset HEAD Demo.java

此時 Demo.java 回到“工作區未暫存”狀態,可重新編輯后再次執行 git addgit commit

3. 版本庫修改(已執行 git commit 但未 push)

若已提交修改(git commit -m "Update Demo.java"),但運行測試時發現嚴重邏輯錯誤,需回退到上一版本:

  • 首先通過 git log 獲取目標回退版本的 commit_id(如 a1b2c3d):
    git log --oneline  # 簡潔顯示提交歷史,格式為 "commit_id 提交信息"
    
  • 執行硬重置命令回退版本:
    git reset --hard a1b2c3d
    

通過以上方法,可針對不同修改階段快速、精準地撤銷操作,保障代碼版本的準確性與可追溯性。在實際開發中,建議優先使用 Git 命令而非手動編輯,以減少操作失誤風險。


2.3.6刪除文件

在 Git 版本控制系統中,文件刪除操作需根據實際場景規范執行,主要分為主動刪除(有意從版本庫中移除文件)和誤刪恢復(意外刪除后從版本庫找回)兩種情況。以下結合 Java 項目開發場景,詳細說明操作流程及注意事項。

當確認某文件(如不再使用的 Java 類文件 Demo.java)需要從版本庫中永久移除時,需按以下步驟執行,確保刪除操作被 Git 正確追蹤:

主動刪除操作步驟

  1. 刪除工作區文件:執行 rm Demo.java 命令從本地工作區刪除文件;
  2. 檢查刪除狀態:通過 git status 命令驗證,此時終端會顯示 deleted: Demo.java,表明文件已從工作區刪除但未暫存;
  3. 暫存刪除操作:執行 git add Demo.java 將刪除操作納入暫存區(注意:此處 add 命令用于追蹤刪除行為,而非添加新文件);
  4. 提交刪除記錄:通過 git commit -m "delete Demo class" 提交暫存區的刪除操作,使版本庫永久記錄此次刪除。

通過規范執行刪除流程和風險控制,可有效避免因文件操作導致的版本庫混亂,保障 Java 項目的代碼管理效率。


3.小結

通過本章的學習,我們系統掌握了 Git 的核心配置流程與初始操作方法,包括環境配置(git config)、倉庫初始化(git init)、文件追蹤(git add)、提交記錄(git commit)以及狀態查詢(git status)等基礎命令。這些操作共同構成了本地項目版本控制的完整閉環,掌握這些操作后,你已具備獨立使用 Git 管理本地項目的能力,能夠有效追蹤代碼變更、回溯歷史版本,并為后續的協作開發奠定基礎。

學習 Git 就像學習駕駛汽車:本章介紹的基礎操作如同汽車的“油門”(提交變更)、“剎車”(撤銷操作)和“方向盤”(版本控制方向),是駕馭工具的核心能力。只有熟練掌握這些基礎控制,才能在未來應對更復雜的“路況”——包括多團隊成員的遠程協作(如 git remotegit push/pull)、復雜項目的分支策略(如 git branchgit merge)以及沖突解決等高級場景。

實踐建議

  • 堅持“小步提交”原則:頻繁、有意義的提交(git commit)能讓版本歷史更清晰,便于問題回溯。
  • 善用狀態與日志工具:遇到操作疑問時,優先使用 git status 查看工作區狀態,通過 git log 分析提交歷史,這兩個命令是排查問題的“瑞士軍刀”。
  • 刻意練習形成肌肉記憶:通過模擬項目迭代(如創建文件、修改內容、提交變更、版本回滾)鞏固操作流程,逐步積累實戰經驗。

Git 的強大之處在于其對復雜場景的支撐能力,但一切高級應用都建立在扎實的基礎之上。希望你能以本章內容為起點,在實際開發中不斷實踐與探索,逐步解鎖 Git 版本控制的全部潛力。

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

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

相關文章

CAD多面體密堆積_圓柱體試件3D插件

插件介紹 CAD多面體密堆積_圓柱體試件3D插件可在AutoCAD內基于重力堆積算法在圓柱體容器內進行多面體的密堆積三維建模。插件采取堆積可視化交互界面&#xff0c;可觀察多面體顆粒的堆積動態&#xff0c;并可采用鼠標進行多面體位置的局部微調。插件可設置重力堆積模擬時長參數…

機器學習-模型調參、超參數優化

模型調參 手工超參數微調 以一個好的baseline開始&#xff0c;即&#xff1a;在一些高質量的工具包中的默認設置&#xff0c;論文中的值調一個值&#xff0c;重新訓練這個模型來觀察變化重復很多次獲得對以下的insight&#xff1a; 1、哪個超參數重要 2、模型對超參數的敏感度是…

STM32 單片機開發 - I2C 總線

一、IIC(I2C) 線的作用UART總線 PC端(CPU) <----------> 開發板(STM32U575RIT6)IIC總線 主控芯片(STM32U575RIT6) <---------> 傳感器驅動芯片(SHT20/SI7006空氣溫濕度傳感器)二、I2C 總線的概念圖 1 I2C 總線示意圖圖 2 多主機多從機模式示意圖I2C 總…

Redis 數據結構源碼剖析(SDS、Dict、Skiplist、Quicklist、Ziplist)

Redis 數據結構源碼剖析&#xff08;SDS、Dict、Skiplist、Quicklist、Ziplist&#xff09;1. 前言 Redis 的高性能與豐富數據結構密切相關。 核心數據結構包括&#xff1a; SDS&#xff08;Simple Dynamic String&#xff09;&#xff1a;字符串底層實現。Dict&#xff08;哈希…

無人機圖傳系統的功能解析和技術實現原理

無人機圖傳系統要將機載攝像頭捕捉到的畫面以盡可能低的時延、盡可能高的清晰度、穩定可靠地送達地面操作員或指揮中心&#xff0c;進而驅動現場行動。為此&#xff0c;核心功能可以從四個維度來解構&#xff1a;實時性、畫質與穩定性、覆蓋與冗余、以及安全協同。實時性要求在…

微服務網關的bug

從你提供的Eureka控制臺信息來看&#xff0c;SPRINGCLOUD-PRODUCT已成功注冊到Eureka&#xff0c;且狀態為UP&#xff08;實例地址localhost:springcloud-product:8082&#xff09;&#xff0c;排除了“服務未注冊”“實例離線”的基礎問題。但仍報“負載均衡無可用服務”&…

LeetCode:2.字母異位詞分組

目錄 1.字母異位詞分組 1.字母異位詞分組 對于這道題來說&#xff0c;關鍵的地方在于字母異位詞他們排序后的字符串完全相等&#xff0c;所以我們可以通過哈希表來建設一個字符串和其排序相同的字符串數組的映射關系 class Solution { public:vector<vector<string>…

SwiftData3 一劍封喉:WWDC25 的“數據劍譜”精講,讓 Core Data 老俠原地退休

文章目錄每日一句正能量一、開場白&#xff1a;老兵的隱痛二、SwiftData3 新劍譜總覽三、亮劍&#xff1a;30 行代碼搭一個「跨端秒級同步」的收藏夾1. 鑄劍&#xff1a;聲明模型2. 開鋒&#xff1a;初始化容器3. 出招&#xff1a;SwiftUI7 直接綁四、進階劍氣&#xff1a;Char…

微服務-nacos服務中心

單體與微服務 單體架構&#xff1a;項目所有功能都在一個 war 包 /jar 包里&#xff0c;像商城的訂單、庫存、會員、支付等服務&#xff0c;都打包在一起&#xff0c;部署在 Tomcat 服務器&#xff0c;數據存在 MySQL。 優點&#xff1a;開發簡單&#xff0c;易于理解和維護&am…

嵌入式硬件——IMX6ULL 裸機LED點亮實驗

一. 實驗準備 基于正點原子 IMX6ULL-Mini 開發板&#xff0c;實現 LED 周期性閃爍功能&#xff0c;需完成環境搭建與硬件原理確認兩大核心準備工作。 1.1 開發環境搭建 需在Windows和Ubuntu中安裝工具&#xff0c;確保文件傳輸、交叉編譯、代碼編輯功能正常。1.1.1 跨系統文件傳…

深度學習之PyTorch基本使用(一)

一、PyTorch簡介與安裝1.核心概念PyTorch 是一款 Python 深度學習框架&#xff0c;其核心是張量&#xff08;Tensor&#xff09; —— 元素為同一種數據類型的多維矩陣&#xff0c;以 “類” 的形式封裝&#xff0c;內置了張量運算、處理等方法&#xff0c;是深度學習中數據存儲…

SQLAlchemy -> Base.metadata.create_all(engine )詳解

目錄 一、核心作用 二、是否每次運行項目都會執行&#xff1f; 1. ??典型場景??&#xff08;推薦&#xff09; 2. ??需要避免的情況?? 三、最佳實踐建議 1. ??生產環境?? 2. ??開發/測試環境?? 四、常見問題解答 Q1: 如果表結構改了&#xff0c;creat…

C++異步任務處理與消息可靠性保障指南:從基礎到實戰

在當今多核處理器普及的時代&#xff0c;程序性能和響應能力的提升成為開發者面臨的核心課題。無論是高頻交易系統的毫秒級響應需求、實時游戲引擎的流暢交互體驗&#xff0c;還是網絡服務器的高并發處理能力&#xff0c;異步編程都已成為突破性能瓶頸的關鍵技術[1]。作為高性能…

LazyForEach性能優化:解決長列表卡頓問題

本文將深入解析HarmonyOS中LazyForEach的工作原理、性能優勢、實戰優化技巧及常見問題解決方案&#xff0c;幫助你構建流暢的長列表體驗。 1. LazyForEach 核心優勢與原理 LazyForEach 是鴻蒙ArkUI框架中為高性能列表渲染設計的核心組件&#xff0c;其核心設計思想基于動態加載…

Spring Boot 全棧優化:服務器、數據、緩存、日志的場景應用!

Spring Boot以其“開箱即用”聞名&#xff0c;但默認配置往往在高并發場景下成為瓶頸&#xff1a;Tomcat線程堵塞、數據庫連接耗盡、緩存命中率低下、日志洪水般淹沒磁盤。想象一個電商微服務&#xff0c;峰值流量下響應遲鈍&#xff0c;用戶流失——這不是宿命&#xff0c;而是…

Leetcode sql 50 ~5

select product_idfrom Productswhere low_fats Y and recyclable Y;SQL 規定&#xff1a;null 的比較必須用 is null 或 is not null&#xff0c;不能用普通的等號&#xff08;&#xff09;。# Write your MySQL query statement below select name from Customer where ref…

C#高并發與并行理解處理

目錄 1.什么是IO密集型任務/CPU密集型任務 2.高并發概念和技術實現 2.并行&#xff08;Parallelist&#xff09;概念和技術實現 4.核心區別對比 1.什么是IO密集型任務/CPU密集型任務 1.IO密集型任務&#xff1a; 定義&#xff1a;任務核心邏輯不依賴CPU計算&#xff0c;而是…

正點原子STM32F407 U盤升級程序(IAP)OTA Bootloader APP USB升級+FATFS+USB Host

正點原子STM32F407 U盤升級程序&#xff08;IAP&#xff09;OTA Bootloader APP USB升級FATFSUSB HostChapter0 解決STM32 Bootloader跳轉APP失敗問題問題背景問題描述問題解決原APP跳轉的函數為&#xff1a;修改APP程序main入口處Chapter1 MDK如何生成*.bin格式的文件Chapter2…

MySQL 8.0 在 Ubuntu 22.04 中如何將啟用方式改為mysql_native_password(密碼認證)

MySQL 8.0 在 Ubuntu 22.04 中默認啟用了 auth_socket 認證方式(而非密碼認證),導致 mysql_secure_installation 跳過了 root 密碼設置。這會直接影響后續用 Navicat 連接 MySQL(因為 Navicat 需要密碼登錄),必須手動調整 root 用戶的認證方式并設置密碼。 核心問題:au…

七層網絡協議-面試

七層網絡協議概述七層網絡協議&#xff0c;即OSI&#xff08;Open Systems Interconnection&#xff09;模型&#xff0c;是由國際標準化組織&#xff08;ISO&#xff09;提出的網絡通信框架。它將網絡通信過程劃分為七個層次&#xff0c;每一層負責特定的功能&#xff0c;并通…