gt-checksum v4.0.0 新功能解读系列文章(3):反向回滚 SQL——修复可审计、可回退

Qwen Code CLI:面向工程落地的代码智能协同工作流 代码大模型不是万能的‘黑盒生成器’,其真正价值在于与开发流程深度耦合——这需要可嵌入、可审计、低延迟的本地化智能代理。Qwen Code CLI 正是为此而生:它不直接运行大模型,而是通过本地AST解析、多粒度上下文注入和结构化任务封装,将Qwen-Coder系列模型转化为CI/CD、Git Hook与IDE插件可调度的工程原语。其核心能力覆盖代码解释、PR自动审查、安全扫描与知识提取,关键优势在于离线运行、输出强约束(JSON Schema)、推理后端灵活适配(Ollama/llama.cpp),并天然支 阅读详情

在数据修复场景中,"修复容易,回滚困难"一直是个痛点。执行完修复 SQL 后发现结果不符合预期,却没有现成的回退手段。

gt-checksum v4.0.0 新增反向回滚 SQL 生成能力,让每一次修复都有"后悔药"。


一、功能简介

genRollSQL 是 gt-checksum v4.0.0 新增的核心参数,配合 maxRollRowNum 和 rollFileDir 一起使用,用于在生成修复 SQL 的同时自动生成反向回滚 SQL。

参数说明

参数默认值可选值说明
genRollSQLOFFON / OFF / 自定义表名控制是否生成回滚 SQL
maxRollRowNum10000正整数单表待修复行数超过该阈值时不生成回滚 SQL
rollFileDirrollsql目录路径回滚 SQL 文件存储目录

三种 genRollSQL 模式的区别:

模式行为
OFF不生成回滚 SQL(默认行为)
ON对所有校验的表生成回滚 SQL
自定义表名仅对指定的表生成回滚 SQL,支持逗号分隔多个表名,支持 % 通配符

使用方式非常简单,在配置文件 gc.conf 中添加几行:

genRollSQL=ON
rollFileDir=rollsql
maxRollRowNum=10000

二、功能作用及使用场景深入解读

2.1 为什么需要回滚 SQL?

在生产环境中执行数据修复,面临的风险远比测试环境复杂:

场景一:审计与合规

在金融、医疗等对数据变更审计要求严格的行业,不仅需要知道"改了什么",还需要知道"怎么改回去"。回滚 SQL 是修复操作可审计性的重要组成部分。

场景二:修复逻辑误判

在复杂的类型映射、字符集转换场景下,校验工具判定的"差异"可能只是格式差异而非真实数据差异(例如 DECIMAL 精度差异、utf8mb4_general_ci vs utf8mb4_0900_ai_ci 的 collation 差异)。修复后业务验证不通过,需要回退。

场景三:修复导致业务中断

修复 SQL 中的 DELETE 或 UPDATE 可能与正在运行的业务事务产生锁冲突,或者修复了业务正在使用的数据行,导致业务报错。此时需要快速回退恢复原状。

2.2 回滚逻辑是如何工作的?

gt-checksum 的回滚 SQL 生成采用反向映射策略:对每条修复 SQL,生成一条语义相反的回滚 SQL。

核心映射关系:

修复 SQL 类型回滚 SQL 类型说明
DELETE FROM ... WHERE ...INSERT INTO ... VALUES(...)目标端删除的行,回滚时重新插入
INSERT INTO ... VALUES(...)DELETE FROM ... WHERE ...目标端插入的行,回滚时删除
TRUNCATE TABLE ...特殊处理仅在目标端整表为空时生成(详见 2.3)

DELETE → INSERT 的转换过程:

修复 SQL 中的 DELETE 语句包含 WHERE 条件,其中的列-值对就是被删除行的数据。回滚生成器解析 WHERE 子句,提取所有列名和对应的值,重新组装为 INSERT INTO 语句:

-- 修复 SQL(DELETE)
DELETE FROM `db1`.`orders` WHERE `id` = 1001 AND `order_no` = 'ORD-20260101';

-- 回滚 SQL(INSERT)
INSERT INTO `db1`.`orders`(`id`,`order_no`) VALUES(1001,'ORD-20260101');

对于有 LIMIT 子句的 DELETE(无主键表场景),回滚生成器会先剥离 LIMIT,再提取 WHERE 条件中的列值对。

