HikariCP 6.3.0 完整配置與 Keepalive 優化指南

HikariCP 6.3.0 完整配置與 Keepalive 優化指南

HikariCP 是一個高性能、輕量級的 JDBC 連接池框架,廣泛應用于 Java 應用,尤其是 Spring Boot 項目。本文檔基于 HikariCP 6.3.0 版本,詳細介紹其功能、配置參數、Keepalive 機制以及優化建議,特別說明其與 Linux TCP Keepalive 的區別,闡明為何通常無需修改系統級配置(如 /etc/sysctl.conf)。本文內容經過結構優化,旨在為開發者提供清晰、實用的參考。


文章目錄

  • HikariCP 6.3.0 完整配置與 Keepalive 優化指南
    • 一、HikariCP 簡介
      • 核心特點
      • 發展歷程
    • 二、HikariCP 功能
    • 三、HikariCP 配置參數
      • 3.1 基本配置
      • 3.2 池管理
      • 3.3 超時控制
      • 3.4 驗證與監控
      • 3.5 高級配置
      • 3.6 6.3.0 新特性
    • 四、HikariCP Keepalive 機制
      • 4.1 作用
      • 4.2 配置參數
        • 關鍵特性
        • 配置示例
      • 4.3 與 Linux TCP Keepalive 的區別
        • 為何無需修改 `/etc/sysctl.conf`?
        • 何時需要 Linux TCP Keepalive?
        • Linux TCP Keepalive 配置示例
    • 五、使用 HikariCP
      • 5.1 單獨使用
      • 5.2 Spring Boot 集成
    • 六、優化與監控建議
      • 6.1 配置優化
      • 6.2 監控與調優
      • 6.3 Keepalive 優化
    • 七、完整配置文件示例
    • 八、注意事項
    • 九、參考資源
    • 十、總結

一、HikariCP 簡介

HikariCP 由 Brett Wooldridge 于 2012 年開發,名稱“Hikari”在日語中意為“光”,象征其高效與快速。它以零開銷、高性能著稱,自 Spring Boot 2.x 起成為默認連接池,廣泛應用于微服務和云原生架構。

核心特點

  • 輕量:JAR 文件約 135KB,代碼精簡。
  • 高性能:通過字節碼優化(如 Javassist)、ConcurrentBag 和 FastList,顯著降低延遲。
  • 可靠:自動失效連接檢測、連接泄漏監控。
  • 易用:配置簡單,默認設置適用于大多數場景。

發展歷程

  • 2012年:HikariCP 誕生,解決 C3P0、DBCP 等連接池性能問題。
  • 2014年:1.x 版本發布,引入核心優化技術。
  • 2017年:2.x 版本支持 Java 7/8,新增健康檢查和 Dropwizard Metrics。
  • 2018年:Spring Boot 2.x 默認采用 HikariCP。
  • 2020-2023年:4.x 和 5.x 版本優化數據庫兼容性,修復邊緣問題。
  • 2025年:6.3.0 版本支持時間單位配置、20% Keepalive 方差,保持高性能標桿地位。

官方倉庫:https://github.com/brettwooldridge/HikariCP


二、HikariCP 功能

HikariCP 提供以下功能,滿足現代 Java 應用需求:

  1. 高效連接池管理
    • 預建連接池,減少連接創建/關閉開銷。
    • 動態調整池大小,適應高并發。
  2. 性能優化
    • ConcurrentBag 實現無鎖連接管理。
    • 字節碼優化降低 CPU 消耗。
    • FastList 替代 ArrayList,提升集合性能。
  3. 連接驗證
    • 自動檢測失效連接(如數據庫宕機)。
    • 支持自定義測試查詢(如 SELECT 1)。
  4. 監控與管理
    • JMX 集成,實時監控池狀態。
    • 支持 Dropwizard Metrics 和 Micrometer。
  5. 靈活配置
    • 支持屬性文件、環境變量、程序化配置。
    • 兼容 MySQL、PostgreSQL、Oracle 等數據庫。
  6. 連接泄漏檢測
    • 通過 leakDetectionThreshold 監控未關閉連接。
  7. 高級功能
    • 支持只讀模式、連接池暫停/恢復。
    • 提供自定義 SQLException 處理。

三、HikariCP 配置參數

HikariCP 6.3.0 提供豐富的配置參數,分為基本配置、池管理、超時控制、驗證與監控、高級配置五類。以下為詳細說明,包含默認值、推薦值及注意事項。

