当前位置: 首页 > news >正文

PostgreSQL Patroni集群组件作用介绍:Patroni、etcd、HAProxy、Keepalived、Watchdog

1. Watchdog 简介

1.1 核心作用

• 主节点故障检测

Watchdog 会定时检测数据库主节点(或 Pgpool 主节点)的运行状态。

一旦主节点宕机,它会发起故障切换请求。
• 协调主备切换

多个 Pgpool 节点时,Watchdog 保证只有一个 Pgpool 处于“主”状态,避免混乱。

使用仲裁机制或投票(通常通过 VIP、网络心跳或 quorum 判定)决定新的主节点。
• 避免脑裂

防止两个节点误判对方故障后“各自称王”导致的数据不一致。

Watchdog 通过 心跳机制(heartbeat)+ 仲裁机制(arbitrator)+ VIP 管理,确保集群有单一主节点。
• 管理 VIP

Watchdog 控制一个浮动 IP(VIP),将其绑定到当前 Pgpool 主节点上。

客户端连接 VIP,无感知主备切换。

1.2 工作方式

(以 Pgpool-II 为例)
+-------------+     +-------------+     +-------------+
|  Pgpool 1   |<--->|  Pgpool 2   |<--->|  Pgpool 3   |
|  (主节点)   |     | (备用节点)  |     | (备用节点)  |
+-------------+     +-------------+     +-------------+
        |                   |                    |
        +--- VIP 地址由 Watchdog 绑定在主 Pgpool 上 ---+

节点通过心跳机制与仲裁机制协调主备身份并自动迁移 VIP。

心跳探测:每个 Pgpool Watchdog 互相通过 ping/TCP 检测存活状态。

仲裁:可以通过“仲裁者主机”或“第三方 etcd/Zookeeper”做一致性投票。

自动切换 VIP:主 Pgpool 宕机后,VIP 自动迁移到新的主节点。

1.3 应用场景

场景

是否需要 Watchdog

单节点 Pgpool

不需要

多节点 Pgpool + 自动主备切换

必须使用

提供高可用虚拟 IP(VIP)

必须使用

防止脑裂或双主场景

必须使用

2. etcd 简介

etcd 是一个开源的、分布式的键值存储系统,广泛用于服务发现、配置管理和主备协调等场景。

2.1 核心作用

• 存储 PostgreSQL 集群状态

etcd 存储整个 PostgreSQL 集群的元信息和状态信息,例如:

当前的主节点是谁(Leader)

各节点的健康状态

Patroni 实例的注册信息(IP、端口、角色等)

Failover 请求等

这样,所有节点都可基于 etcd 的一致性视图做决策,避免分歧。
• 分布式一致性协调器

etcd 基于 Raft 协议,提供分布式系统中一致性的基础,作用类似:

Zookeeper

Consul

etcd 保证任意节点都能看到相同的集群状态,从而在故障转移或主从切换时作出正确判断。
• 提供锁机制

Patroni 使用 etcd 的 分布式锁(Leader Key) 来决定主节点。

借助 etcd 的 TTL 租约机制,主节点需定期续约,否则失去主控权。

保证只有一个主节点存在(Single Leader),防止脑裂。

2.2 架构示意图


+----------------+         +-------------+
| Patroni 节点 A | <-----> |     etcd     |
| PostgreSQL主库 |         +-------------+
+----------------+                ↑
                            状态存储
+----------------+         +-------------+
| Patroni 节点 B | <-----> |     etcd     |
| PostgreSQL从库 |         +-------------+
+----------------+
关键行为:

所有 Patroni 节点向 etcd 注册自身状态。

Patroni 主节点持有一个 etcd 的“Leader 锁”键(带 TTL)。

主节点宕机后 TTL 过期,锁自动释放,其他节点竞争新主。

2.3 典型用途

用途

示例系统

服务发现

Kubernetes

配置中心

Istio、Traefik

主备协调

Patroni、TiDB

分布式锁

主选举场景

2.4 特性总结

特性

说明

数据一致性

使用 Raft 实现强一致性

