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

软件架构之旅(6):浅析ATAM 在软件技术架构评估中的应用

在这里插入图片描述

文章目录

  • 一、引言
    • 1.1 研究背景
    • 1.2 研究目的与意义
  • 二、ATAM 的理论基础
    • 2.1 ATAM 的定义与核心思想
    • 2.2 ATAM 涉及的质量属性
    • 2.3 ATAM 与其他架构评估方法的关系
  • 三、ATAM 的评估流程
    • 3.1 准备阶段
    • 3.2 场景和需求收集阶段
    • 3.3 架构描述阶段
    • 3.4 评估阶段
    • 3.5 结果报告阶段
  • 四、ATAM 在实际项目中的应用案例分析
    • 4.1 案例一:某在线教育平台架构评估
    • 4.2 案例二:某金融交易系统架构评估
  • 五、ATAM 的优势与局限性分析
    • 5.1 ATAM 的优势
    • 5.2 ATAM 的局限性
  • 六、ATAM 的发展趋势
    • 6.1 与新兴技术结合
    • 6.2 量化评估方法的改进
    • 6.3 动态评估能力的增强
    • 6.4 工具支持的完善
  • 七、结论

在这里插入图片描述

一、引言

1.1 研究背景

在数字化时代,软件系统规模与复杂性不断攀升,软件架构作为系统的核心框架,其设计质量直接影响软件的功能性、性能、可靠性、可维护性等关键质量属性。
一个不合理的软件架构可能导致系统后期维护成本剧增、功能扩展困难,甚至无法满足业务需求。

因此,科学有效的软件架构评估方法成为保障软件项目成功的关键环节。ATAM 作为一种成熟且广泛应用的架构评估方法,能够全面、系统地评估软件架构,识别架构中的潜在问题与权衡点,为架构优化提供有力依据,对其进行深入研究具有重要的现实意义。

1.2 研究目的与意义

本文全面剖析 ATAM 的原理、方法和应用流程,通过实际案例验证其在软件架构评估中的有效性和实用性。

明确 ATAM 在软件技术架构评估中的价值,为软件架构师提供可操作的评估指导,帮助其在架构设计阶段发现问题、优化架构;
同时,为软件开发团队提供理解架构质量属性之间关系的理论支持,促进软件项目的高质量开发,推动软件技术架构评估领域的发展与创新。

在这里插入图片描述

二、ATAM 的理论基础

2.1 ATAM 的定义与核心思想

ATAM(Architecture Tradeoff Analysis Method) 即架构权衡分析方法,由卡内基梅隆大学软件工程研究所(SEI)提出,是一种综合的软件架构评估方法。

其核心思想在于通过对软件架构的多个质量属性进行分析,识别架构中不同质量属性之间的权衡关系,评估架构设计对质量属性的满足程度,从而判断架构的合理性和有效性。

ATAM 强调在架构设计过程中,不能孤立地看待某个质量属性,而应综合考虑各质量属性之间的相互影响,在不同质量属性之间进行权衡,以实现软件架构的整体最优 。
在这里插入图片描述

2.2 ATAM 涉及的质量属性

ATAM 关注软件系统的多种质量属性,主要包括:

性能:指软件系统对外部刺激(如用户请求)的响应速度和处理能力,如系统的响应时间、吞吐量等。

可靠性:软件系统在规定的时间和条件下,完成规定功能的能力,包括容错性、恢复能力等。

可维护性:软件系统进行修改、升级和维护的难易程度,涉及代码的可读性、可扩展性等。

安全性:保护软件系统及其数据免受非法访问、攻击和破坏的能力,如数据加密、访问控制等。

可扩展性:软件系统能够方便地增加新功能、处理更大规模数据或支持更多用户的能力。

易用性:软件系统易于学习和使用的程度,影响用户体验 。

在这里插入图片描述

2.3 ATAM 与其他架构评估方法的关系

与传统的软件架构评估方法相比,ATAM 具有更全面、系统的特点。

例如,相较于简单的代码审查或专家评审,ATAM 不仅关注架构的实现细节,还从整体上分析架构对多个质量属性的支持情况,以及质量属性之间的权衡关系。

