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

从零开始学可靠消息投递:分布式事务的“最终一致性”方案

一、什么是可靠消息投递?—— 消息队列的“防丢宝典”

可靠消息投递 是指通过消息队列(如 RocketMQ)确保消息在生产、传输、消费过程中不丢失、不重复、有序到达。其核心目标是在分布式系统中保障数据最终一致性,常用于订单处理、支付回调、日志同步等关键业务。

核心角色
生产者(Producer):发送消息的客户端。
消费者(Consumer):接收并处理消息的客户端。
Broker:消息存储和转发的中间服务器(如 RocketMQ 的节点)。
Name Server:存储 Broker 元数据(如路由信息)。

通俗比喻
想象快递公司(RocketMQ)如何保证包裹(消息)安全送达:

  1. 下单(生产者发送消息)→
  2. 分拣中心(Broker 存储)→
  3. 派送(消费者接收)→
  4. 签收反馈(确认消息已处理)。

二、RocketMQ原理:如何实现可靠投递?
1. 核心架构与流程

在这里插入图片描述

2. 关键机制

持久化存储
CommitLog:所有消息顺序写入单一文件,确保顺序性和原子性。
ConsumeQueue:消费者组消费进度记录,支持断点续传。
多副本机制
• Broker 默认同步复制消息到其他节点,防止单点故障。
ACK确认机制
• 消费者拉取消息后发送确认,Broker 删除已确认消息。
重试与死信队列
• 消费失败时自动重试,多次失败后转入死信队列(DLQ)人工处理。

3. 图解:消息投递流程
[生产者] → 发送消息 → [Name Server] → 路由到 Broker → 存入 CommitLog  ↓  [消费者组] ← 拉取消息 ← [Broker]  ↓  [消费者] → 处理消息 → 发送 ACK → [Broker] → 删除消息  

三、适用场景:哪些业务需要可靠消息投递?
  1. 订单创建
    • 扣减库存 → 生成订单 → 发送物流通知。
    • 失败需回滚(如扣款失败则恢复库存)。
  2. 支付回调
    • 支付成功后通知订单服务,需确保通知至少一次。
  3. 日志同步
    • 微服务间异步记录操作日志,保证最终一致性。
  4. 事件驱动架构
    • 用户注册 → 发送欢迎邮件 → 更新用户状态。

反例
实时性要求极高:如股票交易(需毫秒级响应)。
简单请求响应:如HTTP API调用,无需异步解耦。


四、实战:Spring Boot + RocketMQ 快速上手
1. 环境准备

下载 RocketMQ:访问官网下载最新版(以 2.11.0 为例),解压后启动:

# 启动 Name Server
sh bin/mqnamesrv# 启动 Broker(默认端口 9876)
sh bin/mqbroker -n localhost:9876
2. 添加依赖

pom.xml 中添加 RocketMQ 和 Spring Boot 集成依赖:

<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.11.0</version>
</dependency>
3. 配置文件

application.yml 中配置 RocketMQ 生产者和消费者:

rocketmq:producer:name-server: localhost:9876default-topic: order_topicconsumer:name-server: localhost:9876default-topic: order_topicconsumer-group: order_consumer_group
4. 生产者代码(发送消息)
@Service
public class OrderService {@Autowiredprivate RocketMQTemplate rocketMQTemplate;public void createOrder(Order order) {// 1. 扣减库存(本地事务)inventoryService.deduct(order.getSkuId());// 2. 发送消息到 RocketMQ(异步解耦)rocketMQTemplate.convertAndSend("order_topic", order);}
}
5. 消费者代码(处理消息)
@Service
public class OrderConsumer {@Autowiredprivate OrderDAO orderDAO;@RocketMQListener(topics = "order_topic",consumerGroup = "order_consumer_group")public void listen(Order order) {// 3. 生成订单(本地事务)orderDAO.insert(order);// 4. 发送物流通知(外部服务调用)logisticsService.sendLogistics(order.getId());}
}
6. 测试与验证

正常流程
• 订单创建 → 消息发送 → 订单入库 → 物流通知。
失败场景
• 物流服务宕机 → 消息重试3次后进入DLQ → 运维手动处理。


五、常见问题与解决
1. 消息丢失

问题:Broker宕机导致未持久化消息丢失。
解决方案
启用持久化:配置 storePathCommitLogstorePathConsumeQueue 到磁盘。
多副本:设置 brokerRoleSYNC_MASTER,启用自动同步。

2. 消息重复消费

问题:消费者重启后重复处理旧消息。
解决方案
消费者组:通过 consumer-group 确保每个消息只被一个消费者处理。
Offset管理:RocketMQ 自动记录消费进度,重启后从断点续传。

3. 消息顺序性不一致

问题:高并发下消息乱序到达。
解决方案
顺序消息:设置 messageModel=ORDER,保证同一队列消息有序。
分片处理:将不同业务消息分到不同 Topic。

4. 消息延迟高

问题:网络拥堵或 Broker 负载过高导致消息堆积。
解决方案
批量消费:调整 pullBatchSize 提高吞吐量。
扩容 Broker:增加 Broker 节点分散负载。


六、RocketMQ vs 其他消息队列
对比维度RocketMQKafkaRabbitMQ
核心场景高可靠、顺序消息高吞吐、日志流复杂路由、灵活协议
存储引擎CommitLog + ConsumeQueuePartition + OffsetExchange + Queue
消息顺序支持顺序消息分区有序,跨分区无序严格顺序(通过Exchange)
持久化支持同步/异步持久化支持持久化支持持久化
社区生态中文文档完善,国内常用国际化,云原生支持社区活跃,多语言支持

七、总结与行动建议
  1. 掌握基础:通过示例代码理解生产者-消费者模型和ACK机制。
  2. 生产环境优化
    持久化配置:确保 commitLogconsumeQueue 持久化到磁盘。
    监控报警:通过 RocketMQ 控制台监控消息堆积和消费延迟。
  3. 进阶方向
    事务消息:结合本地事务实现强一致性(如订单扣款+消息发送)。
    延迟消息:实现定时任务(如30分钟后重试失败订单)。
    死信队列:自定义 DLQ 处理策略(如短信通知人工介入)。
  4. 避坑指南
    避免单 Topic:按业务类型分 Topic,防止耦合。
    合理设置重试次数:避免无限重试导致Broker压力过大。

最后思考
RocketMQ 是分布式系统中可靠的“消息管道”,尤其适合需要高一致性和顺序性的场景。对于金融、电商等对数据准确性要求极高的业务,它是不可或缺的中间件。掌握其核心原理和运维技巧,能有效提升系统的高可用性和稳定性。

相关文章:

从零开始学可靠消息投递:分布式事务的“最终一致性”方案

一、什么是可靠消息投递&#xff1f;—— 消息队列的“防丢宝典” 可靠消息投递 是指通过消息队列&#xff08;如 RocketMQ&#xff09;确保消息在生产、传输、消费过程中不丢失、不重复、有序到达。其核心目标是在分布式系统中保障数据最终一致性&#xff0c;常用于订单处理、…...

生物化学笔记:医学免疫学原理 免疫系统的组成与功能+克隆选择学说

免疫系统的组成与功能 克隆选择学说 克隆选择学说&#xff08;Clonal Selection Theory&#xff09;是免疫学的核心理论之一&#xff0c;由 麦克法兰伯内特&#xff08;Frank Macfarlane Burnet&#xff09; 在 1957 年提出&#xff0c;用于解释特异性免疫反应的机制。 基本概…...

SpringBoot最佳实践之 - 使用AOP记录操作日志

1. 前言 本篇博客是个人在工作中遇到的需求。针对此需求&#xff0c;开发了具体的实现代码。并不是普适的记录操作日志的方式。以阅读本篇博客的朋友&#xff0c;可以参考此篇博客中记录日志的方式&#xff0c;可能会对你有些许帮助和启发。 2. 需求描述 有一个后台管理系统…...

MySql中 一条select语句的执行流程

一条 SELECT 语句的执行流程涉及到数据库管理系统&#xff08;DBMS&#xff09;的多个组件和阶段。以下是一个更为详细的执行流程&#xff0c;以关系型数据库&#xff08;如 MySQL、PostgreSQL 等&#xff09;为例&#xff1a; 1. 客户端发送查询 用户输入&#xff1a;用户在客…...

图论——kruskal算法

53. 寻宝(第七期模拟笔试) 题目描述 在世界的某个区域,有一些分散的神秘岛屿,每个岛屿上都有一种珍稀的资源或者宝藏。国王打算在这些岛屿上建公路,方便运输。 不同岛屿之间,路途距离不同,国王希望你可以规划建公路的方案,如何可以以最短的总公路距离将 所有岛屿联通…...

【dify】 dify环境变量配置说明

这是一份Dify平台的环境变量配置文件&#xff0c;对平台的各项功能、服务和组件进行参数设置。以下是对其主要部分的详细解读&#xff1a; 1. 通用变量&#xff08;Common Variables&#xff09; CONSOLE_API_URL&#xff1a;控制台API的后端URL&#xff0c;用于拼接授权回调…...

如何在 Vue 项目中实现动态组件加载,有什么应用场景?

大白话如何在 Vue 项目中实现动态组件加载&#xff0c;有什么应用场景&#xff1f; 什么是动态组件加载 在 Vue 项目里&#xff0c;动态组件加载就是能够在程序运行时动态地决定要渲染哪个组件。打个比方&#xff0c;就像你去餐馆点菜&#xff0c;不同的时间你可能想吃不同的…...

FRP在物联网设备中的穿透方案

物联网设备常位于NAT后&#xff0c;FRP为其提供稳定穿透链路。 配置要点 轻量化部署&#xff1a;使用ARM版本FRP客户端&#xff0c;适配树莓派等设备9。 自启动脚本&#xff1a;通过systemd或crontab实现设备重启后自动连接26。 低功耗优化&#xff1a;调整心跳间隔&#xf…...

Android 13深度定制:SystemUI状态栏时间居中显示终极实战指南

一、架构设计与技术解析 1. SystemUI状态栏核心布局机制 层级结构 mermaid 复制 graph TDPhoneStatusBarView --> StatusBarContents[status_bar_contents]StatusBarContents --> LeftLayout[status_bar_left_side]StatusBarContents --> ClockLayout[Clock控件]Left…...

Python实战(3)-数据库操作

前面说过&#xff0c;可用的SQL数据库引擎有很多&#xff0c;它们都有相应的Python模块。这些数据库引擎大都作为服务器程序运行&#xff0c;连安装都需要有管理员权限。为降低Python DB API的使用门槛&#xff0c;我选择了一个名为SQLite的小型数据库引擎。它不需要作为独立的…...

【redis】在 Spring中操作 Redis

文章目录 基础设置依赖StringRedisTemplate库的封装 运行StringList删库 SetHashZset 基础设置 依赖 需要选择这个依赖 StringRedisTemplate // 后续 redis 测试的各种方法&#xff0c;都通过这个 Controller 提供的 http 接口来触发 RestController public class MyC…...

企业数据孤岛的纠结与恩怨

以下是关于控制中数据孤岛的纠结于恩怨&#xff1a; 一、工业控制中数据孤岛的定义 工业控制中的数据孤岛是指在工业生产过程中&#xff0c;各个生产环节、不同的系统或设备之间的数据相互独立、隔离&#xff0c;无法进行有效的共享和交互&#xff0c;形成了一个个相对封闭的数…...

在 Elasticsearch 中扩展后期交互模型 - 第 2 部分 - 8.18

作者&#xff1a;来自 Elastic Peter Straer 及 Benjamin Trent 本文探讨了如何优化后期交互向量&#xff0c;以适应大规模生产工作负载&#xff0c;例如减少磁盘空间占用和提高计算效率。 在之前关于 ColPali 的博客中&#xff0c;我们探讨了如何使用 Elasticsearch 创建视觉搜…...

开发SAPUI5 Fiori应用并部署到SAP系统

首先新建一个项目文件夹 在VScode中打开 打开SAP Fiori&#xff08;需要先下载安装&#xff0c;参考上上一篇文章&#xff09; ,选择已添加的SAP S4 ERP系统 ,点击创建Firoi应用。 如果没有添加系统的&#xff0c;点击添加按钮&#xff0c;添加即可&#xff0c;注意&#xff…...

<C#> 详细介绍.net 三种依赖注入:AddTransient、AddScoped、AddSingleton 的区别

在 .NET 8 里&#xff0c;AddTransient、AddScoped 和 AddSingleton 均为依赖注入容器用于注册服务的方法&#xff0c;不过它们的生命周期管理方式存在差异。下面为你详细介绍这三种方法的区别。 1. AddTransient AddTransient 方法所注册的服务&#xff0c;每次被请求时都会…...

游戏引擎学习第168天

回顾并计划今天的内容 今天我们将进行一些思考工作&#xff0c;回顾一下之前的工作。我们已经在资产处理工具中提取了字体&#xff0c;并展示了如何使用该库。我们有两个版本&#xff0c;一个不使用任何库&#xff0c;适合想要完全不依赖库的用户&#xff1b; 我们今天的任务…...

html5炫酷3D立体文字效果实现详解

炫酷3D立体文字效果实现详解 这里写目录标题 炫酷3D立体文字效果实现详解项目概述技术实现要点1. 基础布局设置2. 动态背景效果3. 文字渐变效果4. 立体阴影效果5. 悬浮动画效果 技术难点及解决方案1. 文字渐变动画2. 立体阴影效果3. 性能优化 浏览器兼容性总结 项目概述 在这个…...

VSCode中搜索插件显示“提取扩展时出错。Failed to fetch”问题解决!

大致的问题如下&#xff0c;在VSCode的插件商店搜索插件时提示如下&#xff1a; 导致的情况有以下几点&#xff1a; 1、代理问题&#xff0c;如果是代理引起的&#xff0c;可以继续使用代理后也能搜索和安装插件。 2、还有可能是你的所连接的网络设置了防火墙&#xff0c;比较…...

回溯-单词搜索

79.单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff0c;其中“相邻”单元格是那些水平…...

高级java每日一道面试题-2025年3月07日-微服务篇[Eureka篇]-Eureka Server和Eureka Client关系?

如果有遗漏,评论区告诉我进行补充 面试官: Eureka Server和Eureka Client关系? 我回答: 在微服务架构中&#xff0c;Eureka作为Netflix开源的服务发现组件&#xff0c;由Eureka Server&#xff08;服务端&#xff09;和Eureka Client&#xff08;客户端&#xff09;两大部分…...

SpringBoot有几种获取Request对象的方法

HttpServletRequest 简称 Request&#xff0c;它是一个 Servlet API 提供的对象&#xff0c;用于获取客户端发起的 HTTP 请求信息。例如&#xff1a;获取请求参数、获取请求头、获取 Session 会话信息、获取请求的 IP 地址等信息。 那么问题来了&#xff0c;在 Spring Boot 中…...

【Agent】Dify Docker 安装问题 INTERNAL SERVER ERROR

总结&#xff1a;建议大家选择稳定版本的分支&#xff0c;直接拉取 master 分支&#xff0c;可能出现一下后面更新代码导致缺失一些环境内容。 我是通过 Docker 进行安装的&#xff0c;由于项目开发者不严谨导致&#xff0c;遇到一个奇怪的问题&#xff1a; INTERNAL SERVER E…...

操作系统——(处理机调度与死锁)

目录 一、处理机调度 &#xff08;1&#xff09;层次 &#xff08;2&#xff09;进程调度 &#xff08;3&#xff09;调度算法 1.先来先服务算法&#xff08;FCFS&#xff09; 2.短作业优先算法&#xff08;SJF&#xff09; 3.高优先权算法&#xff08;HPF&#xff09; …...

MyBatis 面试专题

MyBatis 面试专题 基础概念MyBatis中的工作原理MyBatis 与 Hibernate 的区别&#xff1f;#{} 和 ${} 的区别&#xff1f;MyBatis 的核心组件有哪些&#xff1f; 映射与配置如何传递多个参数&#xff1f;ResultMap 的作用是什么&#xff1f;动态 SQL 常用标签有哪些&#xff1f;…...

C++实现大整数相加

力扣原题字符串相加 415. 字符串相加 - 力扣&#xff08;LeetCode&#xff09; 大整数意味着无法用基本数据类型装下&#xff0c;只能用字符串装下&#xff0c;然后手工模拟计算过程 从两个字符串的最后一位开始两两相加&#xff0c;记录进位&#xff0c;每次均有sumabsum&…...

Flutter 快速接入Fair

少点废话 1.了解Fair Fair&#xff0c;由58同城开源提供&#xff0c;目的是flutter项目上架后动态更新代码&#xff0c; 首先了解一个概念&#xff0c;热更新是flutter打包APK后会讲所有的dart代码生成一个so文件&#xff0c;手机通过读取并执行so文件&#xff1b;基于此&am…...

【深度学习新浪潮】AI ISP技术与手机厂商演进历史

本文是关于AI ISP(人工智能图像信号处理器)的技术解析、与传统ISP(图像信号处理器)的区别、近三年研究进展,以及各大手机厂商在该领域演进历史的详细报告。本报告综合多个权威来源的信息,力求全面、深入地呈现相关技术发展脉络与行业动态。 第一部分:AI ISP的定义及与传…...

用逻辑分析仪分析Usart波形

USART的波形抓取最简单&#xff0c;帧头帧尾只需要电平上升下降沿就可以了&#xff0c;不需要自己定义&#xff0c;也没有ID位&#xff0c;逻辑分析仪可以直接抓取发送的数据&#xff1a; 口配置&#xff1a;9600bps&#xff0c;8数据位&#xff0c;无校验&#xff0c;1个停止位…...

常⻅CMS漏洞 -DeDeCMS 获取webshell

DedeCMS是织梦团队开发PHP ⽹站管理系统&#xff0c;它以简单、易⽤、⾼效为特⾊&#xff0c;组建出各种各样各 具特⾊的⽹站 姿势⼀&#xff1a;通过⽂件管理器上传WebShell 1.访问⽬标靶场dedecms 后台可以直接上传任意⽂件 2.上传木马文件 3.蚁剑连接 姿势⼆&#xff1a;…...

基于STC89C51的太阳自动跟踪系统的设计与实现—单片机控制步进电机实现太阳跟踪控制(仿真+程序+原理图+PCB+文档)

摘 要 随着我国经济的飞速发展&#xff0c;促使各种能源使用入不敷出&#xff0c;尤其是最主要的能源&#xff0c;煤炭石油资源不断消耗与短缺&#xff0c;因此人类寻找其他替代能源的脚步正在加快。而太阳能则具有无污染﹑可再生﹑储量大等优点&#xff0c;且分布范围广&…...

JAVA_数据结构_栈和队列

1.栈&#xff08;Stack&#xff09; 1.1概念 栈是一种特殊的线性表&#xff0c;它只允许一端进行增删查改操作&#xff0c;它的头称为栈顶&#xff0c;进行压栈和出栈的操作&#xff0c;则另一端称为栈底&#xff0c;并且它遵循着先进后出的操作。 压栈&#xff1a;也可称为进…...

独立组网和非独立组网

独立组网&#xff08;SA&#xff09; vs. 非独立组网&#xff08;NSA&#xff09; 5G组网方式主要分为 独立组网&#xff08;SA, Standalone&#xff09; 和 非独立组网&#xff08;NSA, Non-Standalone&#xff09;&#xff0c;两者在网络架构、核心网、应用场景等方面有所不…...

HR人员和组织信息同步AD域服务器实战方法JAVA

HR人员和组织信息同步AD域服务器 前期准备AD域基础知识整理HR同步AD的逻辑代码结构配置文件设置启动类HR组织的BeanHR人员Bean获取HR人员和组织信息的类AD中处理组织和人员的类日志配置 POM.xml文件生成EXE文件服务器定时任务异常问题注意事项 前期准备 1、开发语言&#xff1…...

【云上CPU玩转AIGC】——腾讯云高性能应用服务HAI已支持DeepSeek-R1模型预装环境和CPU算力

&#x1f3bc;个人主页&#xff1a;【Y小夜】 &#x1f60e;作者简介&#xff1a;一位双非学校的大三学生&#xff0c;编程爱好者&#xff0c; 专注于基础和实战分享&#xff0c;欢迎私信咨询&#xff01; &#x1f386;入门专栏&#xff1a;&#x1f387;【MySQL&#xff0…...

【测试开发】OKR 网页管理端自动化测试报告

【测试报告】OKR 管理端 项目名称版本号测试负责人测试完成日期联系方式OKR 管理端4.0马铭胜2025-03-2115362558972 1、项目背景 1.1 OKR 用户端 在如今这个快节奏的时代中&#xff0c;个人和组织的成长往往依赖于清晰、明确且意义深远的目标。然而&#xff0c;如何设定并持…...

go语言中空结构体

空结构体(struct{}) 普通理解 在结构体中&#xff0c;可以包裹一系列与对象相关的属性&#xff0c;但若该对象没有属性呢&#xff1f;那它就是一个空结构体。 空结构体&#xff0c;和正常的结构体一样&#xff0c;可以接收方法函数。 type Lamp struct{}func (l Lamp) On()…...

如何缓解大语言模型推理中的“幻觉”(Hallucination)?

目录 如何缓解大语言模型推理中的“幻觉”&#xff08;Hallucination&#xff09;&#xff1f; 1. 什么是大语言模型的“幻觉”&#xff08;Hallucination&#xff09;&#xff1f; 幻觉的常见类型 2. 如何缓解大模型的幻觉问题&#xff1f; 方法 1&#xff1a;使用知识检索…...

优选算法系列(3.二分查找 )

目录 一.二分查找&#xff08;easy&#xff09; 题目链接&#xff1a;704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a; 代码&#xff1a; 二.在排序数组中查找元素的第⼀个和最后⼀个位置&#xff08;medium&#xff09; 题目链接&#xff1a;34.…...

【论文阅读】Contrastive Clustering Learning for Multi-Behavior Recommendation

论文地址&#xff1a;Contrastive Clustering Learning for Multi-Behavior Recommendation | ACM Transactions on Information Systems 摘要 近年来&#xff0c;多行为推荐模型取得了显著成功。然而&#xff0c;许多模型未充分考虑不同行为之间的共性与差异性&#xff0c;以…...

细胞计数专题 | 高效 + 精准!点成LUNA-III™细胞计数仪解锁活细胞检测与浓度分析新高度

1 引言 在生物医学研究中&#xff0c;准确的细胞计数至关重要&#xff0c;它影响着细胞治疗、疾病诊断、组织再生和生物测定等应用领域。传统的手动计数方法既耗时又容易产生偏差。像点成LUNA-III™自动细胞计数仪这样的自动化系统&#xff0c;为提高计数的准确性、可重复性和…...

糊涂人寄信——递推

思路分析&#xff1a;当有n封信&#xff0c;n个信封时。第k封信没有装在第k个信封里&#xff08;k从1~n&#xff09;&#xff0c;就算所有的信封都装错了。我们可以得知的是&#xff0c;当有1封信,时&#xff0c;装错类别数为0。当有两封信时&#xff0c;装错类别为1。 当有三…...

深入Python C API:掌握常用函数与实战技巧

深入Python C API&#xff1a;掌握常用函数与实战技巧 Python的灵活性和易用性使其成为广泛应用的编程语言&#xff0c;但在某些场景下&#xff08;如高性能计算、与C/C代码交互&#xff09;&#xff0c;直接使用C语言扩展Python的能力变得尤为重要。Python C API&#xff08;…...

第16章:基于CNN和Transformer对心脏左心室的实验分析及改进策略

目录 1. 项目需求 2. 网络选择 2.1 UNet模块 2.2 TransUnet 2.2.1 SE模块 2.2.2 CBAM 2.3 关键代码 3 对比试验 3.1 unet 3.2 transformerSE 3.3 transformerCBAM 4. 结果分析 5. 推理 6. 下载 1. 项目需求 本文需要做的工作是基于CNN和Transformer的心脏左心室…...

Word中公式自动标号带章节编号

&#xff08;1&#xff09;插入一行三列的表格&#xff0c;设置宽度分别为0.5&#xff0c;13.39和1.5&#xff0c;设置纵向居中&#xff0c;中间列居中对齐&#xff0c;最右侧列靠右对齐&#xff0c;设置段落如下 &#xff08;2&#xff09;插入域代码 【Word】利用域代码快速实…...

AI风向标《AI与视频制作全攻略:从入门到精通实战课程》

课程信息 AI风向标《AI与视频制作全攻略&#xff1a;从入门到精通实战课程》,夸克网盘和百度网盘课程。 课程介绍 《AI与视频制作全攻略&#xff1a;从入门到精通实战课程》是一套全面融合AI技术与视频制作的实战课程&#xff0c;旨在帮助创作者从基础软件使用到高级视频剪辑…...

el-table折叠懒加载支持排序

el-table折叠懒加载支持排序 因为el-table懒加载的子节点是通过缓存实现的&#xff0c;如果想在展开的情况下直接刷新对应子节点数据&#xff0c;要操作el-table组件自身数据&#xff0c;否则不会更新 以排序功能为例 maps: new Map() //用于存储子节点懒加载的数据// 加载子…...

Kotlin v2.1.20 发布,标准库又有哪些变化?

大家吼哇&#xff01;就在三小时前&#xff0c;Kotlin v2.1.20 发布了&#xff0c;更新的内容也已经在官网上更新&#xff1a;What’s new in Kotlin 2.1.20 。 我粗略地看了一下&#xff0c;下面为大家选出一些我比较感兴趣、且你可能也会感兴趣的内容。 注意&#xff01;这里…...

AI智能问答“胡说八道“-RAG探索之路

AI智能问答"胡说八道"-RAG探索之路 背景信息RAGRAG技术的知识难题分块矛盾知识缺失相互冲突 RAG知识优化实践分块优化缺失优化冲突优化 未来展望 背景信息 你有没有遇到过这样的场景&#xff1f;当你向智能助手提问&#xff1a;“某科技公司为何突然更换高层领导&am…...

【yolo】YOLO训练参数输入之模型输入尺寸

模型输入尺寸是YOLO训练和推理过程中非常重要的参数之一。YOLO要求输入图像的尺寸是固定的&#xff0c;通常为正方形&#xff08;如416416、640640等&#xff09;。这个尺寸直接影响模型的性能和速度。以下是对模型输入尺寸的详细介绍&#xff1a; 1. 模型输入尺寸的作用 统一…...

[原创](Modern C++)现代C++的关键性概念: 如何声明一个返回数组指针的函数?

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、C …...