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

软件工程--面向对象分析用通俗语言20小时爆肝总结!(包含用例图、活动图、类图、时序图......)

面向对象方法分为面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP),本文详细介绍面向对象分析

本文参考教材:沈备军老师的《软件工程原理》大多图片来源其中

目录

面向对象基础

用例图

活动图

类图

时序图

通信图

包图

 分析建模五大步骤

用例建模

执行者的识别

用例的识别

用例图设计

用例规约的设计

活动图的设计

建立概念模型

用例实现的识别

分析类的识别

识别边界类

识别控制类

识别实体类

用例分析


面向对象基础

抽象:将事物的共性特征提取出来形成抽象类或接口,以便让其他类通过继承或实现来共享这些特征

封装:将对象特征的实现方式隐藏在一个公共接口后面的黑盒子中

模块化:将一个大型系统划分为相互独立的小块或模块的过程。每个模块都负责一个明确定义的功能,且与其他模块尽可能独立

层次化:将系统的组成部分按照不同的层次或级别进行组织和划分的过程。通常,一个系统可以分解为若干层,每一层都有特定的责任和功能

对象:是具有相同状态(属性)的一组操作的集合、是对问题域中某个东西的抽象,对象的优点包括以数据为中心、实现了数据封装、具有并行性、模块独立性好

类:类是对具有相同属性和行为的一个或多个对象的描述。类是支持继承的抽象数据类型,而对象就是类的实例

实例:由某个特定的类所描述的一个具体的对象,当使用“对象”这个术语时,既可以指一个具体的对象,也可以泛指一般的对象,但是,当使用“实例”这个术语时,必然是指一个具体的对象

方法:是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法。在C++语言中把方法称为成员函数

属性:是类中所定义的数据,类的每个实例都有自己特有的属性值

继承:能够直接获得已有的性质和特征,而不必重复定义它们。继承是子类自动地共享基类中定义的数据和方法的机制

多态性:子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。根据该对象所属于的类动态选用在该类中定义的实现算法。在C++语言中,多态性是通过虚拟函数或者函数重载来实现的

重载:共有两种,函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;运算符重载是指同一个运算符可以施加于不同类型的操作数上面

用例图

UML中的用例图是一种描述待建软件系统的上下文范围以及它提供的功能的概览视图,它从“黑盒”的角度,描述了谁(或什么)与系统交互,外部世界希望系统做些什么,下面描述了4S系统中整车销售的功能

通过这个图看出,用例图的组成要素如下:

执行者:是与系统交互的实体,可以是人、其它外界的硬件设备或系统,执行者应该位于系统外

用例:代表了执行者希望系统为他们做什么,用椭圆表示

关系:包括执行者和用例间的关系、用例和用例间的关系以及执行者和执行者间的关系。执行者和用例的关系叫做关联,用例和用例的关系有三种:包含、扩展、泛化,执行者和执行者的关系也只有一种叫做泛化

活动图

UML中的活动图用于刻画一个系统或子系统的工作流程,也可用于描述用例内部的事件流,提供了活动流程的可视化描述

通过这个图看出,活动图的组成要素如下:

动作:是行为的基本单元,一个活动可包含多个动作,用圆角矩形表示

控制流:用来表示从一个动作到另一个动作的控制,用一条带箭头的直线表示

初始节点:是活动开始的节点,用一个实心圆表示

终止节点:是活动结束的结点,可细分为活动终止和流终止,分别用带十字叉的圆和带边框的实心圆表示

分叉节点、汇合节点:用于表示并发流,用一条水平或垂直粗线来表示,分叉节点表示并发流程的开始,汇合节点表示并发流程的结束,图中“财务经理审批”或者“销售经理审批”是两个并发活动

判断节点:用菱形符号表示,一个判断节点可以有一个进入流和多个离去流

合并节点:用菱形符号表示,一个合并节点可以有多个进入流和一个离去流,如果一个合并节点接收到多个流,它的离去流指向的动作会被执行多次

对象节点:是动作处理的数据,用矩形表示