与 SAAM(Software Architecture Analysis Method,软件架构分析方法)相比,SAAM 主要基于场景对架构进行评估,侧重于单个质量属性的分析;
而 ATAM 在 SAAM 的基础上,进一步引入了权衡分析,更注重多个质量属性之间的相互影响和平衡 。

在这里插入图片描述

三、ATAM 的评估流程

3.1 准备阶段

确定评估目标与范围:明确本次架构评估的具体目标,如评估架构对性能和可维护性的支持程度,确定评估所涉及的软件系统范围,包括哪些子系统、模块等。

组建评估团队:评估团队通常由软件架构师、开发者、用户代表、测试人员等组成,确保从不同角度对架构进行评估。

收集相关资料:收集软件架构设计文档、需求规格说明书、系统使用场景描述等资料,为后续评估提供基础 。

3.2 场景和需求收集阶段

确定质量属性场景:评估团队与利益相关者合作,针对每个质量属性定义具体的场景。

场景应包括刺激(引发系统行为的事件)、环境(场景发生的条件)、响应(系统对刺激的反应)等要素,

例如,对于性能属性,场景可以是 “在高并发访问情况下,系统对用户请求的响应时间不超过 1 秒”。

收集架构需求:明确软件系统的功能需求和非功能需求,了解利益相关者对架构的期望和关注点。

在这里插入图片描述

3.3 架构描述阶段

架构师对软件架构进行详细描述,包括系统的组件、组件之间的交互关系、数据流动、控制流程等内容。可以采用图形化的方式(如 UML 图)或文本描述,清晰地呈现架构的整体结构和设计思路 。

3.4 评估阶段

场景映射:将定义好的质量属性场景映射到软件架构上,分析场景在架构中的执行路径和涉及的组件,确定场景对架构的影响。

权衡分析:识别不同质量属性场景之间的潜在冲突和权衡关系。

例如,为了提高系统的性能,可能需要增加硬件资源或优化算法,但这可能会影响系统的成本和可维护性;
为了增强系统的安全性,可能需要增加加密和认证机制,但这可能会降低系统的性能。

通过权衡分析,评估架构设计在不同质量属性之间的平衡情况 。

敏感性分析:确定架构中对质量属性影响较大的关键组件或设计决策,分析这些组件或决策的变化对质量属性的影响程度,找出架构的敏感点。

3.5 结果报告阶段

整理评估过程和结果,形成评估报告。报告内容应包括评估目标、评估方法、质量属性场景、架构描述、评估分析结果(如发现的问题、权衡点、敏感点)以及改进建议等,为架构优化提供依据 。

在这里插入图片描述

四、ATAM 在实际项目中的应用案例分析

4.1 案例一:某在线教育平台架构评估

项目背景:某在线教育平台随着用户数量的快速增长和业务功能的不断扩展,现有软件架构在性能、可维护性和可扩展性方面面临挑战,需要对架构进行评估和优化,以满足未来发展需求。

ATAM 应用过程

准备阶段:确定评估目标为评估架构对性能、可维护性和可扩展性的支持程度,组建由架构师、开发人员、教师代表(用户代表)和测试人员组成的评估团队,收集平台的架构设计文档、用户需求文档等资料。

场景和需求收集阶段:针对性能,定义 “在上课高峰期,同时支持 10000 名学生在线观看课程视频,视频播放流畅,无卡顿” 的场景;

针对可维护性,定义 “新增一种课程类型,开发团队在 3 天内完成功能开发与部署” 的场景;

针对可扩展性,定义 “平台需要支持每年用户数量增长 50% 的需求,架构无需大规模重构” 的场景。

同时,收集平台的功能需求和非功能需求。

架构描述阶段:架构师使用 UML 图和文本相结合的方式,详细描述在线教育平台的架构,包括前端展示层、后端服务层、数据库层等组件及其交互关系。
在这里插入图片描述

评估阶段:将场景映射到架构上,分析发现后端服务层的视频处理模块在高并发情况下存在性能瓶颈,影响视频播放的流畅性;
部分功能模块之间耦合度较高,不利于新功能的开发和维护,这是架构的敏感点。

通过权衡分析,认识到为了提高性能,需要对视频处理模块进行优化或增加服务器资源,但这可能会增加成本;

