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

MySQL GTID集合运算函数总结

MySQL GTID 有一些运算函数可以帮助我们在运维工作中提高运维效率。

1 GTID内置函数

MySQL 包含GTID_SUBSET、GTID_SUBTRACT、WAIT_FOR_EXECUTED_GTID_SET、WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS 4个内置函数,用于GTID集合的基本运算。

1.1 GTID_SUBSET(set1,set2)

给定两个GTID集set1和set2,set1是set2的子集返回true,否则返回false

root@(none) 10:29:28>select 
gtid_subset('53442434-8bfa-11e9-bc15-005056a50f77:1-2','8eed0f5b-6f9b-11e9-94a9-005056a57a4e:1-2') c8,
gtid_subset('53442434-8bfa-11e9-bc15-005056a50f77:1-2','8eed0f5b-6f9b-11e9-94a9-005056a57a4e:1-2,53442434-8bfa-11e9-bc15-005056a50f77:1-2') c9;
+----+----+
| c8 | c9 |
+----+----+
|  0 |  1 |
+----+----+
1 row in set (0.00 sec)

1.2  GTID_SUBTRACT(set1,set2)

GTID_SUBTRACT(gtid_set1, gtid_set2) 返回一个新的 GTID 集,表示 gtid_set1 中存在但 gtid_set2 中不存在的 GTID(即 gtid_set1 减去 gtid_set2 的结果)

select gtid_subtract('53442434-8bfa-11e9-bc15-005056a50f77:1-2,8eed0f5b-6f9b-11e9-94a9-005056a57a4e:1-2','8eed0f5b-6f9b-11e9-94a9-005056a57a4e:2-3') c9;

root@(none) 10:37:49>select gtid_subtract('53442434-8bfa-11e9-bc15-005056a50f77:1-2,8eed0f5b-6f9b-11e9-94a9-005056a57a4e:1-2','8eed0f5b-6f9b-11e9-94a9-005056a57a4e:2-3') c9\G;
*************************** 1. row ***************************
c9: 53442434-8bfa-11e9-bc15-005056a50f77:1-2,
8eed0f5b-6f9b-11e9-94a9-005056a57a4e:1
1 row in set (0.00 sec)

select gtid_subtract('53442434-8bfa-11e9-bc15-005056a50f77:1-5','53442434-8bfa-11e9-bc15-005056a50f77:3-10') c8

root@(none) 10:45:32>select gtid_subtract('53442434-8bfa-11e9-bc15-005056a50f77:1-5','53442434-8bfa-11e9-bc15-005056a50f77:3-10') c8;
+------------------------------------------+
| c8                                       |
+------------------------------------------+
| 53442434-8bfa-11e9-bc15-005056a50f77:1-2 |
+------------------------------------------+
1 row in set (0.01 sec)

1.3 WAIT_FOR_EXECUTED_GTID_SET(gtid_set[, timeout])

等到服务器应用了包含在 gtid_set 中的所有事务。如果指定可选的 timeout 值 (秒数),超时会使函数停止等待而退出。

select wait_for_executed_gtid_set('53442434-8bfa-11e9-bc15-005056a50f77:1-7');
 

select wait_for_executed_gtid_set('53442434-8bfa-11e9-bc15-005056a50f77:8',5);

1.4 WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(gtid_set[, timeout][,channel])

WAIT_FOR_EXECUTED_GTID_SET类似,但针对单个启动的复制通道.

1.5 可以自定义函数

# 如果两个GTID集相同,函数返回非零值
create function gtid_is_equal(gtid_set_1 longtext, gtid_set_2 longtext)
returns int deterministic
  return gtid_subset(gtid_set_1, gtid_set_2) and gtid_subset(gtid_set_2, gtid_set_1);
# 如果两个GTID集不相交,函数返回非零值
create function gtid_is_disjoint(gtid_set_1 longtext, gtid_set_2 longtext)
returns int deterministic
  return gtid_subset(gtid_set_1, gtid_subtract(gtid_set_1, gtid_set_2));
