騰訊云OpenCloudOS 9系統部署OpenTenBase數據庫詳細教程

OpenTenBase簡介

OpenTenBase是一個關系型數據庫集群平臺,提供寫入可靠性和多節點數據同步功能。可以在一臺或多臺主機上配置OpenTenBase,并將數據存儲在多個物理主機上。

OpenTenBase架構組件:
  • Coordinator Node (CN):應用程序訪問入口,負責數據分布和查詢計劃。多個節點位于同一位置,每個節點提供相同的數據庫視圖
  • Datanode Node (DN):每個DN存儲用戶數據的分區。在功能上,DN節點負責完成CN分發的執行請求
  • GTM Node (Global Transaction Manager):負責集群事務信息的管理,以及集群的全局對象(如序列)

系統要求

硬件要求:
  • 內存:最低4GB RAM
  • 操作系統:OpenCloudOS 9
  • 服務器:騰訊云CVM實例

軟件依賴:

gcc make readline-devel zlib-devel openssl-devel uuid-devel bison flex git

環境準備

1. 更新系統并安裝依賴包

由于OpenCloudOS支持dnf和yum兩種包管理軟件,強烈推薦用戶更多地使用dnf,我們使用dnf來安裝依賴:

# 更新系統
sudo dnf update -y

# 安裝OpenTenBase編譯依賴
sudo dnf install -y \gcc \gcc-c++ \make \cmake \readline-devel \zlib-devel \openssl-devel \uuid-devel \bison \flex \git \libcurl-devel \libxml2-devel \libxslt-devel \perl-IPC-Run \perl-Test-Simple \tcl-devel \python3-devel \rpm-build \pkgconfig \krb5-devel \openldap-devel

# 下載zstd源碼
cd /tmp
wget https://github.com/facebook/zstd/releases/download/v1.5.2/zstd-1.5.2.tar.gz
tar -xzf zstd-1.5.2.tar.gz
cd zstd-1.5.2# 編譯安裝
make
sudo make install PREFIX=/usr/local# 更新庫路徑
sudo ldconfig# 設置環境變量
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"

# 下載lz4源碼
cd /tmp
wget https://github.com/lz4/lz4/archive/v1.9.4.tar.gz
tar -xzf v1.9.4.tar.gz
cd lz4-1.9.4# 編譯安裝
make
sudo make install PREFIX=/usr/local# 更新庫路徑
sudo ldconfig# 設置環境變量
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"

# 首先檢查當前的包管理器狀態
sudo dnf clean all# 安裝libxml2-devel及其依賴包
sudo dnf install -y \libxml2-devel \libxml2 \cmake-filesystem \xz-devel \zlib-devel \pkgconfig# 驗證安裝
rpm -qa | grep libxml2
# 檢查xml2-config命令是否可用
which xml2-config# 檢查pkg-config是否能找到libxml-2.0
pkg-config --exists libxml-2.0 && echo "libxml2 found" || echo "libxml2 NOT found"# 查看libxml2的配置信息
xml2-config --version
xml2-config --cflags
xml2-config --libs
sudo dnf search cli11
sudo dnf install -y cli11-devel
2. 創建專用用戶

所有需要安裝OpenTenBase集群的機器都需要創建專用用戶:

# 創建數據目錄
sudo mkdir /data# 創建opentenbase用戶
sudo useradd -d /data/opentenbase -s /bin/bash -m opentenbase# 設置密碼
sudo passwd opentenbase

3. 切換到opentenbase用戶
su - opentenbase

源碼編譯安裝

1. 獲取源碼
cd /data/opentenbase
git clone https://gitee.com/mirrors/OpenTenBase.git

2. 編譯源碼
# 設置環境變量
export SOURCECODE_PATH=/data/opentenbase/OpenTenBase
export INSTALL_PATH=/data/opentenbase/install

# 進入源碼目錄
cd ${SOURCECODE_PATH}# 配置編譯選項
chmod +x configure*

# 編譯和安裝
make distclean 2>/dev/null || true
rm -rf /data/opentenbase/install/opentenbase_bin_v2.0
rm -f config.status config.log
# 重新配置,添加SSE4.2支持
CFLAGS="-g -O2 -w -msse4.2 -mcrc32" \
CXXFLAGS="-g -O2 -w -msse4.2 -mcrc32" \
./configure --prefix=/data/opentenbase/install/opentenbase_bin_v2.0 \--enable-user-switch \--with-openssl \--with-ossp-uuid \--with-libxml# 編譯
make
make install# 編譯contrib模塊
chmod +x contrib/pgxc_ctl/make_signature
cd contrib
make
make install

