探寻软件稳定性的奥秘
在软件开发的广袤领域中,软件的稳定性宛如基石,支撑着整个软件系统的运行与发展。《发布!软件的设计与部署》这本书的第一部分,对软件稳定性进行了深入且全面的剖析,为软件开发人员、架构师以及相关从业者们提供了极具价值的见解与指导。深入理解这部分内容,不仅能够帮助我们规避软件开发过程中可能出现的稳定性陷阱,更能引导我们设计并构建出更为健壮、可靠的软件系统,以满足日益复杂多变的业务需求与用户期望。接下来,让我们一同走进这部分内容,探寻软件稳定性的奥秘。
一、稳定性反模式:软件系统中的暗礁
在软件开发的复杂海洋中,存在着许多看似平常却可能导致软件稳定性问题的设计方式,书中将其定义为稳定性反模式。这些反模式如同隐藏在暗处的暗礁,稍不留意就可能使软件系统这艘大船触礁受损。
(一)集成点:系统耦合的风险
随着软件系统规模的不断扩大以及功能的日益复杂,不同系统之间、同一系统的不同组件之间往往需要进行大量的集成工作。这就产生了众多的集成点,而这些集成点正是软件系统稳定性的潜在风险源。每一个集成点都像是软件系统中的一个连接节点,一旦这个节点出现问题,例如通信协议不匹配、数据格式不一致或者接口调用异常等,就可能引发连锁反应,影响到与之相连的其他部分,进而威胁整个软件系统的稳定性。例如,在一个电商系统中,订单管理模块与支付模块之间存在集成点。若支付模块升级后接口发生变化,而订单管理模块未能及时适配,就可能导致用户下单后无法正常支付,严重影响用户体验和业务流程。
(二)连锁反应与连锁故障:多米诺骨牌效应
连锁反应和连锁故障是软件系统中令人头疼的问题。当软件系统中的某个部分出现故障时,如果系统的设计没有充分考虑容错和隔离机制,这个故障就可能像推倒的多米诺骨牌一样,引发一系列其他部分的故障。在一个基于微服务架构的应用中,服务 A 依赖服务 B,服务 B 又依赖服务 C。若服务 C 出现性能问题,响应时间变长,服务 B 可能会因为等待服务 C 的响应而积压大量请求,进而导致服务 B 自身资源耗尽而崩溃。服务 B 的崩溃又会使服务 A 无法获取所需数据,最终导致服务 A 也无法正常工作,整个系统陷入瘫痪。这种连锁反应和连锁故障的发生,往往是由于系统中各部分之间的耦合度过高,缺乏有效的故障隔离和熔断机制。
(三)用户:不稳定因素的引入
用户作为软件系统的使用者,其行为具有多样性和不可预测性,这也可能成为软件稳定性的一个挑战。例如,用户可能会在短时间内发起大量请求,对系统造成巨大的负载压力,导致系统性能下降甚至崩溃,这就是所谓的 “用户雪崩效应”。在一些热门活动期间,如电商平台的促销活动,大量用户同时涌入系统进行抢购,若系统没有做好负载均衡和流量控制,就很容易出现卡顿、死机等问题。此外,用户还可能输入非法数据,这可能导致软件系统在数据处理过程中出现错误,进而影响系统的正常运行。在一个用户注册系统中,若用户故意输入不符合格式要求的邮箱地址或密码,而系统没有进行严格的输入验证,就可能在后续的流程中引发数据存储或逻辑处理错误。
(四)阻塞的线程:资源占用的困境
线程在软件系统中负责执行各种任务,但如果线程被不合理地阻塞,就会占用宝贵的系统资源,导致其他任务无法正常执行,从而影响软件的稳定性。当一个线程在等待某个资源(如锁、文件句柄、网络连接等)时,如果这个资源长时间无法获取,线程就会一直处于阻塞状态。在多线程环境下,若大量线程都因为等待资源而阻塞,系统的资源利用率会急剧下降,甚至可能导致系统死锁。例如,在一个数据库访问程序中,多个线程同时请求访问数据库资源,若锁机制设置不合理,可能会出现线程 A 持有锁等待线程 B 释放另一个锁,而线程 B 又持有另一个锁等待线程 A 释放当前锁的情况,最终导致两个线程都无法继续执行,整个程序陷入死锁状态。
(五)自我否定攻击:系统自身的伤害
自我否定攻击是一种较为特殊的稳定性反模式,指的是软件系统在出现问题时,由于自身的一些错误处理机制或设计缺陷,反而对自身造成进一步的伤害。例如,在一个日志记录系统中,当系统磁盘空间不足时,按照正常的设计应该停止记录日志或者进行相应的清理操作。但如果系统的错误处理机制不完善,可能会在磁盘空间已满的情况下,仍然不断尝试写入日志,导致系统资源被大量消耗,甚至引发其他更严重的问题。再比如,在一些具有自动重试机制的系统中,若重试逻辑没有合理设置,当遇到一个根本无法通过重试解决的问题时,系统可能会不断重试,最终耗尽系统资源,影响整个系统的稳定性。
(六)尺度效应:规模变化带来的挑战
随着软件系统的用户数量、数据量或业务规模不断增长,系统可能会面临尺度效应带来的稳定性问题。在系统设计初期,可能没有充分考虑到未来规模的扩展,当系统规模达到一定程度后,原本正常运行的系统可能会出现性能瓶颈、资源不足等问题。一个小型的在线论坛,在用户数量较少时,系统能够正常运行,数据库查询速度也很快。但随着用户数量的不断增加,帖子数量和评论数量呈指数级增长,数据库的查询负载急剧增大,若数据库没有进行合理的优化(如索引设计不合理、查询语句效率低下等),就可能导致页面加载缓慢,甚至出现系统崩溃的情况。此外,系统的架构也可能需要随着规模的变化进行调整,否则无法适应大规模业务的需求。
(七)不平衡的容量:资源匹配的难题
在软件系统中,各个组件或环节的容量需要相互匹配,以确保系统的整体性能和稳定性。如果存在不平衡的容量,即某个组件的处理能力远远超过或低于其他组件,就会导致系统出现性能瓶颈或资源浪费,进而影响稳定性。在一个视频处理系统中,视频采集模块的采集速度非常快,每秒可以采集大量的视频帧,但视频编码模块的编码速度却相对较慢,无法及时处理采集到的视频帧。这就会导致视频帧在缓存中大量积压,占用大量内存资源,最终可能导致系统崩溃。反之,如果视频编码模块的处理能力远大于视频采集模块,就会造成编码模块的资源闲置,浪费系统资源。
(八)慢响应:用户体验的杀手
软件系统的慢响应是一个常见且严重影响用户体验的问题,同时也可能反映出系统的稳定性存在隐患。慢响应可能由多种原因引起,如服务器性能不足、网络延迟过高、数据库查询效率低下、代码逻辑复杂导致计算耗时过长等。当用户在使用软件时,如果频繁遇到长时间的等待,就会对软件产生不满,甚至可能会放弃使用该软件。在一个在线购物 APP 中,用户点击商品详情页面后,若需要等待十几秒甚至更长时间才能加载出商品信息,用户很可能会关闭 APP 并选择其他竞争对手的产品。此外,慢响应还可能导致用户不断重复操作,进一步加重系统的负载,形成恶性循环,最终影响系统的稳定性。
(九)SLA 倒置:服务水平的困境
SLA(Service - Level Agreement,服务水平协议)倒置是指软件系统在设计时,没有充分考虑到依赖系统的服务水平,导致自身承诺的服务水平无法达到。当一个系统依赖多个其他系统提供服务时,如果这些依赖系统的服务水平参差不齐,而该系统又没有采取有效的措施来保障自身的服务质量,那么它所能提供的最好服务水平也只能等同于最差的依赖系统的服务水平。在一个金融交易系统中,该系统依赖于多个第三方支付接口、数据提供商接口等。如果其中某个第三方支付接口经常出现故障或响应延迟,而金融交易系统又没有备用方案或有效的容错机制,那么即使其他部分运行正常,整个金融交易系统的服务质量也会受到严重影响,无法满足用户对交易及时性和稳定性的要求。
(十)无边界结果集:数据处理的隐患
在软件系统中,对数据的处理往往需要有明确的边界和范围控制。若出现无边界结果集,即数据查询或处理的结果没有限制,可能会导致大量数据被返回或处理,从而消耗大量系统资源,影响系统的稳定性。在一个数据库查询操作中,如果没有对查询结果进行合理的分页或限制返回数据量,当查询条件比较宽泛时,可能会返回数百万条数据。这些大量的数据在传输和处理过程中,会占用大量的网络带宽和服务器内存,导致系统性能急剧下降,甚至可能引发服务器死机。此外,无边界结果集还可能导致数据处理逻辑出现错误,因为在设计时可能没有考虑到处理如此大量数据的情况。
二、稳定性模式:抵御风险的坚固盾牌
了解了稳定性反模式后,书中也为我们提供了一系列行之有效的稳定性模式,这些模式如同坚固的盾牌,帮助我们抵御软件系统在运行过程中面临的各种稳定性风险。
(一)超时(Timeouts):及时止损的策略
超时机制是应对多种稳定性反模式的有力武器。在软件系统中,无论是网络请求、数据库操作还是其他可能耗时的任务,都可以设置合理的超时时间。当任务执行时间超过设定的超时时间时,系统会自动中断该任务,避免系统在无谓的等待中浪费资源,从而实现及时止损。在一个远程调用接口的过程中,由于网络波动或对方服务器繁忙等原因,调用可能会长时间得不到响应。如果没有设置超时,调用线程可能会一直阻塞,占用系统资源,影响其他任务的执行。通过设置合理的超时时间,如 3 秒或 5 秒,当调用在规定时间内没有得到响应时,系统可以立即返回错误信息,释放资源,同时可以采取一些备用措施,如重试或切换到其他服务节点,以保证系统的正常运行。
(二)断路器(Circuit Breaker):智能防护的开关
断路器模式是一种有状态的模块,它就像一个智能防护开关,能够有效地保护系统免受集成点等问题的影响。断路器通常有三种状态:闭合、打开和半打开。在系统正常运行时,断路器处于闭合状态,所有请求都正常通过,系统调用依赖的服务或组件。当系统检测到某个依赖服务出现故障的频率达到一定阈值时,断路器会切换到打开状态,此时所有对该依赖服务的请求将不再发送,而是立即返回一个预设的错误响应,避免系统不断尝试调用一个已经不可用的服务,从而防止大量无效请求占用系统资源,引发连锁反应。在打开状态持续一段时间后,断路器会进入半打开状态,此时系统会尝试发送少量请求到依赖服务,以检测其是否已经恢复正常。如果依赖服务恢复正常,断路器将切换回闭合状态;如果仍然出现故障,则继续保持打开状态。例如,在一个电商系统中,商品库存查询依赖于一个外部的库存管理系统。当库存管理系统出现故障,导致连续多次查询失败时,断路器自动打开,后续的商品库存查询请求不再发送到库存管理系统,而是直接返回一个提示库存查询失败的信息给用户。经过一段时间后,断路器进入半打开状态,尝试发送少量库存查询请求,若库存管理系统恢复正常,断路器切换回闭合状态,系统恢复正常的库存查询功能。
(三)去耦合中间件(Decoupling Middleware):降低耦合的桥梁
去耦合中间件能够显著提升软件系统的稳定性,它就像一座桥梁,将系统的各个部分有效地连接起来,同时降低它们之间的耦合度。通过使用去耦合中间件,各个组件不再直接依赖于同一个数据库或文件系统等资源,而是通过中间件进行数据交互和协调。在一个分布式系统中,不同的微服务之间可以通过消息队列这种去耦合中间件进行通信。微服务 A 将消息发送到消息队列中,微服务 B 从消息队列中获取消息并进行处理。这样,即使微服务 A 或微服务 B 出现故障,也不会直接影响到对方,因为它们之间的通信是通过消息队列进行解耦的。此外,去耦合中间件还可以对数据进行缓冲、转换和分发,提高系统的灵活性和可扩展性,进一步增强系统的稳定性。
(四)隔板(Bulkheads):隔离资源的屏障
隔板模式通过将系统的资源进行划分和隔离,避免某个部分的故障对整个系统造成影响。就像在一艘船上设置多个隔板,当某个船舱进水时,隔板可以阻止水蔓延到其他船舱,从而保证船只的安全。在软件系统中,隔板模式可以应用于多个方面。例如,在多线程编程中,可以为不同类型的任务分配独立的线程池,每个线程池就相当于一个隔板。如果某个线程池中的任务出现异常,导致线程池资源耗尽,也不会影响其他线程池中的任务正常执行。再比如,在数据库访问中,可以为不同的业务模块分配独立的数据库连接池,当某个业务模块的数据库操作出现问题,如长时间占用连接、死锁等,不会影响其他业务模块对数据库的正常访问,从而保证整个系统的稳定性。
(五)快速失效(Fail Fast):及时反馈的机制
快速失效模式强调在系统发现问题时,能够迅速停止相关操作,并及时向调用方反馈错误信息。这一模式有助于尽早发现和解决问题,避免问题在系统中进一步扩散。在一个业务逻辑处理过程中,如果在开始阶段就发现某个必要的资源不可用或者输入数据不符合要求,系统应立即返回错误,而不是继续执行后续可能会导致更多问题的操作。在一个订单处理系统中,当用户提交订单时,系统首先检查用户的库存是否足够。如果发现库存不足,系统应立即返回 “库存不足,无法下单” 的错误信息给用户,而不是继续进行订单生成、支付处理等后续操作。这样可以减少不必要的资源消耗,同时让用户能够及时了解问题所在,提高用户体验,保障系统的稳定性。
(六)让它崩溃(Let It Crash):主动应对的策略
“让它崩溃” 模式看似与追求稳定性的目标相悖,但实际上它是一种主动应对故障的策略。在一些情况下,当系统检测到某个部分出现严重错误且无法快速恢复时,主动让这部分崩溃,然后通过系统的自愈机制或重启机制来恢复正常运行,可能比让错误持续存在并影响整个系统的运行更为明智。在一个分布式系统中,某个节点出现了内存泄漏的严重问题,随着时间的推移,该节点的性能逐渐下降,并且开始影响与它交互的其他节点。此时,如果系统能够检测到这种情况,并主动让这个出现问题的节点崩溃,然后通过集群的自愈机制,如自动重启该节点或从集群中移除该节点并替换为新的节点,整个系统可以更快地恢复正常运行,避免错误的进一步扩散和对其他节点造成更大的影响。
(七)测试装置(Test Harnesses):模拟实战的工具
测试装置是一种用于模拟真实世界中各种故障模式和场景的工具,通过使用测试装置,开发人员可以在软件上线之前对系统进行全面的测试,提前发现潜在的稳定性问题,并进行修复。其中,混沌工程(Chaos Engineering)是一种较为流行的测试理念,它通过主动引入各种故障,如随机杀死进程、模拟网络延迟或中断、制造硬件故障等,来观察系统的反应,从而发现系统在面对各种异常情况时的稳定性缺陷。例如,在一个云计算平台中,使用混沌工程工具随机关闭一些虚拟机实例,观察整个平台的服务是否能够正常运行,以及是否能够自动进行资源重新分配和服务恢复。通过这种模拟实战的测试方式,可以不断优化系统的设计和架构,提高系统的稳定性和容错能力。
三、总结与展望
《发布!软件的设计与部署》第一部分关于稳定性的内容,为我们全面且深入地揭示了软件稳定性在软件开发过程中的关键地位,以及影响软件稳定性的诸多因素和应对策略。稳定性反模式让我们清晰地认识到软件开发过程中可能出现的各种陷阱,这些陷阱如果不加以重视和规避,将会给软件系统带来严重的稳定性问题,影响用户体验,甚至导致业务中断。而稳定性模式则为我们提供了一系列有效的解决方案,帮助我们构建更加健壮、可靠的软件系统。
在未来的软件开发实践中,我们应当时刻将稳定性放在首位,充分运用书中所介绍的稳定性模式,避免陷入稳定性反模式的泥沼。随着技术的不断发展和软件系统的日益复杂,新的稳定性挑战也将不断涌现。我们需要持续关注行业动态,不断学习和探索新的技术和方法,以提升软件系统的稳定性。例如,随着人工智能、大数据、云计算等新兴技术在软件系统中的广泛应用,如何保证这些复杂系统的稳定性将成为新的研究热点。我们可以进一步研究如何将稳定性模式与这些新兴技术相结合,探索适合新架构和应用场景的稳定性保障方案。同时,加强团队成员之间的沟通与协作,提高全体成员对软件稳定性的重视程度,共同为打造高质量、高稳定性的软件系统而努力。只有这样,我们才能在激烈的市场竞争中立于不败之地,为用户提供更加优质、可靠的软件服务。
相关文章:
探寻软件稳定性的奥秘
在软件开发的广袤领域中,软件的稳定性宛如基石,支撑着整个软件系统的运行与发展。《发布!软件的设计与部署》这本书的第一部分,对软件稳定性进行了深入且全面的剖析,为软件开发人员、架构师以及相关从业者们提供了极具…...
Reverse-WP记录9
前言 之前写的,一直没发,留个记录吧,万一哪天记录掉了起码在csdn有个念想 1.easyre1 32位无壳elf文件 shiftF12进入字符串,发现一串数字,双击进入 进入main函数 int __cdecl main(int argc, const char **argv, const…...
日常开发小Tips:后端返回带颜色的字段给前端
一般来说,展示给用户的字体格式,都是由前端控制,展现给用户; 但是当要表示某些字段的数据为异常数据,或者将一些关键信息以不同颜色的形式呈现给用户时,而前端又不好判断,那么就可以由后端来控…...
partition_pdf 和chunk_by_title 的区别
from unstructured.partition.pdf import partition_pdf from unstructured.chunking.title import chunk_by_titlepartition_pdf 和 chunk_by_title 初看有点像,都在"分块",但是它们的本质完全不一样。 先看它们核心区别 partition_pdfchun…...
JAVA-使用Apache POI导出数据到Excel,并把每条数据的图片打包成zip附件项
最近项目要实现一个功能,就是在导出报表的时候 ,要把每条数据的所有图片都要打包成zip附件在excel里一起导出。 1. 添加依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>…...
前端——CSS1
一,概述 CSS(Cascading Style Sheets)(级联样式表) css是一种样式表语言,为html标签修饰定义外观,分工不同 涉及:对网页的文字、背景、宽、高、布局进行修饰 分为内嵌样式表&…...
《AI大模型应知应会100篇》【精华】第40篇:长文本处理技巧:克服大模型的上下文长度限制
[精华]第40篇:长文本处理技巧:克服大模型的上下文长度限制 摘要 在大语言模型应用中处理超出其上下文窗口长度的长文本是一项挑战。本文面向初学者介绍长文本处理的常见难题,以及一系列有效策略和技巧,包括如何对文档进行合理分…...
开源模型应用落地-qwen模型小试-Qwen3-8B-快速体验(一)
一、前言 阿里云最新推出的 Qwen3-8B 大语言模型,作为国内首个集成“快思考”与“慢思考”能力的混合推理模型,凭借其 80 亿参数规模及 128K 超长上下文支持,正在重塑 AI 应用边界。该模型既可通过轻量化“快思考”实现低算力秒级响应,也能在复杂任务中激活深度推理模式,以…...
千问3(Qwen3)模型开源以及初体验
体验地址:百炼控制台 1 千问3模型:全球最强开源大模型震撼发布 2025年4月29日,阿里巴巴正式开源了新一代通义千问模型Qwen3(简称千问3),这一里程碑式的事件标志着中国开源大模型首次登顶全球性能榜首。千问…...
对 FormCalc 语言支持较好的 PDF 编辑软件综述
FormCalc是一种专为PDF表单计算设计的脚本语言,主要应用于Adobe生态及SAP相关工具。以下是对FormCalc支持较好的主流软件及其特点: 1. Adobe LiveCycle Designer 作为FormCalc的原生开发环境,LiveCycle Designer提供最佳支持: …...
20250429-李彦宏口中的MCP:AI时代的“万能接口“
目录 一、什么是MCP? 二、为什么需要MCP? 三、MCP的工作原理 3.1 核心架构 3.2 工作流程 四、MCP的应用场景 4.1 开发者工具集成 4.2 智能助手增强 4.3 企业应用集成 4.4 典型案例 五、MCP的技术特点 5.1 标准化接口 5.2 可扩展性设计 5.…...
汽车启动原理是什么?
好的!同学们,今天我们来讨论汽车的启动原理,重点分析其中的动力来源和摩擦力作用。我会结合物理概念,用尽量直观的方式讲解。 1. 汽车为什么会动?——动力的来源 汽车发动机(内燃机或电动机)工…...
LeetCode[347]前K个高频元素
思路: 使用小顶堆,最小的元素都出去了,省的就是大,高频的元素了,所以要维护一个小顶堆,使用map存元素高频变化,map存堆里,然后输出堆的东西就行了 代码: class Solution…...
《软件测试52讲》学习笔记:如何设计一个“好的“测试用例?
引言 在软件测试领域,设计高质量的测试用例是保证软件质量的关键。本文基于茹炳晟老师在《软件测试52讲》中关于测试用例设计的讲解,结合个人学习心得,系统总结如何设计一个"好的"测试用例。 一、什么是"好的"测试用例…...
【深度学习新浪潮】ISP芯片算法技术简介及关键技术分析
ISP芯片及其功能概述 ISP(Image Signal Processor)芯片作为现代影像系统的核心组件,负责对图像传感器输出的原始信号进行后期处理。ISP的主要功能包括线性纠正、噪声去除、坏点修复、色彩校正以及白平衡调整等,这些处理步骤对于提高图像质量和视觉效果至关重要。随着科技的…...
QtCreator Kits构建套件报错(红色、黄色感叹号)
鼠标移动上去,查看具体报错提示。 一.VS2022Qt5.14.2(MSVC2017) 环境VS2022Qt5.14.2(MSVC2017) 错误:Compilers produce code for different ABIs:x86-windows-msvc2005-pe-64bit,x86-windows-msvc2005-pe-32bit 错误࿱…...
天能资管(SkyAi):全球布局,领航资管新纪元
在全球化浪潮汹涌澎湃的今天,资管行业的竞争已不再是单一市场或区域的较量,而是跨越国界、融合全球资源的全面竞争。天能资管(SkyAi),作为卡塔尔投资局(Qatar Investment Authority,QIA)旗下的尖端科技品牌,正以其独特的全球视野和深远的战略眼光,积极布局资管赛道,力求在全球资…...
基于PHP的宠物用品商城
有需要请加文章底部Q哦 可远程调试 基于PHP的宠物用品商城 一 介绍 宠物用品商城系统基于原生PHP开发,数据库mysql,前端bootstrap,jquery.js等。系统角色分为用户和管理员。(附带参考文档) 技术栈:phpmysqlbootstrapphpstudyvsc…...
桂链:使用Fabric的测试网络
桂链是基于Hyperledger Fabric开源区块链框架扩展开发的区块链存证平台,是桂云网络(OSG)公司旗下企业供应链、流程审批等场景数字存证软件产品,与桂花流程引擎(Osmanthus)并列为桂云网络旗下的标准与可定制…...
k8s术语master,node,namepace,LABLE
1.Master Kubernetes中的master指的是集群控制节点,每个kubernetes集群里都需要有一个Master节点来负责整个集群的管理和控制,基本上kubernetes的所有控制命令都发给它,它来负责具体的执行过程。Master节点通常会占据一个独立的服务器(高可用建议3台服务器)。 Master节点…...
香港科技大学广州|智能制造学域硕、博研究生招生可持续能源与环境学域博士招生宣讲会—四川大学专场!
香港科技大学广州|智能制造学域硕、博研究生招生&可持续能源与环境学域博士招生宣讲会—四川大学专场!!! 两个学域代表教授亲临现场,面对面答疑解惑助攻申请!可带简历现场咨询和面试! &am…...
【Vue】 实现TodoList案例(待办事项)
目录 组件化编码流程(通用) 1.实现静态组件:抽取组件,使用组件实现静态页面效果 2.展示动态数据: 1. 常规 HTML 属性 3.交互——从绑定事件监听开始 什么时候要用 event: 什么时候不需要用 event&am…...
Ubuntu 20.04 安装 ROS 2 Foxy Fitzroy
目录 1,安装前须知 2,安装过程 2.1,设置语言环境 2.2,设置源 2.3,安装ROS 2软件包 2.4,环境设置 2.5,测试 2.6,不想每次执行source 检验是否成功(另…...
【Unity】使用LitJson保存和读取数据的例子
LitJson 是一个轻量级的 JSON 解析和生成库,广泛应用于 .NET 环境中。 优点:轻量级,易用,性能优秀,支持LINQ和自定义对象的序列化和反序列化。 public class LitJsonTest : MonoBehaviour { // Start is called before…...
飞蛾扑火算法优化+Transformer四模型回归打包(内含MFO-Transformer-LSTM及单独模型)
飞蛾扑火算法优化Transformer四模型回归打包(内含MFO-Transformer-LSTM及单独模型) 目录 飞蛾扑火算法优化Transformer四模型回归打包(内含MFO-Transformer-LSTM及单独模型)预测效果基本介绍程序设计参考资料 预测效果 基本介绍 …...
物联网平台厂商有哪些?2025物联网平台推荐?国内有哪些比较好的物联网平台?
评选维度: 技术实力:涵盖设备接入规模、数据处理效率、AI/边缘计算融合能力、协议兼容性及平台架构先进。 应用场景:包括垂直领域解决方案的成熟度、定制化能力、跨行业复用性及实际落地案例规模。 安全可靠:涉及数据传输加密、…...
瑞幸咖啡披露2025年Q1财报:门店净增1757家,营业利润率达8.3%
4月29日,瑞幸咖啡(OTC:LKNCY)公布2025年第一季度财报。数据显示,2025年第一季度总净收入88.65亿元人民币,同比增长41.2%,GMV达103.54亿元人民币。截止一季度末,门店总数达24097家。依…...
selenium IDE脚本如何转换为可运行的selenium webdriver java程序
上一篇博客(用selenium4 webdriver java 搭建并完成第一个自动化测试脚本-CSDN博客)介绍了如何创建一个selenium webdriver 的java工程。 之前博客(带你用selenium IDE的录制第一个自动化测试脚本也介绍了如何使用selenum ide …...
GA-Transformer遗传算法优化编码器多特征分类预测/故障诊断,作者:机器学习之心
GA-Transformer遗传算法优化编码器多特征分类预测/故障诊断 目录 GA-Transformer遗传算法优化编码器多特征分类预测/故障诊断效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现GA-Transformer遗传算法优化编码器多特征分类预测/故障诊断,运行环境M…...
LeetCode热题100--53.最大子数组和--中等
1. 题目 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组是数组中的一个连续部分。 示例 1: 输入:nums [-2,1,-3,4,-1,2,1,-5,4] 输出&…...
【计算机视觉】深度解析MediaPipe:谷歌跨平台多媒体机器学习框架实战指南
深度解析MediaPipe:谷歌跨平台多媒体机器学习框架实战指南 技术架构与设计哲学核心设计理念系统架构概览 核心功能与预构建解决方案1. 人脸检测2. 手势识别3. 姿势估计4. 物体检测与跟踪 实战部署指南环境配置基础环境准备获取源码 构建第一个示例(手部追…...
血管造影正常≠心脏没事!无创技术破解心肌缺血漏诊困局
提到冠心病检查,很多人会纠结:到底哪项检查能更全面地反映病情、精准得出结论? 从准确性来说,冠脉 CT 与冠脉造影是临床常用手段。二者虽然能够清晰显示血管大冠脉是否存在狭窄或斑块,但二者本质上有相同的 “局限性”…...
ClickHouse副本集群
每个节点安装clickhouse服务安装 zookeeper每个节点修改 /etc/clickhouse-server/config.xml 863行左右 <remote_servers><default><shard><replica><host>18.1.13.30</host><port>9000</port></replica><replica&g…...
Go 语言中的 `os.Truncate` 函数详解
os.Truncate 是 Go 标准库中用于修改文件大小的函数。下面我将全面解析这个函数的功能、用法和注意事项。 函数签名 func Truncate(name string, size int64) error核心功能 os.Truncate 用于: 将指定文件截断或扩展到指定大小处理符号链接时会操作链接指向的实…...
java 加入本地lib jar处理方案
在 Java 项目中,如果想将本地的 .jar 文件加入到 Maven 构建流程中,有以下几种常见方式可以选择: ✅ 推荐方式:将本地 JAR 安装到本地 Maven 仓库 这是最佳实践。通过 mvn install:install-file 命令把JAR 包安装到本地仓库&…...
【Git】之【Get】TortoiseGit不显示状态图标
参考:Windows中解决TortoiseGit 不显示状态图标的问题 实测可行。 打开注册表 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers路径 确保TortoiseGit文件夹在前几个,可以重命名将其他无关…...
[Linux网络_68] 转发 | 路由(Hop by Hop) | IP的分片和组装
目录 1.再谈网络转发 2.路由 举个例子 3.分片和组装 IP 层 [Linux#67][IP] 报头详解 | 网络划分 | CIDR无类别 | DHCP动态分配 | NAT转发 | 路由器 1.再谈网络转发 我们在上一篇文章中知道了路由器的功能有: 转发DHCP | 组建局域网NAT 组建局域网功能表现&…...
Sce2DriveX: 用于场景-到-驾驶学习的通用 MLLM 框架——论文阅读
《Sce2DriveX: A Generalized MLLM Framework for Scene-to-Drive Learning》2025年2月发表,来自中科院软件所和中科院大学的论文。 端到端自动驾驶直接将原始传感器输入映射到低级车辆控制,是Embodied AI的重要组成部分。尽管在将多模态大语言模型&…...
论文笔记-多智能体任务分配:动态智能空间中的拍卖与抢占机制
《IET Cyber-Systems and Robotics》出版中国电信研究院 Wei Li、Zhenhua Liu 团队与山东大学 Jianhang Shang 和 Guoliang Liu 团队的研究成果,文章题为“Multiagent Task Allocation for Dynamic Intelligent Space: Auction and Preemption With Ontology Knowle…...
数据库day-08
一、实验名称和性质 删除修改数据 验证 设计 二、实验目的 1.掌握数据操作-- 删除、修改; 三、实验的软硬件环境要求 硬件环境要求: PC机(单机) 使用的软件名称、版本号以及模块: Windows 10&#x…...
.NET 平台详解
什么是 .NET? .NET 是一个由微软开发的跨平台、开源的开发者平台,用于构建多种类型的应用程序。它提供了一致的编程模型和丰富的类库,支持多种编程语言(如 C#、F#、Visual Basic)。 .NET 的核心组成 运行时环境 CLR …...
高效 Transformer 的综述
20年9月来自谷歌研究的论文“Efficient Transformers: A Survey”。 文章主要针对一类X-former模型,例如Reformer, Linformer, Performer, Longformer为例,这些对原版Transformer做了改进,提高了其计算和内存的效率。 self-attention是Tran…...
java每日精进 4.29【框架之自动记录日志并插入如数据库流程分析】
1.日志记录注解(LogRecord) Repeatable(LogRecords.class) Target({ElementType.METHOD, ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Inherited Documented public interface LogRecord {String success();String fail() default "&q…...
HarmonyOS NEXT 诗词元服务项目开发上架全流程实战(二、元服务与应用APP签名打包步骤详解)
在HarmonyOS应用开发过程中,发布应用到应用市场是一个重要的环节。没经历过的童鞋,首次对HarmonyOS的应用签名打包上架可能感觉繁琐。需要各种秘钥证书生成和申请,混在一起分不清。其实搞清楚后也就那会事,各个文件都有它存在的作…...
java的多线程
文章目录 创建线程什么是线程?什么是多线程?如何在程序中创建出多条线程?方式一:继承Thread类方式二:实现Runnable接口方式三:实现Callable接口 三种创建方式的对比 线程的常用方法Thread提供的常用方法Thr…...
CSS--图片链接水平居中展示的方法
原文网址:CSS--图片链接居中展示的方法-CSDN博客 简介 本文介绍CSS图片链接水平居中展示的方法。 图片链接 问题复现 源码 <html xml:lang"cn" lang"cn"><head><meta http-equiv"Content-Type" content"te…...
【计算机视觉】目标检测:深度解析YOLOv5:下一代实时目标检测框架实战指南
深度解析YOLOv5:下一代实时目标检测框架实战指南 技术演进与架构设计YOLO系列发展脉络YOLOv5核心架构1. 骨干网络(Backbone)2. 特征融合(Neck)3. 检测头(Head) 环境配置与快速开始硬件要求建议详…...
CentOS NFS共享目录
最近遇到一个问题,一台CentOS7应用服务器上的服务需要访问另外一台CentOS7应用服务器上的文件,然后传输文件给第三方。想到windows系统之间有文件共享的功能,Linux系统之间是否也有类似的文件共享功能呢? NFS NFS代表Network Fil…...
「国产嵌入式仿真平台:高精度虚实融合如何终结Proteus时代?」——从教学实验到低空经济,揭秘新一代AI赋能的产业级教学工具
引言:从Proteus到国产平台的范式革新 在高校嵌入式实验教学中,仿真工具的选择直接影响学生的工程能力培养与创新思维发展。长期以来,Proteus作为经典工具占据主导地位,但其设计理念已难以满足现代复杂系统教学与国产化技术需求。…...
[随笔] 升级uniapp旧项目的vue、pinia、vite、dcloudio依赖包等
汇总 # 升级uniapp项目dcloudio整体依赖,建议执行多次 # 会顺带自动更新/升级vue的版本 npx dcloudio/uvmlatest alpha# 检查 pinia 的最新版本 npm view pinia version# 更新项目 pinia 到最新版本 npm update pinia# 更新项目 pinia 到特定的版本 # 首先…...