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

软件工程之需求分析涉及的图与工具

        需求分析与规格说明书是一项十分艰巨复杂的工作。用户与分析员之间需要沟通的内容非常的多,在双方交流信息的过程中很容易出现误解或遗漏,也可能存在二义性。如何才能更加准确的表达双方的意思,且清楚明了,绘制各类图形就显得非常有必要。

前文基础:
1.软件工程学概述:软件工程学概述-CSDN博客 

2.软件过程深度解析:软件过程深度解析-CSDN博客 

一、实体-联系图

(一)基本思想与定义

实体 - 联系图(Entity-Relationship Diagram,ER 图)一种用于描述系统数据模型的图形化工具,由 Peter Chen 于 1976 年提出。其核心思想是通过实体、属性和关系三个基本要素,抽象现实世界中的数据对象及其关联,为数据库设计提供概念模型

定义:ER 图是一种基于实体、属性和关系的建模工具,用于表示系统的数据结构,明确数据对象的静态特征及其相互间的联系,是需求分析阶段的重要成果之一。

(二)表示形式与实现过程

1.表示形式:

实体用矩形框表示,标注实体名称(如“学生”“课程”)。

属性用椭圆表示,通过无向边连接到实体(如“学生”实体的属性“学号”“姓名”)。

关系用菱形表示,标注关系名称(如“选修”),通过无向边连接相关实体,边旁标注关系的基数(如“1:N”“M:N”)。

2.实现过程:

(1)需求分析:通过访谈、问卷等方式获取用户数据需求,识别关键实体(如“用户”“订单”)。

(2)属性定义确定每个实体的属性,区分主键(唯一标识实体的属性,如“学号”)和非主键属性

(3)关系建模分析实体间的关联,确定关系类型(如“学生”与“课程”的“选修”关系为 M:N)。

(4)绘制ER图:使用工具(如PowerDesigner)绘制ER图,标注实体、属性和关系。

验证与优化:与用户确认模型的准确性,消除冗余或歧义。

图1 选课系统的ER图

(三)具体示例:图书馆管理系统

项目背景:某高校图书馆开发管理系统,需实现图书借阅、归还、预约等功能。

流程说明:

1.需求分析:

实体识别:图书、读者、借阅记录、预约记录。

2.属性定义:

图书:ISBN(主键)、书名、作者、出版社、库存数量。

读者:读者 ID(主键)、姓名、学院、借阅上限。

借阅记录:记录 ID(主键)、图书 ISBN(外键)、读者 ID(外键)、借阅日期、归还日期。

3.关系建模:

图书与读者的“借阅”关系为M:N,即一个读者可借阅多本图书,一本图书可被多个读者借阅

借阅记录与图书、读者的关系为1:1,即一条借阅记录对应唯一的图书和读者

4.ER 图绘制:

图2 图书馆管理系统 ER 图

5.数据库映射:

图书表(ISBN, 书名,作者,出版社,库存数量)。

读者表(读者 ID, 姓名,学院,借阅上限)。

借阅记录表(记录 ID, ISBN, 读者 ID, 借阅日期,归还日期)。

二、数据规范化

(一)基本思想与定义

数据规范化(Data Normalization)通过规则将数据库表结构分解,消除数据冗余和异常(插入、更新、删除异常),提升数据一致性和存储效率的过程。其核心思想是遵循范式(Normal Form)逐步优化数据结构

定义:数据规范化是一种数据库设计技术,通过应用范式规则,将数据表分解为更小、更稳定的表,减少数据冗余,确保数据依赖的合理性。

(二)表示形式与实现过程

1.表示形式:

范式规则:

(1)1NF(第一范式)每个属性为原子值,无重复组

(2)2NF(第二范式)在1NF基础上,非主属性完全依赖于主键

(3)3NF(第三范式)在2NF基础上,消除非主属性间的传递依赖

依赖关系:

(1)函数依赖:X → Y,表示属性 Y 的值由属性 X 唯一确定。

(2)传递依赖:若X → Y且Y → Z,则X → Z(传递依赖)。

2.实现过程:

11NF 处理:

拆分重复属性,确保每个属性为原子值

示例:将“课程与成绩”列拆分为“课程”和“成绩”两列。

22NF 处理:

消除部分依赖,将部分依赖的属性移至新表

示例:选课表(学号,课程号,成绩,系别)中,“系别”仅依赖“学号”,拆分为选课表(学号,课程号,成绩)和学生表(学号,系别)。

33NF 处理:

消除传递依赖,将传递依赖的属性移至新表。

示例:学生表(学号,系别,系主任)中,“系主任”依赖“系别”,拆分为学生表(学号,系别)和系表(系别,系主任)。

(三)具体示例:电商订单系统

项目背景:某电商平台优化订单表结构,解决数据冗余和更新异常问题。

流程说明:

1.初始表结构的SQL