集中式單節點集群配置

1. 配置環境變量
# 編輯bashrc文件
vim ~/.bashrc# 添加以下內容:
export OPENTENBASE_HOME=/data/opentenbase/install/opentenbase_bin_v2.0
export PATH=$OPENTENBASE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$OPENTENBASE_HOME/lib:${LD_LIBRARY_PATH}
export LC_ALL=C# 生效環境變量
source ~/.bashrc

2. 創建集群配置目錄
mkdir /data/opentenbase/pgxc_ctl
cd /data/opentenbase/pgxc_ctl

3. 創建集中式配置文件
cat > /data/opentenbase/install/opentenbase_bin_v2.0/pgxc_ctl.conf << 'EOF'
#!/usr/bin/env bash#---- OVERALL -----------------------------------------------------------------------------
pgxcOwner=opentenbase
pgxcUser=$pgxcOwner
tmpDir=/tmp
localTmpDir=$tmpDir
configBackup=y
configBackupHost=localhost
configBackupDir=$HOME/pgxc
configBackupFile=pgxc_ctl.bak#---- GTM --------------------------------------------------------------------------------
gtmName=gtm
gtmMasterServer=localhost
gtmMasterPort=6666
gtmMasterDir=/data/opentenbase/data/gtm
gtmExtraConfig=none
gtmMasterSpecificExtraConfig=none# GTM Slave - disabled
gtmSlave=n
gtmSlaveName=gtmSlave
gtmSlaveServer=none
gtmSlavePort=20001
gtmSlaveDir=none
gtmSlaveSpecificExtraConfig=none# GTM Proxy - disabled  
gtmProxy=n
gtmProxyNames=()
gtmProxyServers=()
gtmProxyPorts=()
gtmProxyDirs=()
gtmPxyExtraConfig=none
gtmPxySpecificExtraConfig=()#---- Coordinators --------------------------------------------------------------------
coordMasterDir=/data/opentenbase/data/coord_master
coordSlaveDir=/data/opentenbase/data/coord_slave
coordArchLogDir=/data/opentenbase/data/coord_archlog# 協調器配置數組 - 所有數組必須有相同數量的元素
coordNames=(cn001)
coordPorts=(30004)
poolerPorts=(30014)
coordForwardPorts=(30024)
coordPgHbaEntries=(0.0.0.0/0)# Master Coordinators
coordMasterServers=(localhost)  
coordMasterDirs=(/data/opentenbase/data/coord_master/cn001)
coordMaxWALsender=5
coordMaxWALSenders=(5)# Coordinator Slave - disabled
coordSlave=n
coordSlaveSync=n
coordSlaveServers=(none)
coordSlavePorts=(30005)
coordSlavePoolerPorts=(30015)
coordSlaveForwardPorts=(30025)
coordSlaveDirs=(none)
coordArchLogDirs=(none)# Configuration files
coordExtraConfig=none
coordSpecificExtraConfig=(none)
coordSpecificExtraPgHba=(none)#---- Datanodes -----------------------------------------------------------------------  
datanodeMasterDir=/data/opentenbase/data/dn_master
datanodeSlaveDir=/data/opentenbase/data/dn_slave
datanodeArchLogDir=/data/opentenbase/data/datanode_archlog# 數據節點配置數組 - 所有數組必須有相同數量的元素
primaryDatanode=dn001
datanodeNames=(dn001)
datanodePorts=(20008)
datanodePoolerPorts=(20018)
datanodeForwardPorts=(20028)
datanodePgHbaEntries=(0.0.0.0/0)# Master Datanodes
datanodeMasterServers=(localhost)
datanodeMasterDirs=(/data/opentenbase/data/dn_master/dn001)
datanodeMaxWalSender=5
datanodeMaxWALSenders=(5)# Datanode Slave - disabled
datanodeSlave=n
datanodeSlaveServers=(none)
datanodeSlavePorts=(20009)
datanodeSlavePoolerPorts=(20019)
datanodeSlaveForwardPorts=(20029)
datanodeSlaveDirs=(none)
datanodeArchLogDirs=(none)# Configuration files
datanodeExtraConfig=none  
datanodeSpecificExtraConfig=(none)
datanodeSpecificExtraPgHba=(none)# WAL Archive - disabled
walArchive=n
EOF
# 檢查配置文件語法
bash -n /data/opentenbase/install/opentenbase_bin_v2.0/pgxc_ctl.conf
echo "配置文件語法檢查結果: $?"# 查看文件內容確認
head -20 /data/opentenbase/install/opentenbase_bin_v2.0/pgxc_ctl.conf

