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

ActiveMQ 可靠性保障:消息确认与重发机制(二)

ActiveMQ 重发机制

重发机制的原理与触发条件

ActiveMQ 的重发机制是确保消息可靠传输的重要手段。当消息发送到 ActiveMQ 服务器后,如果消费者由于某些原因未能成功处理消息,ActiveMQ 会依据配置的重发策略,将消息重新放入队列或主题中,等待下一次消费 。

在以下几种情况下,ActiveMQ 服务器会将消息重发给消费者:

  • 消费者未应答:如果消息接收者在处理完一条消息后没有对消息中间件(MOM)进行应答,该消息将由 MOM 重发。在使用CLIENT_ACKNOWLEDGE模式时,消费者接收到消息后,若没有调用message.acknowledge()方法进行确认,ActiveMQ 会认为消息未被成功处理,进而重发该消息 。
  • 处理消息出错:当消费者在处理消息过程中抛出异常,表明消息处理失败,ActiveMQ 会将消息标记为需要重发。比如在一个订单处理系统中,消费者在处理订单消息时,若因为数据库连接问题或业务逻辑错误而抛出异常,ActiveMQ 会重发该订单消息 。
  • 会话事务异常
  • 事务回滚:在使用事务性会话时,如果调用了rollback()方法,事务中的所有消息都将被重发。假设在一个涉及多个数据库操作和消息处理的事务中,由于部分数据库操作失败而调用了rollback(),那么该事务中的消息会被重发 。
  • 事务会话关闭:在调用commit()方法前关闭了事务性会话,事务中的消息也会被重发。比如在一个转账业务中,消息处理和账户余额更新在一个事务中,若在未提交事务时关闭了会话,相关消息会被重发 。
  • 非事务会话异常:在非事务性会话中,如果消费者连接超时(可能是代码执行时间超过配置的超时时间),未确认的消息会被重发。例如,消费者在处理一个复杂的计算任务时,由于耗时过长导致连接超时,此时未确认的消息会被重发 。

重发策略的配置参数

ActiveMQ 通过RedeliveryPolicy来配置重发策略,其中包含多个重要的配置参数:

  • collisionAvoidanceFactor:默认值为0.15,用于设置防止冲突范围的正负百分比,只有在启用useCollisionAvoidance参数时才生效。它的作用是在消息重发时,避免多个消息在同一时间点被重发,导致资源竞争和冲突 。在一个高并发的消息处理系统中,多个消费者同时处理消息时,如果没有设置该参数,可能会出现所有消费者在同一时间重发消息的情况,导致服务器负载过高,而设置collisionAvoidanceFactor后,消息重发的时间会在一定范围内随机波动,减少冲突的可能性 。
  • maximumRedeliveries:默认值为6,表示最大重传次数,达到最大重连次数后会抛出异常。当设置为-1时,不限制重发次数;设置为0时,表示不进行重传 。在一个日志收集系统中,如果设置maximumRedeliveries为3,当消息在重发 3 次后仍然处理失败,就会抛出异常,消息可能会被发送到死信队列(DLQ);而如果设置为-1,消息会一直重发,直到成功处理 。
  • maximumRedeliveryDelay:默认值为-1,表示最大传送延迟,只在useExponentialBackOff为true时有效(V5.5 及以上版本)。假设首次重连间隔为10ms,倍数为2,那么第二次重连时间间隔为20ms,第三次重连时间间隔为40ms,当重连时间间隔达到最大重连时间间隔时,以后每次重连时间间隔都为最大重连时间间隔 。在一个对消息实时性要求较高的金融交易系统中,可以设置较小的maximumRedeliveryDelay,以确保消息能尽快被重发和处理;而在一些对实时性要求不高的系统中,可以设置较大的值,减少重发对系统资源的影响 。
  • initialRedeliveryDelay:默认值为1000L,即初始重发延迟时间,单位为毫秒。它表示消息第一次处理失败后,等待重发的时间 。在一个数据同步系统中,设置initialRedeliveryDelay为5000,当消息处理失败后,会等待 5 秒再进行第一次重发 。
  • redeliveryDelay:默认值为1000L,即重发延迟时间,当initialRedeliveryDelay为0时生效(v5.4 及以上版本)。它用于设置除首次重发外,每次重发之间的时间间隔 。如果在一个消息处理任务中,initialRedeliveryDelay设置为0,redeliveryDelay设置为3000,那么每次重发之间的间隔为 3 秒 。
  • useCollisionAvoidance:默认值为false,用于启用防止冲突功能。由于消息接收时可以使用多线程并发处理,启用该功能可以使重发的消息在时间上分布得更加均衡,避免所有并发线程都在同一个时间点进行消息接收处理,从而平衡 broker 的处理性能 。在一个有大量并发消费者的电商订单处理系统中,启用useCollisionAvoidance可以避免因消息重发过于集中而导致 broker 负载过高 。
  • useExponentialBackOff:默认值为false,用于启用指数倍数递增的方式增加延迟时间。启用后,每次重发的延迟时间会按照一定的倍数递增 。在一个处理复杂业务逻辑的消息系统中,启用useExponentialBackOff,可以让消息在多次重发时,随着失败次数的增加,重发间隔时间逐渐变长,避免短时间内大量重发对系统造成过大压力 。
  • backOffMultiplier:默认值为5,表示重连时间间隔递增倍数,只有在值大于1且启用useExponentialBackOff参数时才生效。例如,首次重发延迟为1000ms,backOffMultiplier为2,那么第二次重发延迟为2000ms,第三次为4000ms 。在一个对消息可靠性要求较高,但又要避免过度占用资源的系统中,可以根据实际情况调整backOffMultiplier的值,以平衡消息重发的频率和系统资源的消耗 。

