PlantUML 教程:绘制时序图
绘制时序图是 PlantUML 的一个强大功能,下面是详细的 PlantUML 时序图教程,帮助你理解如何使用它来创建清晰的时序图。
基本概念
时序图(Sequence Diagram)用于展示对象之间的交互以及它们之间的消息传递顺序。它主要由以下元素组成:
- 参与者(Participant):图中的对象或实体。
- 消息(Message):参与者之间发送的消息。
- 激活(Activation):对象在处理一条消息的时间段。
基本语法
以下是创建一个简单时序图的基本语法:
@startuml
participant Alice
participant BobAlice -> Bob: Hello Bob, how are you?
Bob --> Alice: I'm good, thanks!
@enduml
参与者(Participants)
参与者可以是用户、对象、类、组件等。你可以使用 actor
、participant
、boundary
、control
、entity
和 database
等关键字来定义不同类型的参与者。
@startuml
actor User
participant "Database" as DB
entity "Web Server" as WSUser -> WS: Request
WS -> DB: Query
DB --> WS: Result
WS --> User: Response
@enduml
消息(Messages)
消息可以是同步消息、异步消息、返回消息等。以下是各种消息的示例:
@startuml
participant Alice
participant BobAlice -> Bob: Synchronous message
Alice ->> Bob: Asynchronous message
Bob --> Alice: Return message
@enduml
激活和停止(Activation and Deactivation)
激活表示对象在处理消息时的活动状态。可以使用 activate
和 deactivate
来显示对象的激活和停用。
@startuml
participant Alice
participant BobAlice -> Bob: Request
activate Bob
Bob -> Bob: Internal processing
Bob --> Alice: Response
deactivate Bob
@enduml
生命线(Lifelines)
对象的生命线表示对象的存在和消息的时间线。对象的生命线可以用 destroy
表示结束。
@startuml
participant Alice
participant BobAlice -> Bob: Request
activate Bob
Bob -> Bob: Internal processing
Bob --> Alice: Response
deactivate Bob
destroy Bob
@enduml
分组和循环(Grouping and Loops)
你可以使用 alt
、opt
、loop
、par
等关键字来表示条件、选项、循环和并行操作。
条件(Alternatives)
@startuml
participant Alice
participant BobAlice -> Bob: Requestalt SuccessBob --> Alice: Response
else FailureBob --> Alice: Error
end
@enduml
循环(Loops)
@startuml
participant Alice
participant BobAlice -> Bob: Requestloop Every secondBob -> Alice: Status update
end
@enduml
并行(Parallel)
@startuml
participant Alice
participant Bob
participant Carolpar Parallel executionAlice -> Bob: Task 1Alice -> Carol: Task 2
end
@enduml
示例:综合示例
以下是一个包含多个特性的综合示例:
@startuml
actor User
participant "Web Browser" as Browser
participant "Web Server" as Server
participant "Database" as DBUser -> Browser: Open website
Browser -> Server: HTTP GET /
activate Server
Server -> DB: Query user data
activate DB
DB --> Server: Return user data
deactivate DB
Server --> Browser: HTML + CSS
deactivate Server
Browser -> User: Render pageUser -> Browser: Click link
Browser -> Server: HTTP GET /page
activate Server
Server -> DB: Query page data
activate DB
DB --> Server: Return page data
deactivate DB
Server --> Browser: HTML + CSS
deactivate Server
Browser -> User: Render page
@enduml
生成图表
使用命令行生成图表:
java -jar plantuml.jar sequence.puml
将生成的图像文件保存在同一目录中。
通过这些示例和语法,你应该可以创建出各种复杂的时序图,以帮助你更好地描述系统的行为和交互过程。如果有任何问题或需要更详细的解释,请随时告诉我!
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
PlantUML 教程:绘制时序图
绘制时序图是 PlantUML 的一个强大功能,下面是详细的 PlantUML 时序图教程,帮助你理解如何使用它来创建清晰的时序图。 基本概念 时序图(Sequence Diagram)用于展示对象之间的交互以及它们之间的消息传递顺序。它主要由以下元素…...
![](https://i-blog.csdnimg.cn/direct/5a992e51c4514a6a8574f3ea7dec65f5.png)
自定义ViewGroup-流式布局FlowLayout(重点:测量和布局)
效果 child按行显示,显示不下就换行。 分析 继承ViewGrouponDraw()不重写,使用ViewGroup的测量-重点 (测量child、测量自己)布局-重点 (布局child) 知识点 执行顺序 构造函数 -> onMeasure() -> …...
![](https://i-blog.csdnimg.cn/direct/dd5529af82c24688a0e3519e5cadc2e4.png)
C++的入门基础(二)
目录 引用的概念和定义引用的特性引用的使用const引用指针和引用的关系引用的实际作用inlinenullptr 引用的概念和定义 在语法上引用是给一个变量取别名,和这个变量共用同一块空间,并不会给引用开一块空间。 取别名就是一块空间有多个名字 类型& …...
![](https://i-blog.csdnimg.cn/direct/f3f3351776154c5bbd15a5154b16fc37.png)
显示产业如何突破芯片短板
尽管中国在显示IC领域面临一定的不足,但新技术的不断涌现为中国企业提供了重要的发展机遇。随着手机、平板电脑和液晶电视对显示屏性能要求的不断提高,显示驱动IC也必须相应地发展,向更高分辨率、更大尺寸和更低功耗的方向迈进。例如…...
![](https://i-blog.csdnimg.cn/direct/7d4c7c1a25a64c66b13fccf10272a346.png)
STM32HAL库+ESP8266+cJSON+微信小程序_连接华为云物联网平台
STM32HAL库ESP8266cJSON微信小程序_连接华为云物联网平台 实验使用资源:正点原子F407 USART1:PA9P、A10(串口打印调试) USART3:PB10、PB11(WiFi模块) DHT11:PG9(采集数据…...
![](https://www.ngui.cc/images/no-images.jpg)
debian或Ubuntu中开启ssh允许root远程ssh登录的方法
debian或Ubuntu中开启ssh允许root远程ssh登录的方法 前因: 因开发需要,需要设置开发板的ssh远程连接。 操作步骤如下: 安装openssh-server sudo apt install openssh-server设置root用户密码: sudo passwd root允许root用户…...
![](https://www.ngui.cc/images/no-images.jpg)
C++《日期》实现
C《日期》实现 头文件实现文件 头文件 在该文件中是为了声明函数和定义类成员 using namespace std; class Date {friend ostream& operator<<(ostream& out, const Date& d);//友元friend istream& operator>>(istream& cin, Date& d);//…...
![](https://www.ngui.cc/images/no-images.jpg)
【面试题】MySQL(第三篇)
目录 1. MySQL中如何处理死锁? 2. MySQL中的主从复制是如何实现的? 3. MySQL中的慢查询日志是什么?如何使用它来优化性能? 4.存储过程 一、定义与基本概念 二、特点与优势 三、类型与分类 四、创建与执行 五、示例 六、总…...
![](https://i-blog.csdnimg.cn/direct/a0abdca6f02347d592267bf677e4d522.png)
tensorflow之欠拟合与过拟合,正则化缓解
过拟合泛化性弱 欠拟合解决方法: 增加输入特征项 增加网络参数 减少正则化参数 过拟合的解决方法: 数据清洗 增大训练集 采用正则化 增大正则化参数 正则化缓解过拟合 正则化在损失函数中引入模型复杂度指标,利用给w增加权重,…...
![](https://i-blog.csdnimg.cn/direct/4a6f66c52b01479f8cf2d04083ff0b5b.gif)
vue实现a-model弹窗拖拽移动
通过自定义拖拽指令实现 实现效果 拖动顶部,可对整个弹窗实施拖拽(如果需要拖动底部、中间内容实现拖拽,把下面的ant-modal-header对应改掉就行) 代码实现 编写自定义指令 新建一个ts / js文件,用ts举例 import V…...
![](https://www.ngui.cc/images/no-images.jpg)
速盾:如何加强网站的安全性
随着互联网的快速发展,网站的安全性变得越来越重要。CDN(内容分发网络)是一种常见的网络加速服务,它可以将网站的静态内容分发到全球各地的服务器上,以提供更快的访问速度。然而,CDN 也存在一些安全风险&am…...
![](https://www.ngui.cc/images/no-images.jpg)
【PyTorch单点知识】自动求导机制的原理与实践
文章目录 0. 前言1. 自动求导的基本原理2. PyTorch中的自动求导2.1 创建计算图2.2 反向传播2.3 反向传播详解2.4 梯度清零2.5 定制自动求导 3. 代码实例:线性回归的自动求导4. 结论 0. 前言 按照国际惯例,首先声明:本文只是我自己学习的理解&…...
![](https://img-blog.csdnimg.cn/direct/137a080d96b54b4dab151751329289fb.png)
【Java】搜索引擎设计:信息搜索怎么避免大海捞针?
一、内容分析 我们准备开发一个针对全网内容的搜索引擎,产品名称为“Bingoo”。 Bingoo的主要技术挑战包括: 针对爬虫获取的海量数据,如何高效地进行数据管理;当用户输入搜索词的时候,如何快速查找包含搜索词的网页…...
![](https://www.ngui.cc/images/no-images.jpg)
【Python】ModuleNotFoundError: No module named ‘distutils.util‘ bug fix
【Python】ModuleNotFoundError: No module named distutils.util bug fix 1. error like this2. how to fix why this error occured , because i remove the origin version python of ubuntu of 20.04. then the system trapped in tty1 , you must make sure the laptop li…...
![](https://www.ngui.cc/images/no-images.jpg)
痉挛性斜颈对生活有哪些影响?
痉挛性斜颈,这个名字听起来可能并不熟悉,但它实际上是一种神经系统疾病,影响着全球数百万人的生活质量。它以一种无法控制的方式,使患者的颈部肌肉发生不自主的收缩,导致头部姿势异常。对于患者来说,痉挛性…...
![](https://www.ngui.cc/images/no-images.jpg)
Javassist 修改 jar 包里的 class 文件
前言 Javassist 是一个用于处理 Java 字节码的类库,可以用以修改 class 文件或 jar 包里的 class 文件。 简单来说我们用Java编写的代码是放在 java 格式的代码文件里,在编译的时候会编译为 class 格式的字节码文件,然后一般所有 class 文件…...
![](https://www.ngui.cc/images/no-images.jpg)
交换机的二三层原理
相同VLAN的交换机交换原理(二层交换原理): 交换机收到数据帧,首先会检查数据帧的VLAN标签和目标MAC,若属于相同VLAN,且该目标MAC在本地MAC表中,则直接根据出接口进行数据转发 不同VLAN的交换机…...
![](https://i-blog.csdnimg.cn/direct/cc1a944905b046d2be0d14092a206dd2.gif)
HarmonyOS ArkUi 字符串<展开/收起>功能
效果图: 官方API: ohos.measure (文本计算) 方式一 measure.measureTextSize 跟方式二使用一样,只是API调用不同,可仔细查看官网方式二 API 12 import { display, promptAction } from kit.ArkUI import { MeasureUtils } fr…...
![](https://www.ngui.cc/images/no-images.jpg)
Lianwei 安全周报|2024.07.09
新的一周又开始了,以下是本周「Lianwei周报」,我们总结推荐了本周的政策/标准/指南最新动态、热点资讯和安全事件,保证大家不错过本周的每一个重点! 政策/标准/指南最新动态 01 《数字中国发展报告(2023年)…...
![](https://i-blog.csdnimg.cn/direct/4938c36c89a441f1af27871b694f4124.png)
火遍全网的15个Python的实战项目,你该不会还不知道怎么用吧!
经常听到有朋友说,学习编程是一件非常枯燥无味的事情。其实,大家有没有认真想过,可能是我们的学习方法不对? 比方说,你有没有想过,可以通过打游戏来学编程? 今天我想跟大家分享几个Python小游…...
![](https://i-blog.csdnimg.cn/direct/e9d30889e1aa4b84b98b06c48f94e198.png)
快速使用BRTR公式出具的大模型Prompt提示语
Role:文章模仿大师 Background: 你是一位文章模仿大师,擅长分析文章风格并进行模仿创作。老板常让你学习他人文章后进行模仿创作。 Attention: 请专注在文章模仿任务上,提供高质量的输出。 Profile: Author: 一博Version: 1.0Language: 中文Descri…...
![](https://i-blog.csdnimg.cn/direct/9a08a5fe3711436393de6ebd11549afd.png)
Xilinx FPGA DDR4 接口的 PCB 准则
目录 1. 简介 1.1 FPGA-MIG 与 DDR4 介绍 1.2 DDR4 信号介绍 1.2.1 Clock Signals 1.2.2 Address and Command Signals 1.2.3 Control Signals 1.2.4 Data Signals 1.2.5 Other Signals 2. 通用存储器布线准则 3. Xilinx FPGA-MIG 的 PCB 准则 3.1 引脚配置 3.1.1 …...
![](https://i-blog.csdnimg.cn/direct/a6807cd23fe14f3b92d5d78490c2f8a2.png#pic_center)
神经网络 | Transformer 基本原理
目录 1 为什么使用 Transformer?2 Attention 注意力机制2.1 什么是 Q、K、V 矩阵?2.2 Attention Value 计算流程2.3 Self-Attention 自注意力机制2.3 Multi-Head Attention 多头注意力机制 3 Transformer 模型架构3.1 Positional Encoding 位置编…...
![](https://i-blog.csdnimg.cn/direct/9078d90d556c40d6919ad5413c19989c.png)
浅析 VO、DTO、DO、PO 的概念
文章目录 I 浅析 VO、DTO、DO、PO1.1 概念1.2 模型1.3 VO与DTO的区别I 浅析 VO、DTO、DO、PO 1.1 概念 VO(View Object) 视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。DTO(Data Transfer Object): 数据传输对象,这个概念来源于J2EE的设…...
![](https://img-blog.csdnimg.cn/img_convert/9a79ca2bf50a72bc0302fa224ac63022.png)
7.8 CompletableFuture
Future 接口理论知识复习 Future 接口(FutureTask 实现类)定义了操作异步任务执行的一些方法,如获取异步任务的执行结果、取消任务的执行、判断任务是否被取消、判断任务执行是否完毕等。 比如主线程让一个子线程去执行任务,子线…...
![](https://img-blog.csdnimg.cn/img_convert/44152413e16f6afb64424fe40d31ce62.png)
iPad锁屏密码忘记怎么办?有什么方法可以解锁?
当我们在日常使用iPad时,偶尔可能会遇到忘记锁屏密码的尴尬情况。这时,不必过于担心,因为有多种方法可以帮助您解锁iPad。接下来,小编将为您详细介绍这些解决方案。 一、使用iCloud的“查找我的iPhone”功能 如果你曾经启用了“查…...
![](https://img-blog.csdnimg.cn/img_convert/dd9c1d26082f0970fdabe01947be3a44.png)
了解并缓解 IP 欺骗攻击
欺骗是黑客用来未经授权访问计算机或网络的一种网络攻击,IP 欺骗是其他欺骗方法中最常见的欺骗类型。通过 IP 欺骗,攻击者可以隐藏 IP 数据包的真实来源,使攻击来源难以知晓。一旦访问网络或设备/主机,网络犯罪分子通常会挖掘其中…...
![](https://i-blog.csdnimg.cn/direct/baee6406b8634c229595484d54bb1518.png)
java LogUtil输出日志打日志的class文件内具体方法和行号
最近琢磨怎么把日志打的更清晰,方便查找问题,又不需要在每个class内都创建Logger对象,还带上不同的颜色做区分,简直不要太爽。利用堆栈的方向顺序拿到日志的class问题。看效果,直接上代码。 1、demo test 2、输出效果…...
![](https://i-blog.csdnimg.cn/direct/32660a69c73c4a4a891c76e21f680837.jpeg)
02. Hibernate 初体验之持久化对象
1. 前言 本节课程让我们一起体验 Hibernate 的魅力!编写第一个基于 Hibernate 的实例程序。 在本节课程中,你将学到 : Hibernate 的版本发展史;持久化对象的特点。 为了更好地讲解这个内容,这个初体验案例分上下 2…...
![](https://img-blog.csdnimg.cn/img_convert/b775f90b5b9cfe156e8740ec5fdd5f85.png)
MySQL超详细学习教程,2023年硬核学习路线
文章目录 前言1. 数据库的相关概念1.1 数据1.2 数据库1.3 数据库管理系统1.4 数据库系统1.5 SQL 2. MySQL数据库2.1 MySQL安装2.2 MySQL配置2.2.1 添加环境变量2.2.2 新建配置文件2.2.3 初始化MySQL2.2.4 注册MySQL服务2.2.5 启动MySQL服务 2.3 MySQL登录和退出2.4 MySQL卸载2.…...
![](https://img-blog.csdnimg.cn/8326b17a2f474df28fb48539b1adf133.png)
局域网搭建wordpress慢/百度基木鱼建站
文章目录前言本次测试注解介绍注解使用SecuredPreAuthorizePostAuthorizePostFilterPreFilter代码下载前言 之前security中,针对配置项进行了相关的配置和测试。 但是这些都是基于在security.config.MyConfig#configure(org.springframework.security.config.annot…...
![](https://images2018.cnblogs.com/blog/1201826/201803/1201826-20180310125316770-1307926709.png)
wordpress 迅搜/百度推广怎么才能效果好
Python之路【第四篇】:模块 模块,用一砣代码实现了某个功能的代码集合。 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来…...
![](https://images2018.cnblogs.com/blog/1244344/201805/1244344-20180513165123518-1321040274.png)
wordpress 5.0.2企业站主题/百度新闻发布平台
虽然这是一次失败的渗透,但是也学到不少新姿势。 目标机环境:①外网②win2012③360全家桶 一,利用Struts2终极利用工具上传一句话 jsp的一句话,有时候会出现兼容问题。比如Cknife的jsp一句话,K8飞刀就连接不了。我这里…...
![](https://img-blog.csdnimg.cn/img_convert/4643373f01bee1c87b0ce67dcb4ff2c5.png)
asp网站开发教程/网页
作者介绍 郑泰森 某共享平台集团风控负责人; “数据人创作者联盟”成员。 接:【干货】风控模型如何嵌入策略(一) 01 三种常见的风险定价方式 我来简单介绍一下三种常见的风险定价方式,刚才介绍的是整体的情况。风险…...
![](https://images2018.cnblogs.com/blog/1303036/201805/1303036-20180531140427161-656380043.jpg)
晚上必看的正能量网站/seo查询工具网站
①定义 "group by" 从字面上理解是根据“by"指定的规则对数据进行分组 ②简单示例 ③group by 中的select字段是受限制的 select指定的字段要么作为分组的依据,要么包含在聚合函数中,否则就报错。 ④支持多列分组group by all ⑤group by…...
![](https://img-blog.csdnimg.cn/20210517191844457.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1NzEwMjYzMTI0,size_16,color_FFFFFF,t_70)
织梦古典网站模板/最成功的网络营销案例
一、MySQL引擎介绍 数据库存储引擎是数据库重要的存储机制,数据库管理系统主要是使用数据引擎进行创建、查询、更新和删除数据。 不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。在面…...