PlantUML入门教程:画时序图
软件工程中会用到各种UML图,例如用例图、时序图等。那我们能不能像写代码一样去画图呢?
今天推荐一款软件工程师的作图利器--PlantUML,它能让你用写代码的方式快速画出UML图。
一、什么是PlantUML?
PlantUML是一个允许你快速作出UML图的组件:
- 序列图
- 用例图
- 类图
- 对象图
- 活动图(这里是传统的语法)。
- 组件图
- 部署图
- 状态图
- 时序图
也支持以下非UML图表:
- JSON数据
- YAML数据
- Extended Backus-Naur Form (EBNF)图表
- 网络图(nwdiag)
- 线框图形界面或UI模拟图(盐)。
- 架构图
- 规范和描述语言(SDL)
- Ditaa图
- 甘特图
- 思维导图
- 工作分解结构图(WBS)
- 用AsciiMath或JLaTeXMath符号进行数学计算
- 实体关系图(IE/ER)。
此外:
- 超链接和工具提示
- 克里奥尔语:富文本、表情符号、unicode、图标
- OpenIconic图标
- Sprite图标
- AsciiMath数学表达式
关于PlantUML的更多信息,可通过查阅PLantUML官网获取:
https://plantuml.com/zh/
二、如何使用PlantUML?
使用PlantUML画图有多种方式,一种是使用PlantUML在线编辑器,另一种是使用VSCode/PyCharm/IDEA等软件支持的插件来编写。
PlantUML在线编辑器:
http://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000
下面我们演示一个PlantUML画时序图例子:
@startuml
/'boundary 分界; control 控制器; entity 数据对象; database 数据库; collections 集合'/
'为了图标更加简洁,去掉底部重复的对象
hide footbox
autonumberparticipant SERVICE
database DB
participant AGENTrnote over DB
Database, 数据驱动设计
endnoteSERVICE ->o SERVICE: 服务端处理
SERVICE [#Red]-> DB: 写状态,触发更新事件
note right
Pub/Sub机制
endnote
DB -> AGENT: 发布更新事件activate AGENT
alt 激活事件AGENT --> AGENT: 激活处理
else 去激活事件AGENT --> AGENT: 去激活处理
else 升级事件AGENT <--> AGENT: 升级处理
end
AGENT [#Blue]-> DB: 写状态,触发更新事件
deactivate AGENT@enduml
时序图用来标识某个操作的整个流程,通过时序图可以很清晰地知道某个操作的全流程,以及相关的交互方。
如下是上述代码作出的时序图:

更多PlantUML作图演示,可参考:
https://www.cnblogs.com/wangbin2188/p/16128832.html
相关文章:
PlantUML入门教程:画时序图
软件工程中会用到各种UML图,例如用例图、时序图等。那我们能不能像写代码一样去画图呢? 今天推荐一款软件工程师的作图利器--PlantUML,它能让你用写代码的方式快速画出UML图。 一、什么是PlantUML? PlantUML是一个允许你快速作出…...
C#范围运算符
C#8.0语法中,范围运算符是一种用于快速截取序列的运算符,其语法为 “start…end”,表示从序列的 “start” 索引处开始,一直截取到"end" 索引处为止(包括 “end” 索引处的元素)。范围运算符主要…...
云数据库知识学习——云数据库产品、云数据库系统架构
一、云数据库产品 1.1、云数据库厂商概述 云数据库供应商主要分为三类。 ① 传统的数据库厂商,如 Teradata、Oracle、IBM DB2 和 Microsoft SQL Server 等。 ② 涉足数据库市场的云供应商,如 Amazon、Google、Yahoo!、阿里、百度、腾讯…...
C++中引用详解!
前言: 本文旨在讲解C中引用的相关操作,以及引用的一些注意事项!搬好小板凳,干货来了! 引用的概念 何谓引用呢?引用其实很容易理解,比如李华这个同学,他因为很调皮,所以…...
VUE3+TS项目无法找到模块“../version/version.js”的声明文件
问题描述 在导入 ../version/version.js 文件时,提示无法找到模块 解决方法 将version.js改为version.ts可以正常导入 注意,因为version.js是我自己写的模块,我可以直接该没有关系,但是如果是引入的其他的第三方包,…...
数据结构-堆的实现及应用(堆排序和TOP-K问题)
数据结构-堆的实现及应用[堆排序和TOP-K问题] 一.堆的基本知识点1.知识点 二.堆的实现1.堆的结构2.向上调整算法与堆的插入2.向下调整算法与堆的删除 三.整体代码四.利用回调函数避免对向上和向下调整算法的修改1.向上调整算法的修改2.向下调整算法的修改3.插入元素和删除元素函…...
Spring 条件注解没生效?咋回事
条件注解相信各位小伙伴都用过,Spring 中的多环境配置 profile 底层就是通过条件注解来实现的,松哥在之前的 Spring 视频中也有和大家详细介绍过条件注解的使用,感兴趣的小伙伴戳这里:Spring源码应该怎么学?。 从 Spr…...
96. 不同的二叉搜索树
class Solution { public:int numTrees(int n) {if (n0) {return 1;}vector<int> dp(n1, 0);dp[0] 1;dp[1] 0;for (int i 1; i < n; i) {for (int j 0; j < i; j) {dp[i] dp[j] * dp[i - 1 - j];}}return dp[n];} };...
Android Jetpack 中Hilt的使用
Hilt 是 Android 的依赖项注入库,可减少在项目中执行手动依赖项注入的样板代码。执行 手动依赖项注入 要求您手动构造每个类及其依赖项,并借助容器重复使用和管理依赖项。 Hilt 通过为项目中的每个 Android 类提供容器并自动管理其生命周期,…...
批量采集的时间管理与优化
在进行大规模数据采集时,如何合理安排和管理爬取任务的时间成为了每个专业程序员需要面对的挑战。本文将分享一些关于批量采集中时间管理和优化方面的实用技巧,帮助你提升爬虫工作效率。 1. 制定明确目标并设置合适频率 首先要明确自己所需获取数据的范…...
uniApp监听左右滑动事件
监听左右滑动事件的步骤 1. 添加需要监听滑动事件的元素 在你的页面中,添加需要监听滑动事件的元素。这可以是一个 view、swiper 或其他组件,取决于你的需求。例如: <template><view class"body" touchstart"touc…...
十八、MySQL添加外键?
1、外键 外键是用来让两张表的数据之间建立联系,从而保证数据的一致性和完整性。 注意,父表被关联的字段类型,必须和子表被关联的字段类型一致。 2、实际操作 (1)初始化两张表格: 子表: 父…...
图像文件的操作MATLAB基础函数使用
简介 MATLAB中的图像处理工具箱体统了一套全方位的标准算法和图形工具,用于进行图像处理、分析、可视化和算法开发。这里仅仅对常用的基础函数做个使用介绍。 查询图像文件的信息 使用如下函数 imfinfo(filename,fmt) 函数imfinfo返回一个结构体的infoÿ…...
【k8s】Kubernetes版本v1.17.3 kubesphere 3.1.1 默认用户登录失败
1.发帖: Kubernetes版本v1.17.3 kubesphere 3.11 默认用户登录失败 - KubeSphere 开发者社区 2. 问题日志: 2.1问题排查方法 : 用户无法登录 http://192.168.56.100:30880/ 2.2查看用户状态 kubectl get users [rootk8s-node1 ~]# k…...
Mysql加密功能
Mysql加密功能 InnoDB加密功能查询条件问题开启整个数据库加密 InnoDB加密功能 InnoDB是MySQL数据库引擎的一种,它提供了加密存储的功能。具体来说,InnoDB引擎支持以下两种方式的加密存储: 表级加密:InnoDB支持表级加密ÿ…...
redis-win10安装和解决清缓存报错“Error: Protocol error, got “H“ as reply type byte”
win10安装 https://github.com/microsoftarchive/redis/releases 下载最新的zip,解压,把路径加到Path里,每次直接在cmd里 redis-server.exeError: Protocol error, got “H” as reply type byte 这个报错是因为我端口写错了。。无语 D:…...
【视觉检测】电源线圈上的导线弯直与否视觉检测系统软硬件方案
检测内容 线圈上的导线弯直与否检测系统。 检测要求 检测线圈上的导线有无弯曲,弯曲度由客户自己设定。检测速度5K/8H625PCS/H。 视觉可行性分析 对样品进行了光学实验,并进行图像处理,原则上可以使用机器视觉进行测试测量…...
Java elasticsearch scroll模板实现
一、scroll说明和使用场景 scroll的使用场景:大数据量的检索和操作 scroll顾名思义,就是游标的意思,核心的应用场景就是遍历 elasticsearch中的数据; 通常我们遍历数据采用的是分页,elastcisearch还支持from size的…...
嵌入式基础知识-信息安全与加密
本篇来介绍计算机领域的信息安全以及加密相关基础知识,这些在嵌入式软件开发中也同样会用到。 1 信息安全 1.1 信息安全的基本要素 保密性:确保信息不被泄露给未授权的实体。包括最小授权原则、防暴露、信息加密、物理加密。完整性:保证数…...
TCP的三次握手与四次挥手
首先,源端口号和目标端口号是不可少的,这一点和 UDP 是一样的。如果没有这两个端口号。数据就不知道应该发给哪个应用。 接下来是包的序号。为什么要给包编号呢?当然是为了解决乱序的问题。不编好号怎么确认哪个应该先来,哪个应该…...
Qwen2.5-VL-7B-Instruct应用场景:法律合同关键条款图文定位与摘要生成
Qwen2.5-VL-7B-Instruct应用场景:法律合同关键条款图文定位与摘要生成 想象一下,你是一位法务人员或商务经理,面前摆着一份几十页、图文并茂的复杂合同。你需要快速找到关于“违约责任”、“付款条件”或“知识产权归属”的关键条款。传统的…...
小白程序员必看:收藏这份智能体学习指南,轻松入门大模型时代
智能体(Agent)是人工智能领域的重要概念,能够感知环境并自主行动达成目标。文章从自动驾驶、阿尔法狗等实例引入,阐述了智能体的定义和运作机制。传统智能体发展历经反射、目标导向、模型反射、效用和自主学习等阶段。大模型的出现…...
从“未知发布者”到“可信来源”:代码签名证书如何重塑用户信任?
一、用户信任危机:数字时代的核心挑战 在软件分发领域,"未知发布者"警告已成为开发者与用户之间的信任鸿沟。据2025年全球软件安全报告显示,73%的用户在看到此类警告时会直接放弃安装,即使软件来自知名企业。这种信任缺…...
Qwen2.5-VL-7B-Instruct镜像免配置教程:开箱即用的视觉语言推理平台
Qwen2.5-VL-7B-Instruct镜像免配置教程:开箱即用的视觉语言推理平台 1. 开篇介绍 你是否遇到过这样的场景:需要快速搭建一个能同时理解图片和文字的AI系统,却被复杂的配置步骤劝退?今天我要介绍的Qwen2.5-VL-7B-Instruct镜像&am…...
一只菜鸟学深度学习的日记:填充 步幅 下采样
陕访惹玫在前两篇文章《最小二乘问题详解10:PnP问题求解》和《最小二乘问题详解11:基于李代数的PnP优化》中,我们分别通过常规思想与李代数思想,深入探讨了计算机视觉中 SFM(Structure from Motion)系统的核…...
从CUDA核心到Tensor Core:GPU计算单元的演进与实战解析
1. CUDA核心:通用计算的基石 我第一次接触CUDA核心是在2012年做图像处理项目时。当时用GTX 680显卡做图像渲染,发现它比CPU快了近20倍,这个性能差距让我震惊。后来才知道,这要归功于显卡里密密麻麻的CUDA核心。 CUDA核心本质上就是…...
2026论文降重神器盘点!毕业论文“AIGC痕迹”怎么破?
【CSDN技术引言:拒绝“开源背调”式的学术翻车】 哈喽各位同行和科研圈的战友们。最近后台私信快炸了,今年这届硕博生仿佛遭遇了“灭顶之灾”。某985高校前天出炉的抽检结果直接把大家看傻了:明明自己逐字逐句手敲的论文,知网查重…...
PTA L1-064 AI核心代码:从‘估值一亿’到‘精准实现’的避坑指南
1. 这道题为什么值"一亿"? PTA L1-064被戏称为"估值一亿"的题目,主要因为它在字符串处理中埋了多个隐蔽的坑点。我第一次做这道题时,看着题目要求觉得规则很明确,不就是几个字符串替换吗?结果提交…...
如何通过WechatRealFriends解决微信单向好友检测难题
如何通过WechatRealFriends解决微信单向好友检测难题 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends 在数字化社…...
C++ 内联函数的性能影响
C内联函数的性能影响探析 在追求高效代码的C开发中,内联函数因其消除函数调用开销的特性而备受关注。通过将函数体直接嵌入调用点,内联函数能显著提升程序性能,尤其在频繁调用的场景下。过度或不恰当的内联也可能导致代码膨胀或缓存命中率下…...