重发机制的工作流程与案例分析

为了更清晰地理解重发机制的工作流程,我们结合一个实际案例进行分析。假设我们有一个电子商务系统,订单消息通过 ActiveMQ 进行传输和处理。

  1. 消息第一次发送:当用户下单后,订单信息被封装成消息发送到 ActiveMQ 服务器的订单队列中。生产者将订单消息发送给 ActiveMQ,ActiveMQ 接收到消息后,将其存储在队列中,并等待消费者来获取 。
  1. 消费者处理失败:消费者从订单队列中获取消息并进行处理,处理过程中可能由于数据库连接问题、业务逻辑错误等原因导致处理失败,消费者抛出异常,消息未被确认 。在处理订单消息时,若数据库突然出现故障,无法将订单信息正确写入数据库,消费者就会抛出异常,此时消息处理失败 。
  1. 消息进入重发队列:ActiveMQ 检测到消费者处理消息失败(通过异常捕获或未收到确认消息),根据配置的重发策略,将消息放入重发队列 。ActiveMQ 根据消费者返回的错误信息,判断该消息需要重发,将其从原队列中取出,放入重发队列 。
  1. 按照重发策略进行重发:ActiveMQ 按照RedeliveryPolicy中配置的参数进行消息重发。首先,根据initialRedeliveryDelay设置的时间间隔,等待一段时间后进行第一次重发 。如果第一次重发仍然失败,根据useExponentialBackOff和backOffMultiplier的配置,计算下一次重发的延迟时间,然后进行第二次重发,以此类推,直到达到maximumRedeliveries设置的最大重发次数 。假设initialRedeliveryDelay为2000(2 秒),useExponentialBackOff为true,backOffMultiplier为2,maximumRedeliveries为3。消息第一次处理失败后,等待 2 秒进行第一次重发;若第一次重发失败,等待 4 秒(22)进行第二次重发;若第二次重发仍失败,等待 8 秒(42)进行第三次重发,第三次重发后,达到最大重发次数,消息可能会被发送到死信队列 。

在这个案例中,重发机制的应用确保了订单消息不会因为一次处理失败而丢失,提高了系统的可靠性。但同时,也需要合理配置重发策略,避免因过度重发导致系统资源浪费和性能下降。

