ActiveMQ 与其他 MQ 的对比分析:Kafka/RocketMQ 的选型参考(二)
ActiveMQ、Kafka 和 RocketMQ 详细对比
性能对比
在性能方面,Kafka 和 RocketMQ 通常在高吞吐量场景下表现出色,而 ActiveMQ 则相对较弱。根据相关测试数据表明,Kafka 在处理大规模日志数据时,单机吞吐量可以达到每秒数十万条甚至百万条消息,其顺序写磁盘和批量处理的特性使得它在高并发写入时性能卓越 。例如,在一个大型互联网公司的日志收集系统中,Kafka 每天能够处理数十亿条日志消息,并且保持极低的延迟。RocketMQ 的单机吞吐量也能达到十万级,在阿里的电商业务中,RocketMQ 能够稳定地支撑每年 “双 11” 期间万亿级别的消息流转,即使在高并发的情况下,也能保证消息的低延迟传输,消息延迟通常在毫秒级以内。而 ActiveMQ 的单机吞吐量一般在万级,相比之下,在高并发场景下,其性能瓶颈较为明显,更适合一些对吞吐量要求不高的中小型企业应用场景。
功能特性对比
在消息模型上,ActiveMQ 全面支持 JMS 规范,提供了点对点(P2P)和发布 - 订阅(Pub - Sub)两种经典的消息模型,开发者可以根据不同的业务需求灵活选择 。Kafka 主要基于发布 - 订阅模型,通过主题(Topic)来组织和管理消息,并且引入了分区(Partition)和消费者组(Consumer Group)的概念,实现了消息的并行消费和负载均衡,适用于大规模数据的实时处理和分发。RocketMQ 则结合了发布 - 订阅和消息队列模型的特点,既支持普通的消息发布订阅,也支持顺序消息和事务消息等高级特性。在消息持久化方面,ActiveMQ 支持多种持久化策略,包括 KahaDB、LevelDB 和 JDBC 等,可以将消息持久化到磁盘或数据库中,确保消息在系统故障时不丢失 。Kafka 通过将消息持久化到磁盘的日志文件中,利用顺序写和高效的文件存储机制,保证了消息的可靠性和高吞吐量,同时支持数据的多副本复制,进一步提高了数据的容错性。RocketMQ 采用了基于 CommitLog 的持久化方式,将所有消息顺序写入一个大的日志文件中,并通过 ConsumeQueue 作为索引,实现了快速的消息查询和消费,具有极高的消息堆积能力,能够支持 10 亿级别的消息堆积而不会导致性能下降 。在事务支持方面,ActiveMQ 和 RocketMQ 都提供了事务消息的功能,确保消息在分布式事务中的一致性。以 RocketMQ 为例,在电商的订单支付场景中,通过事务消息可以保证订单状态和支付状态的原子性操作,即要么两者都成功,要么都失败,避免出现数据不一致的情况。而 Kafka 在早期版本中对事务的支持相对较弱,不过随着版本的不断更新,也逐渐增加了对事务的支持,但其事务实现机制和应用场景与 ActiveMQ 和 RocketMQ 有所不同。在消息顺序性保证方面,RocketMQ 可以通过将消息发送到同一个队列或分区,以及使用单线程消费等方式,严格保证消息的顺序性 。例如在电商的订单处理流程中,订单创建、支付、发货等消息必须按照顺序依次处理,RocketMQ 能够很好地满足这种需求。Kafka 在一定程度上也可以保证消息的顺序性,前提是生产者将具有相同 Key 的消息发送到同一个分区,并且消费者从该分区按顺序消费消息,但当出现分区重分配或 Broker 故障时,可能会导致消息顺序的短暂混乱。ActiveMQ 虽然也可以通过一些配置和编程技巧来保证消息顺序,但相对来说实现较为复杂,并且在高并发场景下的性能和可靠性不如 RocketMQ 和 Kafka。
可靠性和可用性对比
在可靠性和可用性方面,Kafka 和 RocketMQ 都采用了分布式架构,具备较强的容错能力 。Kafka 通过多副本机制,将每个分区的数据复制到多个 Broker 节点上,当某个 Broker 出现故障时,其他副本可以自动切换为领导者(Leader)继续提供服务,确保数据不丢失,并且不会影响系统的正常运行。RocketMQ 同样采用了主从架构,通过异步复制和同步刷盘等机制,保证了消息的可靠性,即使在部分节点故障的情况下,也能通过自动切换和数据恢复机制,确保消息的正常传递和系统的高可用性。在阿里的生产环境中,RocketMQ 经过多年的实践验证,能够稳定地支持大规模的分布式系统,在各种复杂的故障场景下都能保证消息的可靠传输。而 ActiveMQ 虽然也支持主从架构实现高可用性,但在集群部署和管理方面相对复杂,并且在面对大规模消息处理和高并发场景时,其可靠性和可用性表现不如 Kafka 和 RocketMQ。此外,在数据丢失风险方面,Kafka 和 RocketMQ 通过合理的配置和优化,可以做到几乎零数据丢失,而 ActiveMQ 在某些情况下,可能会因为消息确认机制、持久化策略等配置不当,导致少量消息丢失的风险。
运维管理对比
从安装部署难度来看,Kafka 的安装和配置相对简单,只需要安装 JDK 和 Kafka 软件包,进行一些基本的配置即可启动运行,并且 Kafka 提供了丰富的命令行工具和脚本,方便进行集群的管理和维护 。RocketMQ 的安装部署也较为便捷,其官方文档提供了详细的安装指南和配置说明,开发者可以根据实际需求快速搭建起 RocketMQ 集群。而 ActiveMQ 的安装和配置相对复杂一些,需要考虑更多的参数和依赖项,并且在集群部署时,需要进行更多的配置和协调工作。在监控管理工具方面,Kafka 有许多优秀的第三方监控工具,如 Kafka-Manager、Confluent Control Center 等,这些工具可以实时监控 Kafka 集群的各项指标,如吞吐量、延迟、副本状态等,方便管理员及时发现和解决问题 。RocketMQ 也提供了自己的监控管理工具,如 RocketMQ Console,通过该工具可以直观地查看集群的拓扑结构、消息堆积情况、消费者状态等信息,并且支持对集群进行动态配置和管理。ActiveMQ 同样有一些监控工具,如 ActiveMQ Web Console,但在功能的丰富性和易用性方面,相对 Kafka 和 RocketMQ 的监控工具略显不足。在日常运维复杂度方面,Kafka 和 RocketMQ 由于其分布式架构和自动化的故障转移机制,在日常运维中相对省心,管理员只需要关注集群的整体性能和资源使用情况,进行一些常规的维护和优化工作即可 。而 ActiveMQ 由于其传统的架构和相对复杂的配置,在日常运维中需要更多的人工干预,例如在处理消息堆积、节点故障恢复等问题时,需要管理员具备更丰富的经验和技能。
生态系统和社区支持对比
Kafka 拥有庞大而活跃的社区,其生态系统非常丰富,与众多大数据和云计算技术紧密集成,如 Hadoop、Spark、Flink、AWS、Azure 等 。在大数据领域,Kafka 几乎成为了实时数据处理和传输的标准组件,有大量的开源项目和工具围绕 Kafka 进行开发,开发者可以很容易地找到相关的技术文档、教程和解决方案,遇到问题时也能在社区中得到及时的帮助和支持。RocketMQ 虽然开源时间相对较短,但在国内也拥有广泛的用户群体和活跃的社区,尤其是在电商、金融等行业得到了大量的应用 。阿里在 RocketMQ 的开源和社区建设方面投入了大量的精力,不断完善其功能和性能,并且提供了详细的技术文档和最佳实践案例。同时,RocketMQ 也在积极与其他开源项目和社区进行合作,拓展其生态系统。而 ActiveMQ 的社区活跃度近年来有所下降,官方对其维护和更新的频率也相对较低,虽然其生态系统仍然存在一些相关的工具和插件,但在新技术的集成和应用方面,相对 Kafka 和 RocketMQ 略显滞后 。在技术文档方面,Kafka 和 RocketMQ 的官方文档都非常详细和全面,涵盖了从安装部署、配置优化到高级特性使用等各个方面,并且不断更新以适应版本的变化。而 ActiveMQ 的文档虽然也较为丰富,但在一些新特性和应用场景的介绍上,不如 Kafka 和 RocketMQ 及时和深入。
MQ 选型建议
性能优先场景
若业务场景对吞吐量和低延迟有着极高的要求,Kafka 和 RocketMQ 是更为理想的选择 。Kafka 凭借其独特的顺序写磁盘和批量处理机制,在处理大规模日志数据、实时流数据等场景下,展现出卓越的性能,单机吞吐量可达每秒数十万甚至百万条消息,延迟通常在毫秒级以内。以大型互联网公司的实时数据处理平台为例,Kafka 每天能够稳定处理数十亿条数据记录,为业务的实时分析和决策提供了强大的支持。RocketMQ 同样具备出色的性能表现,在阿里的电商业务中,每年 “双 11” 期间,面对万亿级别的消息流转,RocketMQ 能够保证消息的低延迟传输和高效处理,确保整个交易流程的顺畅进行。相比之下,ActiveMQ 的性能在高并发场景下相对较弱,更适合对性能要求不那么苛刻的中小型企业应用。
功能完整性需求
当业务需要事务支持、严格的消息顺序保证等复杂功能时,RocketMQ 的优势便凸显出来 。在金融行业的交易系统中,每一笔交易的订单创建、支付、清算等环节都必须严格按照顺序执行,并且要保证数据的一致性,RocketMQ 的顺序消息和事务消息功能能够很好地满足这些需求。通过事务消息,RocketMQ 确保了在分布式事务场景下,消息的发送与业务操作要么全部成功,要么全部回滚,避免了数据不一致的风险。而 Kafka 虽然也逐渐增加了对事务的支持,但其事务实现机制和应用场景相对有限,在消息顺序保证方面,也不如 RocketMQ 严格和灵活。ActiveMQ 虽然支持事务和一定程度的消息顺序控制,但在高并发和大规模消息处理场景下,其功能的稳定性和可靠性不如 RocketMQ。
项目规模和资源限制
对于小型项目或资源有限的场景,ActiveMQ 因其轻量级的特点和相对简单的配置,成为一个不错的选择 。它对硬件资源的要求较低,部署和维护成本也相对较低,能够快速搭建起消息队列服务,满足小型企业或项目的基本消息通信需求。例如,一些初创企业在业务初期,数据量和并发量都较小,使用 ActiveMQ 可以快速实现系统的解耦和异步通信,降低开发成本和时间。而对于大型项目,尤其是那些需要处理海量数据和高并发请求的场景,Kafka 和 RocketMQ 的分布式架构、高吞吐量和强大的扩展性则更能满足需求 。它们能够通过水平扩展集群规模,轻松应对业务增长带来的挑战,确保系统的高性能和高可用性。像大型电商平台、社交媒体平台等,每天要处理数以亿计的用户请求和消息,Kafka 和 RocketMQ 能够稳定地支撑起这样大规模的消息处理任务。
技术栈和团队能力
团队的技术栈和对不同 MQ 技术的熟悉程度也是选型时需要考虑的重要因素 。如果团队主要使用 Java 技术栈,并且对 JMS 规范有深入的了解和丰富的经验,那么 ActiveMQ 可能是一个较为容易上手和集成的选择,因为它是 JMS 规范的经典实现。若团队在大数据领域有丰富的经验,并且熟悉 Kafka 的生态系统和相关技术,如 Spark Streaming、Flink 等,那么在处理大规模数据的实时处理和传输场景下,Kafka 无疑是最佳选择 。对于那些对分布式系统和消息队列有较高技术要求,且希望使用功能丰富、性能卓越的 MQ 的团队来说,如果有能力学习和掌握 RocketMQ 的相关技术,那么 RocketMQ 将是一个非常有吸引力的选项,特别是在电商、金融等对消息处理要求严苛的行业 。
总结
ActiveMQ、Kafka 和 RocketMQ 作为消息队列领域的代表性产品,各自拥有独特的优势和适用场景 。在实际的选型过程中,没有绝对的最佳选择,而是需要综合考虑业务场景、性能需求、功能特性、可靠性、运维管理以及团队技术栈等多方面因素。不能仅仅依据单一指标就做出决策,例如不能仅仅因为 Kafka 的高吞吐量就盲目选择它,而忽略了业务对消息顺序性和事务的严格要求;也不能因为 ActiveMQ 对 JMS 规范的支持就忽视了其在高并发场景下的性能瓶颈。只有全面、深入地分析自身的实际需求,并结合各个 MQ 产品的特点,才能做出最合适的选择,从而为分布式系统的高效、稳定运行奠定坚实的基础 。希望通过本文的对比分析,能够为读者在消息队列选型时提供有价值的参考,助力大家在分布式系统开发的道路上做出明智的技术决策 。
相关文章:
ActiveMQ 与其他 MQ 的对比分析:Kafka/RocketMQ 的选型参考(二)
ActiveMQ、Kafka 和 RocketMQ 详细对比 性能对比 在性能方面,Kafka 和 RocketMQ 通常在高吞吐量场景下表现出色,而 ActiveMQ 则相对较弱。根据相关测试数据表明,Kafka 在处理大规模日志数据时,单机吞吐量可以达到每秒数十万条甚…...
HTML学习笔记(7)
一、什么是jQuery jQuery 是一个 JavaScript 库。他实现了JavaScript的一些功能,并封装起来,对外提供接口。 例子实现一个点击消失的功能,用JavaScript实现 <!DOCTYPE html> <html lang"en"> <head><meta …...
Jenkis安装、配置及账号权限分配保姆级教程
Jenkis安装、配置及账号权限分配保姆级教程 安装Jenkins下载Jenkins启动Jenkins配置Jenkins入门Jenkins配置配置中文配置前端自动化任务流新建任务拉取代码打包上传云服务并运行配置后端自动化任务流新建任务拉取代码打包上传云服务并运行账号权限分配创建用户分配视图权限安装…...
面向对象编程(Object-Oriented Programming, OOP)是什么?
李升伟 编译 简介 如果你已经接触过软件开发领域的话,你肯定听说过"面向对象编程"(Object-Oriented Programming, OOP)这个术语。但你知道什么是OOP吗?为什么它如此重要?在这篇文章中我们将深入解析OOP的基…...
Hotspot分析(1):单细胞转录组识别信息基因(和基因模块)
这一期我们介绍一个常见的,高分文章引用很高的一个单细胞转录组分析工具Hotspot,它可针对单细胞转录组数据识别有意义基因或者基因module,类似于聚类模块。所谓的”informative "的基因是那些在给定度量中相邻的细胞之间以相似的方式表达…...
从图文到声纹:DeepSeek 多模态技术的深度解析与实战应用
目录 一、引言二、DeepSeek 技术基础2.1 架构与原理2.2 多模态能力概述 三、文本与图像关联应用3.1 图文跨模态对齐技术3.1.1 技术原理3.1.2 DeepSeek 的独特方法 3.2 图像生成与文本描述3.2.1 应用案例3.2.2 技术实现 3.3 多模态检索系统中的应用3.3.1 系统搭建流程3.3.2 实际…...
cuDNN 9.9.0 便捷安装-Windows
#工作记录 从 CUDA12.6.3 和 cuDNN9.6.0 版本起,开启了使用 exe 安装包直接进行安装升级的支持模式,彻底改变了以往那种繁琐的安装流程。 在这两个版本之前,开发者在安装 CUDA 和 cuDNN 时,不得不手动下载 cuDNN 压缩包…...
profile软件开发中的性能剖析与内存分析
在软件开发中,“Profile”(性能剖析/性能分析)指的是通过工具详细监控程序运行时的各种性能指标,帮助开发者定位代码中的效率瓶颈或资源问题。当有人建议你 “profile 一下内存问题” 时,本质上是让你用专业工具动态分…...
0.0973585?探究ts_rank的score为什么这么低
最近在使用postgres利用ts_rank进行排序找到最符合关键词要求得内容时发现: 即使是相似的内容,得分也是非常非常得低(其中一个case是0.0973585)。看起来很奇怪,非常不可行。于是我又做了一个简单测的测试: SELECT ts_rank(to_tsvector(english, skirt), to_tsquery(skirt)…...
架构思维:利用全量缓存架构构建毫秒级的读服务
文章目录 一、引言二、全量缓存架构概述三、基于 Binlog 的缓存同步方案1. Binlog 原理2. 同步中间件3. 架构整合核心收益 四、Binlog 全量缓存的优缺点与优化优点缺点与取舍优化策略 五、其他进阶优化点六、总结 一、引言 架构思维:使用简洁的架构实现高性能读服务…...
永磁同步电机控制算法--基于PI的位置伺服控制
一、原理介绍 永磁同步伺服系统是包含了电流环、速度环和位置环的三环控制系统。 伺服系统通过电流检测电路和光电编码器检测电动机三相绕组电流和转子位置θ,通过坐标变换,计算出转矩电流分量iq和励磁电流分量id。 位置信号指令与实际转子位置信号的差…...
P1603 斯诺登密码详解
这个题目,我详细讲题解的两种方法,洛谷里面的题解,我是觉得大部分的时候是差了点意思的,不是看不懂,就是新知识没人详细讲解,我也是经常破防 先看题目: 题目是什么意思: 1…...
计算方法实验六 数值积分
【实验性质】综合性实验。 【实验目的】理解插值型积分法;掌握复化积分法算法。 【实验内容】 1对 ,用复化梯形积分和变步长梯形积分求值(截断误差不超过)。 【理论基础】 积分在工程中有重要的应用,数值积分…...
avx指令实现FFT
avx指令实现FFT 参考代码实现的难点补充的avx指令fft_avx256实现可继续优化的点 C语言实现FFT变换参考的代码是参考大模型生成的代码,很明显其使用的是位反转和蝶形变换的方法实现的FFT变换。但是大模型无法正确的生成用avx指令写的FFT变换的算法,所以这…...
Nginx 核心功能之正反代理
目录 一、Nginx 二、正向代理 三、反向代理 四、Nginx 缓存 1. 缓存功能的核心原理和缓存类型 2. 代理缓存功能设置 五、Nginx rewrite和正则 (1)Nginx 正则 (2)nginx location (3)Rewrite &…...
function包装器的意义
一:function包装器的概念 function包装器 也叫作适配器。C中的function本质是一个类模板,也是一个包装器。 二:需要function包装器的场景 那么我们来看看,我们为什么需要function呢? 一个需要包装器的场景:…...
【ThinkBook 16+ 电脑重做系统type-c接口部分功能失效解决方案】
ThinkBook 16 电脑重做系统type-c接口部分功能失效解决方案 问题回顾:重做电脑后,type-c接口部分功能失效,充电正常,连接外置硬盘正常,无法连接外拓显示器,显示usbc无信号(不同设备可能显示不同…...
【言语理解】中心理解题目之选项分析
front:中心理解题目之结构分析 4.1两出处六有误 两出处 背景、例子、分析论证中提炼的选项出处有误,一般不选但是和因此之前、不是而是 的不是部分、被指代部分提炼的选项出处有误,一般不选。 六有误 片面:原文并列谈论两方面,只…...
[原创](现代Delphi 12指南):[macOS 64bit App开发]: [1]如何加载动态链接库, 并无缝支持原生底层开发?
[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、…...
VTK入门指南
什么是VTK VTK (Visualization Toolkit) 是一个开源的、跨平台的计算机图形学、图像处理和可视化系统。它提供了丰富的算法和高级工具,用于3D计算机图形学、图像处理和可视化。 安装VTK Windows平台 下载预编译版本: 从VTK官网或GitHub发布页面下载 …...
开始一个vue项目-day2
这次新增的功能有: 1、使用cookie存储token 参考网站:https://vueuse.org/ 安装包: npm i vueuse/integrations npm i universal-cookie^7 2、cookie的设置读取和删除,代码:composables/auth.js import { useCookies } from …...
Baklib驱动企业知识管理AI升级
Baklib如何实现知识AI化 Baklib通过构建企业级知识中台的核心能力,将人工智能技术深度融入知识管理的全生命周期。其底层架构采用自然语言处理(NLP)与机器学习算法,实现对企业文档的智能分类与语义解析。例如,系统可自…...
Linux线程同步机制深度解析:信号量、互斥锁、条件变量与读写锁
Linux线程同步机制深度解析:信号量、互斥锁、条件变量与读写锁 一、线程同步基础 在多线程编程中,多个线程共享进程资源(如全局变量、文件描述符)时,若对共享资源的访问不加控制,会导致数据不一致或竞态条…...
js逆向绕过指纹识别
一、兼容性说明 官方支持 curl_cffi 明确支持 Windows 平台,并提供了预编译的安装包。其核心功能(如浏览器指纹模拟、HTTP/2 支持)在 Windows 上与 Linux/macOS 表现一致。 版本要求 • Python 3.8 及以上版本(推荐 Pyth…...
笔记整理六----OSPF协议
OSPF 动态路由的分类: 1.基于网络范围进行划分--将网络本身划分为一个个AS(自治系统---方便管理和维护) 内部网关协议---负责AS内部用户之间互相访问使用的协议 IGP--RIP EIGRP ISIS OSPF 外部网关协议--负责AS之间(整个互联网&…...
USB Type-C是不是全方位优于其他USB接口?
首先,USB TypeC接口内部引脚呈中心对称分布,正插、反插都能用,所以可以肓插,使用起来非常方便顺手。 其次,USB TypeC接口体积很小,特别是很薄,几乎适用于所有设备。而USB TypeA就是因为不方便应…...
信息系统监理师第二版教材模拟题第一组(含解析)
信息系统监理基础 信息系统监理的核心目标是( ) A. 降低项目成本 B. 确保项目按合同要求完成 C. 提高开发人员技术水平 D. 缩短项目周期答案:B 解析:信息系统监理的核心目标是确保信息系统工程项目按照合同要求、技术标准和规范完成,保障项目质量、进度和投资控制。 下列哪…...
NPP库中libnppist模块介绍
1. libnppist 模块简介 libnppist 是 NPP 库中专注于 图像统计分析与直方图计算 的模块,提供 GPU 加速的统计操作,适用于计算机视觉和图像处理中的特征提取与分析。 核心功能包括: 直方图计算(支持单通道/多通道) 统…...
k230摄像头初始化配置函数解析
通过 csi id 和图像传感器类型构建 Sensor 对象。 在图像处理应用中,用户通常需要首先创建一个 Sensor 对象。CanMV K230 软件可以自动检测内置的图像传感器,无需用户手动指定具体型号,只需设置传感器的最大输出分辨率和帧率。有关支持的图像…...
Spring的循环依赖问题
文章目录 一、什么是循环依赖?二、Spring 是如何解决循环依赖的?1.三级缓存2.解决循环依赖的流程 三、三级缓存机制可以解决所有的循环依赖问题吗?1. 为什么三级缓存在这里无效?2. 如何解决构造器循环依赖? 四、循环依…...
华为鸿蒙PC:开启国产操作系统自主化新纪元
——全栈自研、生态重构与未来挑战 2025年5月,一个值得中国科技界铭记的时间点。华为正式推出首款搭载鸿蒙操作系统(HarmonyOS)的PC产品。乍一听这像是又一款新电脑的发布,但它背后的意义远比表面更深远——这是中国首次推出从操…...
【LeetCode Hot100】动态规划篇
前言 本文用于整理LeetCode Hot100中题目解答,因题目比较简单且更多是为了面试快速写出正确思路,只做简单题意解读和一句话题解方便记忆。但代码会全部给出,方便大家整理代码思路。 70. 爬楼梯 一句话题意 每次爬1or2,问爬到n的路…...
【Java JUnit单元测试框架-60】深入理解JUnit:Java单元测试的艺术与实践
在当今快节奏的软件开发环境中,保证代码质量的同时又要快速交付成为了开发者面临的主要挑战。单元测试作为软件测试金字塔的基石,为我们提供了一种高效的解决方案。而在Java生态系统中,JUnit无疑是单元测试框架的代名词。本文将全面探讨JUnit…...
Java运算符学习笔记
运算符 -运算符介绍 运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。 算数运算符赋值运算符关系运算符[比较运算符]逻辑运算符位运算符[需要二进制基础]三元运算符 -算数运算符 介绍 算数运算符是对数值类型的变量进行运算的,在Java程…...
shell编程补充内容(Linux课程实验3)
一、求前五个偶数的和 1.这里先介绍要用到的expr 1. 整数计算 # 加法(注意运算符两侧空格) $ expr 10 20 30# 带括号的运算(需要转义) $ expr \( 10 20 \) \* 2 60# 取模运算 $ expr 15 % 4 注意:仅支持整数&…...
iview table组件 自定义表头
在实际项目开发中,我们经常会用到各种各样的表格,比如在表格表头中填加按钮,下拉菜单,图标等等,在网上搜了一段时间发现比较少,所以写好之后就想着分享出来给有需要的人参考参考,例如下面这种表…...
二叉搜索树实现删除功能 Java
在开始编写删除功能之前,先要编写好searchParent()(寻找父节点)和min()(查找树中最小值)两个函数,后期会在删除功能中使用到。 searchParent()的编写 /*** * param value* return Node*/public Node searchParent(int value){if(rootnull) return null;…...
Android Framework学习三:zygote剖析
文章目录 Zygote工作内容起始点初始化步骤启动 ZygoteInitZygoteInit.main () 函数内部操作 Zygote如何启动SystemServer参与的类和文件流程步骤进程创建完成后的处理 Framework学习之系列文章 在 Android 系统中,Zygote 是一个非常关键的进程,有 “App …...
LLM-Based Agent及其框架学习的学习(三)
文章目录 摘要Abstract1. 引言2. 推理与规划2.1 推理2.2 规划2.2.1 计划指定2.2.2 计划反思 3. 迁移与泛化3.1 未知任务的泛化3.2 情景学习3.3 持续学习 4. 学习Crewai和LangGraph4.1 Crewai4.2 LangGraph 参考总结 摘要 本文系统阐述了基于大语言模型的智能体在认知架构中的核…...
修复笔记:获取 torch._dynamo 的详细日志信息
一、问题描述 在运行项目时,遇到与 torch._dynamo 相关的报错,并且希望获取更详细的日志信息以便于进一步诊断问题。 二、相关环境变量设置 通过设置环境变量,可以获得更详细的日志信息: set TORCH_LOGSdynamo set TORCHDYNAM…...
阿里云服务器全栈技术指导手册(2025版)
阿里云服务器全栈技术指导手册(2025版) 一、基础配置与核心架构设计 1. 精准实例选型策略 • 通用计算场景:选择ECS通用型(如ecs.g7)实例,搭载第三代Intel Xeon处理器,适合Web应用、中小型数…...
llfc项目笔记客户端TCP
一、整体架构流程图(简洁版) 复制代码 【客户端启动】 |--- 初始化TcpMgr(单例)|--- 连接信号初始化:连接成功、断开、错误、发数据| 【用户操作:登录成功】|--- 触发发起跳转:发起连接(sig_connect_tcp)| 【TcpMgr收到连接请求】|--- 连接到服务器(connectToHost)…...
基于python的task--时间片轮询
目录 前言 utf-8 chinese GB2312 utf-8 排除task.c chinese GB2312 排除task.c 运行结果 前言 建议是把能正常工作的单个功能函数放到一起(就和放while函数里的程序一样),程序会按顺序自动配置。 不同的格式已经对应给出。 utf-8 impo…...
《前端秘籍:SCSS阴影效果全兼容指南》
在前端开发的旅程中,为网页元素添上阴影效果,就像为一幅画作点缀光影,能让页面瞬间生动起来,赋予元素层次感与立体感。可当我们满心欢喜地在SCSS中写下阴影代码,满心期待着在各种浏览器中都呈现出完美效果时࿰…...
强化学习机器人模拟器——RobotApp:一个交互式强化学习模拟器
RobotApp 是一个基于 Python 和 Tkinter 的交互式强化学习(Reinforcement Learning, RL)模拟器,集成了 GridWorld 环境和 QAgent 智能体,支持 Q-learning、SARSA 和 SARSA(λ) 算法。本博客将详细解析 robot_app.py 的功能、架构和使用方法,展示其如何通过直观的 GUI 界面…...
2025-04-26-利用奇异值重构矩阵-美团
2025-04-26-利用奇异值重构矩阵-美团 题目内容 在一家致力于图像处理的科技公司,你被分配到一个新项目,目标是开发一种图像压缩算法,以减少存储空间并加速传输。团队决定使用奇异值分解( S V D SVD SVD)对图像进行降…...
《解锁SCSS算术运算:构建灵动样式的奥秘》
SCSS作为CSS预处理器,算术运算功能犹如一颗璀璨明珠,赋予我们动态计算样式属性值的强大能力,让网页样式不再是一成不变的刻板呈现,而是能够根据各种条件和需求灵动变化。 在SCSS的世界里,算术运算绝非孤立的存在&…...
STM32Cube-FreeRTOS任务管理工具函数-笔记
STM32Cube-FreeRTOS任务管理工具函数-笔记 一、获取任务句柄的函数1. 创建任务并获取句柄2. 获取当前任务句柄3. 获取空闲任务句柄4. 根据任务名称获取句柄 二、单个任务操作相关函数1. 程序在运行时可以获取或改变一个任务的优先级3. 获取任务信息4. 获取任务信息5. 获取任务名…...
【第三十四周】多模态大模型调研
多模态大模型调研 摘要Abstract引言多模态技术的主要方向视觉-语言大模型(Vision-Language Large Models, VLLMs)语音-语言大模型(Speech-Language Large Models, SLLMs)音乐 - 语言大模型(Music-Language Large Model…...
【2025最新】Baichuan-M1-instruct部署教程
首先机器至少要A100、4090、3090 这里选AutoDL的4090D,运行至少要20G显存。这里镜像选基础镜像11.8【更新!!!!!!!!!24G带不动!显存不够】 有时候…...