为了提高可维护性,需要对耦合度高的模块进行拆分,但这可能会在短期内影响开发进度。

结果报告阶段:形成评估报告,提出优化建议,如对视频处理模块进行分布式改造,采用缓存技术提高性能;

对耦合度高的模块进行模块化设计,降低模块间的耦合度,提高可维护性和可扩展性 。

应用效果:经过架构优化后,平台在上课高峰期的视频播放卡顿现象明显减少,用户满意度提高;

新功能开发周期平均缩短了 20%,有效提升了平台的性能、可维护性和可扩展性。
在这里插入图片描述

4.2 案例二:某金融交易系统架构评估

项目背景:某金融交易系统对安全性、性能和可靠性要求极高,随着业务的发展,系统需要处理更多的交易请求,同时要确保交易数据的安全和准确,因此需要对现有架构进行评估和改进。

ATAM 应用过程

准备阶段:明确评估目标为评估架构对安全性、性能和可靠性的支持程度,组建评估团队,收集系统的架构设计文档、交易流程说明、安全规范等资料。

场景和需求收集阶段
针对安全性,定义 “系统遭受黑客攻击时,能够防止用户交易数据泄露和篡改” 的场景;

针对性能,定义 “在交易高峰期,系统每秒处理 10000 笔交易请求,响应时间不超过 0.5 秒” 的场景;

针对可靠性,定义 “系统出现部分组件故障时,能够在 1 分钟内自动切换到备用组件,保证交易正常进行” 的场景。

收集系统的功能需求和非功能需求。

架构描述阶段:详细描述金融交易系统的架构,包括交易处理模块、风险控制模块、数据存储模块等组件及其交互关系。

评估阶段:场景映射后发现,数据存储模块的加密算法效率较低,影响交易处理性能,同时存在数据泄露风险,这是架构的敏感点。

权衡分析表明,为了提高安全性,需要更换更强大的加密算法,但这可能会降低系统的性能;

为了提高性能,可能需要简化加密流程,但这会削弱安全性。

结果报告阶段
出具评估报告,建议采用更高效的加密算法,并对数据存储模块进行优化,如采用分布式存储方式提高性能;

同时,增加数据备份和恢复机制,提高系统的可靠性 。

应用效果:优化后的金融交易系统在安全性方面得到显著提升,成功抵御了多次模拟攻击;在交易高峰期,系统性能稳定,响应时间满足要求,可靠性也得到增强,未因组件故障导致交易中断,保障了金融业务的正常运行。

在这里插入图片描述

五、ATAM 的优势与局限性分析

5.1 ATAM 的优势

全面综合评估:ATAM 能够同时考虑软件系统的多个质量属性,全面评估架构设计对质量属性的满足程度,避免只关注单一质量属性而忽视其他方面,有助于实现架构的整体优化。

权衡分析能力:通过权衡分析,识别不同质量属性之间的潜在冲突和权衡关系,使架构师能够在质量属性之间做出合理的决策,找到最佳的架构设计方案,满足利益相关者的多样化需求。

早期问题发现:在软件架构设计阶段应用 ATAM,可以尽早发现架构中存在的潜在问题和风险,及时进行调整和优化,降低后期修改成本,提高项目的成功率 。

利益相关者参与:ATAM 强调利益相关者的参与,通过与用户代表、开发者、测试人员等的合作,收集不同角度的需求和意见,确保架构设计能够满足各方利益,提高软件系统的实用性和用户满意度 。

在这里插入图片描述

5.2 ATAM 的局限性

评估过程复杂:ATAM 的评估流程较为复杂,涉及多个阶段和步骤,需要评估团队具备较高的专业水平和丰富的经验,对评估人员的要求较高,实施难度较大。

时间和成本较高:由于评估过程复杂,需要投入大量的时间和人力成本,包括资料收集、场景定义、架构描述、分析评估等工作,对于一些小型项目或资源有限的团队,可能难以承担。

量化困难:ATAM 主要以定性分析为主,虽然在一定程度上引入了量化指标(如响应时间、交易处理量等),但对于质量属性之间的权衡关系等方面,缺乏精确的量化方法,评估结果的客观性和准确性受到一定影响 。