INSERT → DELETE 的转换过程:

修复 SQL 中的 INSERT 语句包含列名和值的完整映射。回滚生成器解析列名和值列表,仅使用主键列(或唯一键列)构建 DELETE 的 WHERE 条件:

-- 修复 SQL(INSERT)
INSERT INTO `db1`.`orders`(`id`,`order_no`,`amount`) VALUES(1001,'ORD-20260101',99.50);

-- 回滚 SQL(DELETE,仅使用 PK 列 id)
DELETE FROM `db1`.`orders` WHERE `id` = 1001;

NULL 值的特殊处理:

在 WHERE 条件中,NULL 值不能用 = NULL 表达,回滚生成器会自动转换为 IS NULL:

-- 修复 SQL
DELETE FROM `db1`.`users` WHERE `id` = 500 AND `email` IS NULL;

-- 回滚 SQL
INSERT INTO `db1`.`users`(`id`,`email`) VALUES(500,NULL);

2.3 TRUNCATE 回滚:整表为空时的特殊处理

当目标端表在校验开始前整表为空(行数为 0)时,修复 SQL 会是大量 INSERT 语句。如果逐行生成回滚 DELETE,文件会非常大。此时 gt-checksum 采用一种更高效的策略:生成单条 TRUNCATE TABLE 回滚语句,忽略 maxRollRowNum 参数限
制。

关键安全约束:只有校验开始前已确认目标端整表为空(精确 COUNT(*) 为 0)时,才会生成 TRUNCATE 回滚。程序不会因为某个 chunk 的目标端为空就推断整张表为空——否则目标端非空但恰好某个 chunk 无数据时,会误生成整表 TRUNCATE
回滚,这将导致回滚时丢失目标端原有的有效数据。

同时,当 TRUNCATE 回滚已生成后,后续的逐行 INSERT 修复对应的回滚 DELETE 会被抑制,避免回滚时先 TRUNCATE 再逐行 DELETE 的重复操作。

⚠️ 重要提醒:TRUNCATE 属于 DDL 操作,执行时会隐式提交当前事务。使用 TRUNCATE 回滚 SQL 前需人工评估其影响。

2.4 回滚 SQL 文件的生成与管理

文件存储结构

回滚 SQL 文件统一存储在 rollFileDir 目录(默认 rollsql)下,文件命名规则为:

rollsql/table.{schema}.{table}.rollback-{TYPE}-{seq}.sql

其中 {TYPE} 为 INSERT、DELETE 或 TRUNCATE,{seq} 为文件序号。例如:

rollsql/table.db1.orders.rollback-INSERT-1.sql
rollsql/table.db1.orders.rollback-DELETE-1.sql
rollsql/table.db1.users.rollback-TRUNCATE-1.sql

文件内容格式

每个回滚 SQL 文件包含完整的事务边界和会话设置:

SET FOREIGN_KEY_CHECKS=0;
SET UNIQUE_CHECKS=0;
BEGIN;
DELETE FROM `db1`.`orders` WHERE `id` = 1001;
DELETE FROM `db1`.`orders` WHERE `id` = 1002;
COMMIT;
BEGIN;
DELETE FROM `db1`.`orders` WHERE `id` = 1003;
COMMIT;

自动滚动切分

当单个回滚 SQL 文件的语句数量或文件大小超过阈值(由 fixTrxNum 和 fixTrxSize 参数控制)时,会自动创建新的文件。这确保了单个文件不会过大,便于人工审计和分批执行。

与 datafix=table 的配合关系

当 datafix=table(在线修复模式)时,修复 SQL 会直接在目标端执行。但回滚 SQL 始终只写文件,不在线执行——这是刻意的安全设计。回滚 SQL 写入 rollFileDir 目录后,需要人工审计确认无误,再通过 repairDB ./rollsql 执行回滚。

2.5 无主键表的 DELETE 合并优化

对于没有主键和唯一键的表,修复 SQL 中可能出现多条 DELETE ... WHERE ... LIMIT 1 语句,其 WHERE 条件完全相同(因为同一组值可能在目标端出现多次)。gt-checksum 的回滚写入器内置了 mergeDuplicateDeleteLimits 优化:

-- 优化前:3 条相同 WHERE 的 DELETE
DELETE FROM `db1`.`log_data` WHERE `ts` = '2026-01-01' AND `msg` = 'test' LIMIT 1;
DELETE FROM `db1`.`log_data` WHERE `ts` = '2026-01-01' AND `msg` = 'test' LIMIT 1;
DELETE FROM `db1`.`log_data` WHERE `ts` = '2026-01-01' AND `msg` = 'test' LIMIT 1;

-- 优化后:合并为 1 条,LIMIT 累加
DELETE FROM `db1`.`log_data` WHERE `ts` = '2026-01-01' AND `msg` = 'test' LIMIT 3;

这个优化仅在表无主键/唯一键时生效,因为有主键表的每条 DELETE 的 WHERE 条件天然不同。

2.6 与断点续传的配合

当 resume=ON 且任务中断后续传时,回滚 SQL 的处理同样遵循安全原则:

  • 续传开始时,已有的回滚 SQL 文件会经过完整性截断:定位到最后一个完整的 COMMIT 边界,截断后续不完整的内容
  • 如果续传时某个表需要重新校验,对应的旧回滚 SQL 文件会被清理后重新生成
  • 回滚文件的序号会从上次中断的位置继续,不会覆盖已完整写入的文件

2.7 回滚 SQL 的执行方式

生成回滚 SQL 后,需要人工审计确认无误,然后通过 repairDB 工具执行:

# 审计回滚 SQL 文件
ls -la rollsql/

# 使用 repairDB 执行回滚
repairDB ./rollsql

repairDB 会自动识别目录中的 SQL 文件并按顺序执行,支持断点续传——如果回滚执行过程中断,再次运行会跳过已成功的文件。


三、功能使用演示

3.1 基本配置

在配置文件 gc.conf 中设置相关参数:

# 开启回滚 SQL 生成
genRollSQL=ON
rollFileDir=rollsql
maxRollRowNum=10000

# 其他必要参数
checkObject=data
datafix=file
tables=db1.*
srcDSN=user:ENC[...]@tcp(10.0.0.1:3306)/db1
dstDSN=user:ENC[...]@tcp(10.0.0.2:3306)/db1
chunkSize=10000

3.2 运行效果

$ gt-checksum -c gc.conf

Initializing gt-checksum
Reading configuration files
...
[CHECK] db1.orders: checksum mismatch in chunk 0-10000
[FIX]   db1.orders: DELETE 3 rows, INSERT 5 rows
[ROLL]  db1.orders: Writing rollback SQL (DELETE=5, INSERT=3)
[CHECK] db1.users: checksum mismatch in chunk 0-10000
[FIX]   db1.users: DELETE 1 row, INSERT 0 rows
[ROLL]  db1.users: Writing rollback SQL (DELETE=0, INSERT=1)
...

校验完成后,查看回滚 SQL 目录:

$ ls -la rollsql/
total 24
drwxr-xr-x 2 user user 4096 Jun 15 10:30 .
drwxr-xr-x 6 user user 4096 Jun 15 10:30 ..
-rw-r--r-- 1 user user 1256 Jun 15 10:30 table.db1.orders.rollback-DELETE-1.sql
-rw-r--r-- 1 user user  856 Jun 15 10:30 table.db1.orders.rollback-INSERT-1.sql
-rw-r--r-- 1 user user  312 Jun 15 10:30 table.db1.users.rollback-INSERT-1.sql

查看回滚 SQL 内容:

$ cat rollsql/table.db1.orders.rollback-INSERT-1.sql
SET FOREIGN_KEY_CHECKS=0;
SET UNIQUE_CHECKS=0;
BEGIN;
INSERT INTO `db1`.`orders`(`id`,`order_no`,`amount`) VALUES(1001,'ORD-20260101',99.50);
INSERT INTO `db1`.`orders`(`id`,`order_no`,`amount`) VALUES(1002,'ORD-20260102',150.00);
COMMIT;

3.3 仅对指定表生成回滚 SQL

如果只需要对特定表生成回滚 SQL,可以使用自定义表名模式:

genRollSQL="db1.orders, db1.user%"

这将仅为 db1.orders 和 db1.user 开头的表生成回滚 SQL,其他表不生成。支持 % 通配符(匹配任意字符序列)。

3.4 执行回滚