消息确认与重发机制的关系

相互协作保障可靠性

消息确认机制和重发机制在 ActiveMQ 中相互协作,共同为消息的可靠传输提供保障。确认机制是重发机制的基础,它为消息的处理状态提供了明确的标识。当消费者成功处理消息并进行确认时,ActiveMQ 知道该消息已被正确处理,无需重发 。如果消费者未能确认消息,无论是因为未应答、处理出错还是会话异常,ActiveMQ 都会根据重发机制将消息重新发送,以确保消息最终能被成功处理 。在一个电商订单处理系统中,消费者接收到订单消息后,若使用CLIENT_ACKNOWLEDGE模式,只有在成功处理订单并调用acknowledge()方法确认后,消息才不会被重发。若处理过程中出现异常,未进行确认,重发机制就会启动,将消息重新发送给消费者,保证订单不会因为一次处理失败而丢失 。

重发机制是确认机制的补充,当确认机制未能正常工作,即消息未被正确确认时,重发机制能够通过重新发送消息来弥补确认机制的不足,增加消息被成功处理的机会。两者紧密配合,从不同角度确保了消息在分布式系统中的可靠传输,提高了系统的稳定性和可靠性 。

实际应用中的权衡与选择

在实际应用中,根据业务需求和系统特点,合理选择消息确认模式和配置重发策略是至关重要的,这直接影响到系统的性能和可靠性。对于对消息处理实时性要求较高、业务逻辑简单且对消息重复不太敏感的场景,如实时日志收集系统,可以选择AUTO_ACKNOWLEDGE模式,配合简单的重发策略,这样能提高消息处理的效率,减少系统开销 。但如果业务对消息的准确性和完整性要求极高,不允许出现消息重复处理的情况,如金融交易系统,就需要选择CLIENT_ACKNOWLEDGE或INDIVIDUAL_ACKNOWLEDGE模式,并精心配置重发策略,确保消息在被正确处理后才被确认,同时避免过度重发导致的性能问题 。

系统的性能和资源限制也是选择确认模式和重发策略时需要考虑的因素。在资源有限的系统中,若选择过于复杂的确认模式和重发策略,可能会导致系统资源耗尽,影响系统的正常运行。因此,需要在可靠性和性能之间找到一个平衡点,通过合理的配置和优化,使系统既能满足业务需求,又能高效稳定地运行 。

总结与展望

总结要点

ActiveMQ 的消息确认与重发机制是保障消息可靠传输的核心组件。消息确认机制通过不同的确认模式,让生产者和消费者能够准确知晓消息的处理状态,为消息的可靠传输提供了基础保障。其中,JMS 规范中的AUTO_ACKNOWLEDGE、CLIENT_ACKNOWLEDGE、DUPS_OK_ACKNOWLEDGE和SESSION_TRANSACTED模式,以及 ActiveMQ 扩展的INDIVIDUAL_ACKNOWLEDGE模式,各自适用于不同的业务场景,开发者需要根据实际需求进行合理选择 。

重发机制则在消息处理出现异常时发挥关键作用,通过合理配置RedeliveryPolicy中的参数,如collisionAvoidanceFactor、maximumRedeliveries、maximumRedeliveryDelay等,可以有效地控制消息的重发策略,确保消息在处理失败时能够被重新发送,增加消息被成功处理的机会 。

这两种机制相互协作,确认机制为重发机制提供了消息处理状态的判断依据,重发机制则是确认机制的有力补充,在确认机制未能正常工作时,通过重新发送消息来保障消息的可靠传输。在实际应用中,需要根据业务的需求和系统的特点,在可靠性和性能之间进行权衡,选择合适的确认模式和重发策略,同时注意资源的合理利用和系统的稳定性 。

未来发展趋势

随着分布式系统的不断发展和应用场景的日益复杂,ActiveMQ 在可靠性保障方面有望迎来更多的创新和改进 。在重发策略方面,未来可能会引入更智能的算法,根据消息的类型、处理历史以及系统的实时负载等因素,动态地调整重发策略,进一步提高消息处理的成功率和系统的整体性能 。