对动态变化适应性不足:ATAM 主要基于静态的架构描述进行评估,对软件系统在运行过程中的动态变化(如负载变化、组件更新、业务需求变更等)考虑不足,难以实时评估架构的适应性 。

在这里插入图片描述

六、ATAM 的发展趋势

6.1 与新兴技术结合

随着云计算、大数据、人工智能等新兴技术的发展,ATAM 将与这些技术深度融合。

例如,在云计算环境下,利用云资源的弹性特点,对软件架构的性能和可扩展性进行动态评估;

结合大数据分析技术,对系统运行过程中的大量数据进行分析,为架构评估提供更丰富的依据;

借助人工智能算法,自动识别架构中的潜在问题和权衡点,提高评估的效率和准确性 。

6.2 量化评估方法的改进

为了提高评估结果的客观性和准确性,未来将进一步研究和改进 ATAM 的量化评估方法。

引入更多的量化指标和数学模型,对质量属性之间的权衡关系进行量化分析,使评估结果更加精确,便于对不同架构设计方案进行比较和优化 。

6.3 动态评估能力的增强

针对软件系统的动态性特点,ATAM 将不断增强对动态变化的评估能力。研究如何在系统运行过程中实时监测架构的状态,根据负载变化、组件更新等情况,动态调整评估场景和方法,及时发现架构在动态环境下出现的问题,确保架构始终满足系统的需求 。

6.4 工具支持的完善

开发更完善的 ATAM 评估工具,辅助评估团队完成资料收集、场景定义、架构描述、分析评估等工作。工具应具备可视化的界面,方便用户操作;

能够自动生成评估报告,提高评估效率;支持与其他软件开发工具(如建模工具、项目管理工具等)的集成,实现评估过程与软件开发过程的无缝衔接 。
在这里插入图片描述

七、结论

ATAM 作为一种成熟且有效的软件架构评估方法,通过全面综合评估、权衡分析等手段,能够帮助架构师发现架构中的问题,优化架构设计,在众多软件项目中发挥了重要作用。

然而,ATAM 也存在评估过程复杂、量化困难等局限性。随着软件技术的不断发展,ATAM 将与新兴技术结合,改进量化评估方法,增强动态评估能力,完善工具支持,不断适应新的软件发展需求。

未来,对 ATAM 的研究和应用将进一步拓展,为软件技术架构的评估和优化提供更强大的支持,推动软件行业的高质量发展。


图片来源网络

相关文章:

软件架构之旅(6):浅析ATAM 在软件技术架构评估中的应用

文章目录 一、引言1.1 研究背景1.2 研究目的与意义 二、ATAM 的理论基础2.1 ATAM 的定义与核心思想2.2 ATAM 涉及的质量属性2.3 ATAM 与其他架构评估方法的关系 三、ATAM 的评估流程3.1 准备阶段3.2 场景和需求收集阶段3.3 架构描述阶段3.4 评估阶段3.5 结果报告阶段 四、ATAM …...

【SQL触发器、事务、锁的概念和应用】

【SQL触发器、事务、锁的概念和应用】 1.触发器 (一)触发器概述 1.触发器的定义 触发器(Trigger)是一种特殊的存储过程,它与表紧密相连,可以是表定义的一部分。当预定义的事件(如用户修改指定表或者视图中的数据)发生时,触发器会自动执行。 触发器基于一个表创建,…...

5.4学习记录

今天的目标是复习刷过往的提高课的DP题目:重点是数位DP,状态压缩DP,然后去做一些新的DP题目 然后明天的任务就是把DP的题目汇总,复习一些疑难的问题 方格取数: 题目背景 NOIP 2000 提高组 T4 题目描述 设有 NN 的方…...

Hadoop 1.x设计理念解析

一、背景 有人可能会好奇,为什么要学一个二十年前的东西呢? Hadoop 1.x虽然是二十年前的,但hadoop生态系统中的一些组件如今还在广泛使用,如hdfs和yarn,当今流行spark和flink都依赖这些组件 通过学习它们的历史设计…...

缓存与数据库的高效读写流程解析

