mysql游戏减少积分活动图_plantuml-绘制状态图和活动图和部署图​

背景

状态图:对象的所有状态,以及基于事件发生的状态改变的过程;

活动图:用例的工作流程;

部署图:系统的软硬件物理体系结构;

状态图

基本语法

元素

语法

说明

开始和结束状态

[*]

标识开始和结束状态

箭头

-->

添加箭头

隐藏描述区域

hide empty description

隐藏描述区域

合成状态

state 合成状态名字{ 增城的状态定义语法}

可以嵌套状态图

状态声明

state 状态名字 : 备注

声明状态

fork,join

state state名字

分开,合并状态

并发状态

-- or 或者双竖线

状态是并发改变的

箭头方向

top down left right

可以控制箭头的方向

单行注释

note 方位 of 状态名 : 单行注释

单行注释

多行注释

note 方位 of 状态名 换行 单行注释 换行 end note

多行注释

登录状态图

@startuml

hide empty description

left to right direction

[*]-->NotLogin:首次打开app

state NotLogin: 没有登录

state LoginSuccess: 登录成功

state LoginFail: 登录失败

NotLogin -->LoginSuccess: 登录

NotLogin -->LoginFail:登录

state LoginFail {

state 用户不存在: ta校验

state saas注册失败:注册saas

state 登记用户信息失败: 登记到tiananUser

state 参数校验失败 :校验参数

}

state join_state <>

LoginSuccess-->join_state:组装响应参数

LoginFail-->join_state:组装响应参数

join_state -->[*]:返回JSON数据到客户端

@enduml

86c256df2b329b490a534762f2785d1e.png

积分状态图

@startuml

scale 350 width

left to right direction

hide empty description

state noPointRecord : 没有积分记录

state pointZero : 积分为0

state pointOk : 有积分

[*] --> noPointRecord: 增加积分

noPointRecord --> pointZero: 初始化

pointZero --> pointOk: 增加/消耗积分

pointOk --> [*]

@enduml

e43142a2ed5d49a3aafb6047e1dbc322.png

活动图

基本语法

元素

语法

说明

开始 结束

start stop

开始结束活动

活动

:活动名称;

定义活动

条件语句

if (条件 ?) then (yes) 换行 下一个活动 else(no) endif

条件分支

循环语句

repeat 换行 活动 换行 repeatwhile(条件 ?)

先执行再判断

循环语句

while ( 成立的条件?) 换行 活动 换行 endwhile(不成立的条件描叙)

先判断条件在循环

改变活动的形状

:活动> < ] } / 竖线

分别得到不同的形状

并行处理

fork fork again end fork

并行处理

组合

partition group名称 { 活动图语法}

对活动进行分组

泳道

两根竖线包围

泳道

分离

detach

移除箭头

登录活动图

@startuml

header 登录接口活动图

footer 登录接口活动图

|tomcat|

start

:参数校验]

if (参数校验通过 ?) then (yes)

elseif (字符串为空) then (no)

stop

else (其它校验错误)

stop

endif

|TA服务端|

:用户code远程校验;

|LX Saas|

:saas注册登录;

|MysqL|

:登记到saasUser;

|redis|

:保存令牌到Redis;

|tomcat|

:组装响应参数;

stop

@enduml

d20370958c6182069be82fe863ea8ebc.png

增加积分活动图

@startuml

header 改变用户积分接口活动图

footer 改变用户积分接口活动图

|tomcat|

start

:登录态检查;

if(令牌非法 ?) then (yes)

:返回未登录;

stop

else (合法)

endif

:接受参数,point,event ;

if(参数检查 ?) then(合法)

else(非法)

:返回参数错误;

stop

endif

|MysqL|

:插入积分增加详细纪录;

|tomcat|

:得到记录Id;

|redis|

:按照userId查询得到用户积分的表记录Id;

|tomcat|

if(记录id不存在 ?)then(yes)

|MysqL|

:插入用户的积分记录得到id;

:更新用户的总积分;

else(id存在)

:更新用户的总积分;

endif

|redis|

:删除用户总积分的缓存;

:删除用户积分总条数的缓存;

:删除用户积分明细分页记录的缓存;

|tomcat|

:得到明细记录的id,返回;

:返回客户端;

stop

@enduml

