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.pswp.cn/news/372299.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372299.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372299.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

windows中當你的鍵盤無法使用時我們可以用另一種方法哦

1.使用WinR打開cmd窗口 2.輸入osk回車就出現了一個虛擬的小鍵盤啦&#xff0c;當你的鍵盤壞掉后非常實用哦 轉載于:https://www.cnblogs.com/qianzf/p/6780496.html

python web.py 404_找不到web.py開發服務器-favicon.ico-404

py API文檔引用了一個“web.SEE OTHER()”函數&#xff0c;該函數生成一個303 SEE OTHER響應&#xff0c;將瀏覽器重定向到另一個位置。(請參見http://webpy.org/docs/0.3/api#web.application)這是一個服務器端的解決方案&#xff0c;它不需要在html文件中更改頭&#xff1b;如…

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;依次加載。下面的網頁代碼&…

[KISSY5系列]淘寶全終端框架 KISSY 5--從零開始使用

KISSY 是淘寶一個開源的 JavaScript 庫&#xff0c;包含的組件有&#xff1a;日歷、圖片放大鏡、卡片切換、彈出窗口、輸入建議等 一、簡介 KISSY 是一款跨終端、模塊化、高性能、使用簡單的 JavaScript 框架。 除了完備的工具集合如 DOM、Event、Ajax、Anim 等它還提供了經典的…

幾萬條數據的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…

NGUI學習隨筆

一、NGUI的直接用法 1. Attach a Collider&#xff1a;表示為NGUI的某些物體添加碰撞器&#xff0c;如果界面是用NGUI做的&#xff0c;只能這樣添加。&#xff08;注&#xff1a;用Component添加無效&#xff09;。2. Attach an Anchor&#xff1a;表示為該物體添加了…

Git 修改源地址

git remote set-url origin http://git.xxx.com/xxx/repo.git 轉載于:https://www.cnblogs.com/savokiss/p/5892543.html

mysql主從進行擴展_MySQL 主從擴展

MySQL 主從擴展常見問題排查1. 數據不一致:SHOW SLAVE STATUS \G;Last_Errno:1062Last_Error:ErrorDuplicate entryxxxn-66-77for key1on query.Defaultdatabase:guild.Query:insert into pynpcrecord setMapCode xxxn, UpdateTime 2015-08-0700:00:32解決方法: 在從庫上將重復…

JRockit – JRCMD有用的命令

自2007年以來&#xff0c;我一直在使用JRockit。我發現它比Hotspot速度慢&#xff0c;但在診斷和分析問題上總是更好。 從去年夏天開始&#xff0c;我一直在為一家國際電信系統供應商工作。 我們在HP OpenCall Convergent Communication Platform之上為電信運營商設計和實施各種…

Spark Streaming整合logstash + Kafka wordCount

1、安裝logstash&#xff0c;直接解壓即可 測試logstash是否可以正常運行 bin/logstash -e input { stdin { } } output { stdout {codec > rubydebug } } 只獲取消息 bin/logstash -e input { stdin { } } output { stdout {codec > plain { format > "%{messag…

js 變量類型

變量類型分為&#xff1a;基礎類型和引用類型 基礎類型&#xff1a;boolean, string, number, null, undefined, symbol 引用類型&#xff1a; array, object typeof: 判斷變量的類型instanceof:判斷某個對象是否是另外一個對象的實例主要還是理解這兩個判斷的不同之處&#xf…

python 相對導入_python 相對導入與絕對導入

Python 相對導入與絕對導入Python | Jul 21, 2016 | pythonPython 相對導入與絕對導入&#xff0c;這兩個概念是相對于包內導入而言的。包內導入即是包內的模塊導入包內部的模塊。Python import 的搜索路徑1.在當前目錄下搜索該模塊2.在環境變量 sys.path 中指定的路徑列表中依…

具有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中的結構體。解碼過程中…

python1~10階乘while_Python3基礎 while 階乘

?python : 3.7.0OS : Ubuntu 18.04.1 LTSIDE : PyCharm 2018.2.4conda : 4.5.11type setting : Markdown?code"""Author : 行初心Date : 18-9-24Blog : www.cnblogs.com/xingchuxinGitHub : github.com/GratefulHeartCoder"""def main():count…

JavaFX 2 GameTutorial第4部分

介紹 這是與JavaFX 2游戲教程相關的六個部分系列的第四部分。 如果您錯過了第1部分 &#xff0c; 第2部分或第3部分 &#xff0c;我建議您在開始本教程之前仔細閱讀它們。 回顧一下&#xff0c;在第3部分中&#xff0c;我為您提供了許多經典街機風格游戲和所使用的不同輸入設備…

關于ListView的作業

原生布局并未多做修改 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android" xmlns:tools"http://schemas.android.com/tools" android:id"id/activity_m…