# 如果两个GTID集不相交,则函数返回非零,sum是两个集的并集
create function gtid_is_disjoint_union(gtid_set_1 longtext, gtid_set_2 longtext, sum longtext)
returns int deterministic
  return gtid_is_equal(gtid_subtract(sum, gtid_set_1), gtid_set_2) and
         gtid_is_equal(gtid_subtract(sum, gtid_set_2), gtid_set_1);
# 函数返回格式化的GTID集。没有空格且没有重复,UUID按字母顺序排列,间隔按数字顺序排列
create function gtid_normalize(g longtext)
returns longtext deterministic
return gtid_subtract(g, '');
# 函数返回两个GTID集的并集
create function gtid_union(gtid_set_1 longtext, gtid_set_2 longtext)
returns longtext deterministic
  return gtid_normalize(concat(gtid_set_1, ',', gtid_set_2));
# 函数返回两个GTID集的交集
create function gtid_intersection(gtid_set_1 longtext, gtid_set_2 longtext)
returns longtext deterministic
  return gtid_subtract(gtid_set_1, gtid_subtract(gtid_set_1, gtid_set_2));
# 函数返回两个GTID集的对称差集
create function gtid_symmetric_difference(gtid_set_1 longtext, gtid_set_2 longtext)
returns longtext deterministic
  return gtid_subtract(concat(gtid_set_1, ',', gtid_set_2), gtid_intersection(gtid_set_1, gtid_set_2));
# 函数返回除去指定UUID的GTID集
create function gtid_subtract_uuid(gtid_set longtext, uuid text)
returns longtext deterministic
  return gtid_subtract(gtid_set, concat(uuid, ':1-', (1 << 63) - 2));
# 函数返回指定UUID的GTID集
create function gtid_intersection_with_uuid(gtid_set longtext, uuid text)
returns longtext deterministic
  return gtid_subtract(gtid_set, gtid_subtract_uuid(gtid_set, uuid));
 

2 GTID使用示例

2.1、监控从库是否有人执行了写操作,生产GTID:

使用 gtid_subset 来验证,从库的gtid一定是主库的gtid的子集。

GTID_SUBSET(set1,set2)

执行 GTID_SUBSET(从库gtid,主库gtid),如果是true就没问题,如果是false就是有人误操作了从库。

从库('53442434-8bfa-11e9-bc15-005056a50f77:1-2,8eed0f5b-6f9b-11e9-94a9-005056a57a4e:1-6')


主库('53442434-8bfa-11e9-bc15-005056a50f77:1-3,8eed0f5b-6f9b-11e9-94a9-005056a57a4e:1-5')


主库('53442434-8bfa-11e9-bc15-005056a50f77:1-3')


