PlantUML 语法、图标和示例

基本语法

关键字

声明参与者的几个关键字
actor、boundary、control、entity、database、collections、participant
在这里插入图片描述

箭头样式

我们可以通过,修改箭头样式,来表达不一样的意思:

  • 表示一条丢失的消息:末尾加 x
  • 让箭头只有上半部分或者下半部分:将<和>替换成\或者 /
  • 细箭头:将箭头标记写两次 (如 >> 或 //)
  • 虚线箭头:用 – 替代 -
  • 箭头末尾加圈:->o
  • 双向箭头:<->
    在这里插入图片描述

设置标题、页眉、页脚

  • title,设置标题
  • herder,设置页眉
  • footer,设置页脚,如果想用页码,则加上 %page% of %lastpage%

在这里插入图片描述

给信息添加注释

  • 在左边添加注释 note left :
  • 在右边添加注释 note right :
  • 多行注释,note left /right 多行注释 end note

在这里插入图片描述

组合信息

  • alt/else ,类似于 if / else
  • opt 选择,
  • loop 循环
  • par
  • break 跳出循环
  • critical
  • group 组

它们后面紧跟着消息内容,都是用来组合信息,就跟定义参与者一样,也有好多的关键字,但是自己根据场景选择对应的关键字,这里也是,使用 end 结束没个小分组;

代码

@startuml
'注释:爱丽斯向鲍勃发信息,请求认证'
Alice->Bob:请求认证
alt 成功
Bob->Alice: 认证成功
else 认证失败:密码错误Bob->Alice: 认证失败:密码错误group 如果有人不停的尝试,则记录在日志中,此时爱丽斯开始攻击Alice->Log:爱丽斯开始进行。。。loop 进行循环1000次Alice -> Bob:对鲍勃开始循环攻击end Alice ->Log:循环结束note left:这是注释end
else 认证失败,拒绝访问Bob->Alice:爱丽斯,洗洗睡吧,我们拒绝你访问
end@enduml

图例
在这里插入图片描述

if分支

代码

@startuml
start
title 流程:用户进入;
if(判断条件)then(yes)-[#blue]->:执行yes操作;
else(no)-[#red]->:执行no操作;
endifstop
@enduml

图例
在这里插入图片描述

重复循环

  • repeat
@startuml
start
title 流程repeat
:int i-1;
note left:注释1
#red:执行i++;
note right:注释2
repeat while(i <= 100)stop
@enduml

在这里插入图片描述

  • while

代码

@startuml
start
title 流程while(i <= 100)
:int -=100;
:i++;
endwhilestop
@enduml

图例
在这里插入图片描述

并行处理

代码

@startuml
start
title 流程if(条件判断)then(yes)fork:并行操作1;
fork again:并行操作2;endfork
else(no)
:执行1;
:执行2;
endifstop
@enduml

在这里插入图片描述

时序图

代码

@startuml
skinparam shadowing false
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication ResponseAlice -> Bob: Another authentication Request
Alice <-- Bob: Another authentication Response
@enduml

图例
在这里插入图片描述

代码

@startuml
title 关键字 actor 表示参与者actor B #green
participant A #red
A->B: requestA
B->A: requestB@enduml

图例
在这里插入图片描述
代码

@startumltitle 关键字 database 表示数据库database Foo #red
participant Bar #red
Bar->Bar: 自己发消息@enduml

图例
在这里插入图片描述

生命线激活、撤销

activate和deactivate用来表示参与者的生命活动激活、撤销,而 destroy 则代表生命线的摧毁:

生命线被撤销、摧毁以后,还是可以再次激活的,但是不能在同一个点,撤销、摧毁以后,立马激活,在图中表现为,线必须要有断点:
在这里插入图片描述

代码

@startuml
title skinparam 改变颜色字体skinparam sequence {LifeLineBackgroundColor #redParticipantBackgroundColor pinkParticipantFontSize 16ParticipantFontColor #000
}
actor User
participant "First Class" as A
participant "Second Class" as B
participant "Last Class" as C
User ->A:DoWork
activate A
A->B:Create Request
activate B
B->C:DoWork
activate C
C-->B:WorkDone
destroy C
B-->A:Request Create
deactivate B
A-->User:Done
deactivate A@enduml

图例
在这里插入图片描述

component定义组件

代码

@startuml
title component定义组件
left to right direction
actor customer
actor clerk
rectangle {customer --(checkout)(checkout) .>(payment):include(help) .>(checkout) : extends(checkout) --clerk
}@enduml

图例
在这里插入图片描述

泳道图

代码

@startuml
|Swimlane1|
start
:foo1;
|#AntiqueWhite|Swimlane2|
:foo2;
:foo3;
|Swimlane1|
:foo4;
|Swimlane2|
:foo5;
stop
@enduml

图例
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/49522.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis在SpringBoot中遇到的问题:预热,雪崩,击穿,穿透

缓存预热 预热即在产品上线前&#xff0c;先对产品进行访问或者对产品的Redis中存储数据。 原因&#xff1a; 1. 请求数量较高 2. 主从之间数据吞吐量较大&#xff0c;数据同步操作频度较高,因为刚刚启动时&#xff0c;缓存中没有任何数据 解决方法&#xff1a; 1. 使用脚…

Kafka - 生产者

生产者消息对象 public class ProducerRecord<K, V> {private final String topic; // 主题private final Integer partition; //分区号private final Headers headers; //消息头部private final K key; //键private final V value; //值private final Long timestamp; …

opencv 按键开启连续截图,并加载提示图片

背景图小图 键盘监听使用的是pynput 库 保存图片时使用了年月日时分秒命名 原图&#xff1a; from pynput import keyboard import cv2 import time# 键盘监听 def on_press(key):global jieglobal guanif key.char a:jie Trueelif key.char d:jie Falseelif key.char…

配置三个Spring Boot应用并通过Nginx进行反向代理 讨论中

要配置三个Spring Boot应用并通过Nginx进行反向代理&#xff0c;你可以按照以下步骤操作&#xff1a; 步骤 1: 准备Spring Boot应用 确保每个Spring Boot应用都有不同的端口号。例如&#xff0c;你可以设置第一个应用监听8080端口&#xff0c;第二个监听8081端口&#xff0c;…

FPGA JTAG最小系统 EP2C5T144C8N

FPGA的文档没有相应的基础还真不容易看懂&#xff0c;下面是B站上对FPGA文档的解读(本文非对文档解读&#xff0c;只是为个人记录第三期&#xff1a;CycloneIV E最小系统板设计&#xff08;一&#xff09;从Datasheet上获取FPGA的基本参数_哔哩哔哩_bilibili 电源部份 核心电…

TS config

moduleResolution 是 TypeScript 编译器中的一个选项&#xff0c;用于控制如何解析模块导入。这个选项影响着 TypeScript 如何查找和解析 import 和 export 声明中指定的模块。 {"compilerOptions": {"moduleResolution": "Node"//小写也没问题…

SELinux的 getenforce setenforce 配置文件/etc/selinux/config的 SELINUX和SELINUXTYPE

SELinux&#xff08;Security-Enhanced Linux&#xff09;是一个为Linux系统提供访问控制安全策略的安全模块。它是Linux内核的一个功能强大的安全子系统&#xff0c;旨在提供访问控制安全策略机制&#xff0c;以限制程序中特定代码段的权限。SELinux超越了传统的UNIX权限模型&…

AI学习记录 -使用react开发一个网页,对接chatgpt接口,附带一些英语的学习prompt

实现了如下功能&#xff08;使用react实现&#xff0c;原创&#xff09; 实现功能&#xff1a; 1、对接gpt35模型问答&#xff0c;并实现了流式传输&#xff08;在java端&#xff09; 2、在实际使用中&#xff0c;我们的问答历史会经常分享给他人&#xff0c;所以下图的 copy …

Python酷库之旅-第三方库Pandas(042)

目录 一、用法精讲 141、pandas.Series.agg(regate)方法 141-1、语法 141-2、参数 141-3、功能 141-4、返回值 141-5、说明 141-6、用法 141-6-1、数据准备 141-6-2、代码示例 141-6-3、结果输出 142、pandas.Series.transform方法 142-1、语法 142-2、参数 142…

1196. 拐角I

问题描述 输入整数 &#x1d441;N &#xff0c;输出相应方阵。 输入一个整数 &#x1d441;N 。&#xff08; 0<&#x1d441;≤100) 输出一个方阵&#xff0c;每个数字的场宽为 3 附代码&#xff1a; #include<iostream> using namespace std; int main() { …

大屏数据看板一般是用什么技术实现的?

我们看到过很多企业都会使用数据看板&#xff0c;那么大屏看板的真正意义是什么呢&#xff1f;难道只是为了好看&#xff1f;答案当然不仅仅是。 大屏看板不仅可以提升公司形象&#xff0c;还可以提升企业的管理层次。对于客户&#xff0c;体现公司实力和品牌形象&#xff0c;…

域名解析到ipv6,并用CF隐藏端口

要求&#xff1a;域名解析到 IPv6 地址并隐藏端口 ‍ 效果&#xff1a;用域名 https://myhalo.soulio.top​ 访问http://[2409:8a62:867:4f12:56c7:5508:f7x6:8]:8080​。唯一缺点是延迟有点高。 ​​ ‍ 难度&#xff1a;需要有一定域名解析、cloudflare使用基础 ‍ 实…

org.springframework.context.annotation.DeferredImportSelector如何使用?

DeferredImportSelector 是 Spring 框架中一个比较高级的功能&#xff0c;主要用于在 Spring 应用上下文的配置阶段延迟导入某些组件或配置。这个功能特别有用&#xff0c;比如在处理依赖于其他自动配置的场景&#xff0c;或者当你想基于某些条件来决定是否导入特定的配置类时。…

一个简单的UAF/HeapOverflow fuzz demo学习

前言 偶然逛到的一篇&#xff0c;UAF_overflow_check | Note (gitbook.io) 最近正好也在初学fuzz&#xff0c;学习下对一些漏洞的检测fuzz思路。 刚好这个也指了一条学习方法&#xff1a;看成熟的fuzz工具的源码是如何处理的。 https://github.com/google/sanitizers/tree/m…

【Django+Vue3 线上教育平台项目实战】Elasticsearch实战指南:从基础到构建课程搜索与数据同步接口

文章目录 前言一、Elasticsearch倒排索引 二、Docker 搭建 ESDocker 安装Docker 搭建 ES 三、ES基础语法创建索引查看索引删除索引添加数据查询数据修改数据删除数据条件查询分页查询排序 多条件查询andor 范围查询 四、ES在项目中的应用示例 前言 在数据驱动的时代&#xff0c…

c#Action委托和Func委托

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace Action委托 {internal class Program{static void PrintString(){Console.WriteLine("hello world.");}static void PrintInt(int …

vue3页面编写-导入导出excel、展开查询项等

数据保持 <router-view v-slot"{ Component, route }"><keep-alive><component :is"Component" :key"route.name" v-if"route.meta.keepAlive" /></keep-alive><component :is"Component" :key…

HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 多选题序号4

基础认证题库请移步&#xff1a;HarmonyOS应用开发者基础认证题库 注&#xff1a;有读者反馈&#xff0c;题库的代码块比较多&#xff0c;打开文章时会卡死。所以笔者将题库拆分&#xff0c;单选题20个为一组&#xff0c;多选题10个为一组&#xff0c;题库目录如下&#xff0c;…

大语言模型-RetroMAE-检索预训练模型

一、背景信息&#xff1a; RetroMAE是2022年10月由北邮和华为提出的一种密集检索预训练策略。 RetroMAE主要应用于检索模型的预训练&#xff0c;模型架构为非对称的Encoder-Decode结构。 二、整体结构&#xff1a; RetroMAE的模型架构为非对称的Encoder-Decode结构。 Encod…

C++学习笔记-operator关键字:重载与自定义操作符

在C编程中&#xff0c;operator关键字扮演着极其重要且独特的角色。它允许开发者为内置类型或自定义类型重载或定义新的操作符行为。这一特性极大地增强了C的表达能力&#xff0c;使得代码更加直观、易于理解和维护。本文将深入探讨C中operator关键字的使用&#xff0c;包括操作…