統一建模語言UML

目錄

  • 1. UML定義
  • 2. UML結構
    • 2.1 視圖(View)
    • 2.2 圖(Diagram)
    • 2.3 模型元素(Model element)
    • 2.4 通用機制(General mechanism)
  • 3. 類圖
    • 3.1 類與類圖
    • 3.2 類之間的關系
      • 3.2.1 關聯關系
      • 3.2.2 聚合關系
      • 3.2.3 組合關系
      • 3.2.4 依賴關系
      • 3.2.5 泛化關系
      • 3.2.6 接口與實現關系
    • 3.3 類圖實例
      • 3.3.1 實例說明
      • 3.3.2 實例解析
  • 4. 順序圖
    • 4.1 順序圖定義
    • 4.2 順序圖組成元素與繪制
    • 4.3 實例解析
  • 5. 狀態圖
    • 5.1 狀態圖定義
    • 5.2 狀態圖組成元素與繪制
    • 5.3 實例解析
  • 參考

1. UML定義

??????Unified Modeling Language (UML)又稱統一建模語言或標準建模語言,是始于1997年一個OMG標準,它是一個支持模型化和軟件系統開發的圖形化語言,為軟件開發的所有階段提供模型化和可視化支持,包括由需求分析到規格,到構造和配置。 面向對象的分析與設計(OOA&D,OOAD)方法的發展在80年代末至90年代中出現了一個高潮,UML是這個高潮的產物。它不僅統一了Booch、Rumbaugh和Jacobson的表示方法,而且對其作了進一步的發展,并最終統一為大眾所接受的標準建模語言。

2. UML結構

2.1 視圖(View)

  • 用戶視圖:以用戶的觀點表示系統的目標,它是所有視圖的核心,該視圖描述系統的需求。
  • 結構視圖:表示系統的靜態行為,描述系統的靜態元素,如包、類與對象,以及它們之間的關系。
  • 行為視圖:表示系統的動態行為,描述系統的組成元素如對象在系統運行時的交互關系。
  • 實現視圖:表示系統中邏輯元素的分布,描述系統中物理文件以及它們之間的關系。
  • 環境視圖:表示系統中物理元素的分布,描述系統中硬件設備以及它們之間的關系。

視圖關系圖

2.2 圖(Diagram)

應用視圖圖名稱說明
用戶視圖用例圖(Use Case Diagram)用于表示多個外部執行者與系統用例之間以及用例與用例之間的關系
結構視圖類圖(Class Diagram)使用類來描述系統的靜態結構,類圖包含類和它們之間的關系,它描述系統內所聲明的類,但它沒有描述系統運行時類的行為
結構視圖對象圖(Object Diagram)是類圖在某一時刻的一個實例,用于表示類的對象實例之間的關系
結構視圖包圖(Package Diagram)用于描述包與包之間的關系,包是一種把元素組織到一起的通用機制,如可以將多個類組織成一個包
結構視圖組合結構圖(Package Diagram)將每一個類放在一個整體中,從類的內部結構來審視一個類。組合結構圖可用于表示一個類的內部結構,用于描述一些包含復雜成員或內部類的類結構
行為視圖狀態圖(State Diagram)用來描述一個特定對象的所有可能狀態及其引起狀態轉移的事件。一個狀態圖包括一系列對象的狀態及狀態之間的轉換
行為視圖順序圖(Sequence Diagram)用于表示對象之間的交互,重點表示對象之間發送消息的時間順序
行為視圖通信圖(Communication Diagram)展示了一組對象、這些對象間的連接以及它們之間收發的消息。它與順序圖是同構圖,也就是它們包含了相同的信息,只是表達方式不同而已,通信圖與順序圖可以相互轉換
行為視圖定時圖(Timing Diagram)采用一種帶數字刻度的時間軸來精確地描述消息的順序,而不是像順序圖那樣只是指定消息的相對順序,而且它還允許可視化地表示每條生命線的狀態變化,當需要對實時事件進行定義時,定時圖可以很好地滿足要求
行為視圖交互概覽圖(Interaction Overview Diagram)是交互圖與活動圖的混合物,可以把交互概覽圖理解為細化的活動圖,在其中的活動都通過一些小型的順序圖來表示;也可以將其理解為利用標明控制流的活動圖分解過的順序圖
實現視圖組件圖(Component Diagram)用于描述每個功能所在的組件位置以及它們之間的關系
環境視圖部署圖(Deployment Diagram)用于描述軟件中各個組件駐留的硬件位置以及這些硬件之間的交互關系