主库('53442434-8bfa-11e9-bc15-005056a50f77:1-3',8eed0f5b-6f9b-11e9-94a9-005056a57a4e:1-7')

结果:

2.2、验证从库的复制是否最新:

内置函数GTID_SUBSETGTID_SUBTRACT可用于检查从库是应用了主库的每个事务。使用GTID_SUBSET执行此检查,在从库上执行以下命令:

master_gtid_executed=`mysql -uroot -proot -h192.168.2.80 -N -e "select replace(@@global.gtid_executed,char(10),'')"`

slave_gtid_executed=`mysql -uroot -proot -N -e "select replace(@@global.gtid_executed,char(10),'')"` sql="select gtid_subset('$master_gtid_executed', '$slave_gtid_executed')"

dls

mysql -uroot -proot -e "$sql" 

gtid_subset('dd746660-528a-11ed-9c86-000c293b9f86:1-14,e189b1a5-529d-11ed-992e-000c29c1da06:1', 'dd746660-528a-11ed-9c86-000c293b9f86:1-14,e189b1a5-529d-11ed-992e-000c29c1da06:1') ;

2.3 验证复制拓扑中的服务器是否执行过本地事务

自定义函数 GTID_INTERSECTION_WITH_UUID 可用于验证服务器是否执行过本地事务。可以在服务器上发出以下语句来检查:

SELECT GTID_INTERSECTION_WITH_UUID(@@GLOBAL.gtid_executed, my_server_uuid);

2.4 检查从库上的异常事务

自定义函数 GTID_SUBTRACT_UUID 可用于检查从库是否只接收到源自其指定主库的事务。对于单主复制,执行以下语句,server_uuid_of_master 是主库的 server_uuid:

SELECT GTID_SUBTRACT_UUID(@@GLOBAL.gtid_executed, server_uuid_of_master);
 

如果结果不为空,则返回的事务是不是源自指定主库的异常事务。对于多主复制拓扑中的从库,重复该功能,例如:

SELECT GTID_SUBTRACT_UUID(GTID_SUBTRACT_UUID(@@GLOBAL.gtid_executed,
                                             server_uuid_of_master_1),
                                             server_uuid_of_master_2);
 

相关文章:

MySQL GTID集合运算函数总结

MySQL GTID 有一些运算函数可以帮助我们在运维工作中提高运维效率。 1 GTID内置函数 MySQL 包含GTID_SUBSET、GTID_SUBTRACT、WAIT_FOR_EXECUTED_GTID_SET、WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS 4个内置函数&#xff0c;用于GTID集合的基本运算。 1.1 GTID_SUBSET(set1,set2) …...

4.1.2 Redis协议与异步方式

文章目录 4.1.2 Redis协议与异步方式1. redis pipeline2. redis事务1. MULTI2. EXEC3. DISCARD4. WATCH 3. lua脚本1. lua基础语法2. Lua 脚本中访问 Redis 的方式3. Lua 脚本中的 KEYS 和 ARGV4、返回值5、错误处理EVALSHA 来代替 EVAL 4. ACID特性分析5. redis发布订阅1. 工作…...

ecovadis审核有什么原则?什么是ecovadis审核,有什么意义

EcoVadis审核概述 EcoVadis是一家全球知名的企业可持续发展评级机构&#xff0c;成立于2007年&#xff0c;旨在通过评估企业的环境&#xff08;E&#xff09;、社会&#xff08;S&#xff09;和治理&#xff08;G&#xff09;表现&#xff0c;帮助跨国公司管理供应链的可持续性…...

bitnet-b1.58-2B-4T和三进制

最近有个模型挺火啊现在都排进了HF排行榜的第四了 模型叫做microsoft/bitnet-b1.58-2B-4T 其实非常小的一个模型&#xff0c;只有2B&#xff0c;那这东西有多大意义呢&#xff1f; 它主要探索一个打法 也就是这篇论文 The era of 1-bit llms: All large language models ar…...

k8s报错kubelet.go:2461] “Error getting node“ err=“node \“k8s-master\“ not found“

问题 首先最初问题&#xff1a; [rootk8s-master ~]# kubectl get pods -owide --all-namespaces The connection to the server 192.168.2.129:6443 was refused - did you specify the right host or port?检查kubelet状态 查看kubelet status报找不到master节点 [rootk8…...

计算serise数据的唯一值数量

1. Series.unique() 功能&#xff1a;返回 Series 中所有唯一值的 数组&#xff08;顺序按首次出现排列&#xff09;。 返回值类型&#xff1a;numpy.ndarray&#xff08;用户可能误认为是列表&#xff0c;但实际是 NumPy 数组&#xff09;。 对 NaN 的处理&#xff1a;包含 …...

数组理论基础

什么是数组 在Java中&#xff0c;数组是一种数据结构&#xff0c;用来存储同一类型的多个元素。这些元素可以按照索引访问&#xff0c;方便对数据进行操作和管理。数组在编程中应用广泛&#xff0c;是一种基本且重要的数据结构。 数组的基本概念 1. 元素&#xff1a;数组中的…...

Linux操作系统--静态库和动态库的生成and四种解决加载找不到动态库的四种方法

目录 必要的知识储备&#xff1a; 生成静态库&#xff1a; 生成动态库&#xff1a; 解决加载找不到动态库的四种方法&#xff1a; 第一种&#xff1a;拷贝到系统默认的库路径 /usr/lib64/ 第二种&#xff1a;在系统默认的库路径/usr/lib64/下建立软链接 第三种&#xff1…...

