本篇思维导图

@startmindmap
<style>
mindmapDiagram {
.green {
BackgroundColor lightgreen
}
.rose {
BackgroundColor #FFBBCC
}
.bule_black {
BackgroundColor lightblue
} }
</style>
* PlantUML <<rose>>
** PlantUML简介 <<green>>
** 时序图基本使用 <<rose>>
*** 开始、结束
*** 对象表示
*** 消息传递
*** 生命线
*** 分支、循环
*** 生命线的更简易写法
** 思维导图基本使用(正在开发中) <<bule_black>>
*** 开始、结束
*** 子主题生成和分支方向选择
*** 内容多行表示
*** 颜色更改
** uml时序图简介 <<bule_black>>
** vscode下配置plantuml <<bule_black>>
@endmindmap

一、前言

不管是在工作还是学习,特别是在项目计划初期,我们需要画大量的图将工作内容、项目方案等进行可视化描述,包括但不限于时序图、类图、思维导图等等。

但是对于不经常画图,或者经常使用键盘的孩子,手工画图或者使用软件进行画图都是一件比较头疼的操作,特别是像我这种有强迫症的孩子,任何歪歪扭扭的地方都会让我极其不舒服想要将图画的尽量笔直和完美。

所以,如果可以直接敲代码,就可以生成想要的图,对于工作效率和专注度都有极大的提升,另外,将图上的逻辑用代码描述出来,本身就又能加深自己的理解。

好在,我在工作中偶然发现了这样的一个开源项目,PlantUML!!!真的,强烈安利,程序员必备、计算机学生必备,只敲代码,真的是方便了许多,我在画时序图的时候,一个对象可能要画2-3分钟,从找标识到手工对齐,添加对象名,但是用代码只需要一行解决!!!啊,这个优点已经好到必须要亲自体会了!!!强烈安利!!!它已经是我画图时必用的一款神奇,和markdown一样不可忽视。

二、PlantUML简介

PlantUml是一个开源项目,可以用写代码的方式快速回至出各种自己想要的图。此外,不仅支持画UML,还支持很多常用的,比如思维导图、ER图等等。戳官网:PlantUML

下面我就我自己的使用分享一些简单常用的使用方法

三、时序图篇

官网使用文档:时序图

1. 开始和结束

@startuml表示开始

@enduml表示结束

2. 对象表示

常用对象:

actor: 实体对象,比如人、操作员等
participant: 参与者,可以是类、服务名等
database: 数据库
queue: 队列,比如kafka队列就可以用这个表示

定义对象:

格式对象类型 对象名 [as 对象别名] [ ] 里面的内容为可选项,即可以为对象定义别名,这个别名是为了在代码中引用对象方便,实际图中对象的名字还是我们定义的对象名。

例子:

actor 用户: 定义一个实体对象,对象名为“用户”
database mysql: 定义一个数据库,名字为“mysql”
participant SQLServer as db: 定义一个参与者,服务名为“SQLServer”,别名为“db”,在代码中可以直接用db表示SQLServer
queue kafka: 定义一个queue对象,名为 kafka
'单引号是代码注释
@startuml
'对象定义
actor 用户
participant SQLServer as db
database mysql
queue kafka
'结束
@enduml
@startuml
'单引号是代码注释
'对象定义
actor 用户
participant SQLServer as db
database mysql
queue kafka
@enduml

3. 消息传递

时序图主要是为了展示项目中的数据流走向,因此消息传递是时序图的重要部分。

->表示消息传递走向,默认箭头类型是单向直线,PlantUML手册中有很多样式可以通过代码自定义颜色和样式

-->是单向虚直线箭头,一般是用来传递消息返回信息

用户->mysql: 数据库请求

mysql-->用户: 请求结果

4. 生命线的激活与撤销

一般完整的时序图中都会包含生命周期,当某个服务被触发,从开始工作到工作结束返回请求的这段时间,就是这个服务当下的生命周期,在PlantUML中,使用activatedeactivate来激活、销毁生命周期

'单引号是代码注释
@startuml
actor 用户
participant SQLServer as db
database mysql
queue kafka
'消息传递
用户->mysql: 数据库请求
'激活mysql生命线
activate mysql
'消息传递
mysql-->用户: 请求结果
'销毁mysql生命线
deactivate mysql
@enduml
@startuml
'单引号是代码注释
'对象定义
actor 用户
participant SQLServer as db
database mysql
queue kafka
'消息传递
用户->mysql: 数据库请求
'激活mysql生命线
activate mysql
mysql-->用户: 请求结果
'销毁mysql生命线
deactivate mysql
@enduml

5. 分支和循环表示

某些复杂情况下需要处理一些分支和循环的内容,PlantUML中用 alt-else-end 表示分支, 用 loop-end表示循环