2.3 模型元素(Model element)

  • 在UML中,模型元素包括事物以及事物與事物之間的聯系。事物是UML的重要組成部分,它代表任何可以定義的東西。事物之間的關系把事物聯系在一起,組成有意義的結構模型。每一個模型元素都有一個與之相對應的圖形元素。
  • 同一個模型元素可以在不同的UML圖中使用,但是,無論在哪個圖中,同一個模型元素都保持相同的意義和符號

2.4 通用機制(General mechanism)

??????
UML提供的通用機制為模型元素提供額外的注釋、修飾和語義等,主要包括規格說明修飾公共分類擴展機制四種。擴展機制允許用戶對UML進行擴展,以便一個特定的方法、過程、組織或用戶來使用

3. 類圖

3.1 類與類圖

??????在UML類圖中,類一般由三部分組成:

  • 類名:每個類都必須有一個名字,類名是一個字符串
  • 屬性(Attribites):屬性是指類的性質,即類的成員變量。類可以有任意多個屬性,也可以沒有屬性。

??????可見性 名稱:類型[=默認值]

  • 操作(Operations):操作是類的任意一個實例對象都可以使用的行為,操作是類的成員方法

UML類元素

3.2 類之間的關系

3.2.1 關聯關系

??????關聯關系(Association)是類與類之間最常用的一種關系,它是一種結構化關系,用于表示一類對象與另一類對象之間有聯系。
??????在UML類圖中,用實線連接有關聯的對象所對應的類,在使用Java、C#和C++等編程語言實現關聯關系時,通常將一個類的對象作為另一個類的屬性。
??????在使用類圖表示關聯關系時可以在關聯線上標注角色名。

  • 關聯關系

類關聯關系

public class LoginForm{private JButton loginButton;...
}
public class JButton{...
}
  • 雙向關聯

??????默認情況下,關聯是雙向的

類雙向關聯

public class Customer{private Product[] products;...
}
public class Product{private Customer customer;
}
  • 單向關聯

??????類的關聯關系也可以是單向的,單向關聯用帶箭頭的實線表示

類單向關聯

public class Customer{private Address address;...
}
public class Product{...
}
  • 自關聯

??????在系統中可能會存在一些類的屬性對象類型為該類本身,這種特殊的關聯關系稱為自關聯

類自關聯

public class Node{private Node sunNode;...
}
  • 重數性關聯

??????重數性關聯關系又稱為多重性關聯關系(Multiplicity),表示一個類的對象與另一個類的對象連接的個數。在UML中多重性關系可以直接在關聯直線上增加一個數字表示與之對應的另一個類的對象的個數

表示方式多重性說明
1...1表示另一個類的一個對象只與一個該類對象有關系
0..*表示另一個類的一個對象與零個或多個該類對象有關系
1..*表示另一個類的一個對象與一個或多個該類對象有關系
0..1表示另一個類的一個對象沒有或與一個該類對象有關系
m..n表示另一個類的一個對象與最少m、最多n個該類對象有關系(m<=n)

類重數性關聯

public class Form{private Button buttons;...
}
public class Button{...
}

3.2.2 聚合關系

??????聚合關系(Aggregation)表示一個整體與部分的關系。通常在定義一個整體類后,再去分析這個整體類的組成結構,從而找出一些成員類,該整體類和成員類之間就形成了聚合關系。
??????在聚合關系中,成員類是整體類的一部分,即成員對象是整體對象的一部分,但是成員對象可以脫離整體對象獨立存在。在UML中,聚合關系用帶空心菱形的直線表示。

類聚合關系

public class Car{private Engine engine;public Car(Engine engine){this.engine=engine;}public void setEngine(Engine engine){this.engine=engine;}...
}
public class Engine{...
}

3.2.3 組合關系

??????組合關系(Composition)也表示類之間整體和部分的關系,但是組合關系中部分和整體具有統一的生存期。一旦整體對象不存在,部分對象也將不存在,部分對象與整體對象之間具有同生共死的關系。
??????在組合關系中,成員類是整體類的一部分,而且整體類可以控制成員類的生命周期,即成員類的存在依賴于整體類。在UML中,組合關系用帶實心菱形的直線表示。

類組合關系