CREATE TABLE orders (order_id INT PRIMARY KEY,user_id INT,username VARCHAR(50),product_name VARCHAR(100),price DECIMAL(10,2),quantity INT,total DECIMAL(10,2),address VARCHAR(200));

问题:

(1)用户名重复存储(同一用户多次下单)。

(2)产品名称和价格重复存储(同一产品多次被购买)。

(3)地址重复存储(同一用户多次使用同一地址)。

2.1NF 处理:

确保每个属性为原子值(已满足)。

3.2NF 处理:

主键为order_id,非主属性username、product_name、price、address部分依赖于user_id或product_id。

拆分为:

CREATE TABLE users (user_id INT PRIMARY KEY,username VARCHAR(50),address VARCHAR(200));CREATE TABLE products (product_id INT PRIMARY KEY,product_name VARCHAR(100),price DECIMAL(10,2));CREATE TABLE order_items (order_id INT,product_id INT,quantity INT,total DECIMAL(10,2),PRIMARY KEY (order_id, product_id),FOREIGN KEY (order_id) REFERENCES orders(order_id),FOREIGN KEY (product_id) REFERENCES products(product_id));

4.3NF 处理:

检查传递依赖:

(1)users.address依赖user_id,无传递依赖。

(2)products.price依赖product_id,无传递依赖。

最终表结构符合 3NF。

5.优化效果:

减少数据冗余:用户名、产品信息、地址仅存储一次。

消除更新异常:修改用户地址只需更新users表。

三、状态转换图

(一)基本思想与定义

状态转换图(State Transition Diagram,STD)是一种行为建模工具,通过描绘系统的状态及触发状态转换的事件,描述系统的动态行为。其核心思想是将系统视为状态机,状态间的转换由事件驱动。

定义:状态转换图是一种图形化工具,用于表示系统在不同状态下的行为,以及事件如何触发状态之间的转换。

(二)表示形式与实现过程

1.表示形式:

(1)状态用圆角矩形表示,标注状态名称(如“闲置”“复印”)。

(2)转换用带箭头的直线表示,标注事件名称和动作(如“复印命令 / 开始复印”)。

(3)初始状态用实心圆表示,系统初始状态。

(4)终止状态用同心圆表示,系统结束状态。

图3 状态图中使用的主要符号

2.实现过程:

(1)识别状态:分析系统行为,确定所有可能的状态(如电梯控制系统的“待载”“上升”“下降”“楼间停”)。

(2)定义事件:确定触发状态转换的事件(如“进入电梯”“到达目标楼层”)。

(3)绘制转换:使用工具(如PlantUML)绘制状态转换图,标注事件和动作。

(4)验证逻辑:检查状态转换的完整性和合理性,确保无死锁或不可达状态。

图4 全自动洗衣机的状态图

(三)具体示例:电梯控制系统

项目背景:某写字楼电梯控制系统需实现楼层选择、状态监控等功能。

流程说明:

1.状态识别:

(1)待载:电梯空闲,停在某一楼层。

(2)上升:电梯向上运行。

(3)下降:电梯向下运行。

(4)楼间停:电梯到达目标楼层,开门等待乘客进出。

2.事件定义:

(1)进入电梯:乘客进入电梯,选择目标楼层。

(2)到达目标楼层:电梯到达目标楼层,触发开门。

(3)无人:乘客全部离开电梯,触发关门。

3.状态转换图绘制:

plantuml工具代码示例:

@startuml(*) --> 待载待载 --> 上升 : 进入(目标楼层>当前楼层)/关门上行待载 --> 下降 : 进入(目标楼层<当前楼层)/关门下行上升 --> 楼间停 : 到达目标楼层/停机开门下降 --> 楼间停 : 到达目标楼层/停机开门楼间停 --> 上升 : 目标楼层>当前楼层/关门上行楼间停 --> 下降 : 目标楼层<当前楼层/关门下行楼间停 --> 待载 : 无人/关门@enduml

4.逻辑验证:

电梯在“待载”状态时,根据目标楼层选择上升或下降。

到达目标楼层后进入“楼间停”状态,开门等待乘客进出。

乘客全部离开后返回“待载”状态。

四、层次方框图

(一)基本思想与定义

层次方框图(Hierarchical Block Diagram)一种树形结构的图形工具用于描述数据或系统的层次分解关系。其核心思想是自顶向下逐步细化,将复杂对象分解为更简单的子对象。

定义:层次方框图是一种用矩形框表示数据或模块,通过连线表示包含关系的图形工具,用于展示系统的层次结构。

(二)表示形式与实现过程

1.表示形式:

(1)顶层矩形表示整体对象(如“计算机系统”)。

(2)子矩形表示子对象,通过连线连接到父矩形(如“硬件”“软件”“服务”)。

(3)层次关系逐层分解,直至最底层的基本元素

图5 层次方框图示例

2.实现过程:

(1)确定主题:明确要分解的对象(如“企业 ERP 系统”)。