确认需要回退时,使用 repairDB 执行回滚 SQL:

$ repairDB ./rollsql

[REPAIR] Processing: table.db1.orders.rollback-INSERT-1.sql ... OK
[REPAIR] Processing: table.db1.orders.rollback-DELETE-1.sql ... OK
[REPAIR] Processing: table.db1.users.rollback-INSERT-1.sql ... OK
Rollback completed: 3 files executed successfully

3.5 目标端整表为空场景的 TRUNCATE 回滚

当目标端表在校验开始前为空时(例如从零开始的数据迁移验收),回滚 SQL 会生成单条 TRUNCATE TABLE:

$ cat rollsql/table.db1.orders.rollback-TRUNCATE-1.sql
SET FOREIGN_KEY_CHECKS=0;
SET UNIQUE_CHECKS=0;
BEGIN;
TRUNCATE TABLE `db1`.`orders`;
COMMIT;

此时不会为该表生成逐行 DELETE 的回滚文件,因为 TRUNCATE 已经足以清空整张表。


四、最佳实践及使用约束

4.1 最佳实践

1. 生产环境建议开启回滚 SQL

对于数据修复任务,无论使用 datafix=file(导出修复 SQL 文件)还是 datafix=table(在线修复),都建议开启 genRollSQL=ON。回滚 SQL 的生成开销很小,但在紧急回退场景下价值巨大:

genRollSQL=ON
rollFileDir=rollsql

2. 大表场景适当调整 maxRollRowNum

maxRollRowNum 用于控制单表待修复行数的回滚阈值。默认值 10000 适用于大多数场景。如果表很大但仍然需要回滚保障,可以调高该值:

# 允许单表最多 50000 行差异时也生成回滚 SQL
maxRollRowNum=50000

注意:maxRollRowNum 对 TRUNCATE 回滚不生效——目标端整表为空时始终生成 TRUNCATE 回滚。

3. 仅对关键表生成回滚 SQL

如果不需要对所有表生成回滚 SQL(例如只关心核心业务表),使用自定义表名模式减少文件量:

genRollSQL="db.orders, db.user%, db.account%"

4. 回滚 SQL 执行前务必人工审计

回滚 SQL 始终只写文件、不在线执行。执行前请:

# 1. 查看生成了哪些回滚文件
ls -la rollsql/

# 2. 检查关键表的回滚内容
cat rollsql/table.db.orders.rollback-*.sql

# 3. 确认无误后使用 repairDB 执行
repairDB ./rollsql

5. 回滚后重新校验

执行回滚后,建议重新运行一次校验,确认数据已恢复到修复前的状态:

# 先清空旧的回滚目录(因为这次不需要回滚了)
rm -rf rollsql/
# 重新校验
gt-checksum -c gc.conf

6. 结合 resume 使用时注意回滚文件累积

断点续传模式下,续传时旧的回滚文件会被安全截断或清理后重新生成。但如果多次中断-续传,可能会产生较多的回滚文件。建议在任务正常完成后整理回滚目录,保留最终版本即可。

4.2 使用约束

1. 仅适用于数据校验模式

回滚 SQL 生成仅在 checkObject=data 模式下生效。struct(结构校验)、trigger(触发器校验)、routine(存储过程/函数校验)不支持回滚 SQL 生成。

2. 必须配合 datafix=file 或 datafix=table

只有当 datafix 设置为 file 或 table 时,回滚 SQL 才会被生成。datafix=none(仅校验不修复)模式下不会生成回滚 SQL,因为没有修复操作也就不需要回退。

3. rollFileDir 目录非空时的行为

  • resume=OFF 模式:如果 rollFileDir 目录已存在且非空,程序会报错退出,避免覆盖旧的回滚文件
  • resume=ON/ASK 模式:允许目录非空,续传逻辑会处理已有文件(截断或清理)

4. 无主键表的回滚 INSERT 精度限制

对于没有主键和唯一键的表,回滚 INSERT 仅能基于修复 DELETE 的 WHERE 条件中可用的列值对,可能无法完全还原原始行的所有列值(如果 DELETE 语句的 WHERE 条件不包含所有列)。

5. TRUNCATE 回滚的 DDL 隐式提交风险

