主頁 > 資料庫 > 資料庫系統原理(第6章:資料庫安全與保護)

資料庫系統原理(第6章:資料庫安全與保護)

2020-09-25 08:27:09 資料庫

一、資料庫完整性

資料庫的安全保護:

  • 完整性控制:資料庫完整性是指資料庫中資料的正確性和相容性
  • 安全性控制:資料庫防止不合法的操作而造成資料泄露、更改或破壞
  • 并發控制:事務就是為了保證資料一致性而產生的一個概念和基本手段
  • 資料庫的備份與恢復:保證資料庫的可靠性和完整性

資料庫完整性是指資料庫中資料的正確性和相容性,

完整性約束的作用:防止資料庫中存在不符合語意的資料,

完整性約束條件的作用物件

  • 列級約束: 包括對列的型別、取值范圍、精度等的約束
  • 元組約束: 指元組中各個欄位之間的相互約束
  • 表級約束: 指若干元組、關系之間的聯系的約束

完整性約束條件是完整性控制機制的核心

定義與實作完整性約束:物體完整性 、參照完整性、 用戶定義的完整性

**************************物體完整性**************************

物體完整性 :在MySQL中,物體完整性是通過主鍵約束和候選鍵約束實作的,

主鍵列必須遵守的規則

  • 每一個表只能定義一個主鍵
  • 主鍵的值(鍵值)必須能夠唯一標志表中的每一行記錄,且不能為NULL
  • 復合主鍵不能包含不必要的多余列
  • 一個列名在復合主鍵的串列中只能出現一次

 

 

主鍵約束與候選鍵約束的區別 

  • 主鍵約束       一個表只能創建 一個主鍵     關鍵字 PRIMARY KEY
  • 候選鍵約束   可以定義 若干個候選鍵     關鍵字 UNIQUE

***********************參照完整性*******************************

REFERENCES tbl_name(index_col_name,…)
 [ON DELETE reference_option]
 [ON UPDATE reference_option]

tbl_name:指定外鍵所參照的表名

index_col_name:指定被參照的列名

ON DELETE:指定參照動作相關的SQL陳述句

reference_option:指定參照完整性約束的實作策略 (RESTRICT-限制策略(默認的) | CASCADE-級聯策略 | SET NULL-置空策略 | NO ACTION-不采取實施策略)

 

 

 

**********************用戶定義的完整性****************************

非空約束:NOT NULL

CHECK 約束:CHECK(expr)

觸發器

命名完整性約束:CONSTRAINT [symbol]    symbol:指定的約束名字

只能給基于表的完整性約束指定名字,無法給基于列的完整性約束指定名字

命名完整性約束的方法是在各種完整性約束的定義說明之前加上關鍵字( CONSTRAINT )和該約束的名字

更新完整性約束

使用ALTER TABLE陳述句更新與列或表有關的各種約束,

  • 1、完整性約束不能直接被修改,(先洗掉,再增加)
  • 2、使用ALTER TABLE陳述句,可以獨立地洗掉完整性約束,而不會洗掉表 本身,(DROP TABLE陳述句洗掉一個表,則表中所有的完整性約束都會被 自動洗掉)

 

二、觸發器

什么是觸發器:是用戶定義在關系表上的一類由事件驅動的資料物件, 也是一種保證資料完整性的方法,

*************************創建觸發器******************************

使用CREATE TRIGGER陳述句創建觸發器

CREATE TRIGGER trigger_name trigger_time trigger_event
 ON tbl_name FOR EACH ROW trigger_body

trigger_name:指定觸發器的名稱

trigger_time:指定觸發器被觸發的時刻 

trigger_event:指定觸發器的觸發事件

tbl_name:指定與觸發器相關聯的表名

FOR EACH ROW :指定對于受觸發事件影響的每一 行都要激活觸發器的動作

trigger_body:指定觸發器動作主體