(2)顶层分解:将主题分解为主要子模块(如“采购管理”“生产管理”“销售管理”)。

(3)逐层细化:对每个子模块进一步分解(如“采购管理”分解为“供应商管理”“订单管理”“到货验收”)。

(4)标注说明:在矩形框内标注模块名称或功能描述。

(三)具体示例:企业ERP系统

项目背景:某制造企业开发 ERP 系统,需整合采购、生产、销售等业务模块。

流程说明:

1.顶层分解:

企业ERP系统  

├─ 采购管理  

├─ 生产管理  

└─ 销售管理  

2.采购管理细化:

采购管理  

├─ 供应商管理  

├─ 订单管理  

└─ 到货验收  

3.生产管理细化:

生产管理  

├─ 生产计划排程  

├─ 工单下发  

└─ 进度跟踪  

4.销售管理细化:

销售管理  

├─ 客户管理  

├─ 订单处理  

└─ 物流跟踪  

5.层次方框图:

企业ERP系统  

├─ 采购管理  

│  ├─ 供应商管理  

│  ├─ 订单管理  

│  └─ 到货验收  

├─ 生产管理  

│  ├─ 生产计划排程  

│  ├─ 工单下发  

│  └─ 进度跟踪  

└─ 销售管理  

   ├─ 客户管理  

   ├─ 订单处理  

   └─ 物流跟踪  

图6 企业ERP系统中采购管理层次方框图

五、Warnier图

(一)基本思想与定义

Warnier 图(Warnier-Orr Diagram)一种用于描述数据结构或程序逻辑的层次化图形工具,由Jean-Dominique Warnier提出。其核心思想是通过树形结构表示数据的层次关系,并支持重复项和条件判断的标注

定义:Warnier图是一种用括号表示层次结构的图形工具,用于清晰展示数据元素的组成、重复次数及条件关系。

(二)表示形式与实现过程

1.表示形式:

(1)层次结构用括号表示数据元素的嵌套关系(如(A(B,C))表示 A 包含 B 和 C)。

(2)重复项用数字标注重复次数(如(B{3})表示 B 重复 3 次)。

(3)条件项用[条件]标注可选元素(如[B]表示 B 可选)。

图7 Warnier图示例

2.实现过程:

(1)数据分解:将复杂数据结构分解为基本元素(如“学生信息”分解为“姓名”“学号”“课程列表”)。

(2)标注重复与条件:确定元素的重复次数和可选性(如“课程列表”可能包含多门课程)。

绘制 Warnier 图:使用工具或文本符号表示层次关系(如(学生信息(姓名, 学号, (课程{3}))))。

(三)具体示例:学生选课系统

项目背景:某高校学生选课系统需记录学生信息及所选课程。

流程说明:

1.数据分解:

学生信息包含姓名、学号和课程列表。

课程列表包含多门课程,每门课程有课程号和成绩。

2.标注重复与条件:

课程列表最多可选 3 门课程({3})。

成绩为可选属性([成绩])。

3.Warnier 图绘制:

(学生信息  (姓名,  学号,  (课程{3}  (课程号,  [成绩]))))  

4.数据库映射:

学生表(学号,姓名)。

课程表(课程号,课程名称)。

选课表(学号,课程号,成绩)。

六、IPO图

(一)基本思想与定义

IPO 图(Input-Process-Output Diagram)一种用于描述模块输入、处理和输出关系的图形工具,由IBM公司提出。其核心思想是明确模块的功能边界,展示数据流动和处理逻辑

定义:IPO 图是一种用表格或图形表示模块输入、处理和输出的工具,用于详细设计阶段的功能描述。

(二)表示形式与实现过程

1.表示形式:

(1)输入(Input)列出模块接收的数据或参数

(2)处理(Process)描述模块的处理逻辑或算法

(3)输出(Output)列出模块产生的结果或数据

图8 IPO图示例

改进的IPO图形式,变成IPO表

图9 IPO表示例

2.实现过程:

(1)确定模块:明确要描述的模块(如“用户登录模块”)。

(2)输入分析:识别模块的输入数据(如用户名、密码)。

(3)处理设计:描述处理步骤(如验证用户名密码、查询数据库)。

(4)输出定义:确定输出结果(如登录成功 / 失败)。

(三)具体示例:用户登录模块

项目背景:某电商平台开发用户登录功能,需验证用户名和密码。

流程说明:

1.输入分析:

用户名(字符串)。

密码(字符串)。

2.处理设计:

步骤 1:接收用户名和密码。

步骤 2:对密码进行 MD5 加密。

步骤 3:查询数据库验证用户名和加密后的密码。

步骤 4:返回验证结果。

3.输出定义:

登录成功:返回用户权限信息。

登录失败:返回错误码。

IPO 图:

输入

处理

输出

用户名

1. 接收输入数据

登录成功:用户权限

密码

2. 密码MD5加密

登录失败:错误码