ActiveMQ 与其他新兴技术的融合也将是一个重要的发展方向。与云计算技术的结合,能够实现更灵活的部署和资源管理,提高系统的可扩展性和弹性;与大数据、人工智能技术的融合,或许可以实现对消息流量的智能预测和优化,以及对消息处理过程的自动化监控和故障诊断 。

作为开发者,我们需要持续关注 ActiveMQ 的发展动态,不断学习和掌握新的技术特性,以便在实际项目中更好地应用 ActiveMQ,构建出更加可靠、高效的分布式系统 。

相关文章:

ActiveMQ 可靠性保障:消息确认与重发机制(二)

ActiveMQ 重发机制 重发机制的原理与触发条件 ActiveMQ 的重发机制是确保消息可靠传输的重要手段。当消息发送到 ActiveMQ 服务器后,如果消费者由于某些原因未能成功处理消息,ActiveMQ 会依据配置的重发策略,将消息重新放入队列或主题中&am…...

Vue+tdesign t-input-number 设置长度和显示X号

一、需求 Vuetdesign t-input-number 想要设置input的maxlen和显示X号 二、实现 t-input&#xff0c;可以直接使用maxlength和clearable属性 <t-input v-model"value" clearable maxlength10 placeholder"请输入" clear"onClear" blur&q…...

机器学习|通过线性回归了解算法流程

1.线性回归引入 2.决策函数 3. 损失函数 4.目标函数 5.目标函数优化问题 6.过拟合 7.正则化...

两向量平行公式、向量与平面平行公式、两平面平行公式;两向量垂直公式、向量与平面垂直公式、两平面垂直公式

目录 一、两向量平行公式​ 二、向量与平面平行公式​ 三、两平面平行公式​ 四、两向量垂直公式​ 五、向量与平面垂直公式​ 六、两平面垂直公式​ 观察与总结 一、两向量平行公式 二、向量与平面平行公式 三、两平面平行公式 四、两向量垂直公式 五、向量与平…...

vscode 个性化

vscode 个性化 设置 吸顶效果 使用前使用后 设置方法 VS Code 的粘性滚动预览 - 类似于 Excel 的冻结首行 插件 代码片段分享 - CodeSnap 使用方式 CtrlShiftP输入CodeSnap 唤起插件选择代码 行内报错提示 - Error Lens 使用前使用后 VSCode Error Lens插件介绍&…...

OpenHarmony-简单的HDF驱动

学习于&#xff1a;https://docs.openharmony.cn/pages/v5.0/zh-cn/device-dev/driver/driver-hdf-manage.md 首先&#xff0c;OpenHarmony系统里的HDF&#xff08;Hardware Driver Foundation&#xff09;驱动框架&#xff0c;已经规范设备驱动的模型、设备节点的配置与统一的…...

Copilot重磅更新:引用文件夹创建Word文档

大家好&#xff0c;AI技术笔记为您带来一则好消息&#xff1a; 根据广大用户的反馈&#xff0c;Microsoft 365 Copilot在Word中的引用能力全面升级啦&#xff01; 不管是撰写、审阅还是定稿文档&#xff0c;现在你可以更快、更高效地引用更多资料&#xff01; ✨三大重磅改进…...

SQL Server数据库提权的几种方法——提权教程

SQL Server数据库提权的几种方法——提权教程 一、简介 在利用系统溢出漏洞没有效果的情况下,可以采用数据库进行提权。 数据库提权的前提条件: 1、服务器开启数据库服务 2、获取到最高权限用户密码 (除Access数据库外,其他数据库基本都存在数据库提权的可能) 二、使用x…...

解决在Mac上无法使用“ll”命令

在 macOS 上&#xff0c;ll 命令是一个常见的别名&#xff0c;它通常是指向 ls -l 的。但是&#xff0c;如果你看到 zsh: command not found: ll&#xff0c;这意味着你当前的 zsh 配置中没有设置 ll 作为别名。 解决方法&#xff1a; 1. 使用 ls -l 命令 如果只是想查看目录…...