高可用部署

支持奇数节点,允许少数节点宕机

分布式锁

用于主节点选举

监控 & 续租

主节点失联自动释放锁

易部署

单一二进制与配置文件即可

3. Patroni 简介

Patroni 是一个开源的 PostgreSQL 高可用(HA)管理工具,专为构建自动化主备切换、健康检查、集群协调的 PostgreSQL 集群而设计。

它不是数据库本身,而是一个控制器,负责维护 PostgreSQL 的主从架构,并在主节点宕机时自动选择一个新主节点,保证服务连续性。

3.1 核心作用

• 自动主从切换

当 Patroni 监测到主库不可用时,会自动发起主从切换流程。

通过协调系统(如 etcd、Consul、ZooKeeper)选出新的主节点。
• 分布式选主

依赖后端协调服务(如 etcd)的分布式锁(leader key)机制,确保只有一个主节点存在。

有效防止脑裂(Split-Brain)现象。
• 集群状态管理

所有 Patroni 节点将自己的状态(角色、健康、PostgreSQL 配置等)注册到共享存储(如 etcd)。

客户端如 HAProxy、pgbouncer 可以通过 Patroni API 查询集群健康信息。
• 自动配置 PostgreSQL 复制

Patroni 自动配置 streaming replication(流复制),支持同步或异步模式。

自动处理 pg_hba.conf、主备配置差异、recovery.conf(或 standby.signal)等。
• 提供 REST API 接口

每个节点运行一个 HTTP REST API,可用于:

查询节点状态

手动发起 failover/switchover

管理维护模式(pause/resume)

3.2 架构示意图


+----------------------+          +----------------------+
|   PostgreSQL 主节点  |          |   PostgreSQL 从节点  |
|      Patroni         | <----->  |      Patroni         |
+----------------------+          +----------------------+
          |                                 |
          +-------------+   +---------------+
                          |   |
                     +---------+
                     |  etcd   |  <- 协调主选举
                     +---------+
所有节点通过 etcd 协调主节点身份。

Patroni 定期健康检查本地 PostgreSQL,并与集群中其他节点同步状态。

3.3 配套工具

工具/组件

作用

etcd / Consul

分布式一致性协调

HAProxy / pgbouncer

客户端连接负载均衡

WAL-G / Barman

备份与恢复

3.4 Patroni vs 其它 HA 方案

特性

Patroni

Pgpool-II

repmgr

主从切换

自动

半自动(需配置)

自动或手动

状态协调

etcd/Consul 支持

无状态或 Watchdog

无(自己维护)

配置自动化

架构复杂度

高(需 watchdog)

低(轻量)

4. HAProxy 简介

在 PostgreSQL 高可用集群中,HAProxy 充当的是客户端访问的统一入口,起到流量转发、负载均衡、故障切换引导的作用。

4.1 核心作用

• 客户端统一访问入口

无论 PostgreSQL 的主节点如何切换,客户端始终通过 HAProxy 的 IP 和端口连接。

客户端无需知道谁是当前主节点,避免频繁改配置。
• 主从识别自动转发

HAProxy 可结合 Patroni 的 REST API 判断当前主库。

根据主备角色,将写请求转发到主库,将读请求转发到从库(可实现读写分离)。
• 负载均衡

在读请求场景中(例如只读查询、BI分析),HAProxy 可将请求负载均衡到多个只读从库。
• 健康检查

自动探测数据库节点是否在线。

可通过 TCP 检查 PostgreSQL 端口、或调用 Patroni 的 /health HTTP API 返回状态。
• 支持 VIP 高可用

多个 HAProxy 节点 + VIP 浮动可实现自身的高可用,不再是单点。

4.2 架构示意图

HAProxy 架构图(结合 Patroni)


+-------------+        +------------------+
|   客户端     | -----> |   HAProxy 节点    |
+-------------+        +--------+---------+
                               |
         +---------------------+---------------------+
         |                     |                     |
+-------------+   +-------------------+   +-------------------+
| Patroni 主库 |   | Patroni 从库 1    |   | Patroni 从库 2    |
+-------------+   +-------------------+   +-------------------+

