主頁 > 軟體設計 > Mysql用戶與權限操作

Mysql用戶與權限操作

2020-09-26 12:40:09 軟體設計

1.用戶與權限概述

用戶是資料庫的使用者和管理者,
MySQL通過用戶的設定來控制資料庫操作人員的訪問與操作范圍
服務器中名為mysqI的資料庫,用于維護資料庫的用戶以及權限的控制和管理,
MySQL中的所有用戶資訊都保存在mysql.user資料表中,

根據mysql.user表欄位的功能可將其分為6類

  • 客戶端訪問服務器的賬號欄位

Host和User欄位共同組成的復合主鍵用于區分MySQL中的賬戶,

  1. User欄位用于代表用戶的名稱
  2. Host欄位表示允許訪問的客戶端IP地址或主機地址
  3. 當Host的值為“*”時,表示所有客戶端的用戶都可以訪問,
mysql> SELEC Thost, user FROM mysql.user;

在這里插入圖片描述

root:默認的超級用戶,
session: MySQL5.7新增用戶,用于用戶身份驗證,
sys:MySQL5.7新增用戶,用于系統模式物件的定義,防止DBA(資料庫管理員)重命名或洗掉root用戶時發生錯誤,

  • 身份驗證欄位

在MySQL5.7中,mysql.user表中已不再包含Password欄位,而是使用plugin和authentication_string欄位保存用戶身份驗證的資訊,

  1. plugin欄位用于指定用戶的驗證插件名稱
  2. authentication_string欄位是根據plugin指定的插件演算法對賬戶明文密碼(如123456)加密后的字串
mysql> SELECT plugin,authentication_string FROM mysql.user
->WHERE user='root';

在這里插入圖片描述

MySQL中root用戶的默認驗證插件名為mysql_native_password,
authentication_string欄位保存的則是一串不能看出具體含義的值,相對于能夠直接看懂的明文密碼(如123456),它是經過加密處理的暗碼,
其他與身份驗證的賬號密碼相關的欄位還有password_expired(密碼是否過期)、password_last_changed(密碼最后一次修改的時間)以及password_lifetime(密碼的有效期),

  • 安全連接的欄位

判斷當前連接是否符合SSL安全協議,

  1. ssl_type:用于保存安全連接的型別,它的可選值有"(空)、ANY(任意型別)、X509(X509證書)、SPECIFIED(規定的)四種,
  2. ssl_cipher:用于保存安全加密連接的特定密碼
  3. x509_issuer:保存由CA簽發的有效的X509證書
  4. x509_subject:保存包含主題的有效X509證書
mysql>SHOW VARIABLES LIKE 'have_openssl';

在這里插入圖片描述

  • 資源限制的欄位
  1. 以“max_”開頭的欄位,保存對用戶可使用的服務器資源的限制,
  2. 用來防止用戶登錄MySQL服務器后的不法或不合規范的操作浪費服務器的資源,
  3. 用戶資源限制欄位默認值均為0,表示對此用戶沒有任何的資源限制,
欄位含義
max_ _questions保存每小時允許用戶執行查詢操作的最多次數
max_ updates保存每小時允許用戶執行更新操作的最多次數
max_ connections保存每小時允許用戶建立連接的最多次數
max_ user_ connections保存允許單個用戶同時建立連接的最多數量
  • 權限欄位

以“priv”結尾的欄位一共有29個,這些欄位保存了用戶的全域權限,如Select_ priv 查詢權限、Insert_ priv插入權限,Update_ priv更 新權限等,
user表對應的權限欄位的資料型別都是ENUM列舉型別,取值只有N或Y兩種

  1. N表示該用戶沒有對應權限,默認值都為N,
  2. Y表示該用戶有對應權限,
  • 賬戶是否鎖定的欄位

account_ locked字 段用于保存當前用戶是鎖定、還是解鎖狀態,

  1. 該欄位是一個列舉型別,當其值為N時表示解鎖,此用戶可以用于連接服務器,
  2. 當其值為Y時表示該用戶已被鎖定,不能用于連接服務器使用,

2.用戶管理

1.創建用戶

  • 由于MySQL中所有用戶的資訊都保存在mysql.user表中,創建用戶可以直接利用root用戶登錄MySQL服務器后,向mysql.user表中插入記錄,但是在開發中為保證資料的安全,并丕推茬使用此方式創建用戶,
  • 采用MySQL提供的CREATE USER陳述句創建用戶,
  • 使用CREATE USER陳述句每創建一個 新用戶,都會在mysql.user表中添加一條記錄,同時服務器會自動修改相應的授權表
  • 該陳述句創建的新用戶默認情況下沒有任何權限,需要使用GRANT進行授權,