3. 数据库查询验证

4. 返回验证结果

图10 用户登录IPO图

Java代码示例:

public class LoginModule {public User authenticate(String username, String password) {// 输入处理String encryptedPassword = md5Encrypt(password);// 数据库查询User user = userDao.findByUsernameAndPassword(username, encryptedPassword);// 输出结果if (user != null) {return user;} else {throw new AuthenticationException("Invalid username or password");}}}

七、验证软件需求

(一)基本思想与定义

验证软件需求确保需求文档准确、完整、一致且可实现的过程。其核心思想是通过多种方法(如评审、原型、形式化验证)验证需求的正确性和可行性。

定义:验证软件需求是对需求规格说明书进行审查和测试,确保其满足用户需求、技术可行性和项目约束。

(二)表示形式与实现过程

1.表示形式:

(1)需求评审:通过会议形式,由团队成员和用户共同审查需求文档。

(2)原型验证:构建可运行的原型系统,获取用户反馈。

(3)形式化验证:使用数学模型和逻辑推理证明需求的正确性。

2.实现过程:

1需求评审:

准备评审材料(需求文档、用例图)。

召开评审会议,记录问题并修改。

2原型验证:

开发低保真原型(如线框图)或高保真原型(如可交互界面)。

邀请用户体验并收集反馈,迭代优化。

3形式化验证:

使用数学语言(如Z语言)描述需求。

通过模型检查工具(如SPIN)验证需求的一致性。

(三)具体示例:在线支付系统

项目背景:某电商平台开发在线支付功能,需验证支付流程的正确性。

流程说明:

1.需求评审:

评审内容:支付接口定义、异常处理逻辑。

问题记录:未明确“支付超时”的处理流程。

修改方案:增加“支付超时”状态及重试机制。

2.原型验证:

开发支付流程原型,包含“选择支付方式→输入密码→支付成功 / 失败”流程。

用户反馈:密码输入框无遮挡提示,存在安全隐患。

优化方案:增加密码输入时的遮挡掩码。

3.形式化验证:

使用Z语言描述支付状态机:

PaymentSystem = [state: {idle, processing, success, failed};amount: ℕ;timeout: ℕ]processPayment(p: Payment) ≡state = idle ∧amount = p.amount ∧(state' = success ∨ state' = failed)

使用SPIN工具验证“支付成功后状态不可回退”的性质。

数学模型: 需求覆盖率计算公式:

示例:总需求数50,已验证45,覆盖率为90%。

八、结语

需求分析是软件开发的基石,合理使用图形工具和验证方法可显著提升需求的准确性和可实现性:

  1. 实体 - 联系图清晰描述数据结构,为数据库设计提供依据。
  2. 数据规范化消除冗余,提升数据一致性。
  3. 状态转换图动态展示系统行为,辅助逻辑设计。
  4. 层次方框图和Warnier 图层次化分解复杂对象,便于理解。
  5. IPO 图明确模块边界,指导编码实现。
  6. 需求验证通过多种方法确保需求质量,降低后期变更成本。