4.3 示例场景

功能需求

HAProxy 配置方式

主库写请求

frontend → backend 主节点(只选 leader)

从库读请求

frontend → backend 所有 follower 节点

健康检查

每隔几秒请求 Patroni API

故障自动切换

新主上线后自动切换到新主

多个 HAProxy 节点

使用 Keepalived + VIP

4.4 示例配置片段

主库健康检查:
frontend pgsql_front
    bind *:5432
    default_backend pgsql_primary

backend pgsql_primary
    option httpchk GET /master
    server node1 192.168.1.101:5432 check port 8008
    server node2 192.168.1.102:5432 check port 8008
    server node3 192.168.1.103:5432 check port 8008
说明:

port 8008 是 Patroni 默认的 HTTP API 端口。

GET /master 是自定义脚本或 HTTP 返回判断是否为主库。

4.5 特性总结

功能

写请求引导

只连接主库,防止写入从库

读写分离

可配置多个 frontend/backend

故障自动绕行

通过健康检查绕过不可用节点

无感主备切换

客户端无需关心实际主节点地址

5. Keepalived 简介

在 PostgreSQL 高可用架构中,Keepalived 的主要作用是:通过 VRRP 协议提供高可用的虚拟IP(VIP)漂移机制,确保即使服务节点发生故障,客户端仍然能通过一个固定 IP 无缝访问数据库或中间件(如 HAProxy),实现 PostgreSQL 集群访问地址的高可用。

5.1 核心作用

• 虚拟 IP (VIP) 漂移

Keepalived 运行在多个节点上,多个节点共享一个 VIP(Virtual IP)。

其中一个节点是 MASTER,持有该 VIP,其他为 BACKUP。

MASTER 节点宕机时,VIP 自动漂移到 BACKUP 节点,实现 IP 的高可用。

• 服务可用性监控

Keepalived 可配置脚本或进程监控(如 HAProxy、PostgreSQL)。

若检测到服务失败,可主动释放 VIP 并由其它节点接管。

• 实现无单点的访问入口

通常结合 HAProxy 或 Pgpool-II 使用,确保即使一个代理节点宕机,客户端依然可用。

5.2 架构示意图


+------------+   VIP   +------------+   +-----------------+
| HAProxy A | <------> | HAProxy B |---| Patroni/Postgres|
| Keepalived|         |Keepalived |   +------------------+
+------------+         +------------+

客户端通过 VIP(如 192.168.1.100:5432)访问,无感切换。

工作机制

• Keepalived 使用 VRRP 协议,维持节点优先级(priority)来决定谁持有 VIP。

• 定期心跳检测:

如果 MASTER 掉线,BACKUP 自动提升为 MASTER,接管 VIP。

当原 MASTER 恢复,可以自动重新接管(可配置)。

5.3 示例配置


vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.1.100
    }
    track_script {
        chk_haproxy
    }
}

vrrp_script chk_haproxy {
    script "/etc/keepalived/check_haproxy.sh"
    interval 2
    weight -10
}
说明:

priority 决定主备优先级。

track_script 可用于检测 HAProxy 是否存活。

若脚本返回非 0,则降低优先级,触发 VIP 漂移。

5.4 特性总结

功能

说明

VIP 漂移

提供固定访问 IP,屏蔽后端节点变化

节点高可用

后备节点自动接管服务

主备监控

可结合 HAProxy/Pgpool 状态做切换

零停机切换

客户端连接不中断,无感知漂移

相关文章:

PostgreSQL Patroni集群组件作用介绍:Patroni、etcd、HAProxy、Keepalived、Watchdog

1. Watchdog 简介 1.1 核心作用 • 主节点故障检测 Watchdog 会定时检测数据库主节点&#xff08;或 Pgpool 主节点&#xff09;的运行状态。 一旦主节点宕机&#xff0c;它会发起故障切换请求。 • 协调主备切换 多个 Pgpool 节点时&#xff0c;Watchdog 保证只有一个 Pg…...