分支

alt 查询
用户->mysql: 数据库查询请求
activate mysql
mysql-->用户: 请求结果
deactivate mysql
else 插入
用户->mysql: 数据库插入请求
activate mysql
mysql-->用户: 请求结果
deactivate mysql
end
@startuml
'单引号是代码注释
'对象定义
actor 用户
participant SQLServer as db
database mysql
queue kafka
'消息传递
alt 查询
用户->mysql: 数据库查询请求
activate mysql
mysql-->用户: 请求结果
deactivate mysql
else 插入
用户->mysql: 数据库插入请求
activate mysql
mysql-->用户: 请求结果
deactivate mysql
end
@enduml

循环

loop 查询1000次
用户->mysql: 数据库查询请求
activate mysql
mysql-->用户: 请求结果
deactivate mysql
end
@startuml
'单引号是代码注释
'对象定义
actor 用户
participant SQLServer as db
database mysql
queue kafka
'消息传递
loop 查询1000次
用户->mysql: 数据库查询请求
activate mysql
mysql-->用户: 请求结果
deactivate mysql
end
@enduml

另外,分支和循环都是可以嵌套的。

6. 一些更简洁的语法

++可以直接激活生命线

return msg可以结束生命线并返回传递消息msg

一般成对使用

4中的激活生命线+消息传递的代码可以直接写成这样

'激活mysql生命线 & 消息传递
用户->mysql++: 数据库请求
'销毁mysql生命线 & 传递返回结果
return 请求结果

四、思维导图篇

目前据官网,这个正在开发中,某些语法可能会发生变化,但是先用着不是?官网手册:思维导图

1. 开始和结束

@startmindmap开始

@endmindmap结束

2. 子主题

使用+-新建分支,用符号数量表示层级,+表示分支向右边生长,-表示分支向左边生长

'这里是注释
@startmindmap
+ 思维导图
++ 主题1
+++ 子主题1.1
++ 主题2
-- 主题3
--- 子主题3.1
--- 子主题3.2
-- 子主题4
@endmindmap
@startmindmap
+ 思维导图
++ 主题1
+++ 子主题1.1
++ 主题2
-- 主题3
--- 子主题3.1
--- 子主题3.2
-- 子主题4
@endmindmap

3.内容多行表示

使用:开始多行内容,;结束多行内容。目前如果要使用: ;只能用*新建分支

'这里是注释
@startmindmap
* templates
**: Example1
今天是520
我在公司开心上班
;
@endmindmap
@startmindmap
* templates
**: Example1
今天是520
我在公司开心上班
;
@endmindmap

4.颜色改变

没有颜色的思维导图是没有灵魂的

具体语法建议查看官网手册

'这里是注释
@startmindmap
<style>
mindmapDiagram {
.green {
BackgroundColor lightgreen
}
.rose {
BackgroundColor #FFBBCC
}
.your_style_name {
BackgroundColor lightblue
}
}
</style>
* Colors
** Green <<green>>
** Rose <<rose>>
** Blue <<your_style_name>>
@endmindmap
@startmindmap
<style>
mindmapDiagram {
.green {
BackgroundColor lightgreen
}
.rose {
BackgroundColor #FFBBCC
}
.your_style_name {
BackgroundColor lightblue
}
}
</style>
* Colors
** Green <<green>>
** Rose <<rose>>
** Blue <<your_style_name>>
@endmindmap

五、UML时序图简介

对于还不清楚什么是UML时序图的同学,可以看下这两篇文章哦

步步为营UML建模系列五、时序图(Squence diagram)

UML序列图总结(Loop、Opt、Par和Alt)

六、vscode下配置PlantUML

使用VS CODE+PlantUML高效画图

Vscode plantuml UML图 配置使用

vscode下配置好plantuml后,可以使用Alt + D 预览plantuml文档(.uml文件)

如何从vscode导出plantuml图? F1ctrl+shift+p; 选择 PlantUML:导出当前图表;选择导出格式svg;导出即可。[png 对于较大的导出不全]

解决导出png不完整: vscode 打开设置 --> edit settings.json --> 添加如下:

    "plantuml.jarArgs": [
"-DPLANTUML_LIMIT_SIZE=8129"
]

