状态图

状态图是一种用于计算机科学和相关领域描述系统行为的图。状态图要求描述的系统由有限数量的状态组成。

语法:

stateDiagram-v2
[*] --> Still
Still --> [*] Still --> Moving:push
Moving --> Still:摩擦
Moving --> Crash:速度过快
Crash --> [*]
stateDiagram-v2
[*] --> Still
Still --> [*]

Still --> Moving:push
Moving --> Still:摩擦
Moving --> Crash:速度过快
Crash --> [*]

在状态图中,展示了系统有那些状态,以及状态之间相互转换的。 上面的示例图显示了 Still、MovingCrash 三种状态。 可以将Still状态 更改为 Moving。 也可以将Moving状态更改回StillCrash。 但无法从Still过度到Crash 状态。

  1. 状态

可以通过多种方式声明一个状态。 最简单的方法是状态定义是通过 id 。

stateDiagram-v2
id
stateDiagram-v2
id

定义状态的另一种方法是,状态id后接冒号和描述。

stateDiagram-v2
S:开始
R:运行
W:等待 S-->R:start()
R-->W:wait()
W-->R:notify(),nofityAll()
stateDiagram-v2
S:开始
R:运行
W:等待

S-->R:start()
R-->W:wait()
W-->R:notify(),nofityAll()

id:des :状态id:状态详细

如果状态比较长,并且要多次引用,可以用此种方式,可以减少敲打键盘的的次数。

  1. 过渡:状态转换

当一种状态进入另一种状态时,通过过渡转换。 这使用文本箭头-->表示。

stateDiagram-v2
状态1 --> 状态2
stateDiagram-v2
状态1 --> 状态2

可以向过渡中添加文本。描述它代表什么。

stateDiagram-v2
new-->Runable:start()
stateDiagram-v2
new-->Runable:start()
  1. 开始和结束

有两种特殊状态指示图,开始和停止。 可以用 [*] 语法表示开始或停止状态。

stateDiagram-v2
[*] --> 运行
s1 --> [*]
stateDiagram-v2
s1:运行
[*] --> s1
s1 --> [*]

例子:

Java线程状态图:

stateDiagram-v2
New-->Runnable:start() Runnable-->Waiting:wait()
Waiting-->Runnable:notify(),notifyAll() TimedWaiting-->Runnable:sleep()结束
Runnable-->TimedWaiting:sleep()开始 Blocked-->Runnable:synchronized
Runnable-->Blocked:synchronized Runnable-->Terminated:run()结束
stateDiagram-v2
New-->Runnable:start()

Runnable-->Waiting:wait()
Waiting-->Runnable:notify(),notifyAll()

TimedWaiting-->Runnable:sleep()结束
Runnable-->TimedWaiting:sleep()开始

Blocked-->Runnable:synchronized
Runnable-->Blocked:synchronized

Runnable-->Terminated:run()结束

markdown mermaid状态图的更多相关文章

  1. Markdown Mermaid

    Mermaid 是一个用于画流程图.状态图.时序图.甘特图的库,使用 JS 进行本地渲染,广泛集成于许多 Markdown 编辑器中. 之前用过 PlantUML,但是发现这个东西的实现原理是生成 U ...

  2. markdown mermaid序列图

    序列图(时序图) 序列图是一种交互图,它显示了进程如何相互操作以及按什么顺序操作. sequenceDiagram participant l as 大灰狼 participant y as 小羊 l ...

  3. markdown mermaid流程图

    流程图 所有流程图都由节点.几何图像.箭头或线条组成. mermaid代码定义了这些节点和边的制作和交互方式.可以有不同的箭头类型.多向箭头以及与子图的连接. 节点 节点 flowchart LR i ...

  4. 我画着图,FluentAPI 她自己就生成了

    在 Newbe.ObjectVistor 0.3 版本中我们非常兴奋的引入了一个紧张刺激的新特性:使用状态图来生成任意给定的 FluentAPI 设计. 开篇摘要 在非常多优秀的框架中都存在一部分 F ...

  5. Markdown中使用mermaid画流程图

    Markown语法简单,用来写文档是个不错的选择. 但是Markdown 语法并不直接支持画图,当然方法还是有的. 本人用的Markdown编辑器为vscode,在里面直接安装merdaid插件即可使 ...

  6. markdown绘图插件----mermaid简介

    作者:黄永刚 mermaid简介 当撰写文档的时候,对于流程图的生成大多使用Visio等繁重的工具,没有一种轻便的工具能够画图从而简化文档的编写,就像markdown那样. mermaid解决这个痛点 ...

  7. Markdown教程<2> mermaid图形绘制(1)

    Markdown教程<2> mermaid图形绘制(1) 博客园中的markdown编辑器同时支持mermaid图表引擎与tex公式引擎,可以使用mermaid直接画出流程图,时序图,甘特 ...

  8. 画图前端:mermaid。时序图/类图/甘特图/流程图/状态图/饼图。类似工具:Typora

    文档 https://mermaidjs.github.io/#/ cdn https://www.bootcdn.cn/mermaid/ 在线编辑 https://mermaidjs.github. ...

  9. Markdown画图(mermaid)学习

    简介 目前博客园支持mermaid的graph,subgraph,sequenceDiagram,gantt,classDiagram mermaid(美人鱼), 是一个类似markdown,用文本语 ...

随机推荐

  1. HDD深圳站:全生命周期赋能开发者,华为引领应用生态升级

    12月14日,由华为开发者联盟主办的HDD(HUAWEI Developer Day)于深圳举行.此次HDD主论坛,围绕打造应用全生命周期服务,介绍了华为在创新孵化.开发测试.应用分发和运营增长阶段的 ...

  2. 【分布式技术专题】「OSS中间件系列」Minio的文件服务的存储模型及整合Java客户端访问的实战指南

    Minio的元数据 数据存储 MinIO对象存储系统没有元数据数据库,所有的操作都是对象级别的粒度的,这种做法的优势是: 个别对象的失效,不会溢出为更大级别的系统失效. 便于实现"强一致性& ...

  3. [V&N2020 公开赛]babybabypwn

    写在开头,感谢"影二つ"师傅的指点. 题目的做法思路网上一搜一大把,这篇博客主要记录一下这道题用pwntools写srop的时候,为什么需要省略前面8个字节. 在看题目之前,先来学 ...

  4. Winamp栈溢出漏洞研究

    Winamp作为一款在90年代最主流的音乐播放器,到现在仍有大量的忠实粉丝.当然也存在很多漏洞.下面具体分析的就是打开软件的更新历史信息而触发的一个缓冲区溢出漏洞. 0X01漏洞重现 正常的whats ...

  5. Unhandled Exception: FormatException: Unexpected character

    错误原因 json格式不正确,检查:是否加了注释.最后一个是否加了逗号... 正确格式 { "name": "shellon", "age" ...

  6. JS验证身份证是否符合规则

    调用isIdCardNo(num)  验证通过返回true 错误返回false function isIdCardNo(num) { var factorArr = new Array(7, 9, 1 ...

  7. 【LeetCode】1023. Camelcase Matching 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 正则+字典 日期 题目地址:https://leet ...

  8. 【九度OJ】题目1012:畅通工程 解题报告

    [九度OJ]题目1012:畅通工程 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1012 题目描述: 某省调查城镇交通状况 ...

  9. 【LeetCode】5. Longest Palindromic Substring 最长回文子串

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 公众号:负雪明烛 本文关键词:最长回文子串,题解,leetcode, 力扣,python ...

  10. 【LeetCode】712. Minimum ASCII Delete Sum for Two Strings 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...