【计算机视觉】图像分割:Segment Anything (SAM):通用图像分割的范式革命

Segment Anything&#xff1a;通用图像分割的范式革命 技术突破与架构创新核心设计理念关键技术组件 环境配置与快速开始硬件要求安装步骤基础使用示例 深度功能解析1. 多模态提示融合2. 全图分割生成3. 高分辨率处理 模型微调与定制1. 自定义数据集准备2. 微调训练配置 常见问…...

改进系列(10):基于SwinTransformer+CBAM+多尺度特征融合+FocalLoss改进:自动驾驶地面路况识别

目录 1.代码介绍 1. 主训练脚本train.py 2. 工具函数与模型定义utils.py 3. GUI界面应用infer_QT.py 2.自动驾驶地面路况识别 3.训练过程 4.推理 5.下载 代码已经封装好&#xff0c;对小白友好。 想要更换数据集&#xff0c;参考readme文件摆放好数据集即可&#xff0c…...

大型连锁酒店集团数据湖应用示例

目录 一、应用前面临的严峻背景 二、数据湖的精细化构建过程 &#xff08;一&#xff09;全域数据整合规划 &#xff08;二&#xff09;高效的数据摄取与存储架构搭建 &#xff08;三&#xff09;完善的元数据管理体系建设 &#xff08;四&#xff09;强大的数据分析平台…...

element.scrollIntoView(options)

handleNextClick 函数详解 功能描述 该函数实现在一个表格中“跳转到下一行”的功能&#xff0c;并将目标行滚动至视图顶部。通常用于导航或高亮显示当前选中的数据行。 const handleNextClick () > {// 如果当前已经是最后一行&#xff0c;则不执行后续操作if (current…...

python查看指定的进程是否存在