創建用戶語法

CREATE USER [IF NOT EXISTS]
賬戶名[用戶身份驗證選項][,賬戶名[用戶身份驗證選項].
[WITH資源控制選項][密碼管理選項|賬戶鎖定選項]

CREATE USER可以一次創建多個用戶,多個用戶之間使用逗號分隔,
賬戶名是由“用戶名@主機地址”組成,
其余選項在創建用戶時,若未設定則使用默認值
用戶名的設定不能超過32個字符,且區分大小寫,但是主機地址不區分大小寫,

選項默認值
用戶身份驗證選項由default_ authentication _plugin 系統變數定義的插件進行身份驗證
加密連接協議選項NONE
資源控制選項N (表示無限制)
密碼管理選項PASSWORD EXPIRE DEFAULT
用戶鎖定選項ACCOUNT UNLOCK
  • 用戶身份驗證選項的設定僅適用于其前面的用戶名,可將其理解為某個用戶的私有屬性,
  • 其余的選項對宣告中的所有用戶都有效,可以將其理解為全域屬性,
1.創建最簡單的用戶
mysql> CREATE USER' test1' ;
Query OK, 0 rows af fected .(0.00 sec)
mysql> SELECT host, user FROM mysql . user;

在這里插入圖片描述

2.創建含有密碼的用戶
mysql> CREATE USER 'test2' @ 'localhost' IDENTIFIED BY ' 123456' ;
Query OK,0 rows affected (0.00 sec)

在這里插入圖片描述

3.同時創建多個用戶
mysql> CREATE USER
-> 'test3'@' localhost' IDENTIFIED BY '333333' ,
-> 'test4'@' localhost' IDENTIFIED BY '444444' ;
Query OK,0 rows affected (0.01 sec)

多個用戶之間使用逗號分隔,
在創建每個用戶時可以單獨為其設定密碼,省略用戶身份驗證選項時,表明此用戶在登錄服務器時可以免密登錄,但為了保證資料安全,不推薦用戶這樣做,

在創建用戶時,可以添加WITH直接為用戶指定可操作的資源范圍,如登錄的用戶在一小時內可以查詢資料的次數等,

選項描述
MAX_ QUERIES PER_ HOUR在任何一個小時內,允許此用戶執行多少次查詢
MAX_ UPDATES_ PER_ HOUR在任何一個小時內,允許此用戶執行多少次更新
MAX_ CONNECTIONS_ PER_ HOUR在任何一個小時內,允許此用戶執行多少次服務器連接
MAX_ USER_ CONNECTIONS限制用戶同時連接服務器的最大數量

MAX_USER_CONNECTIONS選 項的值為0時,服務器將根據max_ user_ connections 系統變數的值確定用戶的同時連接數,若此變數值也為0,表示對該用戶沒有限制,
MAX_QUERIES_PER_HOUR選項不會計算從快取中查詢資料的次數,

例:限制其每小時最多可以更新10次

mysql> CREATE USER
-> 'test5'@' localhost' IDENTIFIED BY ' 555555'
-> WITH MAX_ UPDATES_ _PER_ HOUR 10;
Query OK,0 rows affected (0.00 sec)

查看user表的max_ updates欄位

mysql> SELECT max_ _updates FROM user WHERE user='test5' ;
+-------------+
|max_ updatesI|
+-------------+
|	  10	  | 
1 row in set (0.00 sec)

2.修改密碼

  • ALTER USER是更改密碼的首選SQL陳述句,推薦使用,
  • 第2種語法可能會被記錄到服務器的日志或客戶端的歷史檔案中,會有密碼泄露.的風險,因此建議用戶盡量少的使用此方式設定密碼,
為指定用戶設定密碼
mysql> ALTER USER 'test1' @ '&' IDENTIFIED BY '123456' ;
Query 0K,0 rows affected (0.00 sec)
為登錄戶設定密碼
mysql> ALTER USER USER() IDENTIFIED BY '000000' ;
Query 0K,0 rows affected (0.00 sec)

3.修改用戶

用戶創建完成后,管理員可以通過MySQL提供的專門SQL陳述句修改用戶的密碼身份驗證的方式資源限制密碼的屬性、以及賬戶的鎖定和解鎖的狀態

ALTER USER [IF EXISTS]
賬戶名[用戶身份驗證選項][,賬戶名[用戶身份驗證選項]].
[WITH資源限制選項][密碼管理選項|賬戶鎖定選項]

ALTER USER可同時修改一個或多個用戶,多個用戶之間使用逗號(,)分隔,
語法中選項的可選值與創建用戶時的選項完全相同,
每個修改的用戶,都會更新其在mysql.user表中對應的欄位值,而未修改的欄位仍然保留它原來的值,

例:修改用戶驗證插件、密碼以及密碼過期時間

mysql> ALTER USER test1
-> IDENTIFIED WITH sha256_ password BY '111111 '
-> PASSWORD EXPIRE;
Query OK,0 rows affected (0.01 sec)

查看修改后戶的密碼

mysq1> SELECT authentication_ string FROM mysql. user
-> WHERE user='test1' AND plugin= 'sha256_ password'

在這里插入圖片描述
解鎖用戶

mysql> ALTER USER 'test7'@ ' localhost' ACCOUNT UNLOCK;
Query 0K,0 rows affected (0.00 sec)

同時修改多個戶資源

mysql> ALTER USER
-> 'test1' IDENTIFIED WITH mysql_native_password,
-> 'test2'@' localhost' IDENTIFIED BY '222222'
-> WITH max_ _user_ connections 2;
Query 0K,0 rows affected (0.00 sec)

4.洗掉用戶

在MySQL中經常會創建多個普通用戶管理資料庫,但如果發現某些用戶是沒有必要的,就可以將其洗掉,通常洗掉用戶的方式采用MySQL提供的專門SQL陳述句

DROP USER [IF EXISTS]賬戶名[,賬戶名]

例:

mysql> DROP USER IE EXISTS test7;
Query 0K,0 rows affected, 1 warning (0.01 sec) .
#在洗掉賬戶時,如果省略主機地址,則默認為%’,

當DROP USER陳述句洗掉當前正在打開的用戶時,則該用戶的會話不會被自動關閉,只有在該用戶會話關閉后,洗掉操作才會生效,再次登錄將會失敗,另外,利用已洗掉的用戶登錄服務器創建的資料庫或物件不會因此洗掉操作而失效,

3.權限管理

資料表描述
user保存用戶被授予的全域權限
db保存用戶被授子的資料庫權限
tables_ priv保存用戶被授子的表權限
columns_priv保存用戶被授子的列權限
procs_priv保存用戶被授予的存盤程序權限
proxies_priv保存用戶被授予的代理權限

1.授予權限

根據權限的操作內容可將權限大致分為資料權限、結構權限以及管理權限,

權限權限級別描述
SELECT全域、資料庫、表、列SELECT
UPDATE全域、資料庫、表、列UPDATE
DELETE全域、資料庫、表DELETE
INSERT全域、資料庫、表、列INSERT
SHOW DATABASES全域SHOW DATABASES
SHOW VIEW全域、資料庫、表SHOW CREATE VIEW
PROCESS全域SHOW PROCESSLIST
DROP全域、資料庫、表允許洗掉資料庫、表和視圖
CREATE全域、資料庫、表創建資料庫、表
CREATE ROUTINE全域、資料庫創建存盤程序
CREATE TABLESPACE全域允許創建、修改或洗掉表空間和日志檔案組
CREATE TEMPORARY TABLES全域、資料庫CREATE TEMPORARY TABLE
CREATE VIEW全域、資料庫、表允許創建或修改視圖
ALTER全域、資料庫、表ALTER TABLE
ALTER ROUTINE全域、資料庫、存盤程序允許洗掉或修改存盤程序
INDEX全域、資料庫、表允許創建或洗掉索引
TRIGGER全域、資料庫、表允許觸發器的所有操作
REFERENCES全域、資料庫、表、列允許創建外鍵
SUPER全域允許使用其他管理操作,如CHANGE MASTER TO等
CREATE USER全域DROP USER、CREATE USER、RENAME USER和REVOKEALL、PRIVILEGES等
GRANT OPTION全域、資料庫、表、存盤程序、代理允許授予或洗掉用戶權限
RELOAD全域FLUSH操作
PROXY與代理的用戶權限相同
REPLICATION CLIENT全域允許用戶訪問主服務器或從服務器
REPLICATION SLAVE全域允許復制從服務器讀取的主服務器二進制日志事件
SHUTDOWN全域允許使用mysqladmin shutdown
LOCK TABLES全域、資料庫允許在有SELECT表權限上使用LOCK TABLES

權限級別指的就是權限可以被應用在哪些資料庫的內容中,

例如,SELECT權限可以被授予到全域(任意資料庫下的任意內容)、資料庫(指定資料庫下的任意內容)、表(指定資料庫下的指定資料表)、列(指定資料庫.下的指定資料表中的指定欄位),

GRANT 權限型別[欄位串列][,權限型別[欄位串列] ...
ON [目標型別]權限級別
TO 賬戶名[用戶身份驗證選項] [,賬戶名[用戶身份驗證選項]
...
[REQUIRE 連接方式]
[WITH {GRANT OPTION |資源控制選項}]
  • 權限型別:指的就是SELECT、DROP、CREATE等權限,
  • 欄位串列:用于設定列權限,
  • 目標型別:默認為TABLE,表示將全域、資料庫、表或列中的某些權限授予給指定的用戶,其他值為FUNCTION (函式)或PROCEDURE (存盤程序),
  • 權限級別:用于定義全域權限、資料庫權限和表權限,
  • 添加GRANT OPTION: 表示當前賬戶可以為其他賬戶進行授權,
  • 其余各引數均與CREATE USER中的用戶選項相同,這里不再贅述,

例:查看root用戶和test1用戶的授權情況

mysql>SHOW GRANTS FOR root'' localhost' ;

在這里插入圖片描述

mysql> SHOW GRANTS FOR 'test1' @ '%' ;

在這里插入圖片描述

  • ALL_PRIVILEGES表示除GRANT OPTION (授權權限)和PROXY (代理權限)外的所有權限,
  • USAGE表示沒有任何權限,
  • ON后的*.*表示全域級別的權限,即MySQL 服務器下的所有資料庫下的所有表,“@"表示任何主機中的匿名用戶,

例:授予test1戶shop.sh_ goods表的SELECT權限,以及對name和price欄位的插入權限

mysql> GRANT SELECT, INSERT (name, price)
-> ON shop.sh goods
-> TO 'test1 '@'號';
Query 0K,0 rows affected (0.00 sec)

查看權限的保存情況

mysql> SELECT db, table name, table priv, column_priv
-> FROM mysq1.tables priv WHERE user = 'test1' ;

在這里插入圖片描述

mysql> SELECT db, table name , column name , column_priv
-> FROM mysql.columns_ priv WHERE user= ' test1' ;

在這里插入圖片描述

2.回收權限

在MySQL中,為了保證資料庫的安全性,需要將用戶不必要的權限回收,
例如,資料管理員發現某個用戶不應該具有DELETE權限,就應該及時將其識訓,.

#①回收指定用戶的指定權限
REVOKE權限型別[(欄位串列)] [,權限型別[(欄位串列)]]
ON [目標型別]權限級別FROM賬戶名[,賬戶名] ....
#②回收所有權限以及可為其他用戶授權的權限
REVOKE ALL [PRIVIL EGES], GRANT OPTION FROM賬戶名[,賬戶名]
#③回收用戶的代理權限
REVOKE PROXY ON賬戶名FROM賬戶名1[,賬戶名2] ...

回收test1用戶的插入權限

mysq1> REVOKE INSERT (name, price)
-> ON shop.sh_ _goods FROM ' test1' @ '%' ;
Query OK, 0 rows affected (0.00 sec)

test1用戶登錄MySQL服務器,并插入資料

mysql> INSERT INTO shop.sh_ goods (name, price) VALUES('test', 23);
ERROR 1142 (42000):INSERT command denied to user ' test1'@ 'localhost' for table 'sh_goods'

3.重繪權限

重繪權限:指的是從系統資料庫mysq|中的權限表中重新加載用戶的權限,
原因在于: GRANT、CREATE USER等操作會將服務器的快取資訊保存到記憶體中,而REVOKE、DROP USER操作并不會同步到記憶體中,因此可能會造成服務器記憶體的消耗,所以在REVOKE、DROP USER后推薦讀者使用MySQL提供的“FLUSH PRIVILEGES"重新加載用戶的權限,

#方式1
FLUSH PRIVIL.EGES;
#方式2
mysqladmin -uroot -p reload
#方式3
mysqladmin -uroot -p flush-privileges

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/131900.html

標籤:其他

上一篇:從零開始的SpringBoot前后端分離入門級專案(六)

下一篇:專案上線阿里云(一) 如何使用xshell連接阿里云ECS服務器

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more