PlantUML --- 使用代码快速绘制时序图、思维导图的更多相关文章

  1. 心智图/思维导图(Mind Map/Mind Mapping),思维导图介绍

    心智图(Mind Map),又称脑图.心智地图.脑力激荡图.思维导图.灵感触发图.概念地图.树状图.树枝图或思维地图,是一种图像式思维的工具以及一种利用图像式思考辅助工具来表达思维的工具.   心智图 ...

  2. <思维导图>思维导图

  3. 思维导图分享以及MindManager使用说明

    来源于: http://www.cnblogs.com/muhongxing/archive/2009/12/22/1628782.html http://www.cnblogs.com/muhong ...

  4. LeetCode刷题专栏第一篇--思维导图&时间安排

    昨天是元宵节,过完元宵节相当于这个年正式过完了.不知道大家有没有投入继续投入紧张的学习工作中.年前我想开一个Leetcode刷题专栏,于是发了一个投票想了解大家的需求征集意见.投票于2019年2月1日 ...

  5. python学习之思维导图

    思维导图——牛刀小试 刚刚学完了python的网络编程,在复习整理知识点的过程中,了解到思维导图是一种强大的工具. 思维导图又叫心智导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种 ...

  6. 思维导图软件MindManager新手入门教程

    MindManager是一款创造.管理和交流思想的思维导图软件,其直观清晰的可视化界面和强大的功能可以快速捕捉.组织和共享思维.想法.资源和项目进程等等.MindManager新手入门教程专为新手用户 ...

  7. Vue基础开发入门之简单语法知识梳理(思维导图详解)

    基于个人写的以下关于Vue框架基础学习的三篇随笔,在此基础上,做一个阶段性的知识总结,以此来检验自己对Vue这一段时间学习的成果,内容不多,但很值得一看.(思维导图详解)

  8. 各种图(流程图,思维导图,UML,拓扑图,ER图)简介

    来源于:http://www.cnblogs.com/jiqing9006/p/3344221.html 流程图 1.定义:流程图是对过程.算法.流程的一种图像表示,在技术设计.交流及商业简报等领域有 ...

  9. 【转】各种图(流程图,思维导图,UML,拓扑图,ER图)简介

    原文地址:各种图(流程图,思维导图,UML,拓扑图,ER图)简介 流程图 1.定义:流程图是对过程.算法.流程的一种图像表示,在技术设计.交流及商业简报等领域有广泛的应用. 2.案例 3.计算机语言只 ...

随机推荐

  1. P1255_数楼梯(JAVA语言)

    思路:BigInteger 四杀! 简单递推,注意long会超范围 题目描述 楼梯有N阶,上楼可以一步上一阶,也可以一步上二阶. 编一个程序,计算共有多少种不同的走法. 输入输出格式 输入格式: 一个 ...

  2. 12、MyBatis教程之缓存

    13.缓存 简介 1.什么是缓存 [ Cache ]? 存在内存中的临时数据. 将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高 ...

  3. 设计模式—singleton(单例模式)

    单例模式 单例设计模式属于创建型模式,它提供了一种创建对象的最佳方式.这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建. 这个类提供了一种访问其唯一的对象的方式,可以直接 ...

  4. 【python小示例】简易彩票中奖模拟

    咱自己写个彩票程序,成功亏掉3个亿 今天突发奇想,自己设计一个小程序,模拟彩票中奖,看看如果自己有个彩票公司,能挣钱吗?代码如下: # -*- utf-8 -*- """ ...

  5. 一键部署etcd集群管理脚本

    一.编写脚本 1 #!/bin/sh 2 # 安装 3 # ./run.sh etcd03 etcd01=http://192.168.2.44:2380,etcd02=http://192.168. ...

  6. 【设计模式】- 生成器模式(Builder)

    生成器模式 建造者模式.Builder 生成器模式 也叫建造者模式,可以理解成可以分步骤创建一个复杂的对象.在该模式中允许你使用相同的创建代码生成不同类型和形式的对象. 生成器的结构模式 生成器(Bu ...

  7. Linux服务器下JMeter的安装以及Xming的使用

    1.需要安装jdk和jmeter的安装包,都可以在官网得到下载.具体的操作按照下面的指令就可以 https://www.oracle.com/cn/java/technologies/javase/j ...

  8. Spring Boot 快速迁移至 Quarkus

    Quarkus 是一个目前非常火的 Java 应用开发框架,定位是轻量级的微服务框架.,Quarkus 提供了优秀的容器化整合能力,相较于传统开发框架(Spring Boot)有着更快的启动速度.更小 ...

  9. C/C++中的字符串相关姿势

    这是我在<程序设计实习>课程上作的pre,目标是对C/C++中字符串的相关内容作一个尽量完整的介绍.(对于OIer可能不太实用) 课件链接: https://files.cnblogs.c ...

  10. 【Azure Redis 缓存 Azure Cache For Redis】Redis连接池

    问题描述 Redis根据定价层说明,不同级别支持的连接数最多可达4万(同时),但是当短时间又大量连接请求建立的时候,Redis服务的服务压力非常大,到达100%.严重影响了高响应的要求.最严重时,经常 ...