TRUNCATE TABLE 是 DDL 操作,执行时会隐式提交当前事务并释放表锁。在使用 TRUNCATE 回滚 SQL 时,需确认该行为不会对业务产生意外影响。建议在业务低峰期执行回滚操作。

6. 配置一致性

回滚 SQL 的目标端表名基于校验时的表映射规则。如果校验和回滚之间修改了表映射配置(如 srcdb.*:dstdb.*),可能导致回滚 SQL 中的表名与实际表名不匹配。


五、总结

gt-checksum v4.0.0 的反向回滚 SQL 生成能力,从根本上解决了数据修复"单向执行、无法回退"的痛点。通过 genRollSQL 一键开启,每条修复 SQL 都会自动生成对应的反向操作,写入结构化的回滚文件中。

针对不同场景,回滚机制做了精细化设计:

  • 有主键表:DELETE → INSERT(全列还原),INSERT → DELETE(PK 定位删除)
  • 无主键表:自动合并重复 DELETE LIMIT,回滚 INSERT 基于 WHERE 条件还原
  • 整表为空:生成 TRUNCATE TABLE 回滚,高效且不遗漏

回滚 SQL 始终只写文件、不在线执行,配合 repairDB ./rollsql 即可快速回退。整个过程可审计、可控制,满足生产环境的安全合规要求。

一句话总结:genRollSQL=ON,让每一次修复都有后悔药。


相关阅读