Dockerfile最佳实践:构建高效、安全的容器镜像

一、前言 Dockerfile是一个文本文档,它包含用户可以在命令行上调用的所有指令,每一条指令构建一层镜像。在日常开发中我们常常需要自己编写Dockerfile来构建镜像,而构建一个精巧、实用且高品质的镜像对运行环境来说尤为重要。下面我们来排一排如何构建这样的镜像。 二、目…...

mac电脑pytest生成测试报告

时隔了好久再写代码&#xff0c;感觉我之前的积累都白费了&#xff0c;全部忘记了&#xff0c;看来每一步都有记录对于我来说才是最好的。 最近又要重新搞接口自动化&#xff0c;然而是在mac电脑&#xff0c;对于我长期使用windows的人来说真的是个考验&#xff0c;对此次过程…...

鸿蒙 应用开发 项目资源结构及资源访问

三层工程结构 模块分类 使用...

C#学习第20天:垃圾回收

什么是垃圾回收&#xff1f; 定义&#xff1a;垃圾回收是一种自动内存管理机制&#xff0c;负责回收不再使用的对象所占用的内存。目的&#xff1a;通过自动化内存回收&#xff0c;减少内存泄漏的风险&#xff0c;并简化开发者的工作。 垃圾回收的核心概念 1. 垃圾回收器的工…...

C#学习笔记 项目引用添加异常

这个问题出现多次了 我觉得有必要记录一下 场景 同一个解决方案下添加了多个项目 我想在单元测试项目中引用一下项目1&#xff0c;按照步骤&#xff1a;添加引用- 项目- 浏览- 在指定目录下找到项目的工程文件XXXSystem.csproj- 确定 然后就触发了异常 解决方案 首先 清理解决…...

使用模块中的`XPath`语法提取非结构化数据

想要在代码中使用Xpath进行处理&#xff0c;就需要模块lxml 模块安装 pip install lxml -i https://pypi.tuna.tsinghua.edu.cn/simplelxml的使用 使用lxml转化为Element对象 from lxml import etreetext <div> <ul> <li class"item-1"><a …...

复杂度和顺序表(双指针方法)

目录 目录 目录 前言&#xff1a; 一、时间复杂度和空间复杂度 1.1概念 1.2规则 二、顺序表 2.1静态顺序表 2.2动态顺序表 三、双指针法 四、总结 前言&#xff1a; 时间复杂度和空间复杂度是用于判断算法好坏的指标&#xff0c;程序性能的核心指标。时间复杂度主要衡…...

day006-实战练习题-参考答案

老男孩教育-99期-实战练习题 1. 你作为"老男孩教育99期云计算"新晋运维工程师&#xff0c;在入职首日遭遇紧急事件&#xff1a; "生产环境3台Web服务器突发性能告警&#xff0c;技术总监要求你立即完成&#xff1a; 快速建立故障诊断工作区收集关键系统指标分…...

批量删除OpenStack实例

在Linux终端实现批量删除OpenStack实例&#xff0c;支持并发删除、安全确认、重试机制、优先清理运行中实例 #!/bin/bash # # 增强版 OpenStack 删除实例脚本 # 功能&#xff1a;支持并发删除、安全确认、重试机制、优先清理运行中实例 # 更新&#xff1a;2025年4月30日 # ##…...

楼宇智能化一、二章【期末复习】

一章、楼宇概述 智能建筑的定义:以建筑物为平台,基于对各类智能化信息的综合应用,集架构、系统、应用、管理及优化组合为一体,具有感知、传输、记忆、推理、判断和决策的综合智慧能力,形成以人、建筑、环境互为协调的整合体,为人们提供安全、高效、便利及可持续发展功能…...

三生原理与西方哲学的具体对比?

AI辅助创作&#xff1a; 一、本体论差异 ‌生成论与构成论的分野‌ 三生原理以《周易》“太极生两仪&#xff0c;两仪生四象&#xff0c;四象生八卦”、《道德经》“道生一&#xff0c;一生二&#xff0c;二生三&#xff0c;三生万物”为基础&#xff0c;构建动态层级生成的宇…...