泳道可以看作是活动图的分区,它将活动图分为若干水平的区域,每个区域代表一个参与者、角色或系统部分。泳道的目的是清晰地表示哪些元素由哪些参与者执行,从而更好地理解系统中的活动流程,用泳道实现分组,使得每个参与者都明确了自己的责任

类图

在UML中,类的表示为一个矩形,分为三个区域,从上到下分别是类名、属性和操作,对于一个类的属性和操作有着不同的可见性类型

继承/泛化

在UML中,类之间的泛化关系用带空心三角形的实现来表示,比如下面这个图,Car继承了车Vehicle为单重继承,RV继承了Vehicle和House属于多重继承

关联

两个相对独立的类,当一个类的实例与另外一个类的特定实例存在固定关系时,这两个类之间就存在关联关系,在UML中,类之间的关联关系用实线箭头来表示,比如下图中,车和人之间存在关联,即人是车的主人

关联的两个连接点称为关联端,在关联端可以设置名字、可见性和基数等特性

基数:表明这一段的类最多有几个实例,其中,人针对车的角色名是主人,两端的基数是1对多,这表明:1个人可能有几辆车,也可能没有车,1辆车只能有1个主人

下面是一些基数的表示方法

聚合和组合

聚合和组合是一种特殊的关联,表示部分和整体关系的关联。在UML中,用带有空菱形的实线表示,空菱形要和聚合类相连接。组合类似于聚合,两者区别为:

发生聚合关系的两个类独立存在,组合中,当整体消亡,部分亦消亡

比如上面这个例子,Trailer(拖车)和卡车是组合关系,当卡车没有的时候,推车失去了意义。但车和车队是聚合关系,当某辆车离开车队的时候,这辆车依然可以在街上行驶

上述几个关系综合起来:

除此之外,其实还有一些其它关系,如依赖、接口、实现等,但由于不太常用,暂时就不叙述了,如果有机会,以后会直接在这里补充

时序图

时序图又称序列图,它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作,以二维图的形式刻画,垂直维是时间,水平维是角色,表示参与交互的对象。

每个角色有一个名称和生命线,生命线用垂直虚线表示,表示整个交互过程中对象的声明期,在对象发送或接受消息时,生命线变成粗实线

在传递消息的过程中,消息总共分为三种:同步消息、异步消息和返回消息

同步消息用带实心箭头的实线表示,发出一个同步消息之后就开始等待,直到接收到返回消息,返回消息用带空箭头的虚线表示

异步消息用带空箭头的实线表示,对于异步消息而言发出去之后无需等待

下面是一个例子

我们可以看出,一个个紫框圈住的就是一对对同步消息和返回消息,对哪个角色发送信息就必须从哪个角色中接收到返回的信息

看到上面的图之后,发现了一些奇怪的东西就是一个又一个带标签的方框,像loop、alt、ref这种,这是什么意思呢?

实际上,这叫做序列片段(Fragment),可以用来简化时序图,分为四种:

交互使用:用于复用已定义的一个交互场景,它表现为一个带有ref标签的框,如图,在对象order被创建后就执行在已定义的get existing customer status时序图中定义的消息序列

循环:一个带有loop的框,由条件[get next item]控制执行,依次处理订单中的每一项内容

条件:可以有两个或多个分支,表现为一个带alt的框,如图在发送同步消息reserve后,会根据库存情况返回accept or reject

并发:可以有两个或多个并发执行的序列片段,表现为一个带有par标签的框

通信图

时序图主要用于描述对象之间的交互顺序和时间关系,强调消息的发送时间和接收时间的顺序,而通信图则主要用于描述对象之间的协作关系,强调消息的发送和接收顺序,强调每个参与者间的角色和职责

当两个对象对应的类存在关联关系时,对象之间则存在一条通信路径,称为链接(Link),信息的传递必须依附这种链接

上述时序图转换成通信图如下所示:

这个内容,暂时就说这么多,如果想要扩充对于通信图的知识,可以传送到下面这个大佬的文章