public class Head{private Mouth mouth;public Head(){mouth=new Mouth();}...
}
public class Mouth{...
}

3.2.4 依賴關系

??????依賴關系(Dependency)是一種使用關系,特定事物的改變有可能會影響到使用該事物的其他事物,在需要表示一個事物使用另一個事物時使用依賴關系。大多數情況下,依賴關系體現在某個類的方法使用另一個類的對象作為參數。
??????在UML中,依賴關系用帶箭頭的虛線表示,由依賴的一方指向被依賴的一方。

類依賴關系

public class Driver{public void drive(Car car){car.move();}...
}
public class Car{public void move(){...}...
}

3.2.5 泛化關系

??????泛化關系(Generalization)也就是繼承關系,也稱為“is-a-kind-of”關系,泛化關系用于描述父類與子類之間的關系,父類又稱作基類或超類,子類又稱作派生類。在UML中,泛化關系用帶空心三角形的直線來表示。
??????在代碼實現時,使用面向對象的繼承機制來實現泛化關系,如在Java語言中使用extends關鍵字、在C++/C#中使用冒號“:”來實現。

類泛化關系

public class Person{protected String name;protected int age;public void move(){...}public void say(){...}
}public class Student extends Person{private String studentNo;public void study(){...}
}public class Teacher extends Person{private String teacherNo;public void teach(){...}
}

3.2.6 接口與實現關系

??????接口之間也可以有與類之間關系類似的繼承關系和依賴關系,但是接口和類之間還存在一種實現關系(Realization),在這種關系中,類實現了接口,類中的操作實現了接口中所聲明的操作。在UML中,類與接口之間的實現關系用帶空心三角形的虛線來表示。

接口與實現關系

public interface Vehicle{public void move();
}public class Ship implements Vehicle{public void move(){...}
}public class Car implements Vehicle{public void move(){...}
}

3.3 類圖實例

3.3.1 實例說明

??????某基于Java語言的C/S軟件需要提供注冊功能,該功能簡要描述如下:

  • 用戶通過注冊界面(RegisterForm)輸入個人信息,用戶點擊“注冊”按鈕后將輸入的信息通過一個封裝用戶輸入數據的對象(UserDTO)傳遞給操作數據庫的數據訪問類(DAO),為了提高系統的擴展性,針對不同的數據庫可能需要提供不同的數據訪問類,因此提供了數據訪問類接口,如IUserDAO,每一個具體數據訪問類都是某一個數據訪問類接口的實現類,如OracleUserDAO就是一個專門用于訪問Oracle數據庫的數據訪問類。
  • 根據以上描述繪制類圖。為了簡化類圖,個人信息僅包括賬號(userAccount)和密碼(userPassword),且界面類無須涉及界面細節元素。

3.3.2 實例解析

類圖示例圖

4. 順序圖

??????順序圖是最常用的系統動態建模工具之一,也是使用頻率最高的交互圖。它用于表示對象之間的動態交互,而且以圖形化的方式描述了對象間消息傳遞的時間順序。

4.1 順序圖定義

??????順序圖(Sequence Diagram)是一種強調對象間消息傳遞次序的交互圖,又稱為時序圖或序列圖。

??????順序圖以圖形化的方式描述了在一個用例或操作的執行過程中對象如何通過消息相互交互,說明了消息如何在對象之間被發送和接收以及發送的順序。順序圖允許直觀地表示出對象的生存期,在生存期內,對象可以對輸入消息做出響應,還可以發送信息。

??????在軟件系統建模中,順序圖的使用很靈活,通常包括如下兩種順序圖:

  • 需求分析階段的順序圖:主要用于描述用例中對象之間的交互,可以使用自然語言來繪制,用于細化需求,它從業務的角度進行建模,用描述性的文字敘述消息的內容。
  • 系統設計階段的順序圖:確切表示系統設計中對象之間的交互,考慮到具體的系統實現,對象之間通過方法調用傳遞消息。

4.2 順序圖組成元素與繪制