1b8ad729a05e8e646d7d1fcd5197777c.png

查询积分活动图

@startuml

|tomcat|

start

#gold:接受参数,pageNum,pageSize|

:参数校验;

if (参数校验通过 ?) then(通过)

else (不通过)

#red:报错 401 X 参数校验不通过;

stop

endif

|redis|

:从Redis缓存中查询得到记录的总数]

|tomcat|

if(总数不存在)then (不存在)

|MysqL|

:从数据库中查询得到积分详细纪录的总数;

|redis|

:设置到redis缓存中;

else

endif

|tomcat|

:得到纪录的总条数;

if(总数是否大于0 ?)then

-[#red]->总数大于0;

fork

|redis|

:从Redis缓存分页查询得到列表;

|tomcat|

if (redis中获取不到数据 ?) then( 获取不到)

|MysqL|

:从数据库中获取得到列表;

|redis|

:设置到redis缓存中;

else (获取到了)

endif

|tomcat|

:得到分页查询的列表;

fork again

|redis|

:从Redis缓存中查询得到用户总积分;

|tomcat|

if (redis中获取不到数据 ?) then( 获取不到)

|MysqL|

:从数据库中获取得到用户总积分;

|redis|

:设置到redis缓存中;

else (获取到了)

endif

|tomcat|

:得到用户总积分;

end fork

else

|tomcat|

-[#green]->总数等于0;

#green:分页列表为空;

#green:总积分为0;

endif

|tomcat|

:组装响应参数\n分页列表数据\n用户总积分;

stop;

@enduml

7613464f35a43b6475b3cbded06626d5.png

部署图

部署图显示了系统的硬件和安装在硬件上的软件,以及用于连接异构计算机之间的中间件。部署图通常被认为是一个网络图或者物理架构图。

语法

元素

语法

说明

角色

actor TaUser as taUser

申明一个角色

代理

agent agent

申明一个代理

程序包

artifact artifact

声明一个程序包

boundary myBoundary

card card

cloud cloud

表示一块私有或者共有云

component myComponent

control myControl

database mydatabase

entity entity

file file

表示文件服务器

folder folder

frame frame

interface interface

节点

node node

表示一个物理结构

package package

队列

queue queue

消息队列

stack stack

rectangle rectangle

存储

storage storage

usecase usercase

备注文字

[备注文字]

对组件进行文字备注

连线和箭头

-- .. == -->

连接两个元素

包装

元素 名称 {申明元素语法 }

包含关系

系统部署图

@startuml

header TA项目物理架构图

footer TA项目物理架构图

left to right direction

actor TaUser as taUser

node TaApp as taApp {

agent LxSDK as lxsdk

agent TaClient as taClient

}

folder tiananuser_folder{

cloud tiananuserCluster

node tomcat1_tiananuser

node tomcat2_tiananuser

node tomcat3_tiananuser

tiananuserCluster -down-> tomcat1_tiananuser

tiananuserCluster -down-> tomcat2_tiananuser

tiananuserCluster -down-> tomcat3_tiananuser

}

folder tianansp_folder{

cloud tiananspCluster

node tomcat1_tianansp

node tomcat2_tianansp

node tomcat3_tianansp

tiananspCluster -down-> tomcat1_tianansp

tiananspCluster -down-> tomcat2_tianansp

tiananspCluster -down-> tomcat3_tianansp

}

node Nginx as Nginx

Nginx --> tiananuserCluster:负载均衡/路由

Nginx --> tiananspCluster:负载均衡/路由

taUser --> taApp : 访问

taApp --> Nginx:http/https

database tiananuser_database[

用户登录数据库

]

database tianansp_database[

运营活动数据库

]

database redis[

redis缓存

]

tiananuser_folder -down-> tiananuser_database

tianansp_folder -right-> tianansp_database

tiananuser_folder -down-> redis

tianansp_folder -up-> redis

node zk [

zookeeper注册中心

dubbo的消费者跟生产者通信中间件

定时任务elasticjob的配置中间件

]

tiananuser_folder -down-> zk

tianansp_folder -up-> zk

node apollo [

apollo配置中心

]

queue kafka[

kafka集群

]

tiananuser_folder -down-> apollo

tianansp_folder -up-> apollo

tiananuser_folder -down-> kafka

tianansp_folder -up-> kafka

file fileCDN [

七牛云或者阿里云存储

]

tiananuser_folder -down-> fileCDN

tianansp_folder -up-> fileCDN

cloud ELK {

node elsticSearch

node filebeat

node kibana

}

node kubernetes{

node healmcharts[

交付服务

]

node harbor[

harbor监控管理kubernetes对象

]

}

tiananuser_folder -down-> ELK:日志写入

tianansp_folder -up-> ELK:日志写入

tiananuser_folder -down-> kubernetes:发布和管控docker节点

tianansp_folder -up-> kubernetes:发布和管控docker节点

@enduml

71f72ea16f627bc8d8f78429265f462d.png

小结

活动图(泳道图)实际上是代码流程的一个梳理,建议编码前,先画活动图;

状态图 可以列举出所有状态发生改变的事件,防止遗漏掉某些发生改变的情况;

部署图实际上是物理架构图,画的不太好看,但是却可以在上线的时候有效的指导运维;

原创不易,转载请注明出处。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

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

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

相关文章

windows中当你的键盘无法使用时我们可以用另一种方法哦

1.使用WinR打开cmd窗口 2.输入osk回车就出现了一个虚拟的小键盘啦&#xff0c;当你的键盘坏掉后非常实用哦 转载于:https://www.cnblogs.com/qianzf/p/6780496.html

NetBeans 7.2引入了TestNG

代码生成的优点之一是能够查看如何使用特定的语言功能或框架。 正如我在《 NetBeans 7.2 beta&#xff1a;更快&#xff0c;更有用》一文中所讨论的那样&#xff0c; NetBeans 7.2 beta提供了TestNG集成 。 除了对该功能的单一引用之外&#xff0c;我在该帖子中没有进一步阐述&…

Javascript模块化编程(三):require.js的用法

一、为什么要用require.js&#xff1f; 最早的时候&#xff0c;所有Javascript代码都写在一个文件里面&#xff0c;只要加载这一个文件就够了。后来&#xff0c;代码越来越多&#xff0c;一个文件不够了&#xff0c;必须分成多个文件&#xff0c;依次加载。下面的网页代码&…

几万条数据的excel导入到mysql_【记录】2万多条数据的Excel表格数据导入mysql数据库...

主题刚开始的时候做了两个小方案&#xff01;第一个是直接Excel处理完导入&#xff0c;但是这个导入的话虽然简单出错率很大&#xff01;第二个是想直接用php做个小程序直接导入数据&#xff0c;但是想了想2万条数据处理&#xff0c;百分之百浏览器会一直转&#xff0c;最后不知…

JDeveloper中的Java反编译器

Java Decompiler是一个独立的图形实用程序&#xff0c;显示“ .class”文件的Java源代码。 下面是Java Decompiler程序的快照 您可以从这里下载该程序 我将说明如何将此程序用作Jdeveloper中的外部工具 Java Decompiler和Jdeveloper之间的集成 您可以将此程序添加到Jdevelo…

具有Java Kickstart的MongoDB

NoSQL数据库由于其可伸缩性而变得越来越流行。 适当使用时 NoSQL数据库可以提供真正的好处。 MongoDB是使用C 编写的高度可扩展的开源NoSQL数据库。 1.安装MongoDB 您可以根据所使用的操作系统&#xff0c;按照MongoDB官方网站上的说明安装MongoDB&#xff0c;而不会遇到很多麻…

Linux Shell——函数的使用

文/一介书生&#xff0c;一枚码农。 scripts are for lazy people. 函数是存在内存里的一组代码的命名的元素。函数创建于脚本运行环境之中&#xff0c;并且可以执行。 函数的语法结构为&#xff1a; function <function-name> {<code to execute> } 创建函数不需要…

FFmpeg学习2:解码数据结构及函数总结

在上一篇文章中&#xff0c;对FFmpeg的视频解码过程做了一个总结。由于才接触FFmpeg&#xff0c;还是挺陌生的&#xff0c;这里就解码过程再做一个总结。本文的总结分为以下两个部分&#xff1a; 数据读取&#xff0c;主要关注在解码过程中所用到的FFmpeg中的结构体。解码过程中…

JavaFX 2 GameTutorial第4部分

介绍 这是与JavaFX 2游戏教程相关的六个部分系列的第四部分。 如果您错过了第1部分 &#xff0c; 第2部分或第3部分 &#xff0c;我建议您在开始本教程之前仔细阅读它们。 回顾一下&#xff0c;在第3部分中&#xff0c;我为您提供了许多经典街机风格游戏和所使用的不同输入设备…

java构造函数_JAVA的构造函数是怎么写的。万分感谢。路过的请不要嘲笑%_%

展开全部JAVA的构造函数是&#xff1a;SetLocal EnableDelayedExpansionset classpath.for %%c in (lib\*.jar) do set classpath!32313133353236313431303231363533e59b9ee7ad9431333431363030classpath!;%%cset classpath%classpath%;./classes;java com.ham.server.Server。…

C# 中winform的一些属性设置

1 窗体的大小固定住&#xff0c;不能调整其大小 窗体FormBorderStyle 属性设置为 FixedSingle; MaximizeBox 属性设置为false; MinimizeBox 属性设置为 false; 2. 在状态栏中无图标显示 设置为fase即可。 3. 设置窗体的启动位置 方法1&#xff0c; 用代码控制 this.Location …

LiveBos---按钮成下拉

转载于:https://www.cnblogs.com/luhanzhen/p/6802779.html

Solr:创建拼写检查器

在上一篇文章中&#xff0c;我谈到了Solr Spellchecker的工作原理&#xff0c;然后向您展示了其性能的一些测试结果。 现在&#xff0c;我们将看到另一种拼写检查方法。 与其他方法一样&#xff0c;此方法使用两步过程。 相当快速的“候选单词”选择&#xff0c;然后对这些单词…

Django 和 html

下面是对应的形式&#xff0c;自定义的forms 转载于:https://www.cnblogs.com/kilen/p/6804047.html

【Java大系】Java快速教程

感谢原作者&#xff1a;Vamei 出处&#xff1a;http://www.cnblogs.com/vamei Java是面向对象语言。这门语言其实相当年轻&#xff0c;于1995年才出现&#xff0c;由Sun公司出品。James Gosling领导了Java的项目小组。该项目的最初只想为家电设计一门容易移植的语言。然而&am…

[dpdk] 读官方文档(3)

续前节&#xff0c; 测试小程序 1. 想编译测试程序首先需要设置两个环境变量&#xff0c;为什么呢&#xff0c;因为测试程序的Makefile里用了。。。 rpm装了打包好的devel包&#xff0c;这个rpm也会自带这两个环境变量。就是说写第三方程序的时候&#xff0c;习惯上&#xff0c…

逻辑表达式——黑纸白纸

一、问题描述 有A、B、C、D、E五个人&#xff0c;每人额头上都贴了一张黑色或白色的纸条。五人对坐&#xff0c;每人都可以看到其他人额头上的纸的颜色&#xff0c;但都不知道自己额头上的纸的颜色。五人互相观察后&#xff0c; A说&#xff1a;“我看见有三个人额头上贴的是白…

java 1.6u29 下载_jdk1.6 64位下载|JDK 6(Java SE Development Kit)下载6u43 64位官方版_java运行环境 IT猫扑网...

jdk1.6 64位适用于x64的系统安装的java运行环境&#xff0c;Java SE Development Kit6是java开发人员必备的产品&#xff0c;也叫做jdk6&#xff0c;欢迎下载使用。官方介绍适用于您的计算机(windows)的 Java 软件&#xff0c;即 Java Runtime Environment&#xff0c;也称为 J…

ZK 6中的MVVM初探

MVVM与MVC 在上一篇文章中&#xff0c;我们已经看到Ajax框架ZK如何采用CSS选择器启发的Controller来在View中连接UI组件并监听它们的事件。 在此ZK MVC模式下&#xff0c; View中的UI组件无需绑定到任何Controller方法或数据对象。 使用选择器模式作为将View状态和事件映射到Co…

消失循环的2023?你都做了什么? | 2023 年度总结

2023年度总结 -- 今年都做了什么事&#xff1f; 前言心态关键词感悟 记录申请软著独立游戏技术成长 共勉 前言 又到了一年一次年度总结的时候了。我们常常感叹时间飞逝&#xff0c;却又没办法让它放慢的脚步。那就将2023写下来&#xff0c;让它在时间的长河中留下一丝记忆。 心…