呼叫中心座席管理系统:智能升级,高效服务

在数字化转型加速的今天&#xff0c;客户服务体验已成为企业竞争力的核心要素。传统 呼叫中心系统 依赖硬件设备、人工操作的模式已无法满足高效、智能、灵活的现代企业需求。畅信达呼叫中心 座席管理系统 V5.0应运而生&#xff0c;以WEBRTC软电话接入、智能座席辅助、知识库管…...

PCB设计实战技巧宝典:从库管理到布线优化的全流程解析

知识点1【PCB设计流程】 器件 符号 封装 &#xff08;3D模型 实物图 &#xff09; 流程介绍 1、如果没有需要的的库&#xff0c;先画库&#xff1a;器件&#xff0c;符号&#xff0c;封装 2、新建工程&#xff0c;放置器件在原理图 3、原理图转PCB 4、导出ROM和Gerber…...

微信小程序 XSS 防护知识整理

场景1&#xff1a;用户输入表单&#xff08;如评论框&#xff09; 错误做法&#xff1a;直接渲染未过滤的用户输入 // WXML <view>{{ userInput }}</view>// JS&#xff08;用户输入了恶意内容&#xff09; Page({data: { userInput: <script>alert("…...

平衡截断(Balanced Truncation)—— MTALAB 和 Python 实现

平衡截断balreal 算法原理平衡截断过程求解 HSV 为什么不使用定义而是使用 Cholesy 和SVD 分解&#xff1f; MATLAB 实践Python 实现 先验知识&#xff1a;可控性 Gramian W c W_c Wc​、可观性 Gramian W o W_o Wo​ 以及 Hankel 奇异值&#xff08;HSV&#xff09; σ i \s…...

机器手电机驱动器小体积解决方案

市场背景 随着工业4.0与人工智能技术的深度融合&#xff0c;智能机器人正加速渗透至医疗、物流、制造及服务等核心领域。据行业分析显示&#xff0c;2023年全球协作机器人市场规模同比增长23%&#xff0c;其中高精度关节驱动与小型化硬件设计成为技术迭代的关键需求。然而&…...

(数智化)采购管理系统平台开发费用

随着招标采购数智化升级加速&#xff0c;采购管理系统平台开发费用成为企业关注的焦点——从几十万到几百万不等&#xff0c;那么开发成本差异的背后藏着怎样的技术逻辑与价值密码呢&#xff1f;采购管理系统研发商郑州信源信息技术股份有限公司根据行业特点及客户实际实践总结…...

K8S Secret 快速开始

一、什么是 Secret&#xff1f; Kubernetes&#xff08;K8s&#xff09;中的 Secret 是一种用于存储和管理敏感信息&#xff08;如密码、令牌、证书、API 密钥等&#xff09;的资源对象。它避免了将敏感数据明文写入配置文件、镜像或代码中&#xff0c;提供了一种更安全的方式…...

TEN:开启实时语音交互的下一代AI Agent引擎

在AI技术飞速发展的今天&#xff0c;语音交互正成为人机交互的重要方式。传统的文本对话已无法满足用户对自然、高效沟通的需求&#xff0c;而TEN开源框架的出现&#xff0c;为开发者提供了构建超低延迟、可听可说的AI Agent的终极解决方案。 一、TEN的核心优势 超低延迟实时交…...

DeepSeek驱动的金市情绪量化:NLP解析贸易政策文本的情绪传导路径

【AI观察】政策信号与市场情绪的量化关联 基于自然语言处理技术对全球财经文本的情绪分析显示&#xff0c;4月30日亚盘时段现货黄金价格波动率较前日下降12.3%&#xff0c;与技术面修正指标呈现强相关性。特政府最新关税政策调整引发市场风险偏好指数&#xff08;RPI&#xff…...

JVM快速入门