UML回顾-通信图(csdn作者:zhuojialin)

包图

当一个软件系统的规模过大,需要使用到一个叫做“包图”的东西

想象你在电脑上有一堆文件,这些文件按照功能和类型分门别类放在不同的文件夹里。UML 包图就是用来展示软件系统中类似文件夹结构的设计。每个“包”就像一个文件夹,里面装着相关联的软件元素。

这些包之间可以有不同的关系:

依赖关系: 一个包可以依赖于另一个包,表示它需要使用那个包里的内容。
关联关系: 两个包之间可能有关联,意味着它们之间有某种连接或者合作关系。
包含关系: 一个包可以包含其他包,就像一个文件夹里可以有另一个文件夹一样。

以下是4S系统的包图

 分析建模五大步骤

上面讲解的是面向对象分析建模的预备知识,下面开始从前到后地讲解建模的每个步骤

注意:第四步和第五步是需要针对每个用例循环实现

用例建模

分析建模的第一步是建立系统的用例模型,其关键是通过对项目干系人需求的详细分析,识别出待开发软件系统的执行者和用例,画出用例图,并针对每个用例写出详细的用例规约

执行者的识别

所谓执行者,是为了完成一个事件而与系统交互的外部事物

识别执行者可以向自己提问以下问题:

谁需要在系统的帮助下完成自己的任务?
需要谁去执行系统的核心功能?
需要谁去完成系统的管理和维护?
系统是否需要和外界的硬件或软件系统进行交互?

比如说,对于4S系统,通过上述方法可以识别的执行者如下:总经理、店长、系统管理员、财务人员、销售经理、销售员、维修经理、维修员、采购经理、采购员、仓库管理员、运输员、质检员、人事管理系统

用例的识别

所谓用例,是系统执行的一个动作序列,这些动作必须对某个特定的执行者产生可观测的、有价值的结果

识别用例可以向自己提问以下问题:

actor希望系统提供什么功能?
actor 将创建、存取、修改和删除数据吗?
actor是否要告诉系统外界的事件?
actor 需要被告知系统中的发生事件吗?

例如,4S系统的用例可能包括以下内容

用例图设计

用于4S系统的规模很大,我们使用“包”来管理用例,将用例分组到不同的包中,画出包图如下

然后,我们以“整车销售”这个包为例,设计用例图如下:

下面是我们用visio设计的“小米便签”系统的用例图:

用例规约的设计

用例规约是一种文档,它描述了系统中一个或多个用例(用户场景或功能需求)的详细行为和交互。它为开发团队提供了有关系统如何响应各种输入和情境的具体指导。

它主要由以下元素构成:用例编号、用例名称、描述、执行者、前置条件、后置条件、基本流、备选流、扩展点、非功能需求、业务规划

下面对上面部分元素做出解释

前置条件:在执行某个特定操作或场景之前,系统或用户必须满足的条件或状态。
例子: 在登录系统之前,用户必须输入正确的用户名和密码。
后置条件:在执行操作或场景后,系统或用户可以期望的状态或结果。
例子: 在成功提交订单后,用户应该收到一份确认电子邮件。
基本流:描述了正常情况下系统或用户如何执行特定用例的步骤。
例子: 用户登录系统,浏览产品,将产品添加到购物车,进行结账。
备选流: 描述了在执行用例时可能发生的非正常或例外情况下的步骤。
例子: 用户尝试登录时输入了错误的密码,系统显示错误消息。
扩展点: 描述了在执行用例时可能触发的其他功能或场景。
例子: 在购物车中,用户可以选择使用优惠券,触发了一个扩展点。
非功能需求:不涉及具体功能,而是描述系统性能、安全性、可用性等方面的需求。
例子: 系统应该能够处理每秒1000个并发用户请求。
业务规划:描述了与用例相关的业务目标、战略或计划。
例子: 提供在线客户支持是公司业务规划的一部分,因此相关用例规约可能包括与在线聊天相关的行为。