import os class Paly_Install(object):"""项目根目录"""def get_path(self):self.basedir os.path.dirname(os.path.abspath(__file__))"""安装失败的txt文件"""def test_app(self):self.app["com.faceboo…...

HAproxy+keepalived+tomcat部署高可用负载均衡实践

目录 一、前言 二、服务器规划 三、部署 1、jdk18安装 2、tomcat安装 3、haproxy安装 4、keepalived安装 三、测试 1、服务器停机测试 2、停止haproxy服务测试 总结 一、前言 HAProxy是一个使用C语言编写的自由及开放源代码软件&#xff0c;其提供高可用性、…...

C++负载均衡远程调用学习之自定义内存池管理

目录 1.内存管理_io_buf的结构分析 2.Lars_内存管理_io_buf内存块的实现 3.buf总结 4.buf_pool连接池的单例模式设计和基本属性 5.buf_pool的初始化构造内存池 6.buf_pool的申请内存和重置内存实现 7.课前回顾 1.内存管理_io_buf的结构分析 ## 3) Lars系统总体架构 ​ …...

mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz的下载安装和使用

资源获取链接&#xff1a; mysql-5.7.24-linux-glibc2.12-x86-64.tar.gz和使用说明资源-CSDN文库 详细作用 数据库服务器的核心文件&#xff1a; 这是一个压缩包&#xff0c;解压后包含 MySQL 数据库服务器的可执行文件、库文件、配置文件模板等。 它用于在 Linux 系统上安装…...

Kafka Producer的acks参数对消息可靠性有何影响?

1. acks0 可靠性最低生产者发送消息后不等待任何Broker确认可能丢失消息&#xff08;Broker处理失败/网络丢失时无法感知&#xff09;吞吐量最高&#xff0c;适用于允许数据丢失的场景&#xff08;如日志收集&#xff09; 2. acks1 (默认值) Leader副本确认模式生产者等待Le…...

Linux-04-用户管理命令

一、useradd添加新用户: 基本语法: useradd 用户名:添加新用户 useradd -g 组名 用户:添加新用户到某个组二、passwd设置用户密码: 基本语法: passwd 用户名:设置用户名密码 三、id查看用户是否存在: 基本语法: id 用户名 四、su切换用户: 基本语法: su 用户名称:切换用…...

node爬虫包 pup-crawler,超简单易用

PUP Crawler 这是一个基于puppeteer的简单的爬虫&#xff0c;可以爬取动态、静态加载的网站。 常用于【列表-详情-内容】系列的网站&#xff0c;比如电影视频等网站。 github地址 Usage npm install pup-crawler简单用法&#xff1a; import { PupCrawler } from pup-craw…...

艺术与科技的双向奔赴——高一鑫荣获加州联合表彰

2025年4月20日,在由M.A.D公司协办的“智艺相融,共赴价值巅峰”(Academic and Artistic Fusion Tribute to the Summit of Value)主题发布会上,音乐教育与科技融合领域的代表人物高一鑫,因其在数字音乐教育与中美文化交流方面的杰出贡献,荣获了圣盖博市议员Jorge Herrera和尔湾市…...

React-Native Android 多行被截断

1. 问题描述&#xff1a; 如图所示&#xff1a; 2. 问题解决灵感&#xff1a; 使用相同的react-native代码&#xff0c;运行在两个APP&#xff08;demo 和 project&#xff09;上。demo 展示正常&#xff0c;project 展示不正常。 对两个页面截图&#xff0c;对比如下。 得出…...

Canvas基础篇:图形绘制

Canvas基础篇&#xff1a;图形绘制 图形绘制moveTo()lineTo()lineTo绘制一条直线代码示例效果预览 lineTo绘制平行线代码示例效果预览 lineTo绘制矩形代码示例效果预览 arc()arc绘制一个圆代码实现效果预览 arc绘制一段弧代码实现效果预览 arcTo()rect()曲线 结语 图形绘制 在…...

自定义实现elementui的锚点

背景 前不久有个需求&#xff0c;上半部分是el-step步骤条&#xff0c;下半部分是一些文字说明&#xff0c;需要实现点击步骤条中某个步骤自定义定位到对应部分的文字说明&#xff0c;同时滚动内容区域的时候还要自动选中对应区域的步骤。element-ui-plus的有锚点这个组件&…...

基于UNet算法的农业遥感图像语义分割——补充版

前言 本案例希望建立一个UNET网络模型&#xff0c;来实现对农业遥感图像语义分割的任务。本篇博客主要包括对上一篇博客中的相关遗留问题进行解决&#xff0c;并对网络结构进行优化调整以适应个人的硬件设施——NVIDIA GeForce RTX 3050。 本案例的前两篇博客直达链接基于UNe…...

分布式数字身份:迈向Web3.0世界的通行证 | 北京行活动预告

数字经济浪潮奔涌向前&#xff0c;Web3.0发展方兴未艾&#xff0c;分布式数字身份&#xff08;Decentralized Identity&#xff0c;简称DID&#xff09;通过将分布式账本技术与身份治理相融合&#xff0c;在Web3.0时代多方协作的分布式应用场景中发挥核心作用&#xff0c;是构建…...

CentOS网络之network和NetworkManager深度解析

文章目录 CentOS网络之network和NetworkManager深度解析1. CentOS网络服务发展历史1.1 传统network阶段&#xff08;CentOS 5-6&#xff09;1.2 过渡期&#xff08;CentOS 7&#xff09;1.3 新时代&#xff08;CentOS 8&#xff09; 2. network和NetworkManager的核心区别3. ne…...

【XR】MR芯片 和 VR芯片之争

【XR】MR芯片 和 VR芯片之争 1. MR芯片 和 VR芯片 之间的最大差异是什么2. MR芯片 和 VR芯片 之间的最大差异是什么,国内外市场上有哪些芯片,价格如何,市场怎么样,芯片价格怎么样1. MR芯片 和 VR芯片 之间的最大差异是什么 MR芯片(混合现实芯片)与VR芯片(虚拟现实芯片)…...

关于安卓自动化打包docker+jenkins实现

背景 安卓开发过程中&#xff0c;尤其是提测后&#xff0c;会有一个发包的流程。这个流程简单来说&#xff0c;一般都是开发打包&#xff0c;然后发群里&#xff0c;测试再下载&#xff0c;发送到分发平台&#xff0c;然后把分发平台的应用主页发出来&#xff0c;最后群里面的…...

如何使用CAN分析仪验证MCU CAN错误机制

本文通过实验验证CAN控制器的错误处理机制是否符合相关标准。具体而言&#xff0c;我们使用ZPS-CANFD设备&#xff08;ZPS-CANFD介绍&#xff09;作为测量工具&#xff0c;USBCANFD-200U作为被测设备&#xff08;DUT&#xff09;&#xff0c;通过注入特定类型的错误&#xff0c…...

Centos 7安装 NVIDIA CUDA Toolkit

下载 # 查看操作系统信息 uname -m && cat /etc/redhat-release # 查看显卡信息 lspci | grep -i nvidia从NVIDIA CUDA Toolkit官网下载符合你需求的版本&#xff0c;我这里选择的是runfile(local)的方式。 安装 现在完成后进行安装 chmod x cuda_12.4.0_550.54.1…...

软件测试52讲学习分享:深入理解单元测试

课程背景 最近我在学习极客时间的《软件测试52讲》课程&#xff0c;这是由腾讯TEG基础架构部T4级专家茹炳晟老师主讲的认证课程。作为数字化转型与人工智能(DTAI)产业人才基地建设中心的认证课程&#xff0c;内容非常专业实用。今天想和大家分享第3讲"什么是单元测试&…...

90.如何将Maui应用安装到手机(最简) C#例子 Maui例子

今天我来分享一下如何将Maui应用安装到手机上进行测试。 首先&#xff0c;创建一个新的Maui应用项目。 点击运行 在Visual Studio中&#xff0c;点击“运行”按钮&#xff0c;预览应用的初始效果&#xff0c;确保一切正常。 连接设备 使用数据线将手机连接到电脑。确保手机已…...

“100% 成功的 PyTorch CUDA GPU 支持” 安装攻略

#工作记录 一、总述 在深度学习领域&#xff0c;PyTorch 凭借其灵活性和强大的功能&#xff0c;成为了众多开发者和研究者的首选框架。而 CUDA GPU 支持能够显著加速 PyTorch 的计算过程&#xff0c;大幅提升训练和推理效率。然而&#xff0c;安装带有 CUDA GPU 支持的 PyTor…...

如何在Dify沙盒中安装运行pandas、numpy

如何在Dify沙盒中安装运行pandas、numpy 1. 创建python-requirements.txt文件2. 创建config.yaml文件3. 重启 docker-sandbox-14. 为什么要这样改的一些代码解析&#xff08;Youtube视频截图&#xff09; 1. 创建python-requirements.txt文件 在 Dify 的 Docker 目录下面&…...

ES集群搭建及工具类

文章说明 本文主要记录Windows下搭建ES集群的过程&#xff0c;并提供了一个通用的ES工具类&#xff1b;工具类采用http接口调用es功能&#xff0c;目前仅提供了简单的查询功能&#xff0c;可在基础上额外扩展 集群搭建 ES的下载安装非常简单&#xff0c;只需要下载软件的 zip 压…...

抓取工具Charles配置教程(mac电脑+ios手机)

mac电脑上的配置 1. 下载最新版本的Charles 2. 按照以下截图进行配置 2.1 端口号配置&#xff1a; 2.2 https配置 3. mac端证书配置 4. IOS手机端网络配置 4.1 先查看电脑上的配置 4.2 配置手机网络 连接和电脑同一个wifi&#xff0c;然后按照以下截图进行配置 5. 手机端证书…...

JavaScript 代码搜索框

1. 概述与需求分析 功能&#xff1a;在网页中实时搜索用户代码、关键字&#xff1b;展示匹配行、文件名&#xff1b;支持高亮、正则、模糊匹配。非功能&#xff1a;大文件集&#xff08;几十万行&#xff09;、高并发、响应 <100ms&#xff1b;支持增量索引和热更新。 2. …...

ESP32开发-作为TCP服务端接收数据

​​ESP32 ENC28J60 仅作为TCP服务端​​ &#xff08;电脑通过 ​​网络调试助手​​ 连接ESP32&#xff0c;实现双向通信&#xff09; ​​完整代码​​ #include <SPI.h> #include <EthernetENC.h> // 或 UIPEthernet.h// 网络配置 byte mac[] {0xDE, 0xAD…...

数智化招标采购系统针对供应商管理解决方案(采购如何管控供应商)

随着《优化营商环境条例》深化实施&#xff0c;采购领域正通过政策驱动和技术赋能&#xff0c;全面构建供应商全生命周期管理体系&#xff0c;以规范化、数智化推动采购生态向透明、高效、智能方向持续升级。 郑州信源数智化招标采购系统研发商&#xff0c;通过供应商管理子系…...

服务端字符过滤 与 SQL PDO防注入

注入示例 # step 1 SQL SELECT * FROM users WHERE username admin AND password e10adc3949ba59abbe56e057f20f883e # step 2 SQL SELECT * FROM users WHERE username admin# AND password 96e79218965eb72c92a549dd5a330112 关键点是这2个SQL的区别.其中第二步由于前台传…...

章越科技赋能消防训练体征监测与安全保障,从传统模式到智能跃迁的实践探索

引言&#xff1a;智能化转型浪潮下&#xff0c;消防训练的“破局”之需 2021年《“十四五”国家消防工作规划》的出台&#xff0c;标志着我国消防救援体系正式迈入“全灾种、大应急”的全新阶段。面对地震、洪涝、危化品泄漏等复杂救援场景&#xff0c;消防员不仅需要更强的体…...

RSYSLOG收集深信服log

RSYSLOG收集深信服ATRUST日志配置一直不成功&#xff0c;没有生成log文件&#xff0c;网上搜索到&#xff1a;如果你想要接收所有来自特定 IP 的日志&#xff0c;可以使用更通用的模式&#xff1a; 参考着修改配置 if $fromhost-ip 172.18.1.13 then /data/logs/network-devi…...

Golang - 实现文件管理服务器

先看效果&#xff1a; 代码如下&#xff1a; package mainimport ("fmt""html/template""log""net/http""os""path/filepath""strings" )// 配置根目录&#xff08;根据需求修改&#xff09; //var ba…...

在原生代码(非webpack)里使用iview的注意事项

最近公司在做一个项目&#xff0c;使用的框架是iview,使用过程中同事遇到一些问题&#xff0c;这些问题对于有些同学来说根本就不是问题&#xff0c;但总会有同学需要&#xff0c;为了帮助不太会用的同学快速找到问题&#xff0c;做了如下整理&#xff1a; 下载vue,iview.min.j…...

基于go的简单管理系统(增删改查)

package mainimport ("database/sql""fmt"_ "github.com/go-sql-driver/mysql" )var db *sql.DBtype user struct {id intname stringage int }// 建立连接 func initDB() (err error) {dsn : "root:123456tcp(127.0.0.1:3306)/mysqltes…...

Python 用一等函数重新审视“命令”设计模式

引言 在软件开发中&#xff0c;设计模式是解决常见问题的有效方法。“命令”设计模式旨在解耦调用操作的对象&#xff08;调用者&#xff09;和提供实现的对象&#xff08;接收者&#xff09;。本文将深入探讨“命令”模式&#xff0c;并介绍如何使用一等函数对其进行简化。 …...

pycharm导入同目录下文件未标红但报错ModuleNotFoundError

此贴仅为记录debug过程&#xff0c;为防后续再次遇见 问题 问题情境 复现文章模型&#xff0c;pycharm项目初次运行 问题描述 在导入同目录下其它文件夹中的python文件时&#xff0c;未标红&#xff0c;但运行时报错ModuleNotFoundError 报错信息 未找到该模块 Traceback …...

BOSS的收入 - 华为OD机试(A卷,Java题解)

华为OD机试题库《C》限时优惠 9.9 华为OD机试题库《Python》限时优惠 9.9 华为OD机试题库《JavaScript》限时优惠 9.9 代码不懂有疑问欢迎留言或私我们的VX&#xff1a;code5bug。 题目描述 一个 XX 产品行销总公司&#xff0c;只有一个 boss&#xff0c;其有若干一级分销&…...

Qt:(创建项目)

目录 1. 使⽤QtCreator新建项⽬ 1.1 新建项⽬ 1.2 选择项⽬模板 1.3 选择项⽬路径 1.4 选择构建系统 1.5 填写类信息设置界⾯ ​编辑 1.6 选择语⾔和翻译⽂件 1.6 选择Qt套件 1.7 选择版本控制系统 1.8 最终效果 1. 使⽤QtCreator新建项⽬ 1.1 新建项⽬ 打开Qt…...

网络原理 - 12(HTTP/HTTPS - 3 - 响应)

目录 认识“状态码”&#xff08;status code&#xff09; 200 OK 404 Not Found 403 Forbidden 405 Method Not Allowed 500 Internal Server Error 504 Gateway Timeout 302 Move temporarily 301 Moved Permanently 418 I am a teaport 状态码小结&#xff1a; …...

OpenCV 4.7企业级开发实战:从图像处理到目标检测的全方位指南

简介 OpenCV作为工业级计算机视觉开发的核心工具库,其4.7版本在图像处理、视频分析和深度学习模型推理方面实现了显著优化。 本文将从零开始,系统讲解OpenCV 4.7的核心特性和功能更新,同时结合企业级应用场景,提供详细代码示例和实战项目,帮助读者掌握从基础图像处理到复…...

QT6 源(63)篇六:阅读与注释 QString 这个类,包含了 QString 类的 完整源码,也附上 QLatin1String 类的

&#xff08;9&#xff09;给出完整的源代码&#xff1a; #ifndef QSTRING_H #define QSTRING_H//验证了&#xff0c;没有此宏定义的 #if 不成立 #if defined(QT_NO_CAST_FROM_ASCII) && defined(QT_RESTRICTED_CAST_FROM_ASCII) #error QT_NO_CAST_FROM_ASCII a…...

PixONE 六维力传感器:赋能 OEM 机器人,12 自由度精准感知

The PixONE&#xff0c;一款为OEM设计的多模态12自由度机器人传感器&#xff0c;以其卓越的性能和广泛的适用性&#xff0c;正引领着机器人传感技术的革新。这款传感器不仅外观精致&#xff0c;达到IP68防护等级&#xff0c;易于消毒&#xff0c;而且其中心的大孔设计使得电缆和…...

nginx 解决跨域问题

本地用 8080 端口启动的服务访问后台API有跨域问题&#xff0c; from origin http://localhost:8080 has been blocked by CORS policy: Response to preflight request doesnt pass access control check: Redirect is not allowed for a preflight request. 其实用 9021 端…...

私有知识库 Coco AI 实战(五):打造 ES 新特性查询助手

有了实战&#xff08;四&#xff09;的经验&#xff0c;再打造个 ES 新特性查询助手就非常简单了。新的小助手使用的数据还是 ES 官方文档&#xff0c;模型设置也可沿用上次小助手的设置。 克隆小助手 我们进入 Coco Server 首页小助手菜单&#xff0c;选择“ES 索引参数查询…...

2025 新生 DL-FWI 培训

摘要: 本贴给出 8 次讨论式培训的提纲, 每次培训 1 小时. Basic concepts 1.1 Sesmic data processing – regular process 1.2 Full waveform inversion 1.3 Deep learning full waveform inversion Network structure 2.1 InversionNet Encoder-decorder structure 2.2 FCNV…...

VR汽车线束:汽车制造的新变革

汽车线束&#xff0c;作为汽车电路网络的主体&#xff0c;宛如汽车的 “神经网络”&#xff0c;承担着连接汽车各个部件、传输电力与信号的重任&#xff0c;对汽车的正常运行起着关键作用。从汽车的发动机到仪表盘&#xff0c;从传感器到各类电子设备&#xff0c;无一不是通过线…...