目录 前言1 读取数据的流程1.1 检查缓存是否命中1.2 从数据库读取数据1.3 更新缓存1.4 返回数据 2 写入数据的流程2.1 更新数据库2.2 更新或删除缓存2.3 缓存失效 3 缓存与数据库的一致性问题3.1 写穿(Write-through)策略3.2 写回(Write-back…...

Linux中的粘滞位和开发工具和文本编辑器vim

1.粘滞位的使用的背景: 当几个普通用户需要文件共享操作时,他们就需要在同一个目录下进行操作,那么就诞生一个问题,由谁来创建这个公共的目录文件?假设是由其中的一个普通用户来创建一个默认的目录文件,这就…...

冯诺依曼结构与哈佛架构深度解析

一、冯诺依曼结构(Von Neumann Architecture) 1.1 核心定义 由约翰冯诺依曼提出,程序指令与数据共享同一存储空间和总线,通过分时复用实现存取。 存储器总带宽 指令带宽 数据带宽 即:B_mem f_clk W_data f_…...

如何提升个人情商?

引言 提升个人情商(EQ)是一个持续的自我修炼过程,涉及自我认知、情绪管理、人际沟通等多个方面。以下是一些具体且可实践的方法,帮助你逐步提升情商: 一、提升自我觉察能力 1. 记录情绪日记 每天回顾自己的情绪…...

JSON Web Token 默认密钥 身份验证安全性分析 dubbo-admin JWT硬编码身份验证绕过

引言 在web开发中,对于用户认证的问题,有很多的解决方案。其中传统的认证方式:基于session的用户身份验证便是可采用的一种。 基于session的用户身份验证验证过程: 用户在用进行验证之后,服务器保存用户信息返回sess…...

K230的ISP(图像信号处理器)通常支持多通道输出,常见配置为3个独立通道

也就是一个摄像头可以拍摄三种配置的图片,这样就可以调用三种: img_try sensor.snapshot(chnCAM_CHN_ID_0) img_try2 sensor.snapshot(chnCAM_CHN_ID_1) img_try3 sensor.snapshot(chnCAM_CHN_ID_2) 这样可以一图多用 eg: # 初始化并配…...

工程师 - 小米汽车尾部主动扩散器

关于小米SU7 Ultra的主动尾部扩散器,其设计初衷是为了平衡日常驾驶的节能需求与运动驾驶的操控性能。这一装置位于车辆尾部下方,具备自动调节功能,能够根据车速在0和32之间切换,同时也支持手动调整。 32度打开状态: 0度…...

Linux watch 命令使用详解

简介 watch 命令会以固定间隔(默认每 2 秒)重复运行给定命令,并在终端上显示其输出。它非常适合监控不断变化的输出,例如磁盘使用情况、内存使用情况、文件更改、服务状态等。 基础语法 watch [options] command常用选项 -n, -…...

RabbitMQ-基础

RabbitMQ-基础 文章目录 RabbitMQ-基础1.同步调用2.异步调用3.技术选型4.安装RabbitMQ(官方网址)https://www.rabbitmq.com/5.快速入门5.1收发消息5.1.1交换机5.1.2队列5.1.3绑定关系5.1.4发送消息 5.2数据隔离5.2.1用户管理5.2.2virtual host 6.Java客户端操作RabbitMQ6.1快速…...

第九周作业

安全专题笔记 1、文件上传 (1) 服务端白名单绕过 %00截断绕过要求虚拟机中搭建实验环境,分别实现GET、POST方法的绕过 前提条件: 1 php的版本需要在5.4以下 2 magic_quotes_gpc需要设置为off 启动phpstudy,前往php-ini将magic_quotes_gpc…...

AtCoder Beginner Contest 404 C-G(无F)题解

C. Cycle Graph? 题意 给你一个 N N N 个顶点 M M M 条边的简单(无重边、自环)无向图,第 i i i 条边连接节点 A i A_i Ai​ 和 B i B_i Bi​,判断这个图是不是一个环。 思路 首先一个图是环,要满足点数等于边…...

Python----机器学习(模型评估:准确率、损失函数值、精确度、召回率、F1分数、混淆矩阵、ROC曲线和AUC值、Top-k精度)

一、模型评估 1. 准确率(Accuracy):这是最基本的评估指标之一,表示模型在测试集上正确 分类样本的比例。对于分类任务而言,准确率是衡量模型性能的直观标准。 2. 损失函数值(Loss)&#xff1…...

开上“Python跑的车”——自动驾驶数据可视化的落地之道

开上“Python跑的车”——自动驾驶数据可视化的落地之道 一、自动驾驶离不开“看得见”的智能 在智能汽车时代,自动驾驶已然不是“炫技”标签,而是一场技术实力的全面拉锯战。而在这场战役中,有一个极其关键但常被忽略的领域,叫做: 数据可视化(Data Visualization)。 为…...

Linux内核gcov修改为模块

Linux内核gcov修改为模块 Gcov 是 GNU 项目开发的代码覆盖率分析工具,与 GCC 编译器深度集成,用于统计程序运行时代码的执行情况,帮助开发者评估测试用例的完整性和代码质量。 Gcov工作原理 ​1. 编译插桩 编译时需添加 -fprofile-arcs -…...

【安装配置教程】linux部署AList记录

之前朋友安利给自己AList,这个工具可以很方便的管理个人的网盘内容,可以随时上传下载拉取,于是心血来潮自己部署并记录一下。 一、拉取下载脚本 在AList官网,找到安装下面的一键脚本 curl -fsSL "https://alist.nn.ci/v3.sh…...

题解:AT_abc245_e [ABC245E] Wrapping Chocolate

我绝对不会告诉你我打比赛时没做出来这道题。 题目简化:给定每个巧克力和盒子的长宽,已知每个盒子只能放一块巧克力,并且必须保证巧克力能放下,求是否所有巧克力都能放入。 思路:贪心、二分、排序、STL。 首先看到这…...

Linux 入门:操作系统进程详解(上)

目录 一.冯诺依曼体系结构 一). 软件运行前为什么要先加载?程序运行之前在哪里? 二).理解数据流动 二.操作系统OS(Operator System) 一).概念 二).设计OS的目的 三).如何理解操作系统…...