檢查環境變量

# 檢查當前環境變量
echo $PATH
echo $OPENTENBASE_HOME
which initdb
which gtm_ctl

重新設置環境變量

# 退出pgxc_ctl
quit# 重新設置環境變量
export OPENTENBASE_HOME=/data/opentenbase/install/opentenbase_bin_v2.0
export PATH=$OPENTENBASE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$OPENTENBASE_HOME/lib:${LD_LIBRARY_PATH}
export LC_ALL=C# 驗證命令是否可用
which initdb
which gtm_ctl
which pg_ctl

永久保存環境變量

# 編輯 .bashrc 文件
vim ~/.bashrc# 添加以下內容到文件末尾:
export OPENTENBASE_HOME=/data/opentenbase/install/opentenbase_bin_v2.0
export PATH=$OPENTENBASE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$OPENTENBASE_HOME/lib:${LD_LIBRARY_PATH}
export LC_ALL=C# 重新加載環境變量
source ~/.bashrc

重新創建完整的配置文件

# 刪除不完整的配置文件
rm /data/opentenbase/install/opentenbase_bin_v2.0/pgxc_ctl.conf# 重新創建完整配置文件
cat > /data/opentenbase/install/opentenbase_bin_v2.0/pgxc_ctl.conf << 'EOF'
#!/usr/bin/env bash#---- OVERALL -----------------------------------------------------------------------------
pgxcOwner=opentenbase
pgxcUser=$pgxcOwner
tmpDir=/tmp
localTmpDir=$tmpDir
configBackup=y
configBackupHost=localhost
configBackupDir=$HOME/pgxc
configBackupFile=pgxc_ctl.bak#---- GTM --------------------------------------------------------------------------------
gtmName=gtm
gtmMasterServer=localhost
gtmMasterPort=6666
gtmMasterDir=/data/opentenbase/data/gtm
gtmExtraConfig=none
gtmMasterSpecificExtraConfig=nonegtmSlave=n
gtmSlaveName=gtmSlave
gtmSlaveServer=none
gtmSlavePort=20001
gtmSlaveDir=none
gtmSlaveSpecificExtraConfig=nonegtmProxy=n
gtmProxyNames=()
gtmProxyServers=()
gtmProxyPorts=()
gtmProxyDirs=()
gtmPxyExtraConfig=none
gtmPxySpecificExtraConfig=()#---- Coordinators --------------------------------------------------------------------
coordMasterDir=/data/opentenbase/data/coord_master
coordSlaveDir=/data/opentenbase/data/coord_slave
coordArchLogDir=/data/opentenbase/data/coord_archlogcoordNames=(cn001)
coordPorts=(30004)
poolerPorts=(30014)
coordForwardPorts=(30024)
coordPgHbaEntries=(0.0.0.0/0)coordMasterServers=(localhost)
coordMasterDirs=(/data/opentenbase/data/coord_master/cn001)
coordMaxWALsender=5
coordMaxWALSenders=(5)coordSlave=n
coordSlaveSync=n
coordSlaveServers=(none)
coordSlavePorts=(30005)
coordSlavePoolerPorts=(30015)
coordSlaveForwardPorts=(30025)
coordSlaveDirs=(none)
coordArchLogDirs=(none)coordExtraConfig=none
coordSpecificExtraConfig=(none)
coordSpecificExtraPgHba=(none)#---- Datanodes -----------------------------------------------------------------------
datanodeMasterDir=/data/opentenbase/data/dn_master
datanodeSlaveDir=/data/opentenbase/data/dn_slave
datanodeArchLogDir=/data/opentenbase/data/datanode_archlogprimaryDatanode=dn001
datanodeNames=(dn001)
datanodePorts=(20008)
datanodePoolerPorts=(20018)
datanodeForwardPorts=(20028)
datanodePgHbaEntries=(0.0.0.0/0)datanodeMasterServers=(localhost)
datanodeMasterDirs=(/data/opentenbase/data/dn_master/dn001)
datanodeMaxWalSender=5
datanodeMaxWALSenders=(5)datanodeSlave=n
datanodeSlaveServers=(none)
datanodeSlavePorts=(20009)
datanodeSlavePoolerPorts=(20019)
datanodeSlaveForwardPorts=(20029)
datanodeSlaveDirs=(none)
datanodeArchLogDirs=(none)datanodeExtraConfig=none
datanodeSpecificExtraConfig=(none)
datanodeSpecificExtraPgHba=(none)walArchive=n
EOF

