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 会定时检测数据库主节点(或 Pgpool 主节点)的运行状态。 一旦主节点宕机,它会发起故障切换请求。 • 协调主备切换 多个 Pgpool 节点时,Watchdog 保证只有一个 Pg…...
【计算机视觉】图像分割:Segment Anything (SAM):通用图像分割的范式革命
Segment Anything:通用图像分割的范式革命 技术突破与架构创新核心设计理念关键技术组件 环境配置与快速开始硬件要求安装步骤基础使用示例 深度功能解析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.下载 代码已经封装好,对小白友好。 想要更换数据集,参考readme文件摆放好数据集即可,…...
大型连锁酒店集团数据湖应用示例
目录 一、应用前面临的严峻背景 二、数据湖的精细化构建过程 (一)全域数据整合规划 (二)高效的数据摄取与存储架构搭建 (三)完善的元数据管理体系建设 (四)强大的数据分析平台…...
element.scrollIntoView(options)
handleNextClick 函数详解 功能描述 该函数实现在一个表格中“跳转到下一行”的功能,并将目标行滚动至视图顶部。通常用于导航或高亮显示当前选中的数据行。 const handleNextClick () > {// 如果当前已经是最后一行,则不执行后续操作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语言编写的自由及开放源代码软件,其提供高可用性、…...
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的下载安装和使用
资源获取链接: mysql-5.7.24-linux-glibc2.12-x86-64.tar.gz和使用说明资源-CSDN文库 详细作用 数据库服务器的核心文件: 这是一个压缩包,解压后包含 MySQL 数据库服务器的可执行文件、库文件、配置文件模板等。 它用于在 Linux 系统上安装…...
Kafka Producer的acks参数对消息可靠性有何影响?
1. acks0 可靠性最低生产者发送消息后不等待任何Broker确认可能丢失消息(Broker处理失败/网络丢失时无法感知)吞吐量最高,适用于允许数据丢失的场景(如日志收集) 2. acks1 (默认值) Leader副本确认模式生产者等待Le…...
Linux-04-用户管理命令
一、useradd添加新用户: 基本语法: useradd 用户名:添加新用户 useradd -g 组名 用户:添加新用户到某个组二、passwd设置用户密码: 基本语法: passwd 用户名:设置用户名密码 三、id查看用户是否存在: 基本语法: id 用户名 四、su切换用户: 基本语法: su 用户名称:切换用…...
node爬虫包 pup-crawler,超简单易用
PUP Crawler 这是一个基于puppeteer的简单的爬虫,可以爬取动态、静态加载的网站。 常用于【列表-详情-内容】系列的网站,比如电影视频等网站。 github地址 Usage npm install pup-crawler简单用法: 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. 问题描述: 如图所示: 2. 问题解决灵感: 使用相同的react-native代码,运行在两个APP(demo 和 project)上。demo 展示正常,project 展示不正常。 对两个页面截图,对比如下。 得出…...
Canvas基础篇:图形绘制
Canvas基础篇:图形绘制 图形绘制moveTo()lineTo()lineTo绘制一条直线代码示例效果预览 lineTo绘制平行线代码示例效果预览 lineTo绘制矩形代码示例效果预览 arc()arc绘制一个圆代码实现效果预览 arc绘制一段弧代码实现效果预览 arcTo()rect()曲线 结语 图形绘制 在…...
自定义实现elementui的锚点
背景 前不久有个需求,上半部分是el-step步骤条,下半部分是一些文字说明,需要实现点击步骤条中某个步骤自定义定位到对应部分的文字说明,同时滚动内容区域的时候还要自动选中对应区域的步骤。element-ui-plus的有锚点这个组件&…...
基于UNet算法的农业遥感图像语义分割——补充版
前言 本案例希望建立一个UNET网络模型,来实现对农业遥感图像语义分割的任务。本篇博客主要包括对上一篇博客中的相关遗留问题进行解决,并对网络结构进行优化调整以适应个人的硬件设施——NVIDIA GeForce RTX 3050。 本案例的前两篇博客直达链接基于UNe…...
分布式数字身份:迈向Web3.0世界的通行证 | 北京行活动预告
数字经济浪潮奔涌向前,Web3.0发展方兴未艾,分布式数字身份(Decentralized Identity,简称DID)通过将分布式账本技术与身份治理相融合,在Web3.0时代多方协作的分布式应用场景中发挥核心作用,是构建…...
CentOS网络之network和NetworkManager深度解析
文章目录 CentOS网络之network和NetworkManager深度解析1. CentOS网络服务发展历史1.1 传统network阶段(CentOS 5-6)1.2 过渡期(CentOS 7)1.3 新时代(CentOS 8) 2. network和NetworkManager的核心区别3. ne…...
【XR】MR芯片 和 VR芯片之争
【XR】MR芯片 和 VR芯片之争 1. MR芯片 和 VR芯片 之间的最大差异是什么2. MR芯片 和 VR芯片 之间的最大差异是什么,国内外市场上有哪些芯片,价格如何,市场怎么样,芯片价格怎么样1. MR芯片 和 VR芯片 之间的最大差异是什么 MR芯片(混合现实芯片)与VR芯片(虚拟现实芯片)…...
关于安卓自动化打包docker+jenkins实现
背景 安卓开发过程中,尤其是提测后,会有一个发包的流程。这个流程简单来说,一般都是开发打包,然后发群里,测试再下载,发送到分发平台,然后把分发平台的应用主页发出来,最后群里面的…...
如何使用CAN分析仪验证MCU CAN错误机制
本文通过实验验证CAN控制器的错误处理机制是否符合相关标准。具体而言,我们使用ZPS-CANFD设备(ZPS-CANFD介绍)作为测量工具,USBCANFD-200U作为被测设备(DUT),通过注入特定类型的错误,…...
Centos 7安装 NVIDIA CUDA Toolkit
下载 # 查看操作系统信息 uname -m && cat /etc/redhat-release # 查看显卡信息 lspci | grep -i nvidia从NVIDIA CUDA Toolkit官网下载符合你需求的版本,我这里选择的是runfile(local)的方式。 安装 现在完成后进行安装 chmod x cuda_12.4.0_550.54.1…...
软件测试52讲学习分享:深入理解单元测试
课程背景 最近我在学习极客时间的《软件测试52讲》课程,这是由腾讯TEG基础架构部T4级专家茹炳晟老师主讲的认证课程。作为数字化转型与人工智能(DTAI)产业人才基地建设中心的认证课程,内容非常专业实用。今天想和大家分享第3讲"什么是单元测试&…...
90.如何将Maui应用安装到手机(最简) C#例子 Maui例子
今天我来分享一下如何将Maui应用安装到手机上进行测试。 首先,创建一个新的Maui应用项目。 点击运行 在Visual Studio中,点击“运行”按钮,预览应用的初始效果,确保一切正常。 连接设备 使用数据线将手机连接到电脑。确保手机已…...
“100% 成功的 PyTorch CUDA GPU 支持” 安装攻略
#工作记录 一、总述 在深度学习领域,PyTorch 凭借其灵活性和强大的功能,成为了众多开发者和研究者的首选框架。而 CUDA GPU 支持能够显著加速 PyTorch 的计算过程,大幅提升训练和推理效率。然而,安装带有 CUDA GPU 支持的 PyTor…...
如何在Dify沙盒中安装运行pandas、numpy
如何在Dify沙盒中安装运行pandas、numpy 1. 创建python-requirements.txt文件2. 创建config.yaml文件3. 重启 docker-sandbox-14. 为什么要这样改的一些代码解析(Youtube视频截图) 1. 创建python-requirements.txt文件 在 Dify 的 Docker 目录下面&…...
ES集群搭建及工具类
文章说明 本文主要记录Windows下搭建ES集群的过程,并提供了一个通用的ES工具类;工具类采用http接口调用es功能,目前仅提供了简单的查询功能,可在基础上额外扩展 集群搭建 ES的下载安装非常简单,只需要下载软件的 zip 压…...
抓取工具Charles配置教程(mac电脑+ios手机)
mac电脑上的配置 1. 下载最新版本的Charles 2. 按照以下截图进行配置 2.1 端口号配置: 2.2 https配置 3. mac端证书配置 4. IOS手机端网络配置 4.1 先查看电脑上的配置 4.2 配置手机网络 连接和电脑同一个wifi,然后按照以下截图进行配置 5. 手机端证书…...
JavaScript 代码搜索框
1. 概述与需求分析 功能:在网页中实时搜索用户代码、关键字;展示匹配行、文件名;支持高亮、正则、模糊匹配。非功能:大文件集(几十万行)、高并发、响应 <100ms;支持增量索引和热更新。 2. …...
ESP32开发-作为TCP服务端接收数据
ESP32 ENC28J60 仅作为TCP服务端 (电脑通过 网络调试助手 连接ESP32,实现双向通信) 完整代码 #include <SPI.h> #include <EthernetENC.h> // 或 UIPEthernet.h// 网络配置 byte mac[] {0xDE, 0xAD…...
数智化招标采购系统针对供应商管理解决方案(采购如何管控供应商)
随着《优化营商环境条例》深化实施,采购领域正通过政策驱动和技术赋能,全面构建供应商全生命周期管理体系,以规范化、数智化推动采购生态向透明、高效、智能方向持续升级。 郑州信源数智化招标采购系统研发商,通过供应商管理子系…...
服务端字符过滤 与 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的区别.其中第二步由于前台传…...
章越科技赋能消防训练体征监测与安全保障,从传统模式到智能跃迁的实践探索
引言:智能化转型浪潮下,消防训练的“破局”之需 2021年《“十四五”国家消防工作规划》的出台,标志着我国消防救援体系正式迈入“全灾种、大应急”的全新阶段。面对地震、洪涝、危化品泄漏等复杂救援场景,消防员不仅需要更强的体…...
RSYSLOG收集深信服log
RSYSLOG收集深信服ATRUST日志配置一直不成功,没有生成log文件,网上搜索到:如果你想要接收所有来自特定 IP 的日志,可以使用更通用的模式: 参考着修改配置 if $fromhost-ip 172.18.1.13 then /data/logs/network-devi…...
Golang - 实现文件管理服务器
先看效果: 代码如下: package mainimport ("fmt""html/template""log""net/http""os""path/filepath""strings" )// 配置根目录(根据需求修改) //var ba…...
在原生代码(非webpack)里使用iview的注意事项
最近公司在做一个项目,使用的框架是iview,使用过程中同事遇到一些问题,这些问题对于有些同学来说根本就不是问题,但总会有同学需要,为了帮助不太会用的同学快速找到问题,做了如下整理: 下载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 用一等函数重新审视“命令”设计模式
引言 在软件开发中,设计模式是解决常见问题的有效方法。“命令”设计模式旨在解耦调用操作的对象(调用者)和提供实现的对象(接收者)。本文将深入探讨“命令”模式,并介绍如何使用一等函数对其进行简化。 …...
pycharm导入同目录下文件未标红但报错ModuleNotFoundError
此贴仅为记录debug过程,为防后续再次遇见 问题 问题情境 复现文章模型,pycharm项目初次运行 问题描述 在导入同目录下其它文件夹中的python文件时,未标红,但运行时报错ModuleNotFoundError 报错信息 未找到该模块 Traceback …...
BOSS的收入 - 华为OD机试(A卷,Java题解)
华为OD机试题库《C》限时优惠 9.9 华为OD机试题库《Python》限时优惠 9.9 华为OD机试题库《JavaScript》限时优惠 9.9 代码不懂有疑问欢迎留言或私我们的VX:code5bug。 题目描述 一个 XX 产品行销总公司,只有一个 boss,其有若干一级分销&…...
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 - 响应)
目录 认识“状态码”(status code) 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 状态码小结: …...
OpenCV 4.7企业级开发实战:从图像处理到目标检测的全方位指南
简介 OpenCV作为工业级计算机视觉开发的核心工具库,其4.7版本在图像处理、视频分析和深度学习模型推理方面实现了显著优化。 本文将从零开始,系统讲解OpenCV 4.7的核心特性和功能更新,同时结合企业级应用场景,提供详细代码示例和实战项目,帮助读者掌握从基础图像处理到复…...
QT6 源(63)篇六:阅读与注释 QString 这个类,包含了 QString 类的 完整源码,也附上 QLatin1String 类的
(9)给出完整的源代码: #ifndef QSTRING_H #define QSTRING_H//验证了,没有此宏定义的 #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,一款为OEM设计的多模态12自由度机器人传感器,以其卓越的性能和广泛的适用性,正引领着机器人传感技术的革新。这款传感器不仅外观精致,达到IP68防护等级,易于消毒,而且其中心的大孔设计使得电缆和…...
nginx 解决跨域问题
本地用 8080 端口启动的服务访问后台API有跨域问题, 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 新特性查询助手
有了实战(四)的经验,再打造个 ES 新特性查询助手就非常简单了。新的小助手使用的数据还是 ES 官方文档,模型设置也可沿用上次小助手的设置。 克隆小助手 我们进入 Coco Server 首页小助手菜单,选择“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汽车线束:汽车制造的新变革
汽车线束,作为汽车电路网络的主体,宛如汽车的 “神经网络”,承担着连接汽车各个部件、传输电力与信号的重任,对汽车的正常运行起着关键作用。从汽车的发动机到仪表盘,从传感器到各类电子设备,无一不是通过线…...