例如:在資料庫mysql_test的表customers中創建一個觸發器 customers_insert_trigger,用于每次向表customers插入一行資料時, 將用戶變數str的值設定為one customer added!

 CREATE TRIGGER mysql_test.customers_insert_trigger AFTER INSERT
 -> ON mysql_test.customers FOR EACH ROW SET @str=‘one customer added!’

使用DROP陳述句洗掉觸發器

語法:DROP TRIGGER [IF EXISTS][schema_name.]trigger_name

  • IF EXISTS:用于避免在沒有觸發器的 情況下洗掉觸發器
  • schema_name:指定觸發器所在的資料庫的名稱
  • trigger_name:指定要洗掉的觸發器名稱

例如:DROP TRIGGER IF EXISTS mysql_test.customers_insert_trigger;

使用觸發器

INSERT觸發器   DELETE觸發器   UPDATE觸發器

*******************INSERT觸發器***********************

在INSERT觸發器代碼內,可參考一個名為NEW(不區分大小寫)的虛擬 表,來訪問被插入的行, 在BEFORE INSERT觸發器中,NEW中的值可以被更新

例如:在資料庫mysql_test的表customers中重新創建觸發器 customers_insert_trigger,用于每次向表customers插入一行資料時, 將用戶變數str的值設定為新插入客戶的id號,

CREATE TRIGGER mysql_test.customers_insert_trigger AFTER INSERT
 -> ON mysql_test.customers FOR EACH ROW SET @str=NEW.cust_id;

********************DELETE觸發器*************************

在DELETE觸發器代碼內,可參考一個名為OLD(不區分大小寫)的虛擬 表,來訪問被洗掉的行, OLD中的值全部是只讀的,不能被更新,

*******************UPDATE觸發器***************************

在UPDATE觸發器代碼內,可參考一個名為OLD(不區分大小寫)的虛擬 表,來訪問UPDATE陳述句執行前的值,也可以參考一個名為NEW(不區 分大小寫)的虛擬表來訪問更新后的值

例如:在資料庫mysql_test的表customers中創建一個觸發器 customers_update_trigger,用于每次更新表customers時,將該表中cust_address列 的值設定為cust_contact列的值,

CREATE TRIGGER mysql_test.customers_update_trigger BEFORE UPDATE
 -> ON mysql_test.customers FOR EACH ROW
 -> SET NEW.cust_address=OLD.cust_contact;

 

三、安全性與訪問控制

資料庫的安全性是指保護資料庫以防止不合法的使用而造成資料泄露、更 改或破壞,所以安全性對于任何一個DBMS來說都是至關重要的,

安全性與訪問控制:身份驗證 、資料庫用戶權 限確認

使用CREATE USER陳述句創建MySQL賬戶

語法:CREATE USER user   [IDENTIFIED BY [PASSWORD]’password’]

  • user格式:指定創建用戶賬號 格式:’user_name’@’host name’
  • IDENTIFIED BY:可選項,指定用戶賬號對應的口令
  • PASSWORD:可選項,指定散列口令

例如:在MySQL服務器中添加兩個新的用戶,其用戶名分別為zhangsan 和lisi,他們的主機名均為localhost,用戶zhangsan的口令為123,用戶 lisi的口令為對明文456使用PASSWORD()函式加密回傳的散列值,

CREATE USER ‘zhangsan’@’localhost’ IDENTIFIED BY123’,
 -> ‘lisi’@’localhost’ IDENTIFIED BY PASSWORD
 ->*531E182E272080AB0740FE2F2D689DBE0146E04’;

使用DROP USER陳述句洗掉用戶賬號

語法:DROP USER user [,user]…

例如:DROP USER lisi@localhost

使用RENAME USER陳述句修改用戶賬號

 

 

 例如:RENAME USER ‘zhangsan’@’localhost’ TO ‘wangwu’@’localhost’;

使用SET PASSWORD陳述句修改用戶登錄口令

SET PASSWORD [FOR user]=
 {
 PASSWORD(‘new_password’)
 |’encrypted password’
 }

例如:SET PASSWORD FOR 'username'@'localhost' = PASSWORD('pass');

