模型驱动架构MDA
MDE
模型驱动工程(MDE, Model-Driven Engineering)是软件工程的一个分支,它将模型与建模拓展到软件开发的所有方面,形成一个多维建模空间,从而将工程活动建立在这些模型的映射和转换之上。[1] MDE的基本原则是将模型视为第一实体,将所有软件产物当做模型或模型要素。模型驱动工程(Model Driven Engineering, MDE)是一种软件开发范式,其核心思想是通过高层次的抽象模型来描述系统的行为和结构,然后利用模型转换和代码生成技术自动生成部分或全部实现代码。MDE旨在提高软件开发的效率、质量、一致性和可维护性。
模型驱动工程(MDE) 涵盖了整个软件研发系统生命周期的各个方面,包括需求分析、设计、实现、验证直至维护阶段。MDE不仅关注软件开发,还倡导使用模型来描述和控制系统的所有方面,并支持跨不同层次和领域的建模活动,以及模型之间的转换和一致性维护。在MDE的背景下,模型不仅是设计工具,而且还是贯穿整个工程流程的核心要素。
当前MDE的发展现状如下:
1. 工具集和框架的成熟:
• 目前已有众多成熟的建模工具和框架支持MDE,例如Eclipse Modeling Framework (EMF),它提供了构建模型、编辑器以及执行模型转换的强大基础;还有JetBrains MPS、Xtext等,允许开发者创建自己的领域特定语言(DSL)并基于这些DSL进行开发。
2. 行业应用广泛:
• MDE已在航空航天、汽车制造、电信、嵌入式系统、企业应用等多个领域得到应用。在这些领域中,由于系统复杂性较高且规范严格,MDE能有效地提高设计的准确性和代码生成的效率。
3. 与敏捷开发和DevOps的融合:
• 随着敏捷开发和DevOps的流行,MDE也在努力适应这些新的开发范式,例如通过模型来支持持续集成和持续部署(CI/CD)流程,以及在模型级别进行迭代和增量开发。
4. 研究方向的深化:
• 学术界和工业界都在不断深化对MDE的研究,探讨如何解决模型复杂性问题,如何提升模型的可重用性和互操作性,以及如何更好地将MDE融入现有的软件工程实践。
5. 挑战与限制:
• 尽管MDE具有很多优点,但在实际应用中仍面临一些挑战,如模型完整性与一致性检验、模型到代码映射的有效性和精准性、团队成员对模型驱动方法的接受度和熟练度等。
总结来说,模型驱动工程在近几年已经取得了显著进展,并在特定领域得到深入应用。然而,作为一种相对较新的软件开发方法,MDE仍在不断演进和发展中,未来有望在更多场景下发挥更大的作用。同时,也需要进一步克服在推广普及过程中遇到的种种挑战。
MDD
模型驱动设计(Model Driven Design, MDD)和模型驱动开发(Model Driven Development, MDD)作为一套方法论,在过去几十年中得到了广泛的关注和发展。MDD的核心思想是通过抽象层次更高的模型来捕获系统的需求和行为,然后利用模型变换工具链自动生成程序代码或其他设计工件,以减少重复工作,提高软件质量和开发效率。MDD是MDE实践中的一个重要组成部分,专注于通过模型来驱动软件开发的具体实践,而MDE则提供了一个更加全面和整体的方法论框架,旨在利用模型在整个工程实践中发挥更大的作用。
MDD是MDE实践中的一个重要组成部分,专注于通过模型来驱动软件开发的具体实践,而MDE则提供了一个更加全面和整体的方法论框架,旨在利用模型在整个工程实践中发挥更大的作用。
MDA
模型驱动的体系结构(Model Driven Architecture,MDA)是由对象管理组织(Object Management Group ,OMG)提出并且大力倡导的软件开发方法。其核心思想是在软件开发过程中强调使用一系列抽象层次的模型,并利用模型之间的转换来实现从需求到设计、直至代码生成的全过程。MDA 强调通过平台独立模型(Platform Independent Model, PIM)和平台特定模型(Platform Specific Model, PSM)来确保软件架构和设计的可移植性和重用性。基于元模型的应用系统集成方法提高了用户构造大规模应用系统的能力。元模型驱动的开发模式减少了业务模型发生更改时,对组件内部逻辑和部接口进行的修改工作量,并方便实现应用开发从一种平台到另外一种平台的切换。
OMG MDA technologies
- MOF 2.0
- XMI 2.0
- UML 2.0
- OCL 2.0
- QVT
MDA defines a framework that separates the specification of the system functionality from its implementation on a specific platform. It distinguishes different kinds of models:
- 计算独立模型• Computation Independent Model (CIM), a model that describes a system from the computation independent viewpoint.
- 平台独立模型• Platform Independent Model (PIM), a model with a high level of abstraction that is independent of any implementation technology.
- 平台相关模型• Platform Specific Model (PSM), a tailored model to specify the system in terms of the implementation constructs available in one specific platform.
- 特定实现模型• Implementation Specific Model (ISM), a description (specification) of the system in source code.
The Unified Modeling Language (UML) (UML, 2009a) (UML, 2009b) combined with the Object Constraint Language (OCL) (OCL, 2006) is the most widely used way for writing either PIMs or PSMs.
相比MDA,模型驱动工程(MDE)则是一个更为广泛的概念,它包含了MDA的思想,但不仅限于MDA所关注的架构层面,而是将模型驱动的方法扩展到了整个软件开发生命周期的所有阶段,包括需求分析、设计、编码、测试、部署维护等各个环节。MDE倡导以模型为核心,构建和操作软件系统的不同抽象视图,使用模型转换和综合工具来自动化或半自动化地生成系统各部分,包括但不限于源代码、配置文件、数据库模式以及其他工件。
总的来说,MDA可以看作是MDE在特定领域的应用和实践之一,MDE提供了一种更加全面和灵活的基于模型的开发范式,涵盖了多种技术和标准,而MDA则是其中一种具有标准化特性的方法论。
长期以来,没有那个组织真正实现了MDA的工具或方案:Rational软件已经被IBM成功搞残;AndroMDA的最后一次发布还是在2010年;Eclipse GMT从2005年开始孵化,但到了2007年似乎已经死亡。
EMF
Eclipse Modeling Framework (EMF) 是一个强大的开源建模框架,广泛应用于软件开发中需要模型驱动工程(Model Driven Engineering, MDE)的场景。EMF使得开发者能够定义域特定的模型,并基于这些模型生成代码、编辑器以及其他基础设施。Eclipse Modeling Framework(EMF)在Eclipse基金会的支持下持续发展。EMF作为Eclipse平台上的一个核心组件,为模型驱动工程(Model Driven Engineering, MDE)提供了强大的支持,特别是在Java环境中用于构建和处理模型。EMF不仅适用于创建和编辑模型,还能基于模型生成代码和其它形式的工件,简化大型系统的开发和维护工作。以下是几个著名的EMF应用案例:
1. Eclipse IDE内部组件:EMF本身就是Eclipse平台的一部分,许多Eclipse的子项目和插件,比如Papyrus UML建模工具、Xtext DSL工具等,就使用了EMF作为其基础建模框架。
2. 大规模企业级应用:EMF常被用于构建复杂的业务逻辑模型,并基于这些模型生成大量的Java代码,减少手动编写重复性代码的工作量,提高开发效率和一致性。
3. 配置和管理系统:在电信、汽车、航空等行业,EMF常被用来构建配置管理系统,比如网络设备配置、嵌入式系统的配置文件等。
4. 数据交换标准:EMF可以用于实现行业标准的数据交换格式,例如SysML(System Modeling Language)的一种实现就基于EMF。
5. 基础设施设计:在建筑信息模型(Building Information Modeling, BIM)领域,EMF及其衍生工具和技术可用于创建和处理IFC(Industry Foundation Classes)模型。
EMF由于其强大的建模能力和代码生成特性,能够帮助开发者按照这些标准来定义和操作模型,并方便地序列化和反序列化数据,从而支持数据在遵循同样标准的不同系统间无障碍地交换。举例来说,假设有一个行业制定了某种特定的数据交换格式标准,如XML Schema或类似的规范,通过使用EMF,开发团队可以基于这个标准构建相应的模型,然后自动生成解析和生成这种格式所需的所有代码。这样一来,不仅简化了开发过程,同时也保证了与标准的一致性和互操作性。
Eclipse Modeling Framework (EMF) 主要被用于定义、存储、交换和操作结构化数据模型的场景,尤其适用于软件开发过程中的模型驱动工程(Model-Driven Engineering, MDE)。以下是一些EMF常被用作数据交换标准的具体场景:
1. 模型定义和互操作性:
• 定义和规范化特定领域的模型结构,如UML模型、SysML模型、XML Schema定义等。
• 在不同工具和系统之间交换和共享一致的数据模型,确保模型的语义和结构保持不变。
2. 代码生成和模型驱动开发:
• EMF可以依据定义好的模型自动生成Java源代码,用于实现模型的持久化、操作和展示。
• 在MDA(Model Driven Architecture)中,开发者可以通过EMF模型来生成不同层次的软件构件,如接口、类、数据库脚本等,实现从高层次抽象模型到具体实现的转换。
3. 数据交换格式:
• EMF可以生成XML Schema并支持将模型数据导出为XML格式(ECORE XMI),这成为了一种跨平台、跨语言的数据交换标准。
• 通过这种方式,不同工具和应用程序可以使用通用的XML格式进行数据交换,大大提高了数据互操作性。
4. 集成开发环境支持:
• 在Eclipse IDE中,EMF提供了丰富的图形编辑器和模型浏览器的支持,方便开发人员在统一的环境中设计和修改模型。
• 对于大型软件项目,尤其是分布式团队合作开发时,EMF可以确保模型数据在团队间传递的一致性和有效性。
EMF框架及其生态系统提供了大量的工具和插件,这些工具极大地增强了对模型生命周期各个阶段的支持,具体包括但不限于以下几个方面:
1. EMF Generator Tools:
• EMF提供了代码生成工具,可以根据定义的Ecore模型生成对应的Java模型类、编辑器界面、序列化/反序列化代码以及其他基础设施代码,这样开发者可以直接基于生成的代码进行业务逻辑开发,而无需手写底层数据处理和持久化机制。
2. Graphical Editors and Modelers:
• GMF (Graphical Modeling Framework) 是基于EMF的一个图形化建模工具集,用于创建具有可视化编辑能力的Eclipse插件,使得用户可以直观地以图形方式创建和编辑模型。
• Sirius是一款强大的图形建模工具,允许开发者构建高度定制化的图形编辑器,它可以与EMF模型紧密结合,为用户提供更高级别的可视化建模体验。
3. Model Validation:
• EMF提供了内置的验证框架,允许开发者为模型添加约束规则,确保模型数据的有效性和完整性。
4. Transformations:
• ATL (Atlas Transformation Language) 和 Xtend 等工具支持模型之间的转换,能够自动将一个模型转化为另一个模型,这对于模型驱动架构(MDA)中的PIM到PSM再到代码的转换非常关键。
5. Persistence Support:
• EMF 支持多种持久化方式,包括XMI(XML Metadata Interchange)、数据库持久化等,便于模型数据的存储和交换。
6. Runtime Services:
• EMF提供了运行时的服务框架,如通知机制(notification)、查询服务(querying)、动态更新等功能,有助于在运行时有效地操作和管理模型实例。
7. 协同开发和版本控制:
• EMF与Eclipse平台上的其他工具集成良好,比如支持与Git、SVN等版本控制系统结合,以跟踪模型的变更历史和协同开发。
因此,借助这些丰富的工具,EMF不仅简化了模型的设计和实现过程,还大大提升了模型在开发、测试、部署及维护阶段的效率和质量。
SysML
SysML (Systems Modeling Language) 是一种专门针对系统工程领域的建模语言,它是 UML (Unified Modeling Language) 的一个扩展,用来描述复杂的系统需求、行为、结构和参数。
SysML(System Modeling Language)是一种广泛应用于系统工程领域的建模语言,它基于UML(Unified Modeling Language)扩展而来,主要用于描述复杂系统的架构、行为、需求和物理结构等方面。SysML的实现通常涉及到采用特定的建模工具和框架,而基于EMF(Eclipse Modeling Framework)的实现则是其中一种技术途径。基于EMF实现SysML意味着开发者可以利用EMF的强大建模能力和扩展性来构建支持SysML的建模工具,比如通过定义SysML元模型,然后在这个基础上构建可视化编辑器和模型验证器等组件。
MBSE
基于模型的系统工程“Model-Based Systems Engineering MBSE”支持以概念设计阶段开始,并持续贯穿于开发和后期的生命周期阶段的系统需求、设计、分析、验证和确认活动的正规化建模应用。”用通俗一点语言解释的话,MBSE就是开发一个产品、平台的时候,把产品、平台研发中涉及到的各个方面用“计算机数据模型”方式建立起来,形成一个统一的“系统模型”。
MBSE是一套理念,有多种实现的方法论,SysML是实现MBSE的建模语言,有多个工具支持。
Papyrus for SysML:
Papyrus for SysML 是一个开源的 UML/SysML 工具,它是 Eclipse Foundation 下的 Papyrus 项目的一部分,专门为系统工程师设计,用于创建和管理复杂的系统模型。Papyrus 提供了一个完全符合 OMG 规范的 SysML 图形建模环境,支持多种模型视图,如需求模型、结构模型、行为模型等。随着系统工程的日益成熟,Papyrus for SysML 在工业界得到了一定的采纳,特别是在航空航天、国防、汽车等行业中有较为广泛的使用。
Sirius:
Sirius 是另一种基于 Eclipse 平台的开源建模框架,它允许开发者定制自己的图形建模工具,包括但不限于 SysML 支持。Sirius 不是直接提供一个现成的 SysML 建模环境,而是提供了一种工具来创建和扩展这样的环境。这意味着用户可以根据具体的项目需求,使用 Sirius 构建高度定制化的建模工具,这些工具可以支持 SysML 或者是其他特定领域的建模语言。因此,在企业内部或者学术研究中,Sirius 可能被用于开发专门针对某一套系统工程流程或特定领域需求的建模解决方案。
总体而言,Papyrus for SysML 和 Sirius 在软件工程实践中都有较高的实用价值。Papyrus 更适合直接使用预定义的 SysML 功能进行建模工作的团队和个人,而 Sirius 更倾向于那些需要深度定制建模工具以满足特定业务场景需求的团队。两种工具在系统工程生命周期的不同阶段,以及不同规模和类型的项目中均有不同程度的采用和应用。
对于SysML基于EMF的实现,通常意味着:
1. 模型定义:首先,通过EMF提供的元模型定义技术,可以精确地描述SysML语言的核心概念、规则和约束,形成SysML的元模型。
2. 模型编辑器:基于EMF的基础设施,可以构建SysML模型的图形化编辑器,允许用户通过图形界面创建和修改符合SysML规范的系统模型。例如,可以创建需求图、用例图、活动图、状态机图等SysML特有的图表。
3. 模型持久化与交换:利用EMF的序列化机制,可以将SysML模型保存为标准格式(如XMI),便于模型的存储、版本控制以及与其他工具间的模型交换。
4. 模型执行与分析:通过EMF的模型推理和模型驱动的工具链,可以实现SysML模型的动态仿真、验证以及与其他系统工程工具的集成,如MBSE(Model-Based Systems Engineering)平台。
因此,一个基于EMF实现的SysML工具集通常会包括一套完整的建模环境,其中涵盖了模型创建、编辑、存储、交换以及进一步的系统工程活动支持。例如,Papyrus for SysML就是这样一个基于EMF实现的开源SysML建模工具。
OpenMETA 是 MetaCase 公司开发的一款基于模型的工程工具套件,用于系统和软件设计自动化。OpenMETA 提供的功能包括但不限于:
1. 模型驱动工程:支持创建和编辑不同领域的特定模型,并基于这些模型生成代码、接口定义、仿真环境等。
2. 建模工具集成:能够整合多种建模语言和工具,如UML、SysML以及其他特定领域的建模语言。
3. 系统合成与优化:支持系统级的设计空间探索,允许用户通过参数化模型来快速迭代设计方案并进行性能评估与优化。
4. 自动化代码生成:基于模型自动生成符合目标规范的源代码,以减少手工编码的工作量并提高一致性。
5. 互操作性:支持与其他建模工具和标准格式(如XML、OpenAPI等)的互操作,便于数据交换和协同工作。
6. 复杂系统设计:适用于复杂的嵌入式系统、软件系统以及跨领域的系统工程,支持从概念设计到详细设计再到实施的全生命周期管理。
MOF
在软件工程领域,元对象设施Meta Object Facility (MOF) 是一个标准化的框架或结构,用于定义和处理元模型(Meta-models)以及相关的元数据(Metadata)。这里的 “Facility” 不是指具体的开发工具、软件程序、软件平台或技术组件,而是指一套规范、方法论和技术能力。
Facility 在此上下文中的含义:
• 规范:MOF 提供了一种通用的方法和规则集,用于构建和交换系统设计、架构和实现的抽象层次描述。
• 框架:作为一种设施,MOF 提供了构建和操作元数据模型的基础结构,使得不同工具和平台之间可以共享一致的模型信息。
• 能力:MOF 提供的是对元模型进行定义、实例化、存储、查询和转换的能力,而不直接提供编程接口、代码生成器或运行时环境等具体工具。
总结来说,Meta Object Facility 是一个基础设施级别的规范,为软件工程领域的模型驱动架构(MDA)、统一建模语言(UML)以及其他形式的系统建模提供了共同的语言和标准,支持跨工具、跨平台的模型一致性及互操作性。
MOF四层模型
1.信息层(information layer)
信息是由我们希望描述的数据组成,这些数据通常是用户数据,主要职责是描述信息领域中的详细信息.在数据层用元数据进行对这些用户数据的描述.元数据即为关于数据的数据.即对业务数据的一次抽象(通常的表现形式是一些概念性的,抽象的名字,如单据,操作人等).
2.模型层(model layer)
模型层由元数据组成,元数据的集合被称为模型.模型层的主要职责是为描述信息层而定义的一种"抽象语言"(即没有具体语法或符号的语言,一般用嘴能进行描述,但不规范)。信息层的数据,即用户数据,是模型层的一个实例。可以理解为一个模型对应的是一个业务系统,只是比现实中运行的业务系统更加抽象一些,但一般情况下人们都能够理解这样的模型,但这种模型的构建不标准,不统一,不同的业务系统会有不同的业务模型,其表现形式也不尽相同,比如有些用文档进行描述,有些用视频进行描述,有些通过画图进行描述,等等.
3.元模型层(metamodel layer)
元模型层是由元元数据组成(元元数据的实例),元元数据定义了元模型的结构和语义,这些元元数据的实例化集合被称作为元模型(即元模型是一个语法体系,是关于元元数据结构实例化后的语法体系)。元模型层的主要职责是为了描述模型层而定义的一种"抽象语言",是对模型层的进一步抽象。也就是说,模型层描述的内容通常要比元模型层描述的内容丰富、详细。一个模型是元模型的一个实例(因为在元模型的定义下,是可以画出模型的,所以说模型层是元模型层的一个实例,也就是说可以通过元模型的语法规则画出很多的模型,根据不同的应用场景)。
4.元元模型层(meta-metamodel layer)
元元模型层是由元元数据的结构和语义的描述组成,这层的主要职责是为了描述元模型而定义的一种"抽象语言"。元元模型的定义要比元模型更加抽象、简洁(即元元模型是关于元元数据本身的更深一个层次的抽象,即是描述元元数据的抽象.)。一个元元模型可以定义多个元模型,一个元模型是元元模型的一个实例。
相关文章:

模型驱动架构MDA
MDE 模型驱动工程(MDE, Model-Driven Engineering)是软件工程的一个分支,它将模型与建模拓展到软件开发的所有方面,形成一个多维建模空间,从而将工程活动建立在这些模型的映射和转换之上。[1] MDE的基本原则是将模型视…...
std::error::Error 和 std::io::Error 的区别和用法
std::error::Error 和 std::io::Error 在 Rust 中都是用于错误处理的类型,但它们各自有不同的用途和场景。 std::error::Error: std::error::Error 是一个 trait,它定义了错误处理的基本接口。这个 trait 通常由其他具体的错误类型实现&…...

16 OpenCV Laplance算子
文章目录 图像的二阶导数Laplance算子代码示例 图像的二阶导数 在二阶导数的时候,最大变化处的值为零即边缘是零值。通过二阶 导数计算,依据此理论我们可以计算图像二阶导数,提取边缘。 Laplance算子 void Laplacian( InputArray src, Output…...

hardhat学习笔记
hardhat学习笔记会不定时填充内容。 初始化项目 yarn init 安装hardhat依赖 yarn add --dev hardhat 初始化 Hardhat yarn hardhat 代码格式化 yarn add --dev prettier prettier-plugin-solidity 项目中增加.prettierrc 与 .prettierignore 配置文件统一格式࿰…...

算法刷题day28
目录 引言一、截断数组二、双端队列三、日期统计 引言 这几道题是周赛里的几道题目,第一道题目我没用这种方法,但还是做出来了,用的一种比较特殊的思考方法,就是把每一个点都判断出来,不满足要求的就舍弃,…...

vivado 使用Design Runs窗口、
使用Design Runs窗口 “设计运行”窗口显示在项目中创建的所有合成和实现运行。它包括用于配置、管理和启动运行的命令。 打开Design Run窗口 选择窗口 → Design Runs打开“Design Runs”窗口。 设计运行窗口功能 •每个实现运行都缩进显示在其子级的合成运行下面。 …...
基于YOLOv8的手机摄像头的自动检测系统
文章大纲 数据集网络爬虫开源数据集标注目标定义标注标准标注工具标签更换脚本自制数据集下载地址自动检测系统设计与搭建模型训练与准确率代码仓库下载地址参考文献与学习路径随着移动通信技术的飞速发展,消费者对移动终端的要求也越来越高,各厂商纷纷提出自己的特色卖点,其…...
Ubuntu18.04添加内核模块(字符设备)
Ubuntu18.04添加内核模块(字符设备) 虚拟机Ubuntu18.04(内核版本linux-5.4.0-135-generic) 参考 嵌入式Linux驱动开发(一)——字符设备驱动框架入门 1 编译内核模块 创建字符设备代码文件char_dev.c&a…...

PromptBreeder---针对特定领域演化和发展提示词的方法
原文地址:promptbreeder-evolves-adapts-prompts-for-a-given-domain 论文地址:https://arxiv.org/pdf/2309.16797.pdf 2023 年 10 月 6 日 提示方法分为两大类 硬提示是由人工精心设计的文本提示,包含离散的输入令牌;其缺点…...

Java后端八股文之Redis
文章目录 1. Redis是什么?2. Redis为什么这么快?3. 为什么要使用缓存?4. Redis几种使用场景:5. Redis的Zset底层为什么要使用跳表而不是平衡树、红黑树或者B树?6.Redis持久化6.1 什么是RDB持久化6.1.1RDB创建快照会阻塞…...
一维数组_与指定数相同的数的个数
任务描述 输出一个整数序列中与指定数字相同的数的个数。 输入格式: 第一行为N,表示整数序列的长度(N < 100); 第二行为N个整数,整数之间以一个空格分开; 第三行包含一个整数,为指定的整数m。输出格式: 输出为N…...

如何在Linux系统安装SVN并配置固定公网地址远程访问【内网穿透】
文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…...
获取webshell的十种方法
一、直接上传获取webshell 这种对php和jsp的一些程序比较常见,MolyX BOARD就是其中一例,直接在心情图标管理上传。php类型,虽然没有提示,其实已经成功了,上传的文 件url应该是http://forums/images/smiles/下…...

项目实战-tpshop商城项目
项目实战-tpshop商城项目 环境部署准备软件工具准备远程连接测试远程连接测试-查看虚拟机IP地址远程连接测试-检测本机与虚拟机是否连通远程连接测试-通过远程工具连接linux服务器 常见问题处理 环境部署项目技术架构介绍部署tpshop项目-tpshop验证数据库验证用户信息表熟悉商品…...
网络地址转换协议NAT
网络地址转换协议NAT NAT的定义 NAT(Network Address Translation,网络地址转换)是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因…...
Vue教学18:Element UI进阶组件探索,提升Vue应用的专业性
大家好,欢迎回到我们的Vue教学系列博客!在前十七篇博客中,我们学习了Vue.js的基础知识、安装Node.js与npm、使用Vue Devtools进行调试、Vue实例与生命周期钩子、数据绑定(单向与双向)、计算属性与侦听器、条件渲染和列…...
UE5.1_TimeLine
UE5.1_TimeLine 问题引入:UE的Timeline可以在一个场景下无限制的使用多少次?一个动画流程的Timeline的时间持续怎么算?TimeLine中嵌套Timeline的做法是否是合理的?...

Qt自定义控件
自定义控件 目的:将多个控件或者窗口作为一个整体被多次复用。 操作方式 1.首先进行自定义的ui设计,以及对应的.h和.cpp文件 2.到要使用的UI界面上,从控件库中拖拽一个Widget控件 3.右键点击"提升为" 4.填写自定义实现的类名&…...

nRF52832——串口 UART 和 UARTE 外设应用
nRF52832——串口 UART 和 UARTE 外设应用 UART 和 UARTE 原理UART 功能描述UARTE 功能介绍 应用实例串口打印实例串口输入与回环UART 模式串口中断 UART 和 UARTE 原理 UART 功能描述 串口 UART 也称为通用异步收发器。是各种处理器中常用的通信接口,在 nRF52 芯…...

String 底层为什么使用 final 修饰?
1、典型回答 对于这个问题,Java之父詹姆斯 高斯林(James Gosling) 是这样回答的: I would use an immutable whenever I can 翻译为中文:只要允许,我就会使用不可变对象 而作为普通人的我们来说࿰…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...

springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...

Unity中的transform.up
2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...

AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)
Name:3ddown Serial:FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名:Axure 序列号:8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...

CSS3相关知识点
CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...