驗證配置文件

# 檢查配置文件語法
bash -n /data/opentenbase/install/opentenbase_bin_v2.0/pgxc_ctl.conf
echo "語法檢查結果: $?"# 查看文件完整性
wc -l /data/opentenbase/install/opentenbase_bin_v2.0/pgxc_ctl.conf
tail -10 /data/opentenbase/install/opentenbase_bin_v2.0/pgxc_ctl.conf

配置SSH免密登錄

# 生成SSH密鑰(如果還沒有)
if [ ! -f ~/.ssh/id_rsa ]; thenssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
fi# 配置本地免密登錄
ssh-copy-id opentenbase@localhost
# 或者手動添加
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

測試SSH連接

# 測試SSH連接是否正常
ssh opentenbase@localhost "echo 'SSH connection test successful'"

重新運行pgxc_ctl

# 現在重新運行pgxc_ctl
pgxc_ctl# 在pgxc_ctl中執行:
deploy all
init all
start all
monitor all

4. 部署和初始化集群
# 啟動pgxc_ctl工具
pgxc_ctl# 在pgxc_ctl命令行中執行:
deploy all
init all
# 退出pgxc_ctl
exit# 設置opentenbase用戶的SSH密鑰認證
su - opentenbase# 生成SSH密鑰對
ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -N ""# 將公鑰添加到authorized_keys
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh# 測試SSH連接(應該不需要密碼)
ssh opentenbase@127.0.0.1 "echo 'SSH連接測試成功'"MQgnDKIwotjP9+vkGc9jehXXIzfXSJ2+ZAnFP5IDvIc.

5. 驗證集群狀態
# 在pgxc_ctl中檢查集群狀態
monitor all

正常情況下應該顯示:

Running: gtm master
Running: coordinator master cn001
Running: datanode master dn001

配置防火墻(可選)

如果啟用了防火墻,需要開放相應端口:

# 開放GTM端口
sudo firewall-cmd --permanent --add-port=50001/tcp# 開放Coordinator端口
sudo firewall-cmd --permanent --add-port=30004/tcp
sudo firewall-cmd --permanent --add-port=31110/tcp# 開放Datanode端口
sudo firewall-cmd --permanent --add-port=40004/tcp
sudo firewall-cmd --permanent --add-port=41110/tcp# 重新加載防火墻規則
sudo firewall-cmd --reload

數據庫初始化和使用

1. 連接數據庫
psql -h localhost -p 30004 -d postgres -U opentenbase

2. 創建必要的節點組和分片組

OpenTenBase使用數據節點組來增加節點管理的靈活性。需要創建一個默認組來使用,因此需要提前創建。通常,所有數據節點都會被添加到默認組中:

-- 創建默認節點組
CREATE DEFAULT NODE GROUP default_group WITH (dn001);-- 創建分片組
CREATE SHARDING GROUP TO GROUP default_group;
3. 創建數據庫和表
-- 創建測試數據庫
CREATE DATABASE testdb;-- 創建用戶
CREATE USER testuser WITH PASSWORD 'testpass';-- 授權
ALTER DATABASE testdb OWNER TO testuser;-- 切換到測試數據庫
\c testdb testuser-- 創建分片表
CREATE TABLE test_table(id BIGINT,name TEXT,created_time TIMESTAMP DEFAULT NOW()
) DISTRIBUTE BY SHARD(id);-- 插入測試數據
INSERT INTO test_table(id, name) VALUES 
(1, 'OpenTenBase'),
(2, 'TencentCloud'),
(3, 'OpenCloudOS');-- 查詢測試
SELECT * FROM test_table;

集群管理

1. 啟動集群
pgxc_ctl
start all
2. 停止集群
pgxc_ctl
stop all
3. 清理集群(重新初始化時使用)
pgxc_ctl
clean all

故障排查

1. 查看日志

如果初始化失敗,可以查看日志:

# 查看pgxc_ctl日志
ls ~/pgxc_ctl/pgxc_log/
cat ~/pgxc_ctl/pgxc_log/最新的日志文件# 查看各組件日志
ls /data/opentenbase/data/gtm/pg_log/
ls /data/opentenbase/data/coord/pg_log/
ls /data/opentenbase/data/dn001/pg_log/
2. 常見問題解決
  • 權限問題:確保opentenbase用戶對所有數據目錄有讀寫權限
  • 端口沖突:檢查配置的端口是否被其他服務占用
  • 內存不足:調整shared_buffers等內存參數
  • 網絡問題:檢查防火墻和網絡連接

性能優化建議

1. 內存優化

根據服務器配置調整postgresql.conf中的內存參數:

shared_buffers = 25% of RAM    # 例如8GB內存設置為2GB
effective_cache_size = 75% of RAM
work_mem = 4MB
maintenance_work_mem = 64MB
2. 連接優化
max_connections = 200          # 根據應用需求調整
max_pool_size = 1000          # 連接池大小
3. 日志優化
log_min_duration_statement = 1000  # 記錄執行時間超過1秒的查詢
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on

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

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

相關文章

【計算機視覺】Pixel逐像素分類Mask掩碼分類理解摘要

目標檢測和實例分割是計算機視覺的基本任務。目標檢測的傳統方法中通常利用邊界框技術進行對象定位&#xff0c;然后利用逐像素分類為這些本地化實例分配類。但是當處理同一類的重疊對象時&#xff0c;或者在每個圖像的對象數量不同的情況下&#xff0c;這些方法通常會出現問題…

C++之stack類的代碼及其邏輯詳解

1. stack介紹及使用方法stack是一種后進先出的數據結構&#xff0c;所以在C的STL庫中也同樣遵循了這一點&#xff0c;我們在使用的時候不支持隨機訪問或迭代器遍歷。注意事項調用 top() 或 pop() 前需確保棧非空&#xff0c;否則可能引發未定義行為。stack 沒有 clear() 函數&a…

Spring Cache實現簡化緩存功能開發

一. 介紹Spring Cache 是 Spring 框架提供的緩存抽象層&#xff0c;它簡化了在應用中添加緩存功能的開發工作。通過 Spring Cache&#xff0c;開發者無需關注具體緩存實現的細節&#xff0c;只需通過注解就能快速實現方法級別的緩存管理。核心特點1. 與具體緩存實現解耦&#x…

Lombok(簡化Java當中的開發)

Lombok概述 以前的Java項目中,充斥著太多不友好的代碼:POJO的getter/setter/toString/構造方法;打印日志;I/O流的關閉操作等等,這些代碼既沒有技術含量,又影響著代碼的美觀,Lombok應運而生。 LomBok可以通過注解,幫助開發人員消除JAVA中尤其是POJO類中的冗長代碼。 使…

【DeepSeek】公司內網部署離線deepseek+docker+ragflow本地模型實戰

企業內部可能有些數據比較敏感&#xff0c;不能連接互聯網。本次實驗操作是將deepseek完全離線后遷移至內網使用&#xff0c;實驗基于Windows server 2022 datacenter系統安裝deepseek、docker、ragflow。 目錄使用VMware新建WIN2022虛擬機一、安裝DeepSeek模型二.安裝Docker使…

【軟考架構】面向服務的體系結構(SOA)深度解析

面向服務的體系結構&#xff08;SOA&#xff09;深度解析 面向服務的體系結構&#xff08;Service-Oriented Architecture, SOA&#xff09;是一種以服務為核心的軟件架構范式&#xff0c;通過標準化接口實現異構系統間的高效集成與協作。以下從概念定義、發展脈絡、技術演進、…

centos7中MySQL 5.7.32 到 5.7.44 升級指南:基于官方二進制包的原地替換式升級

目錄前言1. 升級概述1.1 升級背景1.2 升級目的1.3 升級方法概述1.4 升級策略與注意事項2. 升級準備2.1 備份工作2.2 下載目標版本2.3 停止 MySQL 服務3. 替換二進制文件3.1 解壓官方二進制包3.2 替換核心二進制文件3.3 更新共享庫4. 執行升級并驗證4.1 啟動 MySQL 服務4.2 監控…

數學七夕花禮(MATLAB版)

前言參考的視頻在抖音&#xff0c;電腦版的抖音一直登錄不了&#xff0c;用手機分享的鏈接如下所示。4.35 Iv.FH yTl:/ 04/04 復制打開抖音&#x1f440;數學送的七夕花禮&#xff0c;記得查收噢.# 七夕花禮請查收 ... https://v.douyin.com/H-YpOJCyQyg/rho4sin(8theta)公式&a…

LeetCode - 21. 合并兩個有序鏈表