【信息科学与工程学】【通信工程】计算机科学与自动化——第二百三十三篇 云NaaS服务 系列二01 国家骨干网(含核心网、IP骨干网、OTN骨干网)/城域网【含3G/4G/5G接入网/PON接入网/OTN接入网+OTN/IP城域网+其他】/中心云(多/双/单Region+多AZ/双AZ/单AZ)+边缘DC+边缘计算节点+端计算节点包括IoT传感器、移动终端、CPE设备。通过5G NR(n78频段,带宽100MHz,子载波间隔30kHz)或GPON(下行2.5Gbps,上行1.25Gbps)接入。本地缓存小于10GB,主要用于临时数据暂存。位于地市级机房,部署MEC服务器(Intel Xeon Platin 阅读详情

相关推荐

【信息科学与工程学】【数据中心】第三十二篇 云数据中心的计算/存储/网络的核心挑战01

状态方程: SOCk+1​=SOCk​−Qn​ik​Δt​;: 三相电流变换到αβ坐标系: iα​=32​​(ia​−21​ib​−21​ic​), iβ​=32​​(23​​ib​−23​​ic​). 计算瞬时有功功率p和无功功率q,经低通滤波器分离直流分量,反变换得基波电流,差值即为谐波指令。: 节点i的信念 bi​(xi​)=ϕi​(xi​)∏j∈N(i)​mji​(xi​), 消息 mij​(xj​)=∑xi​​ϕi​(xi​)ψij​(xi​,xj​)∏k∈N(i)\j​mki​(xi​).

weixin_49199313的博客 218

gt-checksum v4.0.0 新功能解读系列文章(6):权限预检与修复安全策略——先确认能看见,再决定怎么修

更符合最小权限原则、更容易排查权限问题、更安全地处理在线修复。能力说明源端/目标端角色区分源端只检查读取权限,目标端根据和datafix检查实际修复所需权限通配/映射规则压缩检查支持db.*db.t%按源端/目标端角色压缩权限检查目标空匹配权限提示指定库表不可见或匹配为空时,提示检查权限,并给出建议目标端不可见保护目标端表元数据不可见时,先提示权限不足,不再直接当作缺表生成建表修复 SQL非 data 对象保守修复structroutinetrigger即使配置。

GreatSQL2021的博客 357

【信息科学与工程学】计算机科学与自动化——第三百零五篇 数据中心 Scale-Up、Scale-Out、Scale-Across 20

GPU 训练中的各种算子融合技巧、梯度压缩与稀疏通信的高级变体、混合专家模型的负载均衡与通信优化、长序列模型的注意力机制优化、模型量化与蒸馏的联合优化、分布式训练中的容错与恢复、以及一些新兴硬件特性的建模(如 HBM3、GDDR7、CXL 3.0 内存语义、PCIe Gen6 PAM4 信令等)。每条仍然包含四个方程式子节。

weixin_49199313的博客 345

gt-checksum v4.0.0 新功能解读系列文章(4):SSL 加密连接——数据校验传输安全再升级

v4.0.0 为 gt-checksum 和 repairDB 同时新增了 SSL/TLS 加密连接支持。通过 8 个新增配置参数,源端和目标端可以独立配置各自的 SSL 证书和加密模式。gt-checksum v4.0.0 的 SSL 加密连接支持,让数据校验和修复过程中的传输安全不再是空白。通过五种 SSL 模式覆盖从"仅加密"到"全面验证"的全部安全需求,源端和目标端独立配置的设计则适应了异构环境下的真实生产场景。最低要求REQUIRED模式,保证传输加密推荐配置VERIFY_CA。

oe20HjLBy的博客 242

【信息科学与工程学】【产品体系】【数据中心】第四十四篇 云资源部署设计05

字段值编号127类型设计模块计算子模块超节点内GPU间AllReduce通信优化(Ring AllReduce + NVLink拓扑感知)领域性能子领域集合通信类型算法设计区域 Region/AZ单Region单AZ云计算和云操作系统平台腾讯云TStack问题设计超节点内GPU间的AllReduce算法,利用NVLink全互联拓扑和分层归约,最小化通信时间。需考虑不同数据量下的最优算法选择(Ring vs Tree vs Halving-Doubling),以及NVLink带宽不对称性(如GB200 NVL

weixin_49199313的博客 19

瑞芯微RK3506开发板Ethercat主站性能优化实战:从内核配置到微秒级延迟控制

本文详细介绍了在瑞芯微RK3506开发板上实现EtherCAT主站微秒级延迟控制的实战优化方案。核心在于部署Preempt-RT实时内核,并进行深度系统调优,包括CPU隔离、中断亲和性设置、内存锁定及电源管理调整。通过绕过Linux网络栈的专用驱动加载与配置,最终实现了稳定的高性能实时控制,满足工业自动化需求。

tcp8optimizer的博客 315

RedHat9下GT4全安装

RH9下GT4全安装一 安装jdk-1_5_0_04-linux-i586-rpm.bin   以下操作以root帐号执行  1 首先确保有执行该文件的权限    chmod 755 jdk-1_5_0_04-linux-i586-rpm.bin  2 ./jdk-1_5_0_04-linux-i586-rpm.bin   会出现协议书类的一直回车直到显示   Do you agree to th

zgbsoap的专栏 2327

OpenWRT端口转发与NAT环回冲突的排查与解决

本文详细解析了OpenWRT路由器中端口转发与NAT环回功能冲突导致的内网访问故障。通过生活化类比阐明两者工作原理,提供从基础诊断到内核参数调整、LuCI选项配置及手动编写iptables规则的多套解决方案,并给出进阶排查思路,帮助用户彻底解决内网无法通过公网地址访问服务的常见问题。

weixin_29243279的博客 507

gt-checksum v4.0.0 新功能解读系列文章(3):反向回滚 SQL

genRollSQL是 gt-checksum v4.0.0 新增的核心参数,配合和一起使用,用于在生成修复 SQL 的同时自动生成反向回滚 SQL。

KWc5O72i9的博客 236

nvprof:CUDA编程性能分析工具

NVIDIA提供了具有高性能计算的GPU产品,如何检验硬件的实际性能,写出高效的CUDA代码让算力加速卡物尽其用,那可以通过其配套提供的“护城河”软件工具链来检验和帮助发挥GPU的性能:nvprof。如下,对于将8192个A,B向量进行向量加法运算,即C[i] = A[i] + B[i],当软件设置不同的blocknum, threadnum时候,CUDA执行kernel的时间是不同的。比如如下命令,可以看到程序tmp1的总体性能,下面一行是打印gpu的执行时间情况。

Briwisdom的博客 3384

VSCode+ESP-IDF开发环境搭建:从零开始创建你的第一个物联网项目(2024最新版)

本文详细介绍了如何在2024年使用VSCode和ESP-IDF搭建物联网开发环境,从零开始创建第一个物联网项目。内容包括环境准备、ESP-IDF配置、项目创建与结构解析、构建烧录步骤以及高级技巧和常见问题解决方案,帮助开发者快速上手ESP32开发。

weixin_29165725的博客 331

gt-checksum v4.0.0 发布|续跑回滚双加持,异构迁移与安全能力跃升

gt-checksum v4.0.0 重磅发布,新增断点续传、反向回滚 SQL、自定义类型映射三大核心能力,生产级数据校验与修复能力全面升级。

GreatSQL2021的博客 439

使用ONNX Runtime在Java Web应用中部署深度学习模型

当应用场景需要集成深度学习模型进行推理时,直接在Java Web应用中集成深度学习框架可能会面临性能、兼容性等问题。为了将深度学习模型无缝集成到Java Web应用中,是一项广受认可且实用的方法。本篇文档将介绍如何将模型转换为ONNX格式,并通过ONNX Runtime Server进行部署,并通过Java Web应用调用以进行回归或预测任务。本方案的主要目标是实现以下功能:将PyTorch模型转换为ONNX格式。部署ONNX Runtime Server,加载ONNX模型并提供推理服务。

shysea2019的博客 8857

MySQL 索引深入理解:B+ 树、二级索引、联合索引与查询优化

理解二级索引后,就可以理解回表了。SELECT *MySQL 的执行过程分为三个步骤。覆盖索引(Covering Index)并不是一种独立的索引类型,而是一种查询效果。SQL 查询需要的所有字段,都能够直接从某个索引中获得,不需要再访问聚簇索引获取其他字段。例如:因为user_id已经包含在二级索引中,所以 MySQL 可以直接返回结果。不需要回表。联合索引(Composite Index)是同时使用多个字段建立的索引。它的排序规则是:首先按照user_id排序。当user_id。

m0_64642997的博客 135

AgentScope Java 2.0 项目实战:从零构建企业级自主Coding Agent

本文基于 AgentScope Java 框架,完整拆解两个生产级 AI Agent 项目的从零开发全过程。其一是企业级自主编码机器人(agentscope-codingagent),支持 Issue→PR 自动实现、PR Code Review、Docker 沙箱隔离执行与多通道接入;其二是个人 AI 助手管理平台(agentscope-paw),采用 Spring Boot + React 全栈架构,支持多 Agent、技能市场与多 IM 通道。

program哲学 839

信号与电源完整性5:轨道塌陷噪声/电源轨道噪声分析及降低解决方案

经过上一节关于串扰的分析,我们已经清楚,噪声问题不仅仅来源于信号网络;电源和地网络所产生的噪声,被反馈到其所在的元器件和信号网络时,其破坏力也是巨大的;本节所讨论的轨道塌陷噪声就是一个典型的实例。在经过电源的地网络的电流发生改变时,在电源和地之间的阻抗上将产生一个压降;由于该压降的产生,用电元件的电压将直接被拉低,甚至可能对电路产生功能性的错误。接下来硬小二将详细的分析电源轨道噪声和降低其的解决方法。...

fydar的博客 2241

MySQL 单点详解(14)

给定一条 SQL,联合索引的列该怎么排呢?

2401_88601046的博客 345

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

MySQL 的 REPEATABLE READ 到底能不能防幻读——从快照读、当前读到 Next-Key Lock

本文系统讲解 InnoDB 可重复读级别下的幻读问题:从三类读异常切入,剖析快照读依赖 MVCC、当前读依赖 Next-Key Lock 的双防线机制,用双会话实验复现幻读仍会出现的边界场景,并解释各数据库在幻读防护上行为分歧的根源。

大模型全栈工程师 · Thanks_ks 297

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Flink SQL 连接器实战:MySQL Source、Flink CDC 与 JDBC Sink 全解析

提供有界流读取,适合批处理和维表场景,简单直接但无法感知变更。MySQL CDC提供无界流读取,通过「全量快照 + binlog 增量」的方式实现实时捕获,是实时数仓的核心入口,但需要 MySQL 侧正确配置 binlog 和权限。JDBC Sink负责结果回写,关键在于区分仅插入流和更新流,更新流必须依赖主键完成 upsert。掌握这三者的差异,本质上就是掌握了 Flink 中「有界与无界」「追加与更新」这两组最基本的语义。

2401_83857914的博客 455

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: gt-checksum v4.0.0 新功能解读系列文章(2):自定义数据类型映射——异构迁移不再手工对齐
下一篇: gt-checksum v4.0.0 新功能解读系列文章(4):SSL 加密连接——数据校验传输安全再升级
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值