安科瑞能源管理系统如何解决工业园区能源管理难,运维成本高的问题?

一、行业痛点&#xff1a;高能耗背后的“隐形炸弹 1. 能源管理粗放&#xff1a;水、电、气、冷热等多类型能源分散管理&#xff0c;人工抄表效率低&#xff0c;跑冒滴漏难追踪。 2. 电能质量隐患&#xff1a;变频设备引发谐波干扰&#xff0c;导致设备停机、电容器烧毁&#…...

大模型赋能工业制造革新:10个显效可落地的应用场景

在工业4.0的汹涌浪潮中&#xff0c;制造业正面临着前所未有的转型挑战。传统制造模式在效率、成本、质量等方面逐渐难以满足市场需求&#xff0c;企业急需借助新技术实现数字化转型&#xff0c;以提升自身竞争力。在此背景下&#xff0c;基于先进的数据分析技术、大模型、知识图…...

【android bluetooth 框架分析 02】【Module详解 4】【Btaa 模块介绍】

1. 背景 我们在上一篇文章中介绍 HciHal 模块时&#xff0c;有如下代码 // system/gd/hal/hci_hal_android_hidl.ccvoid ListDependencies(ModuleList* list) const {list->add<SnoopLogger>();if (common::init_flags::btaa_hci_is_enabled()) {list->add<ac…...

gitee新的仓库,Vscode创建新的分支详细步骤

第一步点击创建分支输入新分支的名字 第二步 第三步 第四步...

OpenHarmony - 小型系统内核(LiteOS-A)(五)

OpenHarmony - 小型系统内核&#xff08;LiteOS-A&#xff09;&#xff08;五&#xff09; 六、文件系统 虚拟文件系统 基本概念 VFS&#xff08;Virtual File System&#xff09;是文件系统的虚拟层&#xff0c;它不是一个实际的文件系统&#xff0c;而是一个异构文件系统之…...

Unity动态合批(Dynamic Batching)解析

什么是动态合批&#xff1f; 动态合批是Unity引擎的一项核心优化技术&#xff0c;用于减少绘制调用&#xff08;Draw Calls&#xff09;数量&#xff0c;提高游戏性能。它通过将多个使用相同材质的小型可移动物体的渲染操作合并为单个绘制调用&#xff0c;减轻CPU向GPU发送命令…...

【Python】迭代器(Iterator)vs 生成器(Generator)

迭代器&#xff08;Iterator&#xff09; vs 生成器&#xff08;Generator&#xff09; 1.迭代器&#xff08;Iterator&#xff09;1.1 是什么&#xff1f;1.2 示例1.3 适用场景 2.生成器&#xff08;Generator&#xff09;2.1 是什么&#xff1f;2.2 示例2.3 适用场景 3.迭代器…...

el-input 限制只能输入负数、正数或2位小数的数值

需求 el-input需要指定输入格式&#xff0c;当键盘事件触发时限制只能输入负数、正数或2位小数的数值。 解决方案 自定义校验数字输入的键盘事件方法函数。 具体实现步骤 1、创建验数字输入的键盘事件方法 /*** 校验数字输入的键盘事件* param {Event} event - 键盘事件对…...

对话框类别组件编写

形如如图所示的对话框的编写 一、基本组件的定义 <template><div><el-dialogclass"cust-dialog":title"title":model-value"show":show-close"showClose":top"toppx":width"widthpx":close-on-…...

ICMAN防水触摸芯片 - 复杂环境下精准交互,提升触控体验

▍核心优势 ◆ 超强抗干扰能力 ◆ 工业级设计&#xff0c;一致性和稳定性好 ▍提供场景化解决方案 【智能厨电矩阵】抽油烟机档位调节 | 电磁炉火力触控 | 洗碗机模式切换 【卫浴设备方案】淋浴房雾化玻璃控制 | 智能马桶触控面板 | 浴缸水位感应 【工业控制应用】仪器仪…...

深度剖析:生成式人工智能备案和登记的关键差异

