MySQL 与 Elasticsearch 数据一致性方案
MySQL 与 Elasticsearch 数据一致性方案
- 前言
- 一、同步双写(Synchronous Dual Write)🔄
- 二、异步双写(Asynchronous Dual Write)📤
- 三、定时同步(Scheduled Synchronization)🕒
- 四、基于 Binlog 的实时同步(Real-time Synchronization via Binlog)🔄
- 五、选型建议 🧠
- 六、快速对比表 📊
- 七、总结 📝
前言
在实际系统设计中,为了充分发挥 MySQL 与 Elasticsearch(ES)的优势,常常需要将两者结合使用。MySQL 负责事务处理和数据一致性,而 ES 提供高效的全文检索和分析能力。然而,如何在两者之间实现数据的一致性,是系统架构设计中的关键问题。
一、同步双写(Synchronous Dual Write)🔄
-
🔧 原理
在业务操作中,数据同时写入 MySQL 和 Elasticsearch(ES),确保两者数据实时一致。
-
✅ 优点
-
实时性高:数据变更立即同步至 ES,适用于对实时性要求高的场景。
-
实现简单:无需引入额外中间件,直接在业务代码中实现同步逻辑。
-
一致性强:在操作成功的情况下,MySQL 与 ES 保持强一致性。
-
-
❌ 缺点
-
代码耦合度高:业务逻辑与数据同步逻辑混合,增加维护难度。
-
失败处理复杂:若 ES 写入失败,需处理事务回滚,增加系统复杂度。
-
性能影响:每次写操作需等待 ES 写入完成,可能影响系统吞吐量。
-
-
🛠️ 优化建议
-
引入事务管理:使用分布式事务或补偿机制,确保 MySQL 与 ES 的写操作在同一事务中执行。
-
实现幂等性操作:确保重复写入不会导致数据异常,避免数据重复或丢失。
-
增加失败重试机制:对 ES 写入失败的操作进行重试,确保数据最终能够写入 ES。
-
建立监控和报警机制:实时监控数据同步状态,及时发现并处理异常情况。
-
使用中间件解耦:引入消息队列(如 Kafka)或数据变更捕获工具(如 Debezium)等中间件,解耦业务逻辑与数据同步逻辑,提高系统的可扩展性和可维护性。
-
-
🎯 适用场景
-
数据一致性要求高的场景:如金融系统、订单系统等,对数据一致性和实时性要求严格的业务场景。
-
系统规模较小的场景:系统复杂度较低,便于实现和维护同步双写逻辑。
-
二、异步双写(Asynchronous Dual Write)📤
-
🔧 原理
在业务操作中,数据首先写入主数据库(如 MySQL),随后将操作信息发送到消息队列(如 Kafka、RabbitMQ)。独立的消费者服务从消息队列中消费消息,并将数据异步写入 Elasticsearch(ES),实现数据的最终一致性。
-
✅ 优点
-
降低主库写入延迟:主业务流程无需等待 ES 写入完成,提高系统响应速度。
-
系统解耦:通过消息队列实现业务逻辑与数据同步逻辑的解耦,提升系统的可维护性和扩展性。
-
提高系统可用性:即使 ES 出现故障,主库的正常运行和数据写入不受影响。
-
支持多数据源写入:便于扩展更多的数据源写入,满足多样化的数据同步需求。
- ❌ 缺点
-
系统复杂度增加:引入消息中间件,增加了系统的部署和维护成本。
-
数据同步延迟:由于异步处理,可能存在数据同步的延迟,影响数据的实时性。
-
数据一致性风险:在消息处理失败或消费者服务异常的情况下,可能导致数据不一致。
- 🛠️ 优化建议
-
使用高可靠性的消息队列:选择如 Kafka、RabbitMQ 等具备持久化和高可用性的消息队列,确保消息的可靠传输。
-
实现幂等性操作:在消费者服务中实现幂等性处理,确保重复消费不会导致数据异常。
-
建立重试机制和死信队列:对处理失败的消息进行重试,超过重试次数的消息转入死信队列,便于后续排查和处理 。
-
监控和报警机制:实时监控消息队列和消费者服务的运行状态,及时发现并处理异常情况。
-
数据补偿机制:对于处理失败或丢失的消息,建立数据补偿机制,确保数据的最终一致性。
- 🎯 适用场景
-
对系统性能要求高、数据一致性要求相对较低的场景:如电商平台的商品浏览记录、用户行为日志等数据的同步。
-
需要支持多数据源写入的场景:如将数据同步到多个搜索引擎或分析平台。
-
对数据实时性要求不高的场景:如定期生成报表、数据分析等。
三、定时同步(Scheduled Synchronization)🕒
-
🔧 原理
定时同步是通过预设的时间间隔(如每小时、每天)从主数据库(如 MySQL)中提取数据,批量写入 Elasticsearch(ES)。常用工具包括 Logstash 的 JDBC 插件、定时任务(如 cron)、ETL 工具(如 Apache NiFi)等。
-
✅ 优点
-
实现简单,业务代码无侵入:无需修改现有业务逻辑,易于部署和维护。
-
适用于对实时性要求不高的场景:如报表生成、数据分析等。
-
支持批量处理:利用 Elasticsearch 的 Bulk API 进行批量写入,提高数据同步效率 。
-
-
❌ 缺点
-
实时性较差:存在数据同步延迟,无法满足对实时性要求高的场景。
-
对数据库有一定的轮询压力:频繁的查询操作可能增加数据库负载。
-
处理删除操作复杂:需要额外的机制来识别和同步删除的数据 。
-
-
🛠️ 优化建议
-
使用增量同步:通过记录数据的更新时间戳,仅同步自上次同步以来发生变化的数据,减少数据同步量 。
-
在业务低峰期执行同步任务:降低对系统的影响,确保主业务的稳定运行。
-
利用 Logstash 的 JDBC 插件:配置定时任务,自动从 MySQL 中提取数据并写入 ES,支持数据的解析、转换和过滤 。
-
建立监控和报警机制:实时监控数据同步状态,及时发现并处理异常情况。
-
-
🎯 适用场景
-
对实时性要求不高的场景:如报表生成、数据分析、数据归档等。
-
数据变更频率较低的场景:如每日或每周更新的数据。
-
系统资源有限的场景:无法支持实时同步所需的系统资源。
-
四、基于 Binlog 的实时同步(Real-time Synchronization via Binlog)🔄
-
🔧 原理
通过订阅 MySQL 的 Binlog(Binary Log)日志,实现数据的实时同步。Binlog 记录了数据库的所有更改操作(如 INSERT、UPDATE、DELETE),可以被外部工具解析并同步到其他系统,如 Elasticsearch(ES)或 Kafka。常用的 Binlog 解析工具包括 Canal、Maxwell 和 Debezium。
-
✅ 优点
-
实时同步,延迟低:能够实现近实时的数据同步,适用于对实时性要求高的场景。
-
业务代码无侵入,解耦性好:无需修改现有业务逻辑,解耦性强,便于维护。
-
支持增量同步:仅同步数据的变更,减少数据传输量,提高效率。
-
支持多种数据目标系统:可以将数据同步到多种目标系统,如 ES、Kafka、HDFS 等。
-
-
❌ 缺点
-
系统复杂度高:需要部署和维护 Binlog 解析工具,增加系统复杂度。
-
对系统的稳定性和一致性要求高:需要确保 Binlog 解析工具的稳定运行,避免数据丢失或重复。
-
性能开销:启用 Binlog 会增加数据库的 I/O 开销,可能影响性能。
-
-
🛠️ 优化建议
-
选择合适的 Binlog 解析工具:根据业务需求选择合适的工具,如 Canal、Maxwell 或 Debezium。
-
配置合适的 Binlog 格式:根据需要选择 Statement、Row 或 Mixed 格式,以平衡性能和数据一致性。
-
部署高可用的 Binlog 解析架构:确保 Binlog 解析工具的高可用性,避免单点故障。
-
监控和报警机制:建立完善的监控和报警机制,及时发现并处理异常情况。
-
性能优化:优化 Binlog 解析工具的配置,减少对数据库性能的影响。
-
-
🎯 适用场景
-
对数据实时性要求高,且系统规模较大的场景:如实时搜索、实时推荐等业务场景。
-
需要实现数据的增量同步和高可用性:如数据仓库建设、日志分析等。
-
需要将数据同步到多种目标系统的场景:如多系统数据整合、数据备份等。
-
五、选型建议 🧠
-
小型系统,强一致性要求
-
推荐方案:同步双写(Synchronous Dual Write)
-
适用场景:金融系统、订单系统、库存管理等对数据一致性要求极高的业务场景。
-
优点:实现简单,实时性高,确保数据在 MySQL 和 Elasticsearch 中的一致性。
-
注意事项:业务代码耦合度高,维护复杂;写入 Elasticsearch 失败时需处理事务回滚,增加系统复杂度;对系统性能有一定影响。
-
-
中大型系统,性能优先
-
推荐方案:异步双写(Asynchronous Dual Write)
-
适用场景:电商平台、社交媒体、内容管理系统等对系统性能要求较高,但对数据一致性要求相对较低的场景。
-
优点:降低主数据库写入延迟,提高系统性能;即使 Elasticsearch 出现问题,也不会影响主库的正常运行和数据写入;多源写入之间相互隔离,便于扩展更多的数据源写入。
-
注意事项:系统复杂度增加,需要引入消息中间件;实时性较低,可能出现数据同步延迟;存在数据一致性风险,需确保最终一致性。
-
-
报表分析、非实时数据处理
-
推荐方案:定时同步(Scheduled Synchronization)
-
适用场景:数据仓库建设、日志分析、用户活跃度分析等对实时性要求不高的场景。
-
优点:实现简单,业务代码无侵入;适用于对实时性要求不高的场景;支持批量处理,提高数据同步效率。
-
注意事项:实时性较差,存在数据同步延迟;对数据库有一定的轮询压力;处理删除操作复杂,需要额外的机制来识别和同步删除的数据。
-
-
大型系统,实时搜索和推荐等场景
-
推荐方案:基于 Binlog 的实时同步(Real-time Synchronization via Binlog)
-
适用场景:实时搜索、实时推荐、数据仓库建设等对数据实时性要求高,且系统规模较大的场景。
-
优点:实现实时同步,延迟低;业务代码无侵入,解耦性好;支持增量同步,减少数据传输量,提高效率;支持多种数据目标系统的同步。
-
注意事项:系统复杂度高,需要部署和维护 Binlog 解析工具;对系统的稳定性和一致性要求高;性能开销,启用 Binlog 会增加数据库的 I/O 开销,可能影响性能。
-
六、快速对比表 📊
场景类型 | 推荐方案 | 实时性要求 | 一致性要求 | 系统规模 | 复杂度 | 优势 |
---|---|---|---|---|---|---|
小型系统,强一致性要求 | 同步双写(Synchronous Dual Write) | 高 | 高 | 小 | 高 | 实现简单,实时性高,确保数据一致性 |
中大型系统,性能优先 | 异步双写(Asynchronous Dual Write) | 中 | 中 | 中 | 中 | 提升系统性能,解耦性好,适应高并发场景 |
报表分析、非实时数据处理 | 定时同步(Scheduled Synchronization) | 低 | 中 | 中 | 低 | 实现简单,适用于批量数据处理,成本较低 |
大型系统,实时搜索和推荐等场景 | 基于 Binlog 的实时同步(Real-time Synchronization via Binlog) | 高 | 高 | 大 | 高 | 实现实时同步,支持增量同步,适应大规模数据处理 |
七、总结 📝
-
同步双写: 适用于对数据一致性要求极高的小型系统,但需要权衡系统性能和维护复杂度。
-
异步双写 :适用于中大型系统,能够提升系统性能,但需要确保最终一致性。
-
定时同步: 适用于对实时性要求不高的场景,成本较低,易于实现。
-
基于 Binlog 的实时同步: 适用于大型系统,能够实现实时数据同步,适应大规模数据处理。
相关文章:
MySQL 与 Elasticsearch 数据一致性方案
MySQL 与 Elasticsearch 数据一致性方案 前言一、同步双写(Synchronous Dual Write)🔄二、异步双写(Asynchronous Dual Write)📤三、定时同步(Scheduled Synchronization)ǵ…...
rust-candle学习笔记11-实现一个简单的自注意力
参考:about-pytorch 定义ScaledDotProductAttention结构体: use candle_core::{Result, Device, Tensor}; use candle_nn::{Linear, Module, linear_no_bias, VarMap, VarBuilder, ops};struct ScaledDotProductAttention {wq: Linear,wk: Linear,wv: …...
RabbitMQ-运维
文章目录 前言运维-集群介绍多机多节点单机多节点 多机多节点下载配置hosts⽂件配置Erlang Cookie启动节点构建集群查看集群状态 单机多节点安装启动两个节点再启动两个节点验证RabbitMQ启动成功搭建集群把rabbit2, rabbit3添加到集群 宕机演示仲裁队列介绍raft算法协议 raft基…...
101 alpha——8 学习
alpha (-1 * rank(((sum(open, 5) * sum(returns, 5)) - delay((sum(open, 5) * sum(returns, 5)),这里我们操作符都明白,现在来看金融意义 金融意义 里层是这个 (sum(open, 5) * sum(returns, 5)) - delay((sum(open, 5) * sum(returns, 5)), 10 这里是两个相减…...
YOLOv1模型架构、损失值、NMS极大值抑制
文章目录 前言一、YOLO系列v11、核心思想2、流程解析 二、损失函数1、位置误差2、置信度误差3、类别概率损失 三、NMS(非极大值抑制)总结YOLOv1的优缺点 前言 YOLOv1(You Only Look Once: Unified, Real-Time Object Detection)由…...
webpack代理天地图瓦片
1.安装 npm install http-proxy-middleware --save-dev2.webpack代理 const { createProxyMiddleware } require(http-proxy-middleware);module.exports {devServer: {port: 8080, // 改为你需要的端口https: false, // 如果你启用了 https,这里要对应before(a…...
RabbitMQ-高级特性1
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言消息确认机制介绍手动确认方法代码前言代码编写消息确认机制的演示自动确认automanual 持久化介绍交换机持久化队列持久化消息持久化 持久化代码持久化代码演示…...
Git_idea界面进行分支合并到主分支详细操作
最近闲着也是闲着,再来讲一下Git合并分支的操作吧。基本上咱们干开发的都会用到git吧,比如我们在大数据开发中,有一个主分支master,还有其他的诸多分支dev1.1.0,dev1.2.0......等。 以我近期开发的代码来讲,在开发分支开发完毕后&…...
MOS关断时波形下降沿振荡怎么解决
问题阐述: 一个直流电机控制电路,部分原理图如下: 波形如下: 原因分析: L:线路寄生电感(如PCB走线、MOS管引脚电感)。 C:MOS管输出电容(Coss)、…...
【Day 23】HarmonyOS开发实战:从AR应用到元宇宙交互
一、空间感知开发实战 1. 环境语义建模(NEXT增强) // 构建3D空间语义地图 spatialMapper.createMap({mode: SEMANTIC, // 语义分割模式objectTypes: [WALL, FLOOR, TABLE, DOOR ],onUpdate: (mesh) > {this.arScene.updateMesh(mesh) // 实时更新3D…...
ZYNQ笔记(十九):VDMA VGA 输出分辨率可调
版本:Vivado2020.2(Vitis) 任务:以 VDAM IP 为核心实现 VGA 彩条图像显示,同时支持输出分辨率可调。 (PS 端写入彩条数据到 DDR 通过 VDMA 读取出来输出给 VGA 进行显示) 目录 一、介绍 二、硬…...
江西同为科技有限公司受邀参展2025长江流域跨博会
江西同为科技有限公司是一家专注于电力保护设备研发与生产的高新技术企业,深耕于电气联接与保护领域,同时产品远销海外,在国内国际市场与客户保持长期稳定的合作。江西同为在跨境电子商务领域运营多年,有着深厚、丰富的行业经验&a…...
2025 SD省集总结
文章目录 DAY1时间安排题解T1. 花卉港湾T2. 礎石花冠T3.磷磷开花 DAY2时间安排题解T1. MEX 求和T2.最大异或和T3.前缀最值 DAY3时间安排题解T1.重建: 地下铁道T2.走过安眠地的花丛T3.昔在、今在、永在的题目 DAY4时间安排题解T1.崩坏世界的歌姬T2.色彩褪去之后T3.每个人的结局 …...
代码随想论图论part06冗余连接
图论part06 冗余连接 代码随想录 冗余边就是已经边已经在并查集里了,从图的角度来说构成了环(冗余连接2要用到这个概念) 代码其他部分为:并查集初始化,查根,判断是否在集合里,加入集合 冗余…...
SCADA|KIO程序导出变量错误处理办法
哈喽,你好啊,我是雷工! 最近在用KingSCADA3.52版本的软件做程序时,在导出变量进行批量操作时遇到问题,现将解决办法记录如下。 以下为解决过程。 01 问题描述 在导出KIO变量时,选择*.xls格式和*.xlsx时均会报错: 报如下错误: Unknown error 0x800A0E7A ADODB Connectio…...
AUTOSAR图解==>AUTOSAR_SWS_V2XBasicTransport
AUTOSAR V2X 基础传输协议 (V2XBasicTransport) 详解 AUTOSAR经典平台中V2X通信基础传输层的规范解析 目录 1. 引言与功能概述 1.1 架构概述1.2 功能概述 2. V2XBtp模块架构 2.1 AUTOSAR架构中的V2XBtp位置2.2 主要组件与职责 3. V2XBtp模块接口 3.1 接口结构3.2 数据类型和依…...
从代码学习深度学习 - 区域卷积神经网络(R-CNN)系列 PyTorch版
文章目录 前言R-CNNFast R-CNN兴趣区域汇聚层 (RoI Pooling)代码示例:兴趣区域汇聚层 (RoI Pooling) 的计算方法Faster R-CNNMask R-CNN双线性插值 (Bilinear Interpolation) 与兴趣区域对齐 (RoI Align)兴趣区域对齐层的输入输出全卷积网络 (FCN) 的作用掩码输出形状总结前言…...
RT-THREAD RTC组件中Alarm功能驱动完善
使用Rt-Thread的目的为了更快的搭载工程,使用Rt-Thread丰富的组件和第三方包资源,解耦硬件,在更换芯片时可以移植应用层代码。你是要RTT的目的什么呢? 文章项目背景 以STM32L475RCT6为例 RTC使用的为LSE外部低速32 .756k Hz 的…...
VSCode如何解决打开html页面中文乱码的问题
VSCode如何解决打开html页面中文乱码的问题 (1)打开扩展商店: (2)点击左侧菜单栏的扩展图标(或使用快捷键CtrlShiftX)。 (3)搜索并安装插件: …...
Java学习手册:单体架构到微服务演进
一、单体架构概述 单体架构是一种传统的软件架构风格,所有的功能模块都构建在一个统一的部署单元中。这种架构的优点是简单直接,便于开发、测试和部署。然而,随着应用规模的增长和需求的复杂化,单体架构的弊端逐渐显现࿰…...
android动态调试
在 Android 应用逆向工程中,动态调试 Smali 代码是分析应用运行时行为的重要手段。以下是详细的步骤和注意事项: 1. 准备工作 工具准备: Apktool:反编译 APK 生成 Smali 代码。Android Studio/IntelliJ IDEA:安装 smal…...
Google的A2A和MCP什么关系
作者:蛙哥 原文:https://zhuanlan.zhihu.com/p/1893738350252385035 Agent2Agent和MCP在功能上各有侧重,A2A专注于Agent之间的协作,MCP关注于Agent与外部数据源的集成。因此,MCP并不完全覆盖 A2A 的能力场景࿰…...
计算几何图形算法经典问题整理
几何算法经典问题 文章目录 几何算法经典问题一、几何基础问题1. 判断两条线段是否相交2. 判断点是否在多边形内3. 凸包计算4. 判断一个有序点集的方向(顺时针 or 逆时针)5. 求多边形面积和重心 二、 高阶图形问题6. 最小外接矩形(Minimum Bo…...
系分论文《论多云架构治理的分析和应用》
系统分析师论文范文系列 【摘要】 2022年3月,我所在公司承接了某金融机构“混合云资源管理与优化平台”的设计与实施项目。我作为系统分析师,主导了多云架构的规划与治理工作。该项目旨在构建一个兼容多家公有云及私有云资源的统一管理平台,解…...
(三)毛子整洁架构(Infrastructure层/DapperHelper/乐观锁)
文章目录 项目地址一、Infrastructure Layer1.1 创建Application层需要的服务1. Clock服务2. Email 服务3. 注册服务 1.2 数据库服务1. 表配置Configurations2. Respository实现3. 数据库链接Factory实现4. Dapper的DataOnly服务实现5. 所有数据库服务注册 1.3 基于RowVersion的…...
Femap许可使用数据分析
在当今竞争激烈的市场环境中,企业对资源使用效率和成本控制的关注日益增加。Femap作为一款业界领先的有限元分析软件,其许可使用数据分析功能为企业提供了深入洞察和智能决策的支持。本文将详细介绍Femap许可使用数据分析工具的特点、优势以及如何应用这…...
进入虚拟机单用户模式(Linux系统故障排查)
故障概述 虚拟机备份或者克隆后,无法通过编辑虚拟机IP,且忘记虚拟机密码,无法通过登录控制台修改虚拟机网络配置: 解决步骤 重启虚拟机并进入单用户模式修改网络配配置、设置密码等、大致两个步骤: 1、重启虚拟机 2、进…...
Python 数据分析与可视化:开启数据洞察之旅(5/10)
一、Python 数据分析与可视化简介 在当今数字化时代,数据就像一座蕴藏无限价值的宝藏,等待着我们去挖掘和探索。而 Python,作为数据科学领域的明星语言,凭借其丰富的库和强大的功能,成为了开启这座宝藏的关键钥匙&…...
7、三维机械设计、装配与运动仿真组件 - /设计与仿真组件/3d-mechanical-designer
76个工业组件库示例汇总 三维机械设计、装配与运动仿真通用组件 这是一个基于Three.js开发的三维机械设计、装配与运动仿真通用组件,可以实现工业机器人关节结构设计与运动仿真功能。 功能特点 直观的三维设计界面:提供基于WebGL的3D设计空间&#x…...
传统数据展示 vs 可视化:谁更打动人心?
数据,每天都在我们身边流动:从你手机里的健康步数,到企业财报中的营收增长,再到国家发布的经济指标。但问题是——你怎么“看”这些数据? 过去,我们习惯用表格、文字和报告来展示数据,这种方式…...
CSdiy java 07
1 || 运用逻辑运算符 在 Java 代码里,|| 是逻辑或(Logical OR)运算符,它的作用是对两个布尔表达式进行逻辑或运算。下面结合具体的代码片段来详细说明: 一、|| 的基本含义 在 Java 中,|| 运算符遵循以下…...
从零打造企业级Android木马:数据窃取与远程控制实战
简介 木马病毒已从简单的恶意软件演变为复杂的攻击工具,尤其在2025年企业级攻击中,木马病毒正成为黑客组织的主要武器之一。 本文将深入探讨如何制作具备数据窃取和远程控制功能的Android木马,从基础原理到企业级防御绕过技术,同时提供详细的代码实现,帮助开发者理解木马…...
金仓数据库永久增量备份技术原理与操作
先用一张图说明一下常见的备份方式 为什么需要永久增量备份 传统的数据库备份方案通常是间隔7天对数据库做一次全量备份(完整备份),每天会基于全量备份做一次增量备份,如此循环,这种备份方案在全备数据量过大场景下…...
为特定领域微调嵌入模型:打造专属的自然语言处理利器
🧠 向所有学习者致敬! “学习不是装满一桶水,而是点燃一把火。” —— 叶芝 我的博客主页: https://lizheng.blog.csdn.net 🌐 欢迎点击加入AI人工智能社区! 🚀 让我们一起努力,共创…...
SQLite 转换为 MySQL 数据库
一、导出 SQLite 数据库 1. 使用 SQLite 命令行工具 • 打开终端(在 Linux 或 macOS 上)或命令提示符(在 Windows 上)。 • 输入sqlite3 your_database_name.db(将 your_database_name.db 替换为你的 SQLite 数据库…...
cnas软件检测实验室质量管理体系文件思维导图,快速理清全部文件
软件检测实验室在申请CNAS资质时,需要根据认可文件的要求,建立实验室质量管理体系,明晰地展示组织架构、合理地安排人员岗位职责和能力要求、全面地覆盖认可文件要求的质量要素。这是一项非常庞大的工作,涉及到的文件类型非常多&a…...
31【干货】Arcgis属性表常用查询表达式实战大全
GIS数据属性表的查询在工作中常常用到,本文对常见的基本运算符进行详细介绍,并以实例的形式,针对SQL查询常用的语句进行实例分类解析,大家可以结合项目需求,自行更改对应的语句,提高工作效率。特别注意文末…...
uniapp 不同路由之间的区别
在UniApp中,路由跳转是实现页面导航的核心功能,常见的路由跳转方式包括navigateTo、redirectTo、reLaunch、switchTab和navigateBack。这些方法在跳转行为和适用场景上有所不同。 一、路由跳转的类型与区别 1. uni.navigateTo(OBJECT) 特点࿱…...
前台--Android开发
在 Android 开发中,“前台(Foreground)” 是一个非常重要的概念,它用于描述当前用户正在与之交互的组件或应用状态。理解“前台”的含义有助于更好地管理资源、生命周期和用户体验。 ✅ 一、什么是前台? 简单定义&…...
python: update() 函数的用法和例子
Python 中 update() 函数的用法和例子 在 Python 中,update() 函数通常用于字典(dictionary)对象,以更新其键值对。该函数会将另一个字典或可迭代对象中的元素添加到当前字典中,如果键已经存在,则覆盖对应…...
动态规划-62.不同路径-力扣(LeetCode)
一、题目解析 机器人只能向下或向左,要从Start位置到Finish位置。 二、算法原理 1.状态表示 我们要求到Finish位置一共有多少种方法,记Finish为[i,j],此时dp[i,j]表示:到[i,j]位置时,一共有多少种方法,满…...
排序算法总结
在讲解排序算法之前,我们需要先了解一下排序 所谓排序,就是将数据按照我们的想法将其按照一定规律组合在一起 稳定性:一组数据中的数据是否在排序前后都保持的一定的前后顺序关系,比如在排序前a[3]2 a[5]2,这时他们有着…...
kafka学习笔记(四、生产者、消费者(客户端)深入研究(三)——事务详解及代码实例)
1.事务简介 Kafka事务是Apache Kafka在流处理场景中实现Exactly-Once语义的核心机制。它允许生产者在跨多个分区和主题的操作中,以原子性(Atomicity)的方式提交或回滚消息,确保数据处理的最终一致性。例如,在流处理中…...
【Git】查看tag
文章目录 1. 查看当前提交是否有tag2. 查看最近的tag3. 查看所有tag 有时候需要基于某个tag拉分支,记录下怎么查看tag。 1. 查看当前提交是否有tag git tag --points-at HEAD该命令可直接检查当前提交(HEAD)是否关联了任何tag。 若当前提交…...
开源数字人框架 AWESOME - DIGITAL - HUMAN:技术革新与行业标杆价值剖析
一、项目核心价值:解锁数字人技术新境界 1. 技术普及:降低准入门槛,推动行业民主化 AWESOME - DIGITAL - HUMAN 项目犹如一场技术春雨,为数字人领域带来了普惠甘霖。它集成了 ASR、LLM、TTS 等关键能力,并提供模块化扩展接口,将原本复杂高深的数字人开发流程,转化为一…...
Android系统架构模式分析
本文系统梳理Android系统架构模式的演进路径与设计哲学,希望能够借此探索未来系统的发展方向。有想法的同学可以留言讨论。 1 Android层次化架构体系 1.1 整体分层架构 Android系统采用五层垂直架构,各层之间通过严格接口定义实现解耦: 应用…...
【MYSQL错误连接太多】
com.mysql.cj.exceptions.CJException: null, message from server: "Host 192.168.0.200 is blocked because of many connection errors; unblock with mysqladmin flush-hosts"方法一:通过配置文件永久更改 找到你的 MySQL 配置文件(通常…...
C23 与 MISRA C:2025:嵌入式 C 语言的进化之路
引言 在 Rust、Go 等现代语言蓬勃发展的今天,C 语言依然以 27.7% 的 TIOBE 指数(2024 年 6 月数据)稳居编程语言前三甲。其核心竞争力不仅在于高效的底层控制能力,更在于持续进化的标准体系。2024 年发布的 C23(ISO/I…...
HunyuanCustom, 腾讯混元开源的多模态定制视频生成框架
HunyuanCustom是一款由腾讯混元团队开发的多模态驱动定制视频生成框架,能够支持图像、音频、视频和文本等多种输入方式。该框架专注于生成高质量的视频,能够实现特定主体和场景的精准呈现。 HunyuanCustom是什么 HunyuanCustom是腾讯混元团队推出的一种…...
el-menu 折叠后小箭头不会消失
官方示例 <template><el-radio-group v-model"isCollapse" style"margin-bottom: 20px"><el-radio-button :value"false">expand</el-radio-button><el-radio-button :value"true">collapse</el-ra…...