下面是“提交购物订单”的用例规约

活动图的设计

“提交购物订单”的活动图设计如下

建立概念模型

分析建模的第二步是确定拟建系统必须处理的核心概念类,并识别这些类之间的关系,画出类图

概念类是那些能够始终贯穿分析和设计过程的类,往往对应重要的实体信息,识别概念类通常采用的方法是对相关的用例规约进行名词提取和过滤法,对其事件流进行分析

比如对于上述那个用例规约的基本流:

删除冗余名词、删除执行者和系统本身、删除属于边界类和界面的元素、删除类的属性,最后得到六个概念类——订单(Order)、购车订单(CarOrder)、顾客(Customer)、订单(CarOrderItem)、品牌(Brand)、型号(Model)

找到上面概念类之间的关系,画出类图

用例实现的识别

分析建模的第三步是识别“用例实现(Use Case Realization)”,它有助于将系统的用例(Use Cases)转化为更具体的设计和实现。这一步骤主要集中在如何实现用例中定义的功能,将用例转换为类、对象以及它们之间的关系

一个具体的“用例实现”提供了一个场所,主要包括以用例事件为线索的动态视图和静态视图

动态视图是直接对应用例事件流的动态交互图:通信图和时序图

静态视图是类图

用例与“用例实现”间的关系是实现(Realize),即依赖关系,在4S系统的分析建模过程中,采用一对一的用例实现识别策略,即一个用例对应一个用例实现


在识别用例实现之后,就要进入最后两步,对于最后两步,是对每个用例循环实现的


分析类的识别

作为分析建模的第四步,分析类的识别是系统从纯粹说明所需行为向具体描述系统工作方式转换的过程中的关键一步

对分析类进行设计,可以使用MVC设计模式,分别对应了系统的3个维度:

M(Model):系统要记录和维护的信息,对应实体类

V(View):系统和外部环境之间交互的边界,对应边界类

C(Control):系统在运行中的控制逻辑,对应控制类

识别边界类

一个系统主要有三种边界类:用户界面类、系统接口类(比如ATM和银行会计系统的接口)、设备接口类(比如打印机接口、传感器接口)

识别规则是:执行者和用例之间的一条通信关联对应的一个边界类

若执行者是用户,则所识别的边界类是用户界面类

若执行者是外界系统,则所识别的边界类是系统接口类

若执行者是硬件设备,则边界类是设备接口类

对于4S系统的“提交购车订单UCR”,从用例图可以识别出一个用户界面类“CreateCarOrderForm”

还比如,在图书馆管理系统中,UIController(用户界面控制器)类可能是一个边界类,处理用户输入和显示输出

识别控制类

控制类负责协调系统中的各个部分,通常包含系统中的业务逻辑或流程控制,不直接处理数据,而是调度实体类和边界类之间的交互
例子:在图书馆管理系统中,LoanManager(借书管理器)类可能是一个控制类,负责协调借书和还书的流程

对于4S系统的“提交购车订单UCR”,从用例图可以识别出一个控制类“CreateCarOrderController”

识别实体类

实体类代表系统中的数据或信息,通常与问题领域中的实际概念相对应,包含属性,这些属性描述了实体的特征,实体类的对象通常具有唯一的标识符

通常可以从概念模型、术语表、业务领域模型、用例的文字描述中可以找到实体类

例如:在图书馆管理系统中,Book(书籍)类就是一个实体类,它可能有属性如书名、作者、出版日期等

对于4S系统的“提交购车订单UCR”,从用例图可以识别出6个实体类:订单(Order)、购车订单(CarOrder)、顾客(Customer)、订单项(CarOrderItem)、品牌(Brand)、型号(Model)

找到上面三种分析类之后,设计出分析类图如下:

用例分析

分析建模的第五步,是对拟建系统进行用例分析,针对每个用例实现,以用例作为研究对象,用分析类的实例作为载体,通过消息传递的方式实现对用例场景的分析,构建出相应的时序图、通信图和类图