        实际项目中,需根据需求特点选择合适工具(如ER图 + 状态转换图 + IPO图组合),并结合形式化方法提升验证的严谨性。未来,随着 AI 和低代码技术的发展,需求分析工具将更加智能化,进一步提升软件开发效率。

相关文章:

软件工程之需求分析涉及的图与工具

需求分析与规格说明书是一项十分艰巨复杂的工作。用户与分析员之间需要沟通的内容非常的多&#xff0c;在双方交流信息的过程中很容易出现误解或遗漏&#xff0c;也可能存在二义性。如何才能更加准确的表达双方的意思&#xff0c;且清楚明了&#xff0c;绘制各类图形就显得非常…...

火影bug,未保证短时间数据一致性,拿这个例子讲一下Redis

本文只拿这个游戏的bug来举例Redis&#xff0c;如果有不妥的地方&#xff0c;联系我进行删除 描述&#xff1a;今天在高速上打火影&#xff08;有隧道&#xff0c;有时候会卡&#xff09;&#xff0c;发现了个bug&#xff0c;我点了两次-1000的忍玉&#xff08;大概用了1千七百…...

机器人领域和心理学领域 恐怖谷 是什么

机器人领域和心理学领域 恐怖谷 是什么 恐怖谷是一个在机器人领域和心理学领域备受关注的概念,由日本机器人专家森政弘于1970年提出。 含义 当机器人与人类的相似度达到一定程度时,人类对它们的情感反应会突然从积极变为消极,产生一种毛骨悚然、厌恶恐惧的感觉。这种情感…...

Hadoop MapReduce 图文代码讲解

一、MapReduce原理 首先要了解一下MapReduce的几个过程&#xff0c;每个数据集中需要编写的逻辑会有所不同&#xff0c;但是大致是差不多的 1、MapReduce大致为这几个过程&#xff1a; 1、读取数据集并根据文件大小128MB拆分成多个map同时进行下面步骤 2、Map: 匹配和数据筛…...

【Rust】结构体

目录 结构体结构体的定义和实例化结构体使用场景方法定义方法多参数方法关联函数多个 impl 块 结构体 结构体&#xff0c;是一个自定义数据类型&#xff0c;允许包装和命名多个相关的值&#xff0c;从而形成一个有意义的组合&#xff0c;类似于 C语言中的结构体或者 Java 中的…...

青少年编程与数学 02-019 Rust 编程基础 01课题、环境准备

青少年编程与数学 02-019 Rust 编程基础 01课题、环境准备 一、Rust核心特性应用场景开发工具社区与生态 二、Rust 和 Python 比较1. **内存安全与并发编程**2. **性能**3. **零成本抽象**4. **跨平台支持**5. **社区与生态系统**6. **错误处理**7. **安全性**适用场景总结 三、…...

深入理解Embedding Models(嵌入模型):从原理到实战(上)

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《深度探秘&#xff1a;AI界的007》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、嵌入模型是什么 2、在NLP、推荐系统、知识图谱等领域…...

世界耳机品牌与排名

耳机可以说是日常用的比较多的产品之一&#xff0c;而且现在的耳机相较于传统的耳机还多了很多的功能&#xff0c;比如现在经常开车的人实用的蓝牙耳机&#xff0c;虽然日常用的多&#xff0c;那么你知道全球知名的耳机品牌有哪些吗&#xff1f; 拜亚耳机&#xff0c;德国品牌&…...

防静电地板人工费多少钱一平方米?2025年报价解析!

在机房、实验室、数据中心等专业场所&#xff0c;防静电地板是保障设备正常运行的关键“防线”。但很多人在装修时&#xff0c;面对“防静电地板安装人工费”的报价往往一头雾水——有的报25元/㎡&#xff0c;有的却要50元/㎡&#xff0c;差价背后究竟藏着什么门道&#xff1f;…...

【详细图文】使用MobaXterm的SSH功能远程连接服务器,并创建pytorch环境,使用yolov8训练数据集

目录 一、使用MobaXterm连接服务器 1、官网下载MobaXterm 2、SSH连接服务器 二、查看服务器的基本信息 1、查看服务器基本信息(可选) (1)查看主机名和系统版本 (2)查看CPU信息 (3)查看内存信息 (4)查看网卡信息 (5)查看总进程数 (6)查看活动进程数 (…...

路由器断流排查终极指南:从Ping测试到Wireshark抓包5步定位法

测试路由器是否出现“断流”&#xff08;网络连接间歇性中断&#xff09;&#xff0c;需通过多维度排查硬件、软件及外部干扰因素。以下是详细步骤指南&#xff1a; 一、基础环境准备 设备连接 有线测试&#xff1a;用网线将电脑直接连接路由器LAN口&#xff0c;排除WiFi干扰。…...

小白借助ai对全栈进行浅浅理解(学习笔记)-Lambda、Optional 避免空指针与新的日期时间 API

学习顺序&#xff1a;Java 基础 → Spring Boot → Vue → 前后端整合 → 数据库 → 部署 → 进阶实战。 Lambda 表达式&#xff08;Lambda 表达式是 Java 8 引入的核心特性&#xff0c;旨在简化函数式编程&#xff0c;替代冗长的匿名内部类&#xff0c;使代码更简洁、灵活 &am…...

可观测性方案怎么选?SelectDB vs Elasticsearch vs ClickHouse

可观测性&#xff08;Observability&#xff09;是指通过系统的外部输出数据&#xff0c;推断其内部状态的能力。可观测性平台通过采集、存储、可视化分析三大可观测性数据&#xff1a;日志&#xff08;Logging&#xff09;、链路追踪&#xff08;Tracing&#xff09;和指标&am…...

100个常用的DeepSeek指令

日常生活类&#xff08;20个&#xff09; 1. 新闻解读&#xff1a;请为我解读今天的热点新闻。 2. 天气查询&#xff1a;请查询……的天气并推荐着装。 3. 旅行攻略&#xff1a;请制定前往……的旅行攻略。 4. 菜谱生成&#xff1a;请生成……菜的具体做法。 5. 解决方案&…...

【C语言】--指针超详解(二)

目录 一.const修饰指针 1.1--const修饰变量 1.2--const修饰指针变量 二.野指针 2.1--野指针成因 2.1.1--指针未初始化 2.1.2--指针越界访问 2.1.3-- 指针指向的空间释放 2.2--如何规避野指针 2.2.1--指针初始化 2.2.2--小心指针越界 2.2.3--指针变量不再使用时&am…...

git 多个提交记录合并为一个

1.场景 有时候用devops等平台测试问题&#xff0c;需要多次修改小的记录提交&#xff0c;但是最终我们在合并主干的时候不想留那么多乱七八糟的记录&#xff0c;就需要在此分支合并这些提交记录&#xff0c;再合并到主干。 2.交互式变基 2.1 确定要合并的提交范围 # 查看最近…...

AI视频生成的艺术:镜头语言

前言 AI视频生成技术正逐渐改变我们创作和消费视频内容的方式,各式各样的AI视频制作软件正在不断的涌现,比如可灵、即梦、runway等。虽然AI视频生成的交互方式(自然语言)极大的减少了我们创作视频的门槛,但要让AI正确理解并创造出符合我们期望的视频,我们可能还是需要了解…...

机器学习与深度学习

目录 一、机器学习 &#xff08;一&#xff09;机器学习的分类 1. 监督学习 2. 无监督学习 3. 强化学习 &#xff08;二&#xff09;机器学习的应用场景 二、深度学习 &#xff08;一&#xff09;深度学习的核心原理 &#xff08;二&#xff09;常见的深度学习模型 …...

数字孪生市场格局生变:中国2025年规模214亿,工业制造领域占比超40%

一、技术深度解析&#xff1a;数字孪生的核心技术栈与演进 1. 从镜像到自治&#xff1a;数字孪生技术架构跃迁 三维重建突破&#xff1a;LiDAR点云精度达2cm&#xff0c;无人机测深刷新频率5Hz&#xff0c;支撑杭州城市大脑内涝预警模型提前6小时预测。AI算法融合&#xff1a…...

数字孪生[IOC]常用10个技术栈(总括)

1. 什么是数字孪生&#xff1f; 数字孪生&#xff08;Digital Twin&#xff09; 是通过数字化技术对物理实体&#xff08;如设备、系统或环境&#xff09;进行高精度建模和实时映射的虚拟副本。其核心是通过 数据驱动 实现物理世界与虚拟世界的双向交互&#xff0c;支持实时监控…...

WPF主窗体子窗体关联方法

步骤&#xff1a; 1、创建WPF项目 2、设计主窗体&#xff0c;选定显示子窗体的区域&#xff08;MainWindow.xaml) 3、在想要显示子窗体的区域填写如下代码&#xff08;MainWindow.xaml) 4、创建子窗体 5、建立调用子窗体事件&#xff0c;下图一是load事件&#xff0c;也可以是…...

笔记本电脑实现网线内网 + Wi-Fi外网同时使用的配置方案

1、同时连接两个网络‌ 插入网线连接内网&#xff0c;确保内网IP地址正常获取&#xff08;如10.143.88.x&#xff09;&#xff1b;连接Wi-Fi接入外网&#xff0c;确认可正常访问互联网&#xff08;如网关为192.168.8.1&#xff09;。 2、 记录关键网络参数‌ 内网网关&#…...

探讨关于智能体(Agent)结合 Dify、大语言模型(LLM)以及 Qwen-3 模型的项目或概念

1. Dify 的作用 Dify 是一个开源的 AI 框架&#xff0c;它可以帮助开发者快速搭建和部署 AI 应用。它可以作为一个基础架构&#xff0c;为智能体提供以下支持&#xff1a; 应用开发与部署&#xff1a;Dify 可以帮助开发者快速搭建智能体的前端和后端架构&#xff0c;包括用户界…...

2025 后端自学UNIAPP【项目实战:旅游项目】3、API接口请求封装,封装后的简单测试以及实际使用

一、创建请求封装目录 选中自己的项目&#xff0c;右键鼠标---->新建---->目录---->名字自定义【我的是api】 二、创建两个js封装文件 选中封装的目录&#xff0c;右键鼠标---->新建---->js文件---->名字自定义【我的两个js文件分别是my_http和my_api】 三…...

【electron+vue】常见功能之——调用打开/关闭系统软键盘,解决打包后键盘无法关闭问题

效果图展示 实现思路&#xff1a;通过input标签聚焦失焦的方式&#xff0c;实现系统软键盘的显示隐藏。 使用场景&#xff1a;一体机电脑&#xff0c;无外接键盘。 html <el-input v-model"idNumber" placeholder"请输入" focus"showKeyboard&qu…...

告别手动输入密码:基于SSHPass的自动化文件传输实践告别手动输入密码:基于SSHPass的自动化文件传输实践

一、运维人员的共同痛点 在日常运维工作中&#xff0c;我们经常需要在多台服务器之间传输文件。传统的手动操作方式需要反复执行以下步骤&#xff1a; 输入scp命令等待密码提示输入复杂密码确认传输结果手动修改文件权限 这种重复劳动不仅效率低下&#xff0c;在批量操作时更…...

Python序列Day3

序列 序列是一种数据存储方式&#xff0c;用方括号标注&#xff0c;逗号分隔的一组值。在内存中&#xff0c;序列就是一块用来存放多个值的连续的内存空间。 常见序列结构有&#xff1a;字符串、列表、元组、字典、集合 列表 用于存储任意数目&#xff0c;任意类型的数据集…...

22、近端策略优化算法(PPO)论文笔记

近端策略优化算法&#xff08;PPO&#xff09;论文笔记 一、研究背景与目标二、**方法****3.1 策略梯度基础****3.2 信任区域方法&#xff08;TRPO&#xff09;****3.3 剪切代理目标函数&#xff08;LCLIP&#xff09;****3.4 自适应KL惩罚系数****3.5 算法实现** 三、 L CLIP…...

web 自动化之 selenium+webdriver 环境搭建及原理讲解

文章目录 一、web 自动化测试学习说明二、什么 web 自动化测试三、selenium 简介四、web自动化测试环境搭建五、web 自动化测试第一个脚本六、selenium 原理及源码讲解 一、web 自动化测试学习说明 进阶 web 自动化测试学习&#xff1a;掌握 python 编程基础 二、什么 web 自…...

Vue3快速入门/Vue3基础速通

Vue3 渐进式的javascript框架&#xff0c;我们可以逐步引入vue的功能 官方文档 Vue.js中文手册 你可以借助 script 标签直接通过 CDN 来使用 Vue&#xff1a; <script src"https://unpkg.com/vue3/dist/vue.global.js"></script>通过 CDN 使用 Vue 时…...

Babylon.js学习之路《一、初识 Babylon.js:什么是 3D 开发与 WebGL 的完美结合?》

文章目录 1. 引言&#xff1a;3D 开发在 Web 中的崛起1.1 为什么需要 Web 3D 开发&#xff1f;1.1 WebGL 的定位与挑战 2. Babylon.js 的核心定位2.1 什么是 Babylon.js&#xff1f;2.2 Babylon.js 的独特优势2.3 对比其他 Web 3D 框架&#xff08;Three.js、PlayCanvas&#x…...

v-model原理详解

一 :value"msg 在 Vue.js 中&#xff0c;v-bind 指令&#xff08;简写为 :&#xff09;用于将数据属性绑定到 HTML 元素的属性上。当你使用 :value"msg" 时&#xff0c;它的作用是将 Vue 实例中的 msg 数据属性绑定到目标元素的 value 属性上。 1.value 属性…...

并发与并行的关系

并发&#xff08;Concurrency&#xff09;与并行&#xff08;Parallelism&#xff09;的本质区别 1. 核心定义 并发&#xff1a;多个任务在重叠的时间段内交替执行&#xff0c;但不一定是同时的。 关注的是任务的组织方式&#xff08;如多任务调度、逻辑上的同时性&#xff09…...

uniapp 微信小程序使用图表

使用的是秋云 ucharts 直接在hbuilder插件市场进行下载导入项目中&#xff0c;多端支持 下载地址秋云 ucharts echarts 高性能跨全端图表组件 - DCloud 插件市场 导入成功后这里就能看到导入的插件啦 导入项目后就可以直接在页面中通过组件使用了 不需要其余配置 使用简单 参…...

基于vm加密的php逆向分析

前言 对于 php 主流的加密方式有两种&#xff1a; 1、基于扩展的 2、本地加密&#xff0c;不涉及扩展 一些在 php 端通过 zend_compile_file 等函数就可以直接 dump 出原代码的&#xff0c;称之为加密实在是抬举了 之前有写过一篇直接 dump 出源码的分析 https://blog.qc7…...

FPGA----基于ALINX提供的debian实现TCF

引言&#xff1a;接上问&#xff0c;我们使用自制的image.ub和boot.bin以及ALINX提供的debian8根文件系统&#xff0c;构建了petalinux&#xff0c;但是经测试&#xff0c;该文件系统无法启用TCF服务&#xff0c;即无法与Xilinx SDK建立连接&#xff0c;那么我们应该如何解决&a…...

基于Transformer的多资产收益预测模型实战(附PyTorch实现与避坑指南)

基于Transformer的多资产收益预测模型实战&#xff08;附PyTorch模型训练及可视化完整代码&#xff09; 一、项目背景与目标 在量化投资领域&#xff0c;利用时间序列数据预测资产收益是核心任务之一。传统方法如LSTM难以捕捉资产间的复杂依赖关系&#xff0c;而Transformer架…...

SQL:MySQL函数:字符串函数

目录 为什么需要字符串函数&#xff1f; 1️⃣ LENGTH(str) — 这个字符串有几个“字节”&#xff1f; 2️⃣ CHAR_LENGTH(str) — 这个字符串有几个“字符”&#xff1f; 3️⃣ TRIM(str) — 把两边的空格剪掉 4️⃣ REPLACE(str, a, b) — 把 a 替换成 b 使用这些函数时…...

C++-缺省参数

缺省参数 缺省参数也叫默认参数 指的是在函数参数的位置&#xff0c;提前定义一个缺省值&#xff08;即提前定义一个值&#xff09;&#xff0c;当函数接收到参数时&#xff0c;如果定义缺省值的位置未接收到参数&#xff0c;那么这个位置会自动使用缺省值 通过定义缺省参数…...

MySQL 数据库

目录 1. 数据库简介 1.1 使用数据库的必要性 1.2 数据库的基本概念 1.3 经典数据模型 2. MySQL 服务基础 2.1 MySQL 的二进制安装 2.1.1 基础环境准备 2.1.2 二进制安装 2.1.3 设定配置文件 1. 数据库简介 1.1 使用数据库的必要性 使用数据库可以高效且条理分明地存…...

探寻养生新路径,守护健康生活

在忙碌的现代生活中&#xff0c;人们对健康养生的需求愈发迫切。养生不一定要遵循复杂的规则&#xff0c;从一些新颖且实用的方面入手&#xff0c;同样能收获健康的馈赠。​ 关注肠道菌群的平衡是养生的关键。肠道内居住着数以万亿计的微生物&#xff0c;它们与人体健康息息相…...

平板收银系统、国产系统,鸿蒙系统,小键盘的封装与应用—仙盟创梦IDE

数字小键盘封装 数组小键盘封装是指将与数组小键盘相关的功能、操作、数据等进行整合&#xff0c;形成一个独立的、可复用的模块。封装数组小键盘具有以下几方面重要意义&#xff1a; 提高代码可维护性 降低复杂度&#xff1a;数组小键盘在实际应用中&#xff0c;可能涉及到…...

微软推动智能体协同运作:支持 A2A、MCP 协议

今日凌晨&#xff0c;微软宣布 Azure AI Foundry 和 Microsoft Copilot Studio 两大开发平台支持最新 Agent 开发协议 A2A&#xff0c;并与谷歌合作开发扩大该协议&#xff0c;这一举措对智能体赛道意义重大。 现状与变革意义 当前智能体领域类似战国时代&#xff0c;各家技术…...

《企业级前端部署方案:Jenkins+MinIO+SSH+Gitee+Jenkinsfile自动化实践》

文章目录 前言前端项目CICD时序图一、环境准备1、服务器相关2、Jenkins凭据3、注意事项 二、设计思想1. 模块化设计2.多环境支持3. 制品管理4. 安全部署机制5. 回滚机制 三、CI阶段1、构建节点选择2、代码拉取3、代码编译4、打包并上传至minio 四、CD阶段五、回滚阶段六、构建通…...

数据库的进阶操作

目录 1、数据库的约束 2、查询操作的进阶 2.1 查询插入 2.2 聚合查询 2.3 运算查询 2.3 分组查询 2.4 联合查询 2.5 内外连接 2.6 子查询 2.7 合并查询 1、数据库的约束 数据库的约束是指&#xff1a;数据库会自动的对数据的合法性进行校验和检查的一系列操作的机制&a…...

小刚说C语言刷题—1341银行存款问题

1.题目描述 亮亮把 n 元按照 m 年期整存存入银行&#xff0c;按照目前银行的年利率&#xff0c;请问到期后亮亮可以连本带息总共拿到多少钱&#xff1f; 存期&#xff08;整存整取&#xff09; 年利率 1年 3.25% 2年 3.75% 3年∼4 年 4.25% 5年及 5年以上 4.75% 输入…...

15 个 Azure DevOps 场景化面试问题及解答

问题 1. 解释 Azure DevOps YAML 管道的典型结构。 您可以从管道的整体结构开始&#xff0c;从触发器开始。您也可以选择解释它可能包含的不同类型的阶段&#xff1a;构建、测试、扫描、部署等。 Azure DevOps YAML 管道结构示例 触发器指示管道运行。它可以是持续集成 (CI) 或…...

spring cloud 跨服务调用

微服务将不同功能模块拆分成多个不同的服务&#xff0c;在业务逻辑集成时候&#xff0c;难免会有一个服务需要依赖调用另一个服务的情况。如订单服务需要通过用户服务查询用户相关信息&#xff0c;这时候微服务之间就需要进行跨服务调用。 要想进行跨服务调用&#xff0c;服务…...

手机隐私数据彻底删除工具:回收或弃用手机前防数据恢复

软件介绍 有这样一款由吾爱网友chenwangjun 原创开发的数据处理软件&#xff0c;名为 AndroidDiskClear。它的核心功能十分强大&#xff0c;能够将你手机里已经删除的各类文件&#xff0c;像图片、普通文件、文字信息等彻底清除干净&#xff0c;有效杜绝数据恢复类软件的二次恢…...

【Electron】electron-vue 借助 element-ui UI 库助力桌面应用开发

前面文章我们讲过 electron 让可以用 HTML、JS、CSS 开发桌面应用程序。而 electron-vue 是一个结合了 electron 与 vue 的套件。这样我们就能方便地使用 vue 快速开发桌面应用。但是&#xff0c;vue 只是在 js 这层面做了大量的便捷的操作。对 UI 并未过多涉及。此时如果您在开…...