??????在UML中,順序圖將交互關系表示為一個二維圖,縱向是時間軸,時間沿豎線向下延伸;橫向軸表示了在交互過程中的獨立對象,對象的活動用生命線表示。順序圖由執行者(Actor)、生命線(Lifeline)、對象(Object)、激活框(Activation)和消息(Message)等元素組成。

  • 執行者是交互的發起人,使用與用例圖一樣的“小人”符號表示,在有些交互過程中無須使用執行者。
  • 生命線用一條縱向虛線表示。
  • 對象表示為一個矩形,其中對象名稱標有下劃線。
  • 激活是過程的執行,包括等待過程執行的時間。在順序圖中激活部分替換生命線,使用長條的矩形表示。
  • 消息是對象之間的通信,是兩個對象之間的單路通信,是從發送者到接收者之間的控制信息流。消息在順序圖中由有標記的箭頭表示,箭頭從一個對象的生命線指向另一個對象的生命線,消息按時間順序在圖中從上到下排列。

??????一個復雜的順序圖可以劃分為幾個小塊,每一個小塊稱為一個交互片段(Interaction Fragment)。每個交互片段由一個大方框包圍,在方框左上角的間隔區內標注該交互片段的操作類型,該操作類型用操作符表示,常用的操作符包括:

  1. alt:多條路徑,條件為真時執行。
  2. opt:任選,僅當條件為真時執行。
  3. par:并行,每一片段都并發執行。
  4. loop:循環,片段可多次執行。

實例如圖:

順序圖示例圖1

??????在順序圖中,有的消息對應于激活,表示它將會激活一個對象,這種消息稱為調用消息(Call Message);如果消息沒有對應激活框,表示它不是一個調用消息,不會引發其他對象的活動,這種消息稱為發送消息(Send Message);如果對象的一個方法調用了自己的另一個方法時,消息是由對象發送給自身,這種消息稱為自身消息(Self Call Message)。

??????順序圖中的消息還包括創建消息和銷毀消息,創建消息用于使用new關鍵字創建另一個對象,而銷毀消息用于調用對象的銷毀方法將一個對象從內存中銷毀。

如圖所示:

順序圖示例圖2

4.3 實例解析

  • 某基于Java EE的B/S系統需要提供登錄功能,該功能簡要描述如下:用戶打開登錄界面login.jsp輸入數據,向系統提交請求,系統通過Servlet獲取請求數據,將數據傳遞給業務對象,業務對象接收數據后再將數據傳遞給數據訪問對象,數據訪問對象對數據庫進行操作,查詢用戶信息,再返回查詢結果。
  • 根據以上描述繪制順序圖。

順序圖示例圖3

5. 狀態圖

??????對于系統中那些具有多種狀態的對象,狀態圖是一種常用的建模手段。狀態圖用于描述對象的各種狀態以及狀態之間的轉換。

5.1 狀態圖定義

??????狀態圖(Statechart Diagram)用來描述一個特定對象的所有可能狀態及其引起狀態轉移的事件。

??????我們通常用狀態圖來描述單個對象的行為,它確定了由事件序列引出的狀態序列,但并不是所有的類都需要使用狀態圖來描述它的行為,只有那些具有重要交互行為的類,我們才會使用狀態圖來描述,一個狀態圖包括一系列的狀態及狀態之間的轉移。

??????大多數面向對象技術都使用狀態圖來描述一個對象在其生命周期中的行為,對象從產生到結束,可以處于一系列不同的狀態。

??????狀態影響對象的行為,當這些狀態的數目有限時,就可以用狀態圖來建模對象的行為,狀態圖顯示了單個類的生命周期,在不同狀態下對象可能具有不同的行為。

??????狀態圖適用于描述在不同用例之間的對象行為,但并不適合于描述包括若干協作的對象行為,因為一個狀態圖只能用于描述一個類的對象狀態,如果涉及到多個不同類的對象,則需要使用活動圖。

5.2 狀態圖組成元素與繪制

  • 狀態(State):又稱為中間狀態,用圓角矩形框表示,在一個狀態圖中可有多個狀態,每個狀態包含兩格:上格放置狀態名稱,下格說明處于該狀態時對象可以進行的活動(Action)。
  • 初始狀態(Initial State):又稱為初態,用一個黑色的實心圓圈表示,在一個狀態圖中只能夠有一個初始狀態。
  • 結束狀態(Final State):又稱為終止狀態或終態,用一個實心圓外加一個圓圈表示,在一個狀態圖中可能有多個結束狀態。
  • 轉移(Transition):用從一個狀態到另一個狀態之間的連線和箭頭說明狀態的轉移情況,并用文字說明引發這個狀態變化的相應事件是什么。事件有可能在特定的條件下發生,在UML中這樣的條件稱為守護條件(Guard Condition),發生事件時的處理也稱為動作(Action)。狀態之間的轉移可帶有標注,由三部分組成(每一部分都可省略),其語法為:事件名 [條件] / 動作名。