用例的事件流中包含多个事件序列,其中有一个基本事件序列和若干备选事件序列,通常先绘制时序图,在对象之间用消息传递的方式把事件序列的内容复述出来。描述分析类实例之间的消息传递过程就是将职责分配到分析类的过程

通信图和时序图在本质内容上是等价的,可以利用建模工具从时序图自动生成相应的通信图

交互图(时序图、通信图)表达了“用例实现”的动态行为,而类图刻画了用例实现的静态特性。用例实现中的类图又称为VOPC类图,即参与协作完成该用例实现的分析类所组成的视图,根据用例实现中的时序图或通信图,就可以获得全部或大部分VOPC的类

一个典型的动态向静态映射的过程可以通过通信图中对象间的连接关系向分析类之间的关联关系的映射实现

依然是在4S系统的“提交购车订单UCR”用例实现中,根据其通信图,对先前的分析类图进行完善,建立分析类间的关联关系,形成VOPC类图如下

最后的最后就是分别确定上述每个分析类的职责和属性,其实就是一个类中的“函数”和“变量”,比如CarOrder这个分析类,完善之后的分析类如下所示

相关文章:

软件工程--面向对象分析用通俗语言20小时爆肝总结!(包含用例图、活动图、类图、时序图......)

面向对象方法分为面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP),本文详细介绍面向对象分析 本文参考教材:沈备军老师的《软件工程原理》大多图片来源其中 目录 面向对…...

HarmonyOS—ArkTS中@Observed和@ObjectLink装饰器的嵌套类对象属性变化【鸿蒙专栏-11】

文章目录 ARKTS中@Observed和@ObjectLink装饰器的嵌套类对象属性变化@Observed 类装饰器说明装饰器参数类装饰器的使用@ObjectLink 变量装饰器说明装饰器参数同步类型允许装饰的变量类型被装饰变量的初始值举例装饰器的限制条件观察变化和行为表现观察的变化框架行为使用场景1.…...

网络通信安全的坚固防线双向认证技术详解

目录 什么是双向认证 双向认证的工作原理 双向认证的实现方式 双向认证的重要性 双向认证的挑战 安全最佳实践 小结 什么是双向认证 双向认证,又称为双向身份验证或双向鉴别,是一种在通信双方之间建立信任关系的安全机制。在通信过程中&#xff0…...

Appium+python+unittest搭建UI自动化框架

阅读本小节,需要读者具备如下前提条件: 1. 掌握一种编程语言基础,如java、python等。 2. 掌握一种单元测试框架,如java语言的testng框架、python的unittest框架。 3. 掌握目前主流的UI测试框架,移动端APP测试框架…...

使用paddledetection的记录

首先在这里使用的是是paddle--detection2.7的版本。 成功进行训练 目录: 目录 数据集准备 配置文件的修改 使用的是BML的平台工具: !python -m pip install paddlepaddle-gpu2.5 -i https://mirror.baidu.com/pypi/simple --user %cd /home/aistudio…...

MySQL数据库的备份与恢复

在管理MySQL数据库时,备份和恢复是保证数据安全和完整性的关键环节。本文将指导您如何有效地备份MySQL数据库,并在需要时进行数据恢复。 请注意,如果没有 mysql> 的标志,说明我们是在外面终端进行的操作 创建备份文件路径 在…...

Pycharm配置jupyter使用notebook详细指南(可换行conda环节)

本教程为事后记录,部分图片非实操图片。 详细记录了pycharm配置jupyter的方法,jupyter添加其他conda环境的方法,远程密码调用jupyter的方法,修改jupyter工作目录的方法。 文章目录 一、入门级配置1. Pycharm配置Conda自带的jupyt…...

企业微信ipad版,http协议接口发开,获取客户群列表

版本介绍: HTTP协议接口可以通过该接口实现企业微信的各种功能,使用HTTP协议可以避免使用hook形式的需要开启PC客户端的方式,同时可以实现三端同时在线,不影响PC和手机端的登录状态,调用简单,可以支持几千…...

