INCOSE需求编写指南-附录 C: 需求模式
附录 Appendix C: 需求模式 Requirement Patterns
C.1 需求模式简介 Introduction to Requirement Patterns
需求模式(样板或模板)的概念最初于 1998 年在英国的未来水面战斗人员 (FSC) 国防项目中应用(Dick 和 Llorens,2012 年),用于帮助解决编写不同类型的文本需求(及时性等)时的若干困难。一旦向需求编写者展示了如何根据其类型形成需求陈述的良好示例,编写正确格式的需求的困难就基本上克服了。 The notion of requirement patterns (boilerplates or templates) was initially applied within the Future Surface Combatant (FSC) defense project in the United Kingdom in 1998 (Dick and Llorens, 2012) as an aid to solve several difficulties when writing different types of textual requirements (timeliness, etc.). Once requirement writers are shown a good example of how to form a requirement statement based on its type, the difficulty in writing a properly formed requirement was largely overcome.
使用模式还可以开发 NLP/AI 工具或“数字助理”。这些工具与项目本体一起,可以帮助作者编写需求和要求声明,并帮助确保满足本指南中定义的规则和特征。 The use of patterns also enables the development of NLP/AI tools or “digital assistants”. These tools, along with a project ontology, can aid writers when writing need and requirement statements and helping ensure the rule and characteristics defined within this Guide are met.
可以在模式中定义“结构化和规范化”需求类型的示例。模式可以构造为占位符的顺序列表,包括单词以及句法或语义限制。这些占位符通常称为模式槽。需求文本是按照适合要传达的内容的需求模式编写的。 “Structured and normalized” examples of types of requirements can be defined in patterns. A pattern may be structured as a sequential list of placeholders, including words, along with syntactic or semantic restrictions. These place holders are generally called pattern slots. The requirement text is written per a requirement pattern that is appropriate to what is to be communicated.
例如,以下示例表示一个需求陈述和关联的候选模式。在此示例中,需求模式有 6 个模式槽。 For example, the following example represents a requirement statement and the associated candidate pattern. In this example, the requirement pattern has 6 pattern slots.
电源可用性应大于或等于 98%。 The Power_Supply shall have an Availability greater than or equal to 98%.
<子系统> <应> <具有> <a:可选> <物理属性> <操作符> <百分比>
<Subsystem> <shall> <have> <a: Optional> <PHYSICAL_PROPERTY> <OPERATOR> <PERCENTAGE>
目前,用于定义表示句法和语义层面的常见自然语言需求结构的抽象的术语还不够成熟。文献中采用了几种方法(请参阅本附录末尾的参考资料),目的类似。 Currently, the terminology for defining the abstractions that represent common natural language requirement structures at the syntactic and semantic level is not mature enough. Several approaches are used in the literature (see references at the end of this appendix) with similar intent.
一种常见的方法是使用“需求模板”。术语“模板”最常用于需求管理领域,指需求文档的结构和组织。使用此类模板有助于确保作者在组织一组需求陈述时考虑到所有关注点。对于需求陈述,一些作者创造了一个更详细的术语:“陈述级模板”,以避免与需求集模板混淆(Dick 和 Llorens,2012 年)。 One common approach uses “requirement templates”. The term “template” is most often used in the field of requirements management to refer to the structure and organization of a requirements document. The use of such templates helps ensure that the authors consider the complete range of concerns when organizing a set of requirement statements. For requirement statements, some authors have coined a more detailed term: “statement-level template” to avoid confusion with templates for requirement sets (Dick and Llorens, 2012).
在另一种方法中,Hull 等人(2002)使用“样板”来指代单个文本要求的语法结构。 In another approach Hull et al (2002) use “boilerplates” to refer to a grammatical structure for an individual textual requirement.
“模式”一词在软件(Gamma 等,1994)和最近的系统工程中具有明确的含义,通常表示一种可重复使用的结构,通过实例化和配置该结构以使其成为解决方案来解决问题。INCOSE 和其他组织提倡在系统工程生命周期中使用这个术语(INCOSE 模式工作组)。为了与这些用途保持一致,本指南使用术语“模式”来表示表示句法和语义信息(限制和属性)的常见自然语言需求结构的概念。 The term “pattern” has a clear meaning in software (Gamma et al, 1994) and recently systems engineering, usually representing a reusable structure that resolves a problem by instantiating and configuring this structure to become a solution. INCOSE and others promote this term for use in the system engineering lifecycle (INCOSE Patterns Working Group). To align with these uses, this guide uses the term “patterns” to represent the concept of common natural language requirements structures representing syntactic and semantic information (restrictions and properties).
正如本指南所述,有多种因素有助于实现高质量的需求陈述和需求集。帮助实现高质量需求陈述和需求集的一个重要方法是正确定义和约定需求必须遵循的一组需求模式。本附录提供了有关需求模式的更多详细信息。 As this guide describes, there are multiple factors that contribute to the realization of high-quality requirement statements and sets of requirements. One important way to assist in achieving high quality of requirement statements and sets of requirements is by the proper definition and agreement of a set of requirement patterns with which the requirements must comply. This appendix provides additional detail on requirement patterns.
本指南的多个部分都提到了需求模式的概念——模式用于确保需求和需求集遵循本指南中的规则,以便它们具有所需的特性。 The concept of a requirement pattern is mentioned in several sections of this guide— patterns are used to ensure that requirements and requirement sets obey the rules in this guide so that they have the desired characteristics.
C.2 使用模式形成需求陈述的好处 Benefits of Using Patterns to Form Requirement Statements
确保需求符合商定的模式有助于需求验证活动,并有助于确保需求有效地传达需求。此外,按照一组商定的模式编写需求还可以更轻松地完成以下工作: Ensuring that requirements conform to agreed-to patterns contributes to the requirement verification activity and helps to ensure the requirements effectively communicate needs. In addition, writing requirements following a set of agreed-upon patterns also makes it easier to:
- 编写简洁、易读且原子性强的需求说明 write concise, easy to read and atomic requirement statements;
- 在大型文档中查找和分类需求 find and classify requirements within a large document;
- 查找缺失的需求(完整性) find missing requirements (completeness);
- 在大量需求中查找不一致之处 find inconsistences within a large set of requirements;
- 查找重复的需求(以及查找和重用一般需求);以及 find duplicated requirements (and finding and reusing requirements in general); and
- 跟进其他活动,例如分析和实施 follow with other activities such as analysis and implementation.
此外,遵循一组商定的模式还会产生一组一致的需求,并实现多项需求管理活动的自动化,例如: In addition, following a set of agreed-upon patterns also leads to a consistent set of requirements, and the automatization of several requirement management activities such as:
- 半自动需求验证,确保需求陈述具有本指南中定义的特征并符合其规则 the semi-automatic requirement verification that requirement statements have the characteristics and conform to the rules defined in this guide;
- 验证与所有系统生命周期中生成的系统工程工件相关的其他一致性和完整性规则(例如,模型中所述的需求与设计的一致性以及项目本体中定义的术语的一致使用) the verification of other consistency and completeness rules associated with systems engineering artifacts generated across all system lifecycles (e.g., consistency of requirements versus design as stated in a models and consistent use of terms defined in the project ontology);
- 从需求或非结构化文档中提取实体、属性等;以及 the extraction of entities, properties, etc. from requirements or unstructured documents; and
- 将需求翻译成不同的语言 the translation of requirements to different languages.
最后,需求模式还可以促进正确教授良好且常见的需求编写方式的过程,并利用一致的词汇。 Finally, requirement patterns can also facilitate the process of properly teaching a good and common way of writing requirements and leverage the use of consistent vocabulary.
C.3 需求模式的构建模块 Building Blocks for Requirement Patterns
在定义需求模式的语法时,必须考虑递归。从这个意义上讲,需求模式可能由更小的模式(构建块)组成(如果需要),这些更小的模式也可以进一步拆分为更小的块。 When it comes to defining the grammar of a requirement pattern, recursion has to be considered. In that sense, requirement patterns may be made up, if necessary, of smaller patterns (building blocks) that can also be further split in even smaller blocks.
这使得需求模式更加模块化和可重用,因为不同类型的需求可以共享一些共同的构建块,同时也具有独特的元素。 This makes requirement patterns more modular and reusable, since different types of requirements can share some common building blocks, whilst also having unique elements.
例如,某些特殊类型的需求可能(可选)包含性能信息。如果将性能信息表示为第二级模式,则可以获得以下几个优点: For example, some special types of requirements may include (optionally) performance information. If the performance information is represented as a second level pattern, several advantages can be gathered:
- 该第二级模式可能会在不同的顶级模式中重复使用 This second level pattern might be reused among different top-level patterns.
- 可以定义第二级模式的变体,从而扩展整个模式目录的“表现力”,而无需改变顶层模式 Variations of the second level pattern can be defined yet extending the ‘expressivity’ of the entire catalog of patterns, with no need of changing the toplevel ones.
幸运的是,本附录中提到的递归并不太深;只需几个层次就足以提供一组灵活且可重用的模式目录。通常,复杂模式由子模式组成,简单模式由简单限制组成,定义一组构建块。构建这些模式目录的方式(自下而上、自上而下、迭代等)由每个组织根据其特定需求决定。 Fortunately, the recursion referred in this appendix is not too deep; just a few levels should be enough to provide a set of flexible and reusable catalog of patterns. Usually, the complex patterns are formed by sub-patterns and the simple patterns are formed by simple restrictions, defining a set of building blocks. The way to construct these patterns catalog (bottom up, top down, iterative, etc.) is left to each organization based on their specific needs.
作为示例,图 C-1 显示了可能位于模式目录中的用作构建块的子模式的结构。 As an example, Figure C-1 shows the structure of sub-patterns used as building blocks that may be in a catalog of patterns.