狀態圖示例圖1

??????在一個狀態圖中,一個狀態也可以被細分為多個子狀態,包含多個子狀態的狀態稱為復合狀態。

狀態圖示例圖2

5.3 實例解析

??????某信用卡系統賬戶具有使用狀態和凍結狀態,其中使用狀態又包括正常狀態和透支狀態兩種子狀態。如果賬戶余額小于零則進入透支狀態,透支狀態時既可以存款又可以取款,但是透支金額不能超過5000元;如果余額大于零則進入正常狀態,正常狀態時既可以存款又可以取款;如果連續透支100天,則進入凍結狀態,凍結狀態下既不能存款又不能取款,必須要求銀行工作人員解凍。用戶可以在使用狀態或凍結狀態下請求注銷賬戶。根據上述要求,繪制賬戶類的狀態圖。

狀態圖示例圖3

參考

  1. 《設計模式》課件-劉偉

轉載于:https://www.cnblogs.com/ading-blog/p/9637346.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250699.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250699.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250699.shtml

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

相關文章

SpringCloud系列七:使用Ribbon實現客戶端側負載均衡

1. 回顧 在前面&#xff0c;已經實現了微服務的注冊與發現。啟動各個微服務時&#xff0c;Eureka Client會把自己的網絡信息注冊到Eureka Server上。 但是&#xff0c;在生成環境中&#xff0c;各個微服務都會部署多個實例&#xff0c;因此還行繼續進行優化。 2. Ribbon簡介 Ri…

node --- 使用koa-router,讓后端模塊化

使用Koa-router進行路由管理 npm install --save koa-router const Router require(koa-router); let router new Router(); router.get(/, async (ctx)>{ctx.body 用戶操作首頁 })路由模塊化 在appApi下面創建需要模塊化的文件如:home.js、user.js const Router re…

PHP 實現桶排序