Double 4 VR智能互动教学系统在小语种课堂中的教学应用

小语种课堂一直是教育领域的一个难点。由于语言本身的复杂性和文化背景的差异,小语种教学一直是一个挑战。传统的课堂教学方法往往难以激发学生的学习兴趣和动力,教学效果不尽如人意。而Double 4 VR智能互动教学系统为小语种课堂带来了新的可能。 Double…...

OSEK OS任务调度的底层逻辑

先参考 FreeRTOS的任务触发底层逻辑 简述RTOS任务调度底层逻辑 AUTOSAR-OS的调度机制-调度表(没理解透,继续更新) OSEK与FreeRTOS在任务调度上最大的区别在于,FreeRTOS是基于全抢占任务调度和时间片轮转调度机制,具有…...

‘tsc‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

最近在用nodejs typescript 某游戏服务器在做一些研究 nodejs-tcs 问题描述: 1.使用命令npm install -g typescript安装typescript后,输入 tsc命令,一直报错 tsc 不是内部或外部命令,也不是可运行的程序 或批处理文件。 2.目…...

windows文件删除权限

一、普通文件 这里指的是所有可以被随意删除的文件。 二、可更改权限的文件 如果想要删除的文件无法被删除,那大概是权限不够,这时候:鼠标右键、属性、安全、编辑、选择相应的组或用户(如果不知道哪个可以全选,反正…...

Nginx的location块相关知识积累(包括常用的正则匹配表达式的介绍)

Nginx的location块相关知识积累 01-location块的优先级 注意:如果Nginx的配置中有多个location块,那么各location块的匹配优先级并不是完全按照代码的先后顺序来决定各location优先级的。而是按下面的规则来决定的: 在 Nginx 中&#xff0c…...

rabbitMq确认机制之ConfirmType

配置方式 Bean(name "connectionFactory")Primarypublic ConnectionFactory normalConnectionFactory(Value("${spring.rabbitmq.username}") String username,Value("${spring.rabbitmq.password}") String password,Value("${spring.rab…...

ubuntu下QT搭建Android开发环境

一、前言 用QT开发android和直接使用android开发的区别 使用Qt开发Android应用和直接使用Android开发工具(例如Android Studio)有一些区别,主要体现在开发工具、语言、界面设计和性能等方面: 开发工具: Qt Creat…...

QT 做一个登录,注册的跳转页面

思路: 1.登录需要判断账号与密码是否想等,相等才可跳转新页面,匹配失败输入框提示”账号密码不匹配”。 2.注册不需要判断,直接跳转新页面即可。 widget.cpp文件 #include "widget.h" #include "ui_widget.h&qu…...

数据库第十第十一章 恢复和并发简答题

数据库第一章 概论简答题 数据库第二章 关系数据库简答题 数据库第三章 SQL简答题 数据库第四第五章 安全性和完整性简答题 数据库第七章 数据库设计简答题 数据库第九章 查询处理和优化简答题 1.什么是数据库中的事务?它有哪些特性?这些特性的含义是什么…...

Vue3:利用vueusejs键盘绑定

VueUse 键盘事件名 onKeyDown - 别名 onKeyStroke(key, handler, {eventName: ‘keydown’})onKeyPressed - 别名onKeyStroke(key, handler, {eventName: ‘keypress’})onKeyUp - 别名 onKeyStroke(key, handler, {eventName: ‘keyup’}) // 绑定回车事件// https://develo…...

Python与设计模式--设计原则

23种计模式之 前言 (5)单例模式、工厂模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式、(7)代理模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式、桥梁模式、(11)策略模式、责任链模式、命令模式、中介者模…...

Spire.Office 8.11.2 for NET fix Crack

内容摘自来自互联网------或者SDK官方本身手册 Spire.Doc for .NET A professional Word .NET library designed to create, read, write, convert and print Word document files in any .NET ( C#, VB.NET, ASP.NET, .NET Core, Xamarin ) application with fast and high qu…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

华为云AI开发平台ModelArts

华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...