目录 前言&#xff1a; 1.JVM的位置 2.JVM的体系结构 3.类加载器 类加载器中的一些方法和细节&#xff1a; 4.双亲委派机制 5.沙箱安全机制 概念 原理 Java 沙箱安全机制 应用场景 6.Native 7.方法区: 8.PC寄存器 9.栈 10.三种JVM HotSpot VM OpenJ9 VM Zin…...

spring--事务详解

spring事务 什么是事务 我们常说的事务&#xff0c;一般指数据库事务。 数据库事务是指 一个逻辑工作单元中执行的一系列&#xff08;数据库操作&#xff09;&#xff0c;要么一起成功&#xff0c;要么一起失败 当工作单元中的所有操作全部正确完成时&#xff0c;工作单元的…...

CSS实现DIV水平与垂直居中方法总结

大家好&#xff0c;欢迎来到程序视点&#xff01;我是你们的老朋友.小二&#xff01; CSS实现DIV水平与垂直居中方法总结 一、水平居中方案 标准方法 .center-div {margin-left: auto;margin-right: auto; }关键点&#xff1a;必须声明DOCTYPE&#xff08;推荐XHTML 1.0 Tran…...

AI 助力 Python:长时序植被遥感动态分析与生态评估

技术点目录 Python遥感数据处理基础及AI大模型应用技巧常用共享数据资源介绍AI辅助下地球科学数据处理方法及python实现AI辅助下植被参数遥感反演基本原理及python实现AI辅助下地球科学数据分析方法及python实现AI辅助下植被物候提取与分析实践应用AI辅助下植被时空动态分析及p…...

卫星变轨轨迹和推力模拟(单一引力源)MATLAB

代码说明&#xff1a; 常量定义&#xff1a;定义了万有引力常数、地球和月球的质量、半径以及地月平均距离。初始状态设置&#xff1a;设置卫星的初始位置、速度和姿态&#xff0c;以及月球的初始位置。模拟循环&#xff1a;在循环中计算地球和月球对卫星的引力&#xff0c;模…...

2025华东杯B题华东杯数学建模思路代码成品讲解工序安排问题

完整内容请看文章最下面的推广群 我将展示完整的文章、代码和结果 工序安排问题 摘要 本文研究的核心是制造业中的工序安排优化问题&#xff0c;源自实际生产管理中常见的资源分配挑战。问题背景设定为一家拥有100名工人和三条相同服装生产线的成衣制造厂&#xff0c;涉及裁…...

Python的赋值操作都是引用吗?

Python的赋值操作都是引用吗&#xff1f; 一言以蔽之&#xff1a;Python的赋值本质都是引用传递&#xff0c;但不可变对象的表现类似于值传递&#xff0c;这是由对象不可变性造成的效果。&#xff08;我非常确信这篇笔记说的内容都是正确的&#xff0c;这篇笔记是deepseekv3的…...

学习influxDB的安装和使用

influxDB的使用场景 nfluxDB 是一种时序数据库&#xff0c;时序数据库通常被用在监控场景,用来收集各个节点采集到的监控指标,以及监控指标产生的时间点.比如我们收集的主机的监控数据,可以通过查询语句,统计查询过去30分钟内cpu的平均使用率是多少. 相比关系型数据库与时序数…...

LeetCode209_长度最小的子数组

LeetCode209_长度最小的子数组 标签&#xff1a;#数组 #二分查找 #前缀和 #滑动窗口Ⅰ. 题目Ⅱ. 示例0. 个人方法&#xff1a;滑动窗口 标签&#xff1a;#数组 #二分查找 #前缀和 #滑动窗口 Ⅰ. 题目 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足…...

uniapp 实现时分秒 分别倒计时

效果 <view class"issue-price-countdown"> <CountDown :endTimestamp"1745996085000"></CountDown> </view> 引入组件 import CountDown from /components/CountDown.vue; <template> <view class&qu…...

ubuntu下一些环境配置

1、qhull sudo apt install qhull-bin libqhull-dev 2、cmake wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null echo "deb [signed…...