題目 21. 合并兩個有序鏈表 思路 我會采用雙指針的方法&#xff0c;同時遍歷兩個鏈表&#xff0c;比較當前節點的值&#xff0c;將較小的節點添加到結果鏈表中。 具體思路是這樣的&#xff1a; 首先創建一個啞節點(dummy node)作為合并后鏈表的頭部&#xff0c;這樣可以簡…

ES01-環境安裝

ES01-環境安裝 文章目錄ES01-環境安裝1-參考網址2-知識總結1-參考網址 elasticsearch官網地址&#xff1a;https://www.elastic.co/安裝elasticsearch9.0.0參考&#xff1a;https://zhuanlan.zhihu.com/p/1920780524991017021安裝elasticsearch9.0.0參考&#xff1a;http://ww…

UI前端大數據可視化實戰策略:如何設計符合用戶認知的數據可視化界面?

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩!UI前端大數據可視化實戰策略&#xff1a;如何設計符合用戶認知的數據可視化界面&#xff1f;數…

學習python第15天

其實前面學的根本不記得了&#xff0c;小丑.jpg&#xff0c;如果真的面試問到了估計也是一臉懵今日任務&#xff1a;JSON先認識一下JSON和JSONL文件記得之前在面試KIMI的時候&#xff0c;面試官就給我出了JSONL和EXCEL轉換的手撕代碼題&#xff0c;而那個時候&#xff0c;我連什…

Spring框架集成Kakfa的方式

Spring框架集成Kakfa的方式 springboot集成kafka的方式 添加maven依賴 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.0</version> </dependency&g…

【藍橋杯 2024 省 Python B】繳納過路費

【藍橋杯 2024 省 Python B】繳納過路費 藍橋杯專欄&#xff1a;2024 省 Python B 算法競賽&#xff1a;圖論&#xff0c;生成樹&#xff0c;并查集&#xff0c;組合計數&#xff0c;kruskal 最小生成樹&#xff0c;乘法原理 題目鏈接&#xff1a;洛谷 【藍橋杯 2024 省 Python…

個性化導航新體驗:cpolar讓Dashy支持語音控制

文章目錄簡介1. 安裝Dashy2. 安裝cpolar3.配置公網訪問地址4. 固定域名訪問用 cpolar 讓 Dashy 管理個人導航站就是這么簡單&#xff01;三步輕松搞定&#xff1a;在電腦上安裝 Dashy&#xff0c;拖拽添加常用網站&#xff0c;運行 cpolar 生成遠程訪問鏈接。這個方法不僅免費&…

SQL學習記錄

基本的&#xff0c;增、刪&#xff0c;改insert into table_name (列1, 列2,...) VALUES (值1, 值2,....)Delete from 表 where keyvalueupdate 表 set keyvalue,keyvalue where keyvalue查用的最多whereSELECT prod_name, prod_price FROM Products WHERE vend idDLLO1OR ve…

零基礎學C++,函數篇~

C基礎學習&#xff08;DAY_06&#xff09;函數1. 函數的定義與使用2. 函數參數傳遞3. 變量的聲明周期4. 函數的其他特性5. 函數的嵌套與遞歸函數 1. 函數的定義與使用 ? 在設計程序時&#xff0c;如果一段代碼重復進行某種操作或者完成一個特定的功能&#xff0c;就應該將這…

react+vite+ts 組件模板

1.創建項目npm create vitelatest my-app --template react-ts2.配置項目 tsconfig.json{"compilerOptions": {"target": "ES2020","useDefineForClassFields": true,"lib": ["ES2020", "DOM", "D…

C語言 - 輸出參數詳解:從簡單示例到 alloc_chrdev_region

C語言中的輸出參數詳解&#xff1a;以 alloc_chrdev_region 為例 在學習 C 語言函數調用時&#xff0c;我們常常接觸到“輸入參數”&#xff0c;比如把一個數字傳給函數&#xff0c;讓函數幫我們算出結果。但有時候可能會發現&#xff0c;有些函數除了返回值之外&#xff0c;還…

機器視覺學習-day09-圖像矯正

1 仿射變換與透視變換1.1 仿射變換之前在圖像旋轉實驗中已經接觸過仿射變換&#xff0c;仿射變換是一個二維坐標系到另一個二維坐標系的過程&#xff0c;在仿射變換中符合直線的平直性和平行性。1.2 透視變換透視變換是把一個圖像投影到一個新的視平面的過程。在現實世界中&…