在人工智能技术日新月异的当下&#xff0c;生成式人工智能以前所未有的态势广泛渗透至各个领域&#xff0c;从内容创作到智能客服&#xff0c;从图像生成到数据分析&#xff0c;其应用场景正呈指数级拓展。2024 年&#xff0c;网信部门协同相关部门&#xff0c;依据《生成式人工…...

kotlin + spirngboot3 + spring security6 配置登录与JWT

1. 导包 implementation("com.auth0:java-jwt:3.14.0") implementation("org.springframework.boot:spring-boot-starter-security")配置用户实体类 Entity Table(name "users") data class User(IdGeneratedValue(strategy GenerationType.I…...

d3.js绘制组合PCA边缘分布图

用d3.js研发了个组合PCA边缘分布图&#xff1b; 组合PCA边缘分布图中包括pca散点图、散点图可根据数据自动分为连续型和离散型、还有散点的各种配置、边缘有箱线边缘、密度边缘、柱状边缘一个各个边缘的配置等等&#xff0c;大部分你能想到的配置都是自行传参调整的&#xff0…...

开源语音合成模型SparkTTS使用

一、环境配置 git clone https://github.com/SparkAudio/Spark-TTS.git pip install -r requirements.txt 二、模型下载 从modelscope进行下载&#xff0c;pip install modelscope 创建一个download.py import torchfrom modelscope import snapshot_downloadsnapshot_dow…...

课程9. 数据降维

课程9. 数据降维 维度灾难奇异值分解SVD 变换SVD 的几何意义 SVD分解应用示例图像压缩文本分析推荐系统中的应用* 主成分分析PCA演示使用 PCA 降低多元数据的维数PCA 说明单词的语义相似性 t-SNE 维度灾难 机器学习和数据科学中的关键问题之一是数据高维性问题。我们已经遇到过…...

24-25【动手学深度学习】AlexNet + Vgg

1. AlexNet 1.1 原理 1.2 代码 import torch from torch import nn from d2l import torch as d2lnet nn.Sequential(nn.Conv2d(1, 96, kernel_size11,stride4, padding1), nn.ReLU(),nn.MaxPool2d(kernel_size3, stride2),nn.Conv2d(96, 256, kernel_size5, padding2), nn.…...

1.Axum 与 Tokio:异步编程的完美结合

摘要 深入解析 Axum 核心架构与 Tokio 异步运行时的集成&#xff0c;掌握关键原理与实践技巧。 一、引言 在当今的软件开发领域&#xff0c;高并发和高性能是衡量一个系统优劣的重要指标。对于 Web 服务器而言&#xff0c;能够高效地处理大量并发请求是至关重要的。Rust 语言…...

快速认识:数据库、数仓(数据仓库)、数据湖与数据运河

数据技术核心概念对比表 概念核心定义核心功能数据特征典型技术/工具核心应用场景数据库结构化数据的「电子档案柜」&#xff0c;按固定 schema 存储和管理数据&#xff0c;支持高效读写和事务处理。实时事务处理&#xff08;增删改查&#xff09;&#xff0c;确保数据一致性&…...

【Linux】第十章 配置和保护SSH

1. 简单说下ssh如何实现用户的免密登录&#xff1f; &#xff08;1&#xff09;生成公钥和私钥&#xff1a;使用 ssh-keygen -t rsa 命令&#xff0c;在客户端&#xff08;即你登录的机器&#xff09;上生成一对密钥——公钥&#xff08;~/.ssh/id_rsa.pub&#xff09;和私钥&…...

量子计算:开启未来科技之门的钥匙

在当今科技飞速发展的时代&#xff0c;量子计算正逐渐从实验室走向实际应用&#xff0c;成为全球科技领域的焦点之一。它有望为众多行业带来前所未有的变革&#xff0c;从密码学、药物研发到金融风险评估等&#xff0c;量子计算的潜力不可限量。 一、量子计算的原理 量子计算基…...

基础知识 - 结构体

1、结构体类型与结构体变量 1.1 结构体的定义 结构体是一种自定义的数据类型&#xff0c;它把多个不同类型的变量封装在一起&#xff0c;形成一个新的复合数据类型。可以定义该结构体类型的变量&#xff0c;与使用 int 定义变量的方法相同 结构体是一些值的集合&#xff0c;这…...

uniapp上传图片时(可选微信头像、相册、拍照)

参考文献&#xff1a;微信小程序登录——头像_onchooseavatar-CSDN博客 <button open-type"chooseAvatar" chooseavatar"onChooseAvatar"> </button>onChooseAvatar(e) {uni.showLoading({title: 上传中...,mask: true});uni.uploadFile({url…...

2025年4月16日华为笔试第二题200分

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 02. 智慧旅游路线规划 问题描述 LYA正在开发一款智慧旅游APP,该APP需要为游客规划城市景点之间的最佳路线。城市有 N N...

面试题之高频面试题

最近开始面试了&#xff0c;410面试了一家公司 针对自己薄弱的面试题库&#xff0c;深入了解下&#xff0c;也应付下面试。在这里先祝愿大家在现有公司好好沉淀&#xff0c;定位好自己的目标&#xff0c;在自己的领域上发光发热&#xff0c;在自己想要的领域上&#xff08;技术…...

一路磕磕绊绊解决flutter doctor 报错CocoaPods not installed

flutter doctor执行之后&#xff0c;出现以下错误: 错误消息&#xff1a; ✗ CocoaPods not installed.CocoaPods is a package manager for iOS or macOS platform code.Without CocoaPods, plugins will not work on iOS or macOS.For more info, see https://flutter.dev/t…...

探寻Gson解析遇到不存在键值时引发的Kotlin的空指针异常的原因

文章目录 一、问题背景二、问题原因三、问题探析Kotlin空指针校验Gson.fromJson(String json, Class<T> classOfT)TypeTokenGson.fromJson(JsonReader reader, TypeToken<T> typeOfT)TypeAdapter 和 TypeAdapterFactoryReflectiveTypeAdapterFactoryRecordAdapter …...

面试算法高频08-动态规划-01

动态规划 递归知识要点 递归代码模板&#xff1a;提供递归代码的标准形式public void recur(int level, int param) &#xff0c;包含终止条件&#xff08;if (level> MAX_LEVEL)&#xff09;、当前层逻辑处理&#xff08;process(level, param)&#xff09;、向下一层递归…...

【AI】以Llama模型为例学习如何进行LLM模型微调

以Llama模型为例学习如何进行LLM模型微调 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 以Llama模型为例学习如何进行LLM模型微调背景预训练微调全部微调参数高效微调低秩适配 (LoR…...

细说STM32单片机FreeRTOS任务管理API函数vTaskList()的使用方法

目录 一、函数vTaskList() 1、 函数说明 2、返回的字符串表格说明 3、函数的使用方法 二、 vTaskList()的应用示例 1、示例功能、项目设置 2、软件设计 &#xff08;1&#xff09;main.c &#xff08;2&#xff09;freertos.c &#xff08;3&#xff09;FreeRTOSConf…...

ffmpeg 添加 nvenc支持

运行以下命令检查当前 FFmpeg 是否支持 hevc_nvenc&#xff1a; ffmpeg -hide_banner -encoders | grep nvenc 若输出包含 hevc_nvenc&#xff0c;说明编码器已集成&#xff0c;问题出在驱动或参数配置若无输出&#xff0c;则需要手动编译 ffmpeg 安装显卡驱动、cuda和cudnn…...

锚定效应的应用-独立站优化价格打折显示-《认知偏差手册》

锚定效应的应用-独立站优化价格打折显示-《认知偏差手册》 先看结果&#xff1a;价格展示 https://atemplate.com/pricing 旧的打折价格展示 新的打折价格展示 锚定效应是什么&#xff1f; 人类在进行决策时&#xff0c;会过度偏重先前取得的资讯&#xff08;这称为锚点&…...

红宝书第四十九讲:XSS/CSRF攻击防御策略解析

红宝书第四十九讲&#xff1a;XSS/CSRF攻击防御策略解析 资料取自《JavaScript高级程序设计&#xff08;第5版&#xff09;》。 查看总目录&#xff1a;红宝书学习大纲 XSS&#xff08;跨站脚本&#xff09;&#xff1a;黑客把恶意代码塞进网页&#xff0c;当你打开页面时&am…...

Unity基于屏幕空间的鼠标拖动,拖动物体旋转

代码的核心在于&#xff0c;鼠标的屏幕偏移映射到物体的旋转角度&#xff0c;代码中是使用射线去检测的&#xff0c;检测帧间隔鼠标的位置对应物体上的旋转 未解决的问题&#xff1a;旋转都是相对的&#xff0c;怎么去处理&#xff0c;鼠标拖动物体&#xff0c;物体不动&#…...

Unity3D 测试驱动开发(TDD)框架设计

前言 针对Unity3D测试驱动开发&#xff08;TDD&#xff09;框架的设计&#xff0c;需要结合Unity引擎特性与TDD核心原则&#xff0c;构建可维护、高效且与开发流程深度集成的测试体系。以下是分层次的框架设计方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&a…...

Google Mock(GMock):C++单元测试的高效模拟框架详解

标题&#xff1a; Google Mock&#xff08;GMock&#xff09;&#xff1a;C单元测试的高效模拟框架详解 摘要&#xff1a; Google Mock&#xff08;GMock&#xff09;是C单元测试中的核心工具&#xff0c;能够高效隔离外部依赖并验证复杂交互逻辑。本文详细介绍了GMock的核心…...

智慧城市气象中台架构:多源天气API网关聚合方案

在开发与天气相关的应用时&#xff0c;获取准确的天气信息是一个关键需求。万维易源提供的“天气预报查询”API为开发者提供了一个高效、便捷的工具&#xff0c;可以通过简单的接口调用查询全国范围内的天气信息。本文将详细介绍如何使用该API&#xff0c;以及其核心功能和调用…...

vue3项目启动bug

项目场景&#xff1a; vue3 项目启动运行 问题描述 终端无法正常启动运行 C:/user/adminC:/user/admin> npm run dev > student_status_vue30.0.0 dev > vite原因分析&#xff1a; 暂无 解决方案&#xff1a; 在当前项目目录下运行&#xff1a; npx vite --host…...

逻辑回归 (Logistic Regression)

文章目录 逻辑回归 (Logistic Regression)问题的引出Sigmoid function逻辑回归的解释决策边界 (Decision boundary)逻辑回归的代价函数机器学习中代价函数的设计1. 代价函数的来源&#xff08;1&#xff09;从概率模型推导而来&#xff08;统计学习视角&#xff09;&#xff08…...

SLAM | 激光SLAM中的退化问题

在激光SLAM中,判断退化环境的核心是通过数学建模分析环境特征对位姿估计的约束能力。除了LOAM中提出的退化因子D外,还存在多种基于表达式和阈值设定的方法。以下是几种典型方法及其实现原理: 1. 协方差矩阵特征值分析 原理:通过分析点云协方差矩阵的特征值分布,判断环境中…...

【已更新】2025华中杯B题数学建模网络挑战赛思路代码文章教学:校园共享单车的调度与维护问题

完整内容请看文末最后的推广群 先展示问题一代码和结果、再给出四个问题详细的模型 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from matplotlib.font_manager import FontPropertiesfrom matplotlib import rcParams# 设…...

[特殊字符] 基于大模型的地理领域文档中英互译自动化方案

一、&#x1f4cc; 项目背景与挑战 在全球化商业环境中&#xff0c;跨国企业经常面临专业文档翻译的痛点&#xff1a; 传统方式效率低下&#xff1a;专业文档翻译需要专人耗时数小时甚至数天 专业术语准确性难保证&#xff1a;地理领域术语的特殊性 格式保持困难&#xff1a…...

破局遗留系统!AI自动化重构:从静态方法到Spring Bean注入实战

在当今快速发展的软件行业中,许多企业都面临着 Java 遗留系统的维护和升级难题。这些老旧系统往往采用了大量静态方法,随着业务的不断发展,其局限性日益凸显。而飞算 JavaAI 作为一款强大的 AI 工具,为 Java 遗留系统的重构提供了全新的解决方案,能够实现从静态方法到 Spring B…...