3.1 基本配置

用于設置數據庫連接信息。

參數描述默認值推薦值注意事項
dataSourceClassNameJDBC 數據源類名,優先于 jdbcUrl視數據庫(如 com.mysql.cj.jdbc.MysqlDataSourceSpring Boot 推薦用 jdbcUrl
jdbcUrl數據庫連接 URL必填(如 jdbc:mysql://localhost:3306/testdb確保 URL 格式正確,MySQL 需設置 useSSL=false 等。
username數據庫用戶名必填確保權限足夠。
password數據庫密碼必填使用環境變量或加密存儲。
driverClassNameJDBC 驅動類名自動推斷僅在無法自動加載驅動時設置。
catalog默認數據庫目錄視需求適用于 PostgreSQL 等數據庫。
schema默認數據庫模式視需求自 2.7.0 起支持。

3.2 池管理

控制連接池大小和生命周期。

參數描述默認值推薦值注意事項
maximumPoolSize最大連接池大小(含空閑和活躍連接)1010-20視數據庫并發能力和應用負載調整。
minimumIdle最小空閑連接數maximumPoolSize 相同maximumPoolSize設為固定大小池提升性能。
poolName連接池名稱(用于日志和監控)自動生成(如 HikariPool-1自定義(如 MyAppPool便于多數據源區分。

3.3 超時控制

管理連接獲取和存活時間。

參數描述默認值推薦值注意事項
connectionTimeout獲取連接最大等待時間(毫秒)30000 (30s)30000最低 250ms,過短可能導致超時。
idleTimeout空閑連接存活時間(毫秒)600000 (10m)120000 (2m)僅當 minimumIdle < maximumPoolSize 生效,最低 10000ms。
maxLifetime連接最大存活時間(毫秒)1800000 (30m)1800000小于數據庫超時(如 MySQL wait_timeout),最低 30000ms。
keepaliveTime保持連接活躍的檢查間隔(毫秒)120000 (2m)120000小于 maxLifetime 和數據庫超時,最低 30000ms,6.3.0 增加 20% 方差。
initializationFailTimeout初始連接失敗重試時間(毫秒)11000負值異步嘗試,正值明確超時。

3.4 驗證與監控

確保連接有效性并監控池狀態。

參數描述默認值推薦值注意事項
connectionTestQuery連接測試查詢SELECT 1僅舊驅動需設置,視數據庫調整。
validationTimeout驗證連接有效性最大時間(毫秒)50005000小于 connectionTimeout,最低 250ms。
leakDetectionThreshold連接泄漏檢測閾值(毫秒)0 (禁用)60000 (1m)生產環境啟用,最低 2000ms。
registerMbeans啟用 JMX 監控falsetrue便于查看池狀態(如活躍連接數)。

3.5 高級配置

用于特定場景和優化。

參數描述默認值推薦值注意事項
autoCommit是否自動提交truetrue事務管理由應用控制。
connectionInitSql連接初始化 SQL視需求(如 SET NAMES utf8謹慎使用,避免性能影響。
transactionIsolation事務隔離級別視需求(如 TRANSACTION_READ_COMMITTED使用數據庫支持的級別。
readOnly是否為只讀連接falsefalse適用于讀寫分離。
allowPoolSuspension是否允許暫停/恢復池falsefalse僅故障轉移場景啟用。
dataSourceProperties底層數據源額外屬性視數據庫(如 MySQL cachePrepStmts設置驅動特定優化。

3.6 6.3.0 新特性

  • 時間單位支持:支持 10ms20s30m 等格式。
  • Keepalive 方差keepaliveTime 檢查間隔增加 20% 隨機方差。
  • 數組屬性:支持 String[]int[],優化 PostgreSQL 高可用配置。
  • 日志優化HikariPool.logPoolState() 格式更清晰。

四、HikariCP Keepalive 機制

HikariCP 的 keepaliveTime 參數通過應用層實現 TCP Keepalive 功能,定期檢查空閑連接以防止數據庫或網絡超時導致的連接失效。

4.1 作用

  • 防止超時:應對數據庫(如 MySQL wait_timeout)或網絡設備(如防火墻)的空閑超時。
  • 檢測失效連接:通過 isValid()connectionTestQuery 驗證連接有效性。
  • 提高可靠性:快速重建失效連接,適合高可用性場景。

4.2 配置參數

參數描述默認值推薦值注意事項
keepaliveTime保持連接活躍的檢查間隔(毫秒)120000 (2m)120000小于 maxLifetime 和數據庫超時,最低 30000ms,6.3.0 增加 20% 方差。
關鍵特性
  • 默認啟用:自 6.2.1 起默認 120000ms,設為 0 禁用。
  • 隨機方差:6.3.0 中檢查間隔增加 20% 方差(如 120s ± 24s),避免集中檢查。
  • 檢查機制:優先使用 isValid(),舊驅動使用 connectionTestQuery
  • maxLifetime 關系:推薦 keepaliveTimemaxLifetime 的 1/10 至 1/5。
配置示例
spring.datasource.hikari.keepalive-time=120000
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.connection-test-query=SELECT 1

4.3 與 Linux TCP Keepalive 的區別

特性HikariCP keepaliveTimeLinux TCP Keepalive
層級應用層(JVM 內部)操作系統(TCP 協議棧)
配置方式配置文件(如 application.properties/etc/sysctl.conf(需 root 權限)
靈活性針對每個數據源獨立配置全局影響所有 TCP 連接
數據庫適配支持自定義查詢(如 SELECT 1僅檢測 TCP 連通性
云環境友好性無需主機權限,適合容器化部署容器化環境修改復雜且不持久
默認值120000ms(2分鐘)7200s(2小時,tcp_keepalive_time
為何無需修改 /etc/sysctl.conf
  • 靈活性keepaliveTime 針對數據庫連接優化,支持自定義檢查邏輯。
  • 默認值合理:120000ms 遠小于數據庫超時(如 MySQL wait_timeout=28800s)。
  • 云環境適配:無需主機權限,適合 Docker、Kubernetes、AWS RDS 等。
  • 隔離性:僅影響連接池,不干擾其他 TCP 連接。
何時需要 Linux TCP Keepalive?
  • 超短網絡超時:防火墻超時 < 30s(如 10s),keepaliveTime 最小值 30000ms 不足。
  • 非數據庫連接:其他 TCP 連接(如消息隊列)需要 Keepalive。
  • 特殊要求:系統強制要求 TCP 層探測包。
Linux TCP Keepalive 配置示例
net.ipv4.tcp_keepalive_time=10
net.ipv4.tcp_keepalive_intvl=2
net.ipv4.tcp_keepalive_probes=5

應用:sysctl -p

風險:全局影響、容器化不持久、需 root 權限,建議優先使用 keepaliveTime


五、使用 HikariCP

5.1 單獨使用

Maven 依賴

<dependency><groupId>com.zaxxer</groupId><artifactId>HikariCP</artifactId><version>6.3.0</version>
</dependency>

代碼示例

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;public class HikariCPExample {public static void main(String[] args) {HikariConfig config = new HikariConfig();config.setJdbcUrl("jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC");config.setUsername("root");config.setPassword("password");config.setMaximumPoolSize(15);config.setMinimumIdle(15);config.setKeepaliveTime(120000);config.addDataSourceProperty("cachePrepStmts", "true");try (HikariDataSource ds = new HikariDataSource(config);Connection conn = ds.getConnection();Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("SELECT * FROM users")) {while (rs.next()) {System.out.println("User: " + rs.getString("name"));}} catch (Exception e) {e.printStackTrace();}}
}

5.2 Spring Boot 集成

Maven 依賴

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>9.2.0</version>
</dependency>

配置文件(application.yml)

spring:datasource:hikari:jdbc-url: jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTCusername: rootpassword: passwordmaximum-pool-size: 15minimum-idle: 15keepalive-time: 120000max-lifetime: 1800000connection-timeout: 30000leak-detection-threshold: 60000register-mbeans: truedata-source-properties:cachePrepStmts: trueuseServerPrepStmts: true

代碼示例

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;@Service
public class UserService {@Autowiredprivate JdbcTemplate jdbcTemplate;public void listUsers() {jdbcTemplate.query("SELECT * FROM users", (rs, rowNum) ->rs.getString("name")).forEach(System.out::println);}
}

六、優化與監控建議

6.1 配置優化

  1. 池大小
    • maximumPoolSize=15minimumIdle=15,創建固定大小池。
    • 根據數據庫支持的并發連接數調整(通常 10-20)。
  2. 超時設置
    • connectionTimeout=30000(30s),避免過長等待。
    • maxLifetime=1800000(30m),小于數據庫超時(如 MySQL wait_timeout)。
    • keepaliveTime=120000(2m),小于防火墻或數據庫超時。
  3. 連接測試
    • 使用 connectionTestQuery=SELECT 1(舊驅動)或 isValid()(新驅動)。
  4. 泄漏檢測
    • leakDetectionThreshold=60000(1m),生產環境啟用。
  5. 數據庫優化
    • MySQL:啟用 cachePrepStmts=trueuseServerPrepStmts=true
    • PostgreSQL:協調 idle_in_transaction_session_timeout

6.2 監控與調優

  • JMX 監控:設置 registerMbeans=true,通過 JConsole 查看池狀態。
  • 日志分析:啟用 DEBUG 級別日志,檢查失效連接和泄漏警告。
  • 性能測試:使用 JMH 基準測試不同配置效果。
  • Datadog 集成:監控 HikariCP 性能指標。

6.3 Keepalive 優化

  • 與數據庫對齊
    • MySQL:SHOW VARIABLES LIKE 'wait_timeout';(通常 28800s)。
    • PostgreSQL:SHOW idle_in_transaction_session_timeout;
    • 設置 keepaliveTime 為數據庫超時或防火墻超時的 1/2(如 120000ms)。
  • 避免過短間隔keepaliveTime < 30s 可能增加負載。
  • 驗證效果:通過 JMX 監控失效連接移除頻率,調整 keepaliveTime

七、完整配置文件示例

以下為 Spring Boot 3.x 的 MySQL 配置文件,包含推薦值和注釋。

application.properties

spring.datasource.hikari.jdbc-url=jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC
spring.datasource.hikari.username=root
spring.datasource.hikari.password=password
spring.datasource.hikari.maximum-pool-size=15
spring.datasource.hikari.minimum-idle=15
spring.datasource.hikari.pool-name=MyAppPool
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.idle-timeout=120000
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.keepalive-time=120000
spring.datasource.hikari.initialization-fail-timeout=1000
spring.datasource.hikari.connection-test-query=SELECT 1
spring.datasource.hikari.validation-timeout=5000
spring.datasource.hikari.leak-detection-threshold=60000
spring.datasource.hikari.register-mbeans=true
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.connection-init-sql=SET NAMES utf8mb4
spring.datasource.hikari.data-source-properties.cachePrepStmts=true
spring.datasource.hikari.data-source-properties.useServerPrepStmts=true

等效 YAML

spring:datasource:hikari:jdbc-url: jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTCusername: rootpassword: passwordmaximum-pool-size: 15minimum-idle: 15pool-name: MyAppPoolconnection-timeout: 30000idle-timeout: 120000max-lifetime: 1800000keepalive-time: 120000initialization-fail-timeout: 1000connection-test-query: SELECT 1validation-timeout: 5000leak-detection-threshold: 60000register-mbeans: trueauto-commit: trueconnection-init-sql: SET NAMES utf8mb4data-source-properties:cachePrepStmts: trueuseServerPrepStmts: true

八、注意事項

  1. 避免過大池maximumPoolSize 過大可能耗盡數據庫資源,參考數據庫最大連接數。
  2. 數據庫宕機:HikariCP 自動移除失效連接,建議設置合理的 connectionTimeout 和重試機制。
  3. Keepalive 性能:過短的 keepaliveTime 增加數據庫負載,推薦 120000ms。
  4. Linux TCP Keepalive
    • 僅在防火墻超時 < 30s 或非數據庫連接需求時調整 /etc/sysctl.conf
    • 優先使用 HikariCP 的 keepaliveTime,避免全局影響。
  5. 安全性:密碼等敏感信息通過環境變量管理。

九、參考資源

  • 官方文檔:https://github.com/brettwooldridge/HikariCP
  • 配置說明:https://github.com/brettwooldridge/HikariCP#configuration-knobs-baby
  • Spring Boot 教程:https://www.baeldung.com/spring-boot-hikari
  • MySQL 超時:https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html
  • PostgreSQL 超時:https://www.postgresql.org/docs/current/runtime-config-connection.html

十、總結

HikariCP 6.3.0 以其高性能、輕量級和易用性成為 Java 連接池的首選。keepaliveTime(默認 120000ms)通過應用層健康檢查有效防止連接超時,無需修改 Linux TCP Keepalive 參數(如 /etc/sysctl.conf)。開發者應根據數據庫超時(如 MySQL wait_timeout)和網絡環境優化配置,結合 JMX 監控確保性能和穩定性。在云原生和容器化場景中,HikariCP 的靈活性尤為突出,是現代 Java 應用的理想選擇。

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

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

相關文章

基于springboot+vue的攝影師分享交流社區的設計與實現

開發語言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服務器&#xff1a;tomcat7數據庫&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;數據庫工具&#xff1a;Navicat11開發軟件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

ComfyUI for Windwos與 Stable Diffusion WebUI 模型共享修復

#工作記錄 雖然在安裝ComfyUI for Windwos時已經配置過extra_model_paths.yaml 文件&#xff0c;但升級ComfyUI for Windwos到最新版本后發現原先的模型配置失效了&#xff0c;排查后發現&#xff0c;原來是 extra_model_paths.yaml 文件在新版本中被移動到了C盤目錄下&#x…

【最新版】沃德代駕源碼全開源+前端uniapp

一.系統介紹 基于ThinkPHPUniapp開發的代駕軟件。系統源碼全開源&#xff0c;代駕軟件的主要功能包括預約代駕、在線搶單、一鍵定位、在線支付、車主登記和代駕司機實名登記等?。用戶可以通過小程序預約代駕服務&#xff0c;系統會估算代駕價格并推送附近代駕司機供用戶選擇&…

react的 Fiber 節點的鏈表存儲

在React Fiber架構中&#xff0c;Fiber節點的鏈表存儲是一種重要的數據結構組織方式&#xff0c;用于管理和遍歷Fiber節點。以下是關于Fiber節點鏈表存儲的詳細介紹&#xff1a; 鏈表結構 單鏈表&#xff1a;React Fiber節點通過next指針形成單鏈表結構。每個Fiber節點都有一…

Kafka + Kafka-UI

文章目錄 前言&#x1f433; 一、使用純 Kafka Kafka-UI &#xff08;無 Zookeeper&#xff09;Docker 配置&#x1f680; 啟動步驟? 服務啟動后地址&#x1f525; 注意事項&#xff08;使用 Kraft&#xff09;? NestJS Kafka 連接不變&#x1f9e0; 額外補充&#x1f4e6; …

AI聲像融合守護幼兒安全——打罵/異常聲音報警系統的智慧防護

幼兒園是孩子們快樂成長的搖籃&#xff0c;但打罵、哭鬧或尖叫等異常事件可能打破這份寧靜&#xff0c;威脅幼兒的身心安全。打罵/異常聲音報警系統&#xff0c;依托尖端的AI聲像融合技術&#xff0c;結合語音識別、情緒分析與視頻行為檢測&#xff0c;為幼兒園筑起一道智能安全…

Qt網絡數據解析方法總結

在Qt中解析網絡數據通常涉及接收原始字節流&#xff0c;并將其轉換為有意義的應用層數據。以下是詳細步驟和示例&#xff1a; 1. 網絡數據接收 使用QTcpSocket或QUdpSocket接收數據&#xff0c;通過readyRead()信號觸發讀取&#xff1a; // 創建TCP Socket并連接信號 QTcpSo…

unity編輯器的json驗證及格式化

UNITY編輯器的json格式化和驗證工具資源-CSDN文庫https://download.csdn.net/download/qq_38655924/90676188?spm1001.2014.3001.5501 反復去別的網站驗證json太麻煩了 用這個工具能方便點 # Unity JSON工具 這是一個Unity編輯器擴展&#xff0c;用于驗證、格式化和壓縮JSO…

學習筆記:Qlib 量化投資平臺框架 — FIRST STEPS

學習筆記&#xff1a;Qlib 量化投資平臺框架 — FIRST STEPS Qlib 是微軟亞洲研究院開源的一個面向人工智能的量化投資平臺&#xff0c;旨在實現人工智能技術在量化投資中的潛力&#xff0c;賦能研究&#xff0c;并創造價值&#xff0c;從探索想法到實施生產。Qlib 支持多種機器…

操作系統:計算機世界的基石與演進

一、操作系統的本質與核心功能 操作系統如同計算機系統的"總管家"&#xff0c;在硬件與應用之間架起關鍵橋梁。從不同視角觀察&#xff0c;其核心功能呈現多維價值&#xff1a; 硬件視角的雙重使命&#xff1a; 硬件管理者&#xff1a;通過內存管理、進程調度和設…

基于單片機的溫濕度采集系統(論文+源碼)

2.1系統的功能 本系統的研制主要包括以下幾項功能&#xff1a; (1)溫度檢測功能&#xff1a;對所處環境的溫度進行檢測&#xff1b; (2)濕度檢測功能&#xff1a;對所處環境的濕度進行檢測&#xff1b; (3)加熱和制冷功能&#xff1a;可以完成加熱和制冷功能。 (4)加濕和除…

webrtc使用

demo https://www.webrtc-experiment.com/ github開源demo https://github.com/muaz-khan/WebRTC-Experiment.git ws傳遞webrtc信令,本機不需要stun服務器,遠端電腦需要ice服務器建立peer連接 const WebSocket = require(ws); const express =

【數據可視化-25】時尚零售銷售數據集的機器學習可視化分析

?? 博主簡介:曾任某智慧城市類企業算法總監,目前在美國市場的物流公司從事高級算法工程師一職,深耕人工智能領域,精通python數據挖掘、可視化、機器學習等,發表過AI相關的專利并多次在AI類比賽中獲獎。CSDN人工智能領域的優質創作者,提供AI相關的技術咨詢、項目開發和個…

Python Cookbook-6.11 緩存環的實現

任務 你想定義一個固定尺寸的緩存&#xff0c;當它被填滿時&#xff0c;新加入的元素會覆蓋第一個(最老的)元素。這種數據結構在存儲日志和歷史信息時非常有用。 解決方案 當緩存填滿時&#xff0c;本節解決方案及時地修改了緩存對象&#xff0c;使其從未填滿的緩存類變成了…

OpenCv高階(九)——背景建模

目錄 一、背景建模的核心目標與核心挑戰 1. 核心目標 2. 核心挑戰 ?二、背景建模模型 1、幀差法原理 2. 概率模型&#xff08;Parametric Models&#xff09; &#xff08;1&#xff09;高斯混合模型&#xff08;Gaussian Mixture Model, GMM&#xff09; &#xff08;…

小重構,大收益!技術重構實踐:如何優雅升級老舊接口

重構格言&#xff1a;"優秀系統不是設計出來的&#xff0c;而是通過持續重構演進而來的。" —— Martin Fowler《重構&#xff1a;改善既有代碼的設計》 希望本文能為您的重構之旅提供指引&#xff0c;讓老舊系統煥發新生&#xff01; 一、背景&#xff1a;一個“穩定…

OSPF中DR/BDR的選舉

OSPF 開放式最短路徑優先協議-CSDN博客 選舉原因&#xff1a;廣播網絡中使路由信息交換更加高速有序&#xff0c;可以降低需要維護的鄰接關系數量 基本概念&#xff1a; DR (Designated Router, 指定路由器)&#xff1a;負責在廣播網絡&#xff08;以太網&#xff09;或NBMA網…

[特殊字符]?[特殊字符]Linux驅動開發入門 | 并發與互斥機制詳解

文章目錄 &#x1f468;?&#x1f4bb;Linux驅動開發入門 | 并發與互斥機制詳解&#x1f4cc;為什么驅動中需要并發和互斥控制&#xff1f;&#x1f4a1;常見的并發控制機制&#x1f510;自旋鎖和信號量通俗理解&#x1f300;自旋鎖&#xff08;Spinlock&#xff09;——“廁所…

Kafka 架構設計和組件介紹

什么是Apache Kafka&#xff1f; Apache Kafka 是一個強大的開源分布式事件流平臺。它最初由 LinkedIn 開發&#xff0c;最初是一個消息隊列&#xff0c;后來發展成為處理各種場景數據流的工具。 Kafka 的分布式系統架構支持水平擴展&#xff0c;使消費者能夠按照自己的節奏檢…

elk中kibana一直處于可用和降級之間且es群集狀態并沒有問題的解決方法

前言 在公司部elk的時候發現kibana的web界面一直很卡&#xff0c;數據量為0也會很卡&#xff0c;es群集狀態正常&#xff0c;資源足夠。 報錯信息 [2025-03-17T09:54:50.19400:00][INFO ][status] Kibana is now available (was degraded) [2025-03-17T09:55:03.28000:00][I…