5.7/Q1,GBD数据库最新文章解读

文章题目:Global, regional, and national burden and trends of rheumatoid arthritis among the elderly population: an analysis based on the 2021 Global Burden of Disease study DOI:10.3389/fimmu.2025.1547763 中文标题:全球、区域…...

[pdf,epub]292页《分析模式》漫谈合集01-59提供下载

《分析模式》漫谈合集01-59的pdf、epub文件提供下载,地址: umlchina.com/url/ap.html,或查看本账号的CSDN资源。 已排版成适合手机阅读,pdf的排版更好一些。...

Spring MVC的工作流程, DispatcherServlet 的工作流程

Spring MVC 是一种基于Java的模型-视图-控制器(MVC)Web框架,它通过清晰的角色划分简化了Web应用开发。下面是Spring MVC的工作流程以及DispatcherServlet的具体工作流程。 Spring MVC 工作流程 请求到达:客户端发起一个HTTP请求…...

【Godot】使用 Shader 实现可配置圆角效果

文章目录 效果预览实现原理完整Shader代码关键参数详解1. 半径参数(radius)2. 角开关参数(hide_*)数学原理圆形区域判定公式坐标映射性能优化使用示例编辑器操作代码控制进阶技巧1. 添加抗锯齿2. 外发光效果3. 动画效果常见问题解决方案问题1:圆角边缘锯齿问题2:圆形变形…...

【翻译、转载】MCP 提示 (Prompts)

原文地址:https://modelcontextprotocol.io/docs/concepts/prompts#python 提示 (Prompts) 创建可重用的提示模板和工作流 提示 (Prompts) 使服务器能够定义可重用的提示模板和工作流,客户端可以轻松地将其呈现给用户和 LLM。它们提供了一种强大的方式来…...

论快乐的学习和学习的快乐

目录 一、背景二、过程1.快乐的学习:理念与实践快乐学习的理念溯源快乐学习在教育实践中的体现 2.学习的快乐:内涵与价值学习的快乐的多维内涵学习的快乐对个人成长的价值 3.快乐的学习与学习的快乐的相互关系快乐的学习是学习快乐的重要前提学习的快乐是…...

Git 命令

参考文献: Git 教程 | 菜鸟教程Git 使用教程:最详细、最正宗手把手教学(万字长文)git忽略某个目录或文件不上传 文章目录 工作原理基本命令配置使用 其他命令日志分支回退标签 忽略指定文件远程仓库 工作原理 Git 是由 Linus To…...