el-check-box多选框和el-select下拉框组合

<template><div><el-selectv-model"selectedValues"multiplecollapse-tagsplaceholder"请选择电压等级"change"handleChange"><el-option key"all" value"all" class"select-all-option">…...

SPSS PCA+判别分析

1&#xff0c; 主成分分析PCA 我们只要对数化的变量数据&#xff1a; &#xff08;1&#xff09;对数据进行标准化处理&#xff1a; 选择【分析】—【描述统计】—【描述】 添加要标准化的变量&#xff0c;勾选【将标准化值另存为变量(Z)】&#xff0c;再点确定 SPSS软件本身不…...

【阿里云大模型高级工程师ACP习题集】2.7 通过微调增强模型能力 (下篇)(⭐️⭐️⭐️ 重点章节!!!)

习题集: 【单选题】在阿里云大模型微调中,以下关于预训练和微调的说法,错误的是?( ) A. 预训练使用自监督/无监督学习方式 B. 微调通常在大规模通用数据集上进行 C. 预训练模型可以为下游任务提供初始模型 D. 微调能让模型适应具体的下游任务 【多选题】LoRA微调中,低秩…...

ag-grid-react 列表导出csv列表getDataAsCsv (自定义导出列表配置)自定义新增,修改导出内容

1.ag-grid-react getDataAsCsv 新增导出字段 方法&#xff1a;临时添加列再导出 你可以通过 columnApi.setColumnDefs() 临时添加需要导出的字段&#xff0c;然后再调用 getDataAsCsv&#xff0c;导出后再恢复原来的列。 import { useRef } from react; import { AgGridReac…...

深度解析:Vue.js 性能优化全景指南(从原理到实践)

前言 随着 Vue.js 应用复杂度提升&#xff0c;性能问题逐渐成为制约用户体验的瓶颈。本文将系统性地剖析 Vue.js 性能优化的 核心原理、关键技巧、工具链支持&#xff0c;并通过真实案例演示如何提升大型应用的运行时性能与加载效率。 一、渲染层优化&#xff1a;减少不必要的…...

Linux -- 操作系统

一、冯•诺依曼体系结构 1、概念 # 在计算机发展历程中&#xff0c;核心作用就是解决人类问题。为了实现这一目标&#xff0c;计算机系统需具备特定结构和功能。 首先&#xff0c;计算机要配备输入设备&#xff0c;如鼠标、键盘、摄像头、话筒、磁盘&#xff08;文件读取&…...

(初探)强化学习路径规划的理论基础与代码实现

一、强化学习路径规划的核心理论 1.1 马尔可夫决策过程&#xff08;MDP&#xff09;框架 理论基础&#xff1a; 路径规划问题可以建模为马尔可夫决策过程&#xff08;Markov Decision Process, MDP&#xff09;&#xff0c;由五元组(S, A, P, R, γ)定义。其中&#xff0c;S&…...

分布式链路ID实现

实现原理 api入口或者网关处生成traceId&#xff0c;调用服务时优先检查是否头部带有traceId&#xff0c;有则复用&#xff0c;没有则生成 实现方式 处理api相关traceId 1.通过filter复用或者生成traceId&#xff0c;并且将traceId输入到响应头中 import java.io.IOExcept…...

Java @Transactional事物隔离级别和默认值详解

在 Java 开发中&#xff0c;Transactional 注解是 Spring 框架中用于管理事务的重要工具。它提供了多种配置选项&#xff0c;其中事务隔离级别是一个关键属性。本文将深入探讨 Transactional 注解的隔离级别默认值&#xff0c;并通过具体代码示例帮助你更好地理解和应用事务隔离…...

ComputeShader绘制全屏纯色纹理

参考 Getting Started With Compute Shaders In Unity 环境 Win10 Unity20194.40 全屏纯色纹理示例 使用ComputerShader逐个像素设置颜色 ComputeShader脚本 设置纹理颜色 #pragma kernel CSMainRWTexture2D<float4> Result;//纹理 half4 solidColor;//颜色[numth…...