Logstash 多表增量同步 MySQL 到 Elasticsearch:支持邏輯刪除與熱加載,Docker 快速部署實戰

?

1. 項目結構

install-elk/
├── start-elastic.sh
├── es-data/                            # Elasticsearch 持久化目錄(自動創建)
├── logstash/├── logstash.yml├── pipeline/│   ├── user.conf│   ├── articles.conf│   └── ...          #可以有更多的表├── config/│   └── pipelines.yml├── ext/│   └── mysql-connector-j-9.2.0.jar  # 通過 https://downloads.mysql.com/archives/c-j/ 獲取對應的版本。

1.1 本案例項目結構

在這里插入圖片描述

1.2 start-elastic.sh

#!/bin/bash# ================== 🎨 Logo 開場 ==================
RED='\033[1;31m'
CYAN='\033[1;36m'
YELLOW='\033[1;33m'
RESET='\033[0m'echo -e "${CYAN}"
cat << "EOF"_____                      _ _ _/ ____|                    | (_) || (___   ___  ___ _ __ _ __| |_| |_ ___ _ __\___ \ / _ \/ __| '__| '__| | | __/ _ \ '__|____) |  __/ (__| |  | |  | | | ||  __/ ||_____/ \___|\___|_|  |_|  |_|_|\__\___|_|EOF
echo -e "${YELLOW}             🚀 Welcome to the someliber Elastic Stack 🚀${RESET}"
echo# ==================  獲取版本號 ==================
read -p "請輸入要使用的版本號(默認: 8.17.3): " VERSION_INPUT
VERSION=${VERSION_INPUT:-8.17.3}ES_IMAGE="elasticsearch:$VERSION"
KIBANA_IMAGE="kibana:$VERSION"
LOGSTASH_IMAGE="logstash:$VERSION"# ==================  獲取密碼 ==================
read -s -p "請輸入 Elasticsearch 登錄密碼(默認: 123456): " PASSWORD_INPUT
echo
ES_PASSWORD=${PASSWORD_INPUT:-123456}
KIBANA_USER=kibana_user
KIBANA_PASS=someliber# ==================  是否掛載 ES 數據目錄 ==================
read -p "是否掛載 Elasticsearch 數據目錄?(y/n 默認 y): " USE_VOLUME
USE_VOLUME=${USE_VOLUME:-y}# ==================  基本變量 ==================
ES_CONTAINER_NAME=es11
KIBANA_CONTAINER_NAME=kibana11
LOGSTASH_CONTAINER_NAME=logstash11
NETWORK_NAME=elastic11
LOGSTASH_DIR="$PWD/logstash"
# ==================  創建網絡 ==================
docker network create $NETWORK_NAME >/dev/null 2>&1 || echo "🔗 網絡已存在:$NETWORK_NAME"# ==================  啟動 Elasticsearch ==================
echo " 啟動 Elasticsearch..."
if [[ "$USE_VOLUME" == "y" || "$USE_VOLUME" == "Y" ]]; thenmkdir -p ./es-datadocker run -d --name $ES_CONTAINER_NAME \--network $NETWORK_NAME \-p 9200:9200 -p 9300:9300 \-e "discovery.type=single-node" \-e "xpack.security.enabled=true" \-e "ELASTIC_PASSWORD=$ES_PASSWORD" \-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \-v "$PWD/es-data:/usr/share/elasticsearch/data" \$ES_IMAGE
elsedocker run -d --name $ES_CONTAINER_NAME \--network $NETWORK_NAME \-p 9200:9200 -p 9300:9300 \-e "discovery.type=single-node" \-e "xpack.security.enabled=true" \-e "ELASTIC_PASSWORD=$ES_PASSWORD" \-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \$ES_IMAGE
fi# ==================  等待 ES 啟動 ==================
echo " 正在等待 Elasticsearch 啟動..."
for i in {1..60}; doSTATUS=$(curl -s -u elastic:$ES_PASSWORD http://localhost:9200/_cluster/health | grep -o '"status":"[^"]\+"' || true)if [[ $STATUS == *"green"* || $STATUS == *"yellow"* ]]; thenecho " Elasticsearch 啟動成功:$STATUS"breakfisleep 2
done# ==================  創建 Kibana 用戶 ==================
echo " 創建 Kibana 用戶($KIBANA_USER)..."
docker exec $ES_CONTAINER_NAME bash -c "bin/elasticsearch-users useradd $KIBANA_USER -p $KIBANA_PASS -r kibana_system" || \echo " 用戶可能已存在,忽略錯誤"# ==================  啟動 Kibana ==================
echo " 啟動 Kibana..."
docker run -d --name $KIBANA_CONTAINER_NAME \--network $NETWORK_NAME \-p 5601:5601 \-e "ELASTICSEARCH_HOSTS=http://$ES_CONTAINER_NAME:9200" \-e "ELASTICSEARCH_USERNAME=$KIBANA_USER" \-e "ELASTICSEARCH_PASSWORD=$KIBANA_PASS" \-e "XPACK_ENCRYPTEDSAVEDOBJECTS_ENCRYPTIONKEY=2kR9HmNaesytcVDwEAK3uTQ1obCrvP7B" \-e "XPACK_REPORTING_ENCRYPTIONKEY=aSTr3J7sLgt2BCKbIyw0DE6OjZGMY1kX" \-e "XPACK_SECURITY_ENCRYPTIONKEY=WO6Xetyubr45ZonlLd32DfNmRTkcAhvp" \-e "I18N_LOCALE=zh-CN" \$KIBANA_IMAGE# ==================  啟動 Logstash(全目錄掛載) ==================
if [[ -d "$LOGSTASH_DIR" ]]; thenecho " 啟動 Logstash(全目錄掛載)..."docker run -d --name $LOGSTASH_CONTAINER_NAME \--network $NETWORK_NAME \-p 5044:5044 -p 9600:9600 -p 5000:5000 \-e "xpack.monitoring.elasticsearch.hosts=http://$ES_CONTAINER_NAME:9200" \-e "xpack.monitoring.elasticsearch.username=elastic" \-e "xpack.monitoring.elasticsearch.password=$ES_PASSWORD" \-v "$PWD/logstash/pipeline:/usr/share/logstash/pipeline" \-v "$PWD/logstash/ext:/usr/share/logstash/ext" \-v "$PWD/logstash/config:/usr/share/logstash/config" \$LOGSTASH_IMAGEecho " Logstash 啟動完成(使用 logstash/ 目錄)"
elseecho " 未找到 logstash/ 目錄,Logstash 未啟動"
fi# ==================  提示 ==================
echo
echo -e "${CYAN} 所有容器啟動完成!${RESET}"
echo -e "${YELLOW} Elasticsearch: http://localhost:9200${RESET}"
echo -e "${YELLOW} Kibana:        http://localhost:5601${RESET}"

1.3 logstash/pipeline/user.conf

# ====================== 輸入階段:從 MySQL 中讀取數據 ======================
input {jdbc {# MySQL JDBC 連接串jdbc_connection_string => "jdbc:mysql://192.168.167.175:3306/test"# 數據庫賬號和密碼jdbc_user => "root"jdbc_password => "123456"# MySQL JDBC 驅動的路徑(需要確保已經掛載進容器)jdbc_driver_library => "/usr/share/logstash/ext/mysql-connector-j-9.2.0.jar"# JDBC 驅動類名稱jdbc_driver_class => "com.mysql.cj.jdbc.Driver"jdbc_paging_enabled => truejdbc_page_size => 10000# ========== 增量同步設置 ==========# 啟用基于字段的增量同步use_column_value => true# 增量字段:用來判斷是否有更新tracking_column => "updated_at"tracking_column_type => "timestamp"record_last_run => true# 記錄上次同步時間的文件(容器中可寫路徑)last_run_metadata_path => "/usr/share/logstash/last_run_metadata/users_last_run.yml"# 執行的 SQL 語句:查所有新增、修改、邏輯刪除的數據statement => "SELECTid,username,gender,email,age,created_at,updated_at,is_deletedFROM usersWHERE updated_at > :sql_last_valueORDER BY updated_at ASC, id ASC"# 每分鐘執行一次同步任務(Cron 格式)schedule => "* * * * *"}
}# ====================== 過濾器階段:處理數據邏輯 ======================
filter {# 如果 is_deleted = 1,則為“邏輯刪除”,我們在元數據中標記 action 為 deleteif [is_deleted] and [is_deleted] in [1, "1", true, "true"] {mutate {add_field => { "[@metadata][action]" => "delete" }}} else {# 否則為“新增或更新”操作,標記 action 為 indexmutate {add_field => { "[@metadata][action]" => "index" }}}# 移除不希望寫入 ES 的字段(如刪除標記)mutate {remove_field => ["is_deleted"]}
}# ====================== 輸出階段:寫入到 Elasticsearch ======================
output {elasticsearch {# Elasticsearch 地址hosts => ["http://es11:9200"]# 索引名稱為 usersindex => "users"# ES 用戶名和密碼(需開啟身份驗證)user => "elastic"password => "123456"# 文檔 ID 使用 MySQL 的主鍵 ID,避免重復寫入document_id => "%{id}"# 根據前面 filter 設置的 action 決定是 index 還是 delete 操作action => "%{[@metadata][action]}"}# 控制臺輸出(調試用)stdout {codec => json_lines}
}

1.3 logstash/pipeline/articles.conf

# ====================== 輸入階段:從 MySQL 中讀取文章數據 ======================
input {jdbc {# MySQL JDBC 連接串jdbc_connection_string => "jdbc:mysql://192.168.167.175:3306/test"# 數據庫賬號和密碼jdbc_user => "root"jdbc_password => "123456"# MySQL JDBC 驅動的路徑(需確保掛載到容器)jdbc_driver_library => "/usr/share/logstash/ext/mysql-connector-j-9.2.0.jar"# JDBC 驅動類名稱jdbc_driver_class => "com.mysql.cj.jdbc.Driver"# 啟用分頁拉取數據,提高大數據量時性能jdbc_paging_enabled => truejdbc_page_size => 10000# ========== 增量同步設置 ==========use_column_value => true                 # 啟用字段值來判斷是否更新tracking_column => "updated_at"         # 使用 updated_at 字段做增量對比tracking_column_type => "timestamp"record_last_run => truelast_run_metadata_path => "/usr/share/logstash/last_run_metadata/articles_last_run.yml"# SQL 查詢語句,排除敏感字段,按更新時間 & ID 順序拉取statement => "SELECTid,title,content,author_id,category,created_at,updated_at,is_deletedFROM articlesWHERE updated_at > :sql_last_valueORDER BY updated_at ASC, id ASC"# 同步頻率:每分鐘執行一次schedule => "* * * * *"}
}# ====================== 過濾器階段:邏輯刪除與字段處理 ======================
filter {# 如果 is_deleted = 1/true,標記 action 為 delete(邏輯刪除)if [is_deleted] and [is_deleted] in [1, "1", true, "true"] {mutate {add_field => { "[@metadata][action]" => "delete" }}} else {# 否則表示新增或更新mutate {add_field => { "[@metadata][action]" => "index" }}}# 移除不希望寫入 ES 的字段(如刪除標記)mutate {remove_field => ["is_deleted"]}
}# ====================== 輸出階段:寫入 Elasticsearch ======================
output {elasticsearch {hosts => ["http://es11:9200"]index => "articles"user => "elastic"password => "123456"document_id => "%{id}"                   # 使用文章主鍵作為文檔 IDaction => "%{[@metadata][action]}"       # 動態執行 index 或 delete}# 控制臺調試輸出(開發期使用)stdout {codec => json_lines}
}

1.4 logstash/config/pipelines.yml

# 定義第一個 pipeline(數據同步管道)
- pipeline.id: users                     # 唯一標識這個 pipeline 的 ID,日志中會看到 users 相關的信息path.config: "/usr/share/logstash/pipeline/user.conf"# 指定該 pipeline 使用的配置文件路徑,里面寫的是 input/filter/output# 定義第二個 pipeline
- pipeline.id: articles                    # 另一個獨立的 pipeline ID,處理 articles 表的同步path.config: "/usr/share/logstash/pipeline/articles.conf"# 指定第二個 pipeline 的配置文件路徑

1.5 logstash/config/logstash.yml

# ================================
#  Logstash HTTP API 接口配置
# ================================api.http.host: 0.0.0.0             # Logstash API 綁定的主機地址,0.0.0.0 表示所有網卡
api.http.port: 9600                # Logstash HTTP API 的端口號,默認是 9600# ================================
#  配置自動加載(熱加載)
# ================================config.reload.automatic: true      # 開啟配置文件自動熱加載,無需重啟即可更新 pipeline
config.reload.interval: 5s         # 配置檢查的時間間隔(單位:秒)# ================================
#  Pipeline 性能調優參數
# ================================pipeline.batch.delay: 50           # 每個批次處理之間的最大等待時間(毫秒),默認 50ms
pipeline.batch.size: 125           # 每個批次處理的最大事件數量
pipeline.workers: 2                # 每個 pipeline 使用的 worker 線程數,建議和 CPU 核心數保持一致# ================================
#  X-Pack 監控配置
# ================================xpack.monitoring.elasticsearch.hosts: ${xpack.monitoring.elasticsearch.hosts}       # Elasticsearch 監控地址,從環境變量讀取
xpack.monitoring.elasticsearch.username: ${xpack.monitoring.elasticsearch.username} # ES 認證用戶名,從環境變量讀取
xpack.monitoring.elasticsearch.password: ${xpack.monitoring.elasticsearch.password} # ES 認證密碼,從環境變量讀取

1.6 啟動 start-elastic.sh

chmod +x start-elastic.sh && ./start-elastic.sh

1.7 數據庫相關

1.7.1 用戶信息表

CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT COMMENT '用戶唯一標識',username VARCHAR(100) NOT NULL COMMENT '用戶名',password VARCHAR(255) NOT NULL COMMENT '加密后的用戶密碼',gender ENUM('male', 'female', 'other') DEFAULT 'other' COMMENT '性別',email VARCHAR(255) COMMENT '用戶郵箱',age INT COMMENT '年齡',created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '用戶創建時間',updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新時間',is_deleted BOOLEAN DEFAULT FALSE COMMENT '邏輯刪除標記,TRUE 表示已刪除'
) COMMENT='用戶信息表';

1.7.2 文章信息表

CREATE TABLE articles (id INT PRIMARY KEY AUTO_INCREMENT COMMENT '文章唯一標識',title VARCHAR(255) NOT NULL COMMENT '文章標題',content TEXT COMMENT '文章內容正文',author_id INT NOT NULL COMMENT '作者ID,對應 users 表 id',category VARCHAR(100) COMMENT '文章分類',published_at DATETIME COMMENT '發布時間',created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '文章創建時間',updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新時間',is_deleted BOOLEAN DEFAULT FALSE COMMENT '邏輯刪除標記,TRUE 表示已刪除'
) COMMENT='文章信息表';

1.7.3 測試數據

INSERT INTO users (username, password, gender, email, age, is_deleted)
VALUES 
('Alice',   'hashed_password_1', 'female', 'alice@example.com', 28, FALSE),
('Bob',     'hashed_password_2', 'male',   'bob@example.com',   35, FALSE),
('Charlie', 'hashed_password_3', 'male',   'charlie@example.com', 22, FALSE),
('Diana',   'hashed_password_4', 'female', 'diana@example.com', 40, TRUE),  
('Eve',     'hashed_password_5', 'other',  'eve@example.com',    30, FALSE);INSERT INTO articles (title, content, author_id, category, published_at, is_deleted)
VALUES 
('Elasticsearch 入門', '這是關于 Elasticsearch 的基礎教程內容。', 1, '技術', NOW(), FALSE),
('MySQL 優化實踐', '介紹常見的 MySQL 優化技巧。', 2, '數據庫', NOW(), FALSE),
('Logstash 配置指南', '如何配置 Logstash 管道同步數據。', 1, '日志系統', NOW(), FALSE),
('前端與后端的區別', '講解 Web 開發中的前后端職責。', 3, 'Web開發', NULL, FALSE),
('已刪除的文章示例', '這篇文章已被邏輯刪除。', 4, '歷史', NOW(), TRUE);  

1.8 測試驗證過程

1.8.1 啟動start-elastic.sh

在這里插入圖片描述

1.8.2 驗證索引是否創建成功

在這里插入圖片描述

1.8.3 進行刪除測試

1.8.3.1 刪除前

在這里插入圖片描述

1.8.3.2 邏輯刪除Alice用戶

在這里插入圖片描述

1.8.3.3 查看結果

說明:等待一分鐘,可以看到users索引下的文檔數量由4->3,即文檔從ES中刪除。

在這里插入圖片描述

1.8.4 進行修改測試

1.8.4.1 修改前

在這里插入圖片描述

1.8.4.2 修改Bob為Bob123

在這里插入圖片描述

1.8.4.3 查看修改結果

說明:等待一分鐘,數據更新同步到ES文檔。

在這里插入圖片描述

2 總結

通過 LogstashMySQL 中同步多個業務表(如 usersarticles),并實現以下能力:

  • 增量同步:基于 updated_at 字段,避免全量拉取。
  • 邏輯刪除同步:使用 is_deleted 字段自動觸發 ES 刪除操作。
  • 定時同步:每分鐘調度,適用于數據近實時場景。
  • 多表配置隔離:每個表對應一個獨立的 pipeline,實現清晰可維護結構。
  • 全目錄掛載:Logstash 配置、驅動、Pipeline 統一掛載,便于統一管理和部署。

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

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

相關文章

服務器托管:網站經常被攻擊該怎么辦?

“木馬”對于孩子來說是個玩具&#xff0c;但是對于網絡行業來說是一個病毒威脅&#xff0c;站長在進行建站的過程中&#xff0c;通常都會面臨一個問題網站被掛馬&#xff0c;有些網站服務器托管在進行多次處理木馬之后得不到根治&#xff0c;后續會受到頻繁的攻擊該怎么辦&…

判斷子序列-leetcode

給定字符串 s 和 t &#xff0c;判斷 s 是否為 t 的子序列。 字符串的一個子序列是原始字符串刪除一些&#xff08;也可以不刪除&#xff09;字符而不改變剩余字符相對位置形成的新字符串。&#xff08;例如&#xff0c;"ace"是"abcde"的一個子序列&#x…

如何提高微信小程序的應用速度

1、如何提高微信小程序的應用速度&#xff1f;加載時1、上傳代碼時&#xff0c;對代碼進行壓縮。2、清理點代碼中無效的代碼和資源文件。3、減少本地代碼中圖片等資源的數量和大小。如將多個圖片合成一張圖片。還有將圖片資源放在靜態資源庫存儲。渲染1、在加載頁面時&#xff…

華為高頻算法題:最長連續遞增子序列(Longest Continuous Increasing Subsequence)

文章目錄前言題目描述&#xff08;華為校招真題&#xff09;解題思路分析Java 實現代碼單元測試代碼結語前言 在各大互聯網公司的算法面試中&#xff0c;數組類題目一直是考察的重點&#xff0c;尤其是對于應屆生和初級工程師的面試來說更是常見題型。華為作為國內頂尖的科技企…

JavaSE-圖書信息管理系統

目錄 前置知識點 項目部署說明 項目運行截圖 項目結構展示 項目編寫構思 book包 Book類 Booklist類 ioperations包 IOPeration接口 AddOperation類 BorrowOperation類 DelOperation類 FindOperation類 ReturnOperation類 ShowOperation類 ExitOperation類 use…

網絡 IP 地址總結

網絡IP地址總結 一、IPv4地址核心分類與特殊網段 IPv4地址是32位二進制數&#xff08;通常表示為4組0-255的十進制數&#xff0c;即“點分十進制”&#xff09;&#xff0c;總地址空間約43億個。根據用途可分為公有地址&#xff08;公網使用&#xff0c;全球唯一&#xff09;和…

【C++進階】第7課—紅黑樹

文章目錄1. 認識紅黑樹1.1 紅黑樹的規則1.2 紅黑樹如何確保最長路徑不超過最短路徑的2倍呢?1.3 紅黑樹的效率2. 實現紅黑樹2.1 紅黑樹的結構2.2 紅黑樹的插入2.2.1 第一種情況:插入節點的父節點和其uncle節點都為紅色&#xff0c;且uncle節點存在2.2.2 第2種情況:插入節點cur和…

解決 SQL 錯誤 [1055]:深入理解 only_full_group_by 模式下的查詢規范

在日常的 SQL 開發中&#xff0c;你是否遇到過這樣的報錯&#xff1a;SQL 錯誤 [1055] [42000]: Expression #N of SELECT list is not in GROUP BY clause and contains nonaggregated column...&#xff1f;尤其是在 MySQL 5.7 及以上版本中&#xff0c;這個錯誤更為常見。本…

Keepalived 原理及配置(高可用)

一、Keepalived 原理keepalived 基于 VRRP&#xff08;虛擬路由冗余協議&#xff09;實現高可用。核心原理是通過競選機制在多臺服務器&#xff08;主 / 備節點&#xff09;中選舉出一臺主節點承擔服務&#xff0c;同時備節點持續監控主節點狀態&#xff1a;主節點正常時&#…

從代碼混亂到井然有序:飛算JavaAI的智能治理之道

文章目錄一、前言二、飛算JavaAI平臺三、飛算JavaAI安裝流程3.1 Idea安裝配置3.2 官網注冊登入四、飛算JavaAI獨特魅力:合并項目場景4.1 ERP老項目精準翻新&#xff1a;保留核心邏輯的智能改造方案4.2 智能合并&#xff1a;重構ERP系統的代碼迷宮4.3 ERP接口智能導航&#xff1…

iOS打開開發者模式

啟用開發者模式的方法在iOS設備上啟用開發者模式通常需要連接Xcode或通過設置手動開啟&#xff0c;以下是具體步驟&#xff1a;通過Xcode啟用將iOS設備通過USB線連接到Mac電腦。打開Xcode&#xff08;需提前安裝&#xff09;。在Xcode的菜單欄中選擇 Window > Devices and S…

leetcode101.對稱二叉樹樹(遞歸練習題)

文章目錄一、 題目描述二、 核心思路&#xff1a;判斷左右子樹是否互為鏡像三、 遞歸的終止條件 (Base Cases)四、 代碼實現與深度解析五、 關鍵點與復雜度分析六、 總結與對比 (LC100 vs LC101)LeetCode 101. 對稱二叉樹 - 力扣【難度&#xff1a;簡單&#xff1b;通過率&…

【國內電子數據取證廠商龍信科技】誰是躲在“向日葵”后的

一、前言大家可能每天都在使用在遠控軟件&#xff0c;我們在享受遠控軟件帶來的便利同時&#xff0c;犯罪者也在使用遠控軟件進行違法犯罪活動&#xff0c;以達到隱藏自己的目的。市面上常用的遠控軟件有“向日葵”、“TeamViewer”。二、案件背景在一次電信詐騙案件支援中&…

SAP-PP-MRPLIST

MRP(物料需求計劃)分析功能,主要包含以下要點: 程序通過選擇工廠和物料/銷售訂單范圍作為輸入條件,支持兩種展示方式:ALV表格和樹形結構 核心功能包括: 物料主數據查詢(MAKT/MARA表) 銷售訂單數據查詢(VBAP表) BOM展開(CS_BOM_EXPL_MAT_V2函數) MRP數據獲取(MA…

MIT線性代數01_方程組的幾何解釋

Linear Algebra Lecture #1 W. Gilbert Strangn linear equations, n unknowns row picturecol pictureMatrix form {2x?y0?x2y3 \left\{\begin{matrix} 2x - y 0 \\ -x 2y 3 \end{matrix}\right. {2x?y0?x2y3? 1 Row Picture2 Column PictureWhat are all combination…

FreeRTOS-中斷管理

學習內容中斷概念中斷是計算機系統中一種重要的事件驅動機制&#xff0c;用于在特定條件下打斷正在執行的程序&#xff0c;并跳轉到預定義的中斷處理程序中執行特定的操作。當發生中斷時&#xff0c;處理器會立即中止當前正在執行的指令&#xff0c;保存當前的執行狀態&#xf…

圖像梯度處理與邊緣檢測

在圖像處理的世界里&#xff0c;我們常常需要從復雜的像素矩陣中提取有意義的信息 —— 比如一張照片中物體的輪廓、醫學影像中病灶的邊界、自動駕駛視野里的道路邊緣。這些 “邊界” 或 “輪廓” 在專業術語中被稱為 “邊緣”&#xff0c;而捕捉邊緣的核心技術&#xff0c;離不…

GPU服務器與PC 集群(PC農場):科技算力雙子星

在數字經濟高速發展的今天&#xff0c;算力已成為驅動科技創新與產業變革的核心引擎。GPU服務器憑借其強大的并行計算能力&#xff0c;在圖形渲染、人工智能訓練等領域展現出不可替代的優勢&#xff1b;而PC集群則通過分布式架構&#xff0c;以高性價比和靈活擴展特性&#xff…

秋招Day19 - 分布式 - 分布式鎖

單體時代&#xff0c;可以直接用本地鎖來實現對競爭資源的加鎖&#xff0c;分布式環境下就要用到分布式鎖了有哪些分布式鎖的實現方案&#xff1f;MySQL分布式鎖、Zookeeper分布式鎖、Redis分布式鎖MySQL分布式鎖如何實現&#xff1f;創建一張鎖表&#xff0c;對字段定義唯一性…

AIStarter平臺亮點解析:從ComfyUI項目上架到一鍵運行的完整指南

大家好&#xff01;今天分享一個AIStarter平臺的深度體驗&#xff0c;帶你了解如何通過這個平臺輕松上架和運行AI項目&#xff01;視頻中&#xff0c;博主在凌晨分享了AIStarter的強大功能&#xff0c;重點展示了ComfyUI 4.0和5.0整合包的上架過程&#xff0c;以及如何簡化AI項…