365打卡第R6周: LSTM实现糖尿病探索与预测

🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 🏡 我的环境: 语言环境:Python3.10 编译器:Jupyter Lab 深度学习环境:torch2.5.1 torchvision0…...

新能源实验室电磁兼容设计优化方案论述

摘要:本文旨在进行新能源核心部件/系统测试实验室电磁兼容情况设计及优化方案进行论述,通过系统化梳理实验室的主流设备仪器,试验搭建典型方案。识别不同设备的电磁兼容现状,实验室基于设备布局常见设计方案不足点,故障…...

计算机图形学中的深度学习

文章目录 零、前言0.课程考核1.课程大纲2.前置知识3.教材4.课程大纲5.相关课程 Relevant Courses 一、计算机图形学1.本章学习目标2.图形学的应用3.SIG Graph papers 二、基本图形生成算法1.本章学习目标2.图形API3.OpenGL(1)什么是OpenGL(2)OpenGL 的基本组件:顶点…...

RockyLinux9.3-24小时制

在 RockyLinux 9.3 中,默认时间格式为 12 小时制,调整为 24 小时制 案例一:在 RockyLinux 9.3 中,默认时间格式为 12 小时制,调整为 24 小时制案例二:时间显示英文调整为中文endl 案例一:在 Roc…...

25.2linux中外置RTC芯片的PCF8563实验(测试)_csdn

1、硬件原理图分析 知道了这些引脚我们还是按照老习惯! 配置镜像和设备树文件! 2、修改设备树 2.1、添加或者查找 PCF8563 所使用的 IO 的 pinmux 配置 打开stm32mp15-pincrtl.dtsi 文件,查找节点I2C4: 也就是中断引脚并不需要配置pinctrl…...

高性能 WEB 服务器 Nginx:多虚拟主机实现!

Nginx 配置多虚拟主机实现 多虚拟主机是指在一台 Nginx 服务器上配置多个网站 在 Nginx 中,多虚拟主机有三种实现方式: 基于IP地址实现多虚拟主机 基于端口号实现多虚拟主机 基于域名实现多虚拟主机 1 基于域名实现多虚拟主机 在 Nginx 中配置多个…...

C++ 的类型排序

0.前言 在 C 中&#xff0c;我编写了一个 tuple-like 模板&#xff0c;这个模板能容纳任意多且可重复的类型&#xff1a; template<typename... Ts> struct TypeList {};// usage: using List1 TypeList<int, double, char, double>; using List2 TypeList<…...

[计算机网络]拓扑结构

拓扑结构一般会在计网教材或课程的第一章计网的分类那里接触到&#xff0c;但实际上计网的拓扑结构并不只是第一章提到的总线型、星型、树型、网状、混合型那几种类型那么简单&#xff0c;学完了后面的数链层以后对拓扑结构会有新的体会&#xff0c;所以特别单独总结成一篇博客…...

C#方法返回值全解析:从基础语法到实战技巧

摘要&#xff1a;方法返回值是C#编程的核心概念之一。本文将带你彻底掌握返回值声明、void方法特性&#xff0c;以及如何通过返回值实现优雅的流程控制&#xff08;文末附完整示例代码&#xff09;。 返回值的基础法则 类型声明原则 有返回值&#xff1a;必须在方法名前声明…...

修复笔记:SkyReels-V2 项目中的 torch.cuda.amp.autocast 警告和错误

#工作记录 一、问题描述 在运行项目时&#xff0c;出现以下警告和错误&#xff1a; FutureWarning: torch.cuda.amp.autocast(args...) is deprecated. Please use torch.amp.autocast(cuda, args...) instead.with torch.cuda.amp.autocast(dtypepipe.transformer.dtype), …...

【TF-BERT】基于张量的融合BERT多模态情感分析

不足&#xff1a;1. 传统跨模态transformer只能处理2种模态&#xff0c;所以现有方法需要分阶段融合3模态&#xff0c;引发信息丢失。2. 直接拼接多模态特征到BERT中&#xff0c;缺乏动态互补机制&#xff0c;无法有效整合非文本模态信息 改进方法&#xff1a;1. 基于张量的跨模…...

SONiC-OTN代码详解(具体内容待续)