使用GRANT陳述句為用戶授權

GRANT
 priv_type [(column_list)]
 [,priv_type [(column_list)]] …
 ON [object_type] priv_level
 TO user_specification [,user_specification][WITH GRANT OPTION]
  • priv_type:用于指定權限的名稱
  • column_list:用于指定權限要授予給表中哪些具體的列
  • object_type:用于指定權限授予的物件型別
  • priv_level:用于指定權限授予的級別
  • TO:用于設定用戶的口令,以及指定 被授予權限的用戶user
  • user_specification:user[IDENTIFIED BY [PASSWORD]’password’]
  • WITH :可選項,用于實作權限的轉移或限制

例如:授予用戶zhangsan在資料庫mysql_test的表customers上擁有對 列cust_id和列cust_name的SELECT權限,

 GRANT SELECT(cust_id,cust_name)
 -> ON mysql_test.customers
 -> TO’zhangsan’@’localhost’;

授予當前系統中一個不存在的用戶liming和用戶huang,要求創建 這兩個用戶,并設定對應的系統登錄口令,同時授予他們在資料庫 mysql_test的表customers上擁有SELECT和UPDATE的權限,

 GRANT SELECT,UPDATE
-> ON mysql_test.customers
-> TO 'liming'@'localhost' IDENTIFIED BY '123',
-> 'huang'@'localhost' IDENTIFIED BY '789';

授予系統中已存在的wangwu可以在資料庫mysql_test中執行所有 資料庫操作的權限

 GRANT ALL
 -> ON mysql_test.*
 -> TO ‘wangwu’@’localhost’;

授予系統中已存在的wangwu擁有創建用戶的權限

GRANT CREATE USER
 -> ON *.*
 -> TO ‘wangwu’@’localhost’;

權限的轉移

授予當前系統中不存在的用戶 zhou 在資料庫mysql_test的表customers上 擁有SELECT和UPDATE的權限,并允許其可以將自身的這個權限授予給其他 用戶

 GRANT SELECT,UPDATE
 -> ON mysql_test.customers
 -> TO ‘zhou’@’localhost’ IDENTIFIED BY123-> WITH GRANT OPTION;

使用REVOKE陳述句撤銷用戶權限

REVOKE
 priv_type [(column_list)]
 [,priv_type [(column_list)]] …
 ON [object_type] priv_level
 FROM user [,user]

回收系統中已存在用戶zhou在資料庫mysql_test的表customers 上的SELECT權限

 REVOKE SELECT
 -> ON mysql_test.customers
 -> FROM ‘zhou’@’localhost’;

 

四、事務與并發控制

所謂事務是用戶定義的一個資料操作序列,這些操作可作為一個完整的工 作單元,要么全部執行,要么全部不執行,是一個不可分割的作業單位, 事務中的操作一般是對資料的更新操作,包括增、刪、改,

 

 以BEGIN TRANSACTION陳述句開始 以 COMMIT 陳述句或  ROLLBACK陳述句結束

事務的特征(ACID):

  • 原子性 Atomicity:事務是不可分割的最小作業單位
  • 一致性 Consistenc y:
  • 隔離性 Isolation:
  • 持續性(永久性) Durability

例題:依據事務的ACID特征,分析并撰寫銀行資料庫系統中的轉賬事務T:從賬 戶A轉賬S金額資金到賬戶B

BEGIN TRANSACTION
read(A);
A=A-S;
write(A);
If(A<0)ROLLBACK;
else read(B);
 B=B+S
 write(B);
 COMMIT;}

并發操作問題

  • 丟失更新 ? 事務T1,T2同時讀入同一資料并加以修改,T2的提交結果會破壞T1提交的結果
  • 不可重復讀 ? 事務T1讀取資料后,事務T2執行更新操作,使T1無法再現前一次讀取結果
  • 讀“臟”資料 ? 事務T1修改資料后撤銷,使得T2讀取的資料與資料庫中不一致

封鎖是最常用的并發控制技術 基本思想:需要時,事務通過向系統請 求對它所希望的資料物件加鎖,以確保 它不被非預期改變