根据商定的模式编写需求是一种很好的方法,可以产生一组一致的需求。但是,如果用于指定需求的实际词语和概念使用不一致,处理一致的模式基本上是没有意义的。每个组织都必须在知识管理流程范围内解决这一挑战。必须在模式中实现此通用本体,以用于记录和管理需求开发和系统工程流程活动。 Writing requirements based on agreed patterns is a good approach that will result in a consistent set of requirements. However, dealing with consistent patterns is largely pointless if the actual words and concepts used to specify a requirement are not used consistently. Every organization must solve this challenge within the scope of the knowledge management process. This common ontology must be implemented within the schema to be used to document and manage the requirement development and systems engineering process activities.
需求模式的其他来源包括 Other sources of requirement patterns are:
- Jeremy Dick, Juan Llorens, "Using Statement-level Templates to Improve the Quality of Requirements", International Conference on Software and Systems Engineering and Applications. ICSSEA 2012, Paris, France.
- Hull et al: Requirements Engineering, Springer, 2012.
- “EARS – Easy Approach to Requirements Syntax”, http://ieeexplore.ieee.org/document/5636542/
- The PABRE Catalog: http://www.upc.edu/gessi/PABRE/index.html
- ARTEMIS CRYSTAL EU Research Project: http://www.crystal-artemis.eu/
相关文章:
INCOSE需求编写指南-附录 C: 需求模式
附录 Appendix C: 需求模式 Requirement Patterns C.1 需求模式简介 Introduction to Requirement Patterns 需求模式(样板或模板)的概念最初于 1998 年在英国的未来水面战斗人员 (FSC) 国防项目中应用(Dick 和 Llorens,2012 年…...
WGCLOUD使用介绍 - 如何监控ActiveMQ和RabbitMQ
根据WGCLOUD官网的信息,目前没有针对ActiveMQ和RabbitMQ这两个组件专门做适配 不过可以使用WGCLOUD已经具备的通用监测模块:进程监测、端口监测或者日志监测、接口监测 来对这两个组件进行监控...
【VASP】AIMD计算总结
【VASP】AIMD计算总结 vasp 计算文件INCAR 参数介绍后处理 二维材料与异质结的构造除了筛选优势还应该判断是否稳定,所以我在这分享一篇基于vasp6.2计算的AIMD 示例: https://www.vasp.at/wiki/index.php/Liquid_Si_-_Standard_MD vasp 计算文件 POSCA…...
春节旅游高峰,人力资源如何巧妙应对?
春节旅游高峰,人力资源如何巧妙应对? 春节等假期一到,各大旅游景区便人潮汹涌,游客如织。面对这种旅游高峰,工作人员往往要连续超负荷运转,身心俱疲。特别是在那些热门景区和网红打卡地,人…...
zsh安装插件
0 zsh不仅在外观上比较美观,而且其具有强大的插件,如果不使用那就亏大了。 官方插件库 https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins 官方插件库并不一定有所有的插件,比如zsh-autosuggestions插件就不再列表里,下面演示zs…...
continuous batching、chunked-prefill相关概念
batching VS. continuous batching batching是所有requests的output都生成完毕之后,才能开始处理下一个batch。一般要做input padding,要等待凑够batch才运行(也有超时bar)。 continuous batching是每完成1个request,就…...
python算法和数据结构刷题[2]:链表、队列、栈
链表 链表的节点定义: class Node():def __init__(self,item,nextNone):self.itemitemself.nextNone 删除节点: 删除节点前的节点的next指针指向删除节点的后一个节点 添加节点: 单链表 class Node():"""单链表的结点&quo…...
认知神经科学0-----关于心智的生物学(2011年第三版)
译者序 人类的科学事业所面临的挑战之一-就是认识意识与物质或心灵(智慧)与大脑的关系。从古希腊哲学先贤或更早的时代开始,人类对这一-古 老问题就有了大量的探讨或臆测;但仅仅是在近代和现代,人们才真正在科学的意义上探索心智与大脑的关系。脑…...
想品客老师的第九天:原型和继承
原型与继承前置看这里 原型 原型都了解了,但是不是所有对象都有对象原型 let obj1 {}console.log(obj1)let obj2 Object.create(null, {name: {value: 荷叶饭}})console.log(obj2) obj2为什么没有对象原型?obj2是完全的数据字典对象,没有…...
指针(C语言)从0到1掌握指针,为后续学习c++打下基础
目录 一,指针 二,内存地址和指针 1,什么是内存地址 2,指针在不同系统下所占内存 三,指针的声明和初始化以及类型 1,指针的声明 2,指针 的初始化 1, 初始化方式优点及适用场景 4,指针的声明初始化类型…...
php接口连接数据库
框架:https://www.thinkphp.cn/doc 创建网站 域名自己写 创建文件夹,“test”拉取框架,地址栏输入 composer create-project topthink/think5.1.* tp5 会自动创建一个tp5文件夹 根目录选择刚刚创建拉框架的文件夹 以test为示例 “D:\test\…...
Qt中json的使用
目录 一、json相关类和接口 1.QJsonDocument 2.QJsonObject 3.QJsonArray 4.QJsonValue 二、json写文件 1.写文件基本流程 2.代码示例 三、json读文件 1.读文件基本流程 2.代码示例 json是一种轻量级的数据交换格式,在Qt中使用json数据可以通过Qt提供的Q…...
OpenAI-Edge-TTS:本地化 OpenAI 兼容的文本转语音 API,免费高效!
文本转语音(TTS)技术已经成为人工智能领域的重要一环,无论是语音助手、教育内容生成,还是音频文章创作,TTS 工具都能显著提高效率。今天要为大家介绍的是 OpenAI-Edge-TTS,一款基于 Microsoft Edge 在线文本…...
物业系统改革引领行业智能化管理与提升服务质量的新征程
内容概要 在当今迅速变化的社会中,物业系统改革正在悄然推动行业的智能化管理进程。物业管理作为一个古老而传统的领域,面临着诸多挑战,包括效率低下、业主需求难以满足等。数字化转型为这一现象注入了新活力,帮助物业公司通过先…...
【LLM】Deepseek本地部署学习
文章目录 1. 访问ollama官网安装平台2. 选择配置3. 下载和运行 1. 访问ollama官网安装平台 https://ollama.com/ 2. 选择配置 参考以下配置要求 3. 下载和运行 ollama run deepseek-r1:7b...
Vscode编辑器下 Markdown无法显示图片
1.问题 在vscode 编辑器中无法预览 markdon 文件中的图片 2.解决方案 大部分出现这种情况是因为新版本的vscode会阻拦有风险的资源显示,将安全等级调低即可。 方式一: 1.打开任意 MD 文件,ctrl,调出设置 2. 输入 markdown.ch…...
Java实现.env文件读取敏感数据
文章目录 1.common-env-starter模块1.目录结构2.DotenvEnvironmentPostProcessor.java 在${xxx}解析之前执行,提前读取配置3.EnvProperties.java 这里的path只是为了代码提示4.EnvAutoConfiguration.java Env模块自动配置类5.spring.factories 自动配置和注册Enviro…...
高效学习方法分享
高效学习方法分享 引言 在信息高速发展的今天,学习已经成为每个人不可或缺的一部分。你是否曾感到学习的疲惫,信息的爆炸让你无从下手?今天,我们将探讨几种高效的学习方法,帮助你从中找到适合自己的学习之道。关于学…...
分库分表 相关问题
问题:分库后,就有多个数据源需要,dbproxy 对机器做代理,一般需要lvs/f5 等手段来实现流量的负载均衡,跨机房可能需要dns分发,例如 mycat 阿里的主键。 就这个问题通过一问一答的方式解答 什么是 dbproxy&…...
【Linux系统】进程间通信:实现命名管道通信
认识命名管道通信 命名管道通信的结构图示: 图中的 Server 和 Client 是不同的进程, Server 负责发送数据, Client 则是接收数据,进程之间通过命名管道进行数据通信 准备工作: 创建以下文件 Server.hpp #服务器类的…...
IT服务管理平台(ITSM):构建高效运维体系的基石
IT服务管理平台(ITSM):构建高效运维体系的基石 在数字化转型浪潮的推动下,企业对IT服务的依赖日益加深,如何高效管理和优化IT服务成为企业面临的重要课题。IT服务管理平台(ITSM)应运而生,以其系统化的管理方法和工具,助力企业实现IT服务的规范化、高效化和智能化。本…...
SSM开发(八) MyBatis解决方法重载
目录 一、Mybatis能否支持方法重载? 二、解决 MyBatis 方法重载问题的几种方法 解决方法一: (注解方式) 将重载方法命名为不同的方法名 解决方法二:采用@SelectProvider注解 解决方法三:使用 MyBatis 的 标签和动态 SQL 来构建不同参数的 SQL 查询 三、总结 一、Myb…...
AIGC时代的Vue或React前端开发
在AIGC(人工智能生成内容)时代,Vue开发正经历着深刻的变革。以下是对AIGC时代Vue开发的详细分析: 一、AIGC技术对Vue开发的影响 代码生成与自动化 AIGC技术使得开发者能够借助智能工具快速生成和优化Vue代码。例如,通…...
【实践案例】使用Dify构建文章生成工作流【在线搜索+封面图片生成+内容标题生成】
文章目录 概述开始节点图片封面生成关键词实时搜索主题参考生成文章详情和生成文章标题测试完整工作流运行测试结果 概述 使用Dify构建文章生成工作流,使用工具包括:使用 Tavily 执行的搜索查询,使用Flux生成封面图片,使用Stable…...
使用 Context API 管理临时状态,避免 Redux/Zustand 的持久化陷阱
在开发 React Native 应用时,我们经常需要管理全局状态,比如用户信息、主题设置、网络状态等。而对于某些临时状态,例如 数据同步进行中的状态 (isSyncing),我们应该选择什么方式来管理它? 在项目开发过程中ÿ…...
【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.26 统计圣殿:从描述统计到推断检验
1.26 统计圣殿:从描述统计到推断检验 目录 #mermaid-svg-3nz11PRr47fVfGWZ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3nz11PRr47fVfGWZ .error-icon{fill:#552222;}#mermaid-svg-3nz11PRr47fVfGWZ…...
C# 添加、替换、提取、或删除Excel中的图片
在Excel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更加美观。此外,对于已有图片,你有事可能需要更新图片以确保信息的准确性,或者将Excel 中的图片单独保存,用于资料归档、备…...
商密测评题库详解:商用密码应用安全性评估从业人员考核题库详细解析(9)
1. 申请商用密码测评机构需提交材料考点 根据《商用密码应用安全性测评机构管理办法(试行)》,申请成为商用密码应用安全性测评机构的单位应当提交的材料不包括( )。 A. 从事与普通密码相关工作情况的说明 B. 开展测评工作所需的软硬件及其他服务保障设施配备情况 C. 管…...
开源项目Umami网站统计MySQL8.0版本Docker+Linux安装部署教程
Umami是什么? Umami是一个开源项目,简单、快速、专注用户隐私的网站统计项目。 下面来介绍如何本地安装部署Umami项目,进行你的网站统计接入。特别对于首次使用docker的萌新有非常好的指导、参考和帮助作用。 Umami的github和docker镜像地…...
模型I/O功能之模型包装器
文章目录 模型包装器分类LLM模型包装器、聊天模型包装器 截至2023年7月,LangChain支持的大语言模型已经超过了50种,这其中包括了来自OpenAI、Meta、Google等顶尖科技公司的大语言模型,以及各类优秀的开源大语言模型。对于这些大语言模型&…...
免杀国内主流杀软的恶意样本分析
目录下存在愤怒的小鸟.exe和fun.dll文件,最新版火绒,windows defender,腾讯电脑管家,360静态扫描都未发现恶意程序 动态执行,杀软也未拦截 上传到virustotal网站分析恶意程序,只有三个引擎检测出来 die分析…...
Cloudreve:Star22.3k,免费开源的网盘,支持多种存储方式,它允许用户快速搭建个人或团队的私有云存储服务。
嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 Cloudreve是一个基于Web的文件管理和分享系统,它允许用户快速搭建个人或团队的私有云存储服务。该项目以其高度的可定制性和灵活性&#x…...
【高内聚】设计模式是如何让软件更好做到高内聚的?
高内聚(High Cohesion)是指模块内部的元素紧密协作,共同完成一个明确且相对独立的功能。就像高效的小团队,成员们目标一致,相互配合默契。 低耦合(Loose Coupling)是指模块之间的依赖较少&#…...
第一个3D程序!
运行效果 CPP #include <iostream> #include <fstream> #include <string> #include <cmath>#include <GL/glew.h> #include <GLFW/glfw3.h> #include <glm/glm.hpp> #include <glm/gtc/type_ptr.hpp> #include <glm/gtc/…...
基础项目实战——学生管理系统(c++)
目录 前言一、功能菜单界面二、类与结构体的实现三、录入学生信息四、删除学生信息五、更改学生信息六、查找学生信息七、统计学生人数八、保存学生信息九、读取学生信息十、打印所有学生信息十一、退出系统十二、文件拆分结语 前言 这一期我们来一起学习我们在大学做过的课程…...
【PyTorch】6.张量形状操作:在深度学习的 “魔方” 里,玩转张量形状
目录 1. reshape 函数的用法 2. transpose 和 permute 函数的使用 4. squeeze 和 unsqueeze 函数的用法 5. 小节 个人主页:Icomi 专栏地址:PyTorch入门 在深度学习蓬勃发展的当下,PyTorch 是不可或缺的工具。它作为强大的深度学习框架&am…...
OpenEuler学习笔记(十六):搭建postgresql高可用数据库环境
以下是在OpenEuler系统上搭建PostgreSQL高可用数据环境的一般步骤,通常可以使用流复制(Streaming Replication)或基于Patroni等工具来实现高可用,以下以流复制为例: 安装PostgreSQL 配置软件源:可以使用O…...
记录一次Sqoop从MySQL导入数据到Hive问题的排查经过
个人博客地址:记录一次Sqoop从MySQL导入数据到Hive问题的排查经过 | 一张假钞的真实世界 问题描述 MySQL中原始数据有790W+的记录数,在Sqoop抽取作业成功的情况下在Hive中只有500W左右的记录数。 排查过程 数据导入脚本Log 通过Log可以发现以下信息: 该Sqoop任务被分解…...
什么是集成学习
什么是集成学习 集成学习是一种分布式机器学习框架,通过构建多个学习器并将其结合起来完成学习任务。由于在实际应用中单一的学习器往往不能达到理想的学习效果,且有时单一学习器会导致过拟合,因此使用多个学习器进行集成学习往往能够达到更好…...
VSCode+Continue实现AI辅助编程
Continue是一款功能强大的AI辅助编程插件,可连接多种大模型,支持代码设计优化、错误修正、自动补全、注释编写等功能,助力开发人员提高工作效率与代码质量。以下是其安装和使用方法: 一、安装VSCode 参见: vscode安…...
Springboot如何使用面向切面编程AOP?
Springboot如何使用面向切面编程AOP? 在 Spring Boot 中使用面向切面编程(AOP)非常简单,Spring Boot 提供了对 AOP 的自动配置支持。以下是详细的步骤和示例,帮助你快速上手 Spring Boot 中的 AOP。 1. 添加依赖 首先ÿ…...
ThreadLocal源码解析
文章目录 一、概述二、get()方法三、set()方法四、可能导致的内存泄漏问题五、remove六、思考:为什么要将ThreadLocalMap的value设置为强引用? 一、概述 ThreadLocal是线程私有的,独立初始化的变量副本。存放在和线程进行绑定的ThreadLocalMa…...
Maven的单元测试
1. 单元测试的基本概念 单元测试(Unit Testing) 是一种软件测试方法,专注于测试程序中的最小可测试单元——通常是单个类或方法。通过单元测试,可以确保每个模块按预期工作,从而提高代码的质量和可靠性。 2.安装和配…...
深度学习 Pytorch 深层神经网络
在之前已经学习了三种单层神经网络,分别为实现线性方程的回归网络,实现二分类的逻辑回归(二分类网络),以及实现多分类的softmax回归(多分类网络)。从本节开始,我们将从单层神经网络展…...
【python】三帧差法实现运动目标检测
三帧差法是一种常用的运动目标检测方法,它通过比较连续三帧图像之间的差异来检测运动物体。这种方法尤其适用于背景变化较小的场景。 目录 1 方案 2 实践 ① 代码 ② 效果图 1 方案 具体步骤如下: ① 读取视频流:使用cv2.VideoCapture()…...
机器人抓取与操作经典规划算法(深蓝)——2
1 经典规划算法 位姿估计:(1)相机系位姿 (2)机器人系位姿 抓取位姿:(1)抓取位姿计算 (2)抓取评估和优化 路径规划:(1)笛卡…...
WGCLOUD服务器资源监控软件使用笔记 - Token is error是什么错误
[wgcloud-agent]2025/01/30 10:41:30 WgcloudAgent.go:90: 主机监控信息上报server开始 [wgcloud-agent]2025/01/30 10:41:30 WgcloudAgent.go:99: 主机监控信息上报server返回信息: {"result":"Token is error"} 这个错误是因为agent配置的wgToken和serv…...
在排序数组中查找元素的第一个和最后一个位置(力扣)
一.题目介绍 二.题目解析 使用二分进行查找 2.1处理边界情况 如果数组为空,直接返回 [-1, -1],因为无法找到目标值。 int[] ret new int[2]; ret[0] ret[1] -1; if (nums.length 0) return ret; 2.2查找左端点(目标值开始位置&#…...
Kafka的消息协议
引言 在学习MQTT消息协议的时候我常常思考kafka的消息协议是什么,怎么保证消息的可靠性和高性能传输的,接下来我们一同探究一下 Kafka 在不同的使用场景和组件交互中用到了多种协议,以下为你详细介绍: 内部通信协议 Kafka 使用…...
Vue 3 30天精进之旅:Day 09 - 组合式API
在Vue 3中,组合式API(Composition API)是一个引入的新特性,它为开发者提供了一种更灵活的方式来构建和组织组件。与传统的选项API相比,组合式API更注重逻辑的复用和逻辑的组合,让我们更容易处理大型应用中的…...