SONiC-OTN代码详解 &#xff08;具体内容待续&#xff09; 基于AI的源代码解析工具的产生使得代码阅读和解析变得越来越高效和简洁&#xff0c;计划通过这样的工具对SONiC在OTN领域的应用做一个全自动的解析&#xff0c;大部分内容会基于AI工具的自动解析结果。这样做的目的是…...

牛客周赛90 C题- Tk的构造数组 题解

原题链接 https://ac.nowcoder.com/acm/contest/107500/C 题目描述 解题思路 数组a是不可以动的&#xff0c;所以我们可以把a[i]*b[i]*i分成两组&#xff0c;分别为a[i]*i以及b[i] 然后策略就很明显了&#xff0c;让更大的b[i]匹配更大的a[i]*i 详细实现见代码。 代码&am…...

[ML]通过50个Python案例了解深度学习和神经网络

通过50个Python案例了解深度学习和神经网络 摘要:机器学习 (Machine Learning, ML)、深度学习 (Deep Learning, DL) 和神经网络 (Neural Networks, NN) 是人工智能领域的核心技术。Python 是学习和实践这些技术的首选语言,因为它提供了丰富的库(如 scikit-learn、Te…...

vue3 - keepAlive缓存组件

在Vue 3中&#xff0c;<keep-alive>组件用于缓存动态组件或路由组件的状态&#xff0c;避免重复渲染&#xff0c;提升性能。 我们新建两个组件&#xff0c;在每一个组件里面写一个input&#xff0c;在默认情况下当组件切换的时候&#xff0c;数据会被清空&#xff0c;但…...

自由学习记录(58)

Why you were able to complete the SpringBoot MyBatisPlus task smoothly: Clear logic flow: Database → Entity → Service → Controller → API → JSON response. Errors are explicit, results are verifiable — you know what’s broken and what’s fixed. Sta…...

短信侠 - 自建手机短信转发到电脑上并无感识别复制验证码,和找手机输验证码说再见!

自建手机短信转发到电脑上并无感识别复制验证码 一、前言 项目开发语言&#xff1a;本项目使用PythonRedisC#开发 你是否也遇到过这样的场景&#xff1a; 正在电脑上操作某个网站&#xff0c;需要输入短信验证码手机不在身边&#xff0c;或者在打字时来回切换设备很麻烦验证码…...

课程10. 聚类问题

课程10. 聚类问题 聚类此类表述的难点K 均值法让我们推广到几个集群的情况如果我们选择其他起始近似值会怎样&#xff1f; 结论在 sklearn 中的实现 如何处理已发现的问题&#xff1f;层次聚类Lance-Williams 算法Lance-Williams 公式在Scipy中实现 示例DBSCANDBSCAN 算法 聚类…...

深度学习中的数据增强:提升食物图像分类模型性能的关键策略

深度学习中的数据增强&#xff1a;提升食物图像分类模型性能的关键策略 在深度学习领域&#xff0c;数据是模型训练的基石&#xff0c;数据的数量和质量直接影响着模型的性能表现。然而&#xff0c;在实际项目中&#xff0c;获取大量高质量的数据往往面临诸多困难&#xff0c;…...

QT设计权限管理系统

Qt能够简单实现系统的权限设计 首先我们需要一个登陆界面 例如这样 然后一级权限&#xff0c;可以看到所有的内容&#xff0c;不设置菜单栏的隐藏。 然后其他权限&#xff0c;根据登陆者的身份进行菜单栏不同的展示。 菜单栏的隐藏代码如下&#xff1a; ui->actionuser-…...

从上帝视角看文件操作

1.为什么使用文件? 如果没有文件,我们写的程序中的数据是存储在电脑的内存中,当程序退出时,内存被回收后,数据就丢失了,等下次运行程序,是无法看到上次程序的数据的。(比如我们在程序中写通讯录时,联系人的相关数据都是放在内存中的,当程序退出时,这些数据也会随之消…...

【51单片机6位数码管显示时间与秒表】2022-5-8

缘由数码管 keil proteus 为什么出现这种情况呢&#xff1f;-编程语言-CSDN问答 #include "reg52.h" unsigned char code smgduan[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0,64}; //共阴0~F消隐减号 unsigned char cod…...