鎖 :一個鎖實質上就是允許或阻止一個事務對一個資料物件的存取特權,

基本的封鎖型別:

  • 1、排他鎖(X鎖),用于寫操作
  • 2、共享鎖(S鎖),用于讀操作

封鎖的作業原理:

  • 1.若事務T對資料D加了X鎖,則所有別的事務對資料D的鎖請求都必須等 待直到事務T釋放鎖,
  • 2.若事務T對資料D加了S鎖,則別的事務還可對資料D請求S鎖,而對資料 D的X鎖請求必須等待直到事務T釋放鎖,
  • 3.事務執行資料庫操作時都要先請求相應的鎖,即對讀請求S鎖,對更新 請求X鎖,這個程序一般是由DBMS在執行操作時自動隱含地進行,
  • 4.事務一直占有獲得的鎖直到結束時釋放

封鎖的粒度

  • 我們通常以粒度來描述封鎖的資料單元的大小
  • DBMS可以決定不同粒度的鎖 粒度越細,并發性就越大,但軟體復雜性和系統開銷也就越大,

封鎖的級別又稱為一致性級別或隔離度

  • 0級封鎖:不重寫其他非0級封鎖事務的未提交的更新資料,(實用價值低)
  • 1級封鎖:不允許重寫未提交的更新資料,防止了丟失更新的發生
  • 2級封鎖:既不重寫也不讀未提交的更新資料(防止了讀臟資料)
  • 3級封鎖:不讀未提交的更新資料,不寫任何(包括讀操作)未提交資料,

死鎖和活鎖

  • 活鎖——活鎖的處理方案: 先來先服務
  • 死鎖——活鎖的預防方案: (1)一次性鎖請求 (2)鎖請求排序 (3)序列化處理 (4)資源剝奪  ;死鎖檢測:圖論的方法檢測死鎖,并以正在執行的事務為節點

可串行性

  • 一組事務的一個調度就是它們的基本操作的一種排序,
  • 在資料庫系統中,可串行性就是并發執行的正確性準則,即當且當一組事務 的并發執行調度是可串行化的,才認為它們是正確的,

兩段封鎖法

  • 1.發展(Growing)或加鎖階段
  • 2.收縮(Shrinking)或釋放鎖階段

五、備份與恢復 

資料丟失的途徑:

1.計算機硬體故障

2.計算機軟體故障

3.病毒

4.人為誤操作

5.自然災害

6.盜竊

資料庫備份與恢復的概念

  • 資料備份是指通過匯出資料或者復制表檔案的方式來制作資料庫的復本;
  • 資料庫恢復則是當資料庫出現故障或遭到破壞時,將備份的資料庫加載到 系統,從而使資料庫從錯誤狀態恢復到備份時的正確狀態, 資料庫的恢復是以備份為基礎的,它是與備份相對應的系統維護和管理操 作,

使用SELECT INTO…OUTFILE陳述句備份資料

SELECT *INTO OUTFILE ‘file_name’ export_options
 | INTO DUMPFILE ‘file_name

file_name:指定資料備份檔案的名稱

 

使用LOAD DATA…INFILE陳述句恢復資料

 

簡述恢復資料的方法?

備份資料庫mysql_test中表customers的全部資料到c盤的BACKUP目錄 下一個名為backupfile.txt的檔案中,要求欄位值如果是字符則用雙引號 標注,欄位值之間用逗號隔開,每行以問號為結束標志,然后,將備份后 的資料匯入到一個和customers表結構相同的空表customers_copy中,

SELECT * FROM mysql_test.customers
INTO OUTFILE ‘C:/BACKUP/backupfile.txt’
FIELDS TERMINATED BY ’,’
OPTIONALLY ENCLOSED BY “”
LINES TERMINATED BY ‘?’;

 

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

標籤:MySQL

上一篇:MySql自定義函式-關于保留小數位的特殊需求

下一篇:mysql索引

標籤雲
其他(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)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more