PHP 實現桶排序 <?phpfunction Bucket_sort($array){//初始化桶大小$min min($array);$max max($array);$book array_fill($min, $max-$min1, 0);//將要進行的數據進行計數foreach ($array as $key) {$book[$key];// echo $book[$key];}//返回數據$resArr array();for…

springboot ajax返回html

因為攔截器 或者是 shiro 攔截登陸接口 轉載于:https://www.cnblogs.com/xdcr/p/9638569.html

【小試牛刀】短信驗證碼(隨機數)的生成實現

短信驗證碼&#xff0c;相信在生活中大家是幾乎天天能夠遇到。但你知道它是怎樣生成的嗎&#xff1f;其實它就是若干位數的隨機數組合而成。下面附上一小段程序&#xff0c;供大家一起學習交流。package com.fhcq.util;import org.apache.commons.lang3.RandomStringUtils;publ…

node --- 后端使用body-parse解析Post請求,前端使用axios發送Post請求

使用body-parser解析post請求 安裝service/index.js npm install --save koa-bodyparser導入 const Koa require(koa); const app new Koa(); const bodyParser require(koa-bodyparser); app.use(bodyParser)準備請求的url全局配置src/serviceAPI.config.js const LOCA…

PHP 實現二分查找

PHP 實現二分查找 原理&#xff1a; 首先&#xff0c;假設數組中元素是按升序排列&#xff0c;將表中間位置記錄的關鍵字與查找關鍵字比較&#xff0c;如果兩者相等&#xff0c;則查找成功&#xff1b;否則利用中間位置記錄將數組分成前、后兩個子數組&#xff0c;如果中間位…

python基礎:條件循環字符串

while True:a int(input(攝氏度轉換為華氏溫度請按1\n華氏溫度轉化為攝氏溫度請按2\n))if a 1:celsius float(input(輸入攝氏溫度&#xff1a;))fahreaheit (celsius 1.8) 32 # f c9/532print({:.2f}攝氏溫度轉為華氏溫度為{:.2f}.format(celsius, fahreaheit))elif a …

項目難點總結

一 滑動窗口 &#xff11;&#xff09;滑動窗口設置 &#xff12;&#xff09;窗口對齊 &#xff13;&#xff09;窗口的調優&#xff0c;能否正常觸發 數據丟失問題    &#xff52;&#xff45;&#xff54;&#xff52;&#xff59; 事件延時&#xff08;late arrival …

7-n!末尾有幾個0

如何確定一個N&#xff01;末尾有多少個零 轉載 2015年08月30日 15:02:49622題目&#xff1a;1*2*3*……*100 求結果末尾有多少個零 分析&#xff1a;一般類似的題目都會蘊含某種規律或簡便方法的,階乘末尾一個零表示一個進位&#xff0c;則相當于乘以10而10 是由2*5所得&#…

PHP中header的用法

PHP中header的用法 摘要&#xff1a; header()的作用&#xff1a;給客戶端發送頭信息 頭信息的作用 跳轉 Header("Refresh:2; URLhttp://localhost//session.php");//2秒后跳轉 //若等待時間為0&#xff0c;則與header("location:")效果一致 Header(&q…

node --- koa、Mongoose、vue聯系知識梳理

前端、后端聯系知識梳理 以打開瀏覽器,訪問login為栗打開瀏覽器,訪問localhost:8080/#/loginsrc/router/index.js 會根據 /login 找到對應的Login(src/components/pages/Login.vue)組件, 然后渲染到瀏覽器當輸入用戶名和密碼,點擊登錄按鈕后根據Login組件中配置的axios請求向后…

倒計時

//1獲取24小時$fixation_time strtotime("1 day")-time();//2.獲取已經過去的時間$different time()-strtotime($question->created_at);//3.獲取時間差$time $fixation_time - $different;//4.獲取時$hour floor($time/3600);if($hour<10){$hour 0.$hour;…

Git命令一覽

Git命令一覽 分支名稱 master 穩定分支 develop 不穩定分支&#xff08;開發分支&#xff09; issue 或 fixbug BUG 分支 feature 新功能分支 release 預發布分支 本地操作 git init 初始化 git add 增加到暫存區 git commit -m 提交到分支 git status 查看狀態 gi…

從壹開始前后端分離 [ Vue2.0+.NET Core2.1] 二十二║Vue實戰:個人博客第一版(axios+router)...

前言 今天正式開始寫代碼了&#xff0c;之前鋪墊了很多了&#xff0c;包括 6 篇基礎文章&#xff0c;一篇正式環境搭建&#xff0c;就是為了今天做準備&#xff0c;想溫習的小伙伴可以再看看《Vue 基礎入門詳細的環境搭建》&#xff0c;內容很多&#xff0c;這里就暫時不復習了…

node --- 使用mongoose連接mongoDB,并初始化所有的Schema

寫了一個init.js函數 使用了glob來對協助完成(https://github.com/isaacs/node-glob)連接的數據庫的名稱(smile-vue)連接數據庫操作:connect 斷線重開連接失敗連接成功 初始化所有的Schemas暴露給其他頁面使用的接口 const mongoose require(mongoose); const db mongodb:/…

ajax跨域問題(php)

ajax出現請求跨域錯誤問題,主要原因就是因為瀏覽器的“同源策略”。 解決方法(我只用過下面這3種)&#xff1a; 1. 架設服務器代理&#xff1a;即瀏覽器請求同源服務器&#xff0c;再由后者請求外部服務&#xff08;之前博主一直用這種方法&#xff0c;其實感覺這種算不上跨域請…

PHP 實現隨機字符串,可作為隨機密碼

PHP 實現隨機字符串&#xff0c;可作為隨機密碼 //傳入需要的字符串長度 function generate_rand($length){ $chars "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; srand((double)microtime()*1000000); $randStr ""; for($i0;…

紅帽7 su命令與sudo服務

1、su命令 su命令可以解決切換用戶身份的需求&#xff0c;使得當前用戶在不退出登錄的情況下&#xff0c;順暢地切換到其他用戶&#xff0c;比如從root管理員切換至普通用戶 [rootlocalhost Desktop]# su - lisi Last login: Wed Sep 12 23:47:44 CST 2018 on pts/0 [lisilocal…

vue --- 按鈕的防重復點擊事件

按鈕的防重復點擊事件 :loading屬性當loading true時:按鈕會顯示一個旋轉的圓圈.此時的按鈕是無法點擊的當loading false時:按鈕重新變為可點擊的狀態可以通過使用一個變量來控制按鈕的可點擊性,當提交時,按鈕不可點擊,提交完畢后,按鈕可以點擊 <van-button :loading&qu…