資料庫面試基礎知識整理

来源:https://www.cnblogs.com/weijuanran/archive/2019/01/25/DataBase.html
-Advertisement-
Play Games

存儲過程 1、什麼是存儲過程 存儲過程是一個預編譯的SQL語句;是由SQL語句組成的代碼塊,允許模塊化的設計;只需創建一次,以後在該程式中就可以調用多次。如果某次操作需要執行多次SQL,使用存儲過程比單純SQL語句執行要快。 2、存儲過程的調用 (1)可以用一個命令對象來調用存儲過程; (2)可以供 ...


存儲過程

1、什麼是存儲過程

存儲過程是一個預編譯的SQL語句;是由SQL語句組成的代碼塊,允許模塊化的設計;只需創建一次,以後在該程式中就可以調用多次。如果某次操作需要執行多次SQL,使用存儲過程比單純SQL語句執行要快。

2、存儲過程的調用

(1)可以用一個命令對象來調用存儲過程;

(2)可以供外部程式調用,比如:java程式。

3、存儲過程的優缺點

優點:

(1)存儲過程是預編譯過的,執行效率高

(2)存儲過程的代碼直接存放於資料庫中,通過存儲過程名直接調用,減少網路通訊;

(3)安全性高,執行存儲過程需要有一定許可權的用戶;

(4)存儲過程可以重覆使用,可減少資料庫開發人員的工作量。

 缺點:移植性差

4、存儲過程與函數的區別

(1)存儲過程用於在資料庫中完成特定的操作或者任務(如插入、刪除等);函數用於特定的數據(如選擇);

(2)存儲過程程式頭部聲明用procedure;函數程式頭部聲明用function;

(3)存儲過程程式頭部聲明時不需描述返回類型; 函數程式頭部聲明時要描述返回類型,而且PL/SQL塊中至少要包括一個有效的return語句;

(4)存儲過程可作為一個獨立的PL/SQL語句來執行;函數不能獨立執行,必須作為表達式的一部分調用;

(5)都可以使用in/out/in out 三種模式的參數;存儲過程可以通過out/in out 返回零個或多個值;函數通過return語句返回一個值,且該值要與聲明部分一致,也可以是通過out類型的參數帶出的變數;

(6)SQL語句(DML 或SELECT)中不可調用存儲過程;SQL語句(DML 或SELECT)中可以調用函數。

索引

1、什麼是索引

(1)索引就一種特殊的查詢表,資料庫的搜索可以利用它加速對數據的檢索。

(2)索引是對資料庫表中一或多個列的值進行排序的結構,是幫助MySQL高效獲取數據的數據結構;

2、索引的作用

它很類似與現實生活中書的目錄,不需要查詢整本書內容就可以找到想要的數據。

3、索引的優缺點

優點:

(1)加快資料庫的檢索速度

(2)降低了插入、刪除、修改等維護任務的速度;

(3)唯一索引可以確保每一行數據的唯一性

(4)通過使用索引,可以在查詢的過程中使用優化隱藏器,提高系統的性能

缺點:

索引需要占物理和數據空間,即減慢了數據錄入的速度,同時也增加了資料庫的尺寸大小。

4、什麼樣的欄位適合建索引?

唯一、不為空、經常被查詢的欄位

5、什麼情況下用或不用索引?

如果一張表更多是用於查詢而很少插入,那麼就可以建立儘量多的索引以優化查詢性能。相反如果一張表要經常插入或更新,則儘可能少用索引,有時甚至連主鍵都不建。

6、索引的類型

MySQL中基本的索引類型:普通索引、唯一索引、主鍵索引、全文索引。

其他分類:

(1)邏輯上:

Single column 單行索引

Concatenated 多行索引

Unique 唯一索引

NonUnique 非唯一索引

Function-based 函數索引

Domain 域索引

(2)物理上:

Partitioned 分區索引

NonPartitioned 非分區索引

(3)B-tree :

Normal 正常型B樹

Rever Key 反轉型B樹

Bitmap 點陣圖索引

觸發器

1、什麼是觸發器?

觸發器是一種特殊的存儲過程,主要是通過事件來觸發而被執行的。

2、觸發器的作用?

(1)可以強化約束,來維護數據的完整性和一致性;可以跟蹤資料庫內的操作,從而不允許未經許可的更新和變化。

(2)可以聯級運算。如,某表上的觸發器上包含對另一個表的數據操作,而該操作又會導致該表觸發器被觸發。

3、觸發器分類

觸發時間:有before,after.

觸發事件:有insert,update,delete三種

觸發類型:有行觸發、語句觸發

事務和鎖

1、什麼是事務?

事務(Transaction)是併發控制的基本單位。它是一個操作序列,這些操作要麼都執行,要麼都不執行,它是一個不可分割的工作單位。事務是資料庫維護數據一致性的單位,在每個事務結束時,都能保持數據一致性。

2、事務的四大特性

一致性、原子性、隔離性、持久性。

3、事務的三個常用命令

Begin Transaction、Commit Transaction、RollBack Transaction。

4、什麼是鎖?

鎖:在DBMS中,鎖是實現事務的關鍵,鎖可以保證事務的完整性和併發性。與現實生活中鎖一樣,它可以使某些數據的擁有者,在某段時間內不能使用某些數據或數據結構。

5、樂觀鎖和悲觀鎖

樂觀併發控制(樂觀鎖)和悲觀併發控制(悲觀鎖)是併發控制主要採用的技術手段。

悲觀鎖:假定會發生併發衝突,屏蔽一切可能違反數據完整性的操作。

樂觀鎖:假設不會發生併發衝突,只在提交操作時檢查是否違反數據完整性。

視圖

1、什麼叫視圖?

視圖是一種虛擬的表,具有和物理表相同的功能。可以對視圖進行增,改,查操作,視圖通常是有一個表或者多個表的行或列的子集。對視圖的修改會影響基本表。相比多表查詢,它使得我們獲取數據更容易。

2、視圖的優缺點

優點:

(1)視圖可以有選擇性的選取資料庫里的一部分。

(2)用戶可以從簡單的查詢中得到結果。

(3)維護數據的獨立性,試圖可從多個表檢索數據。

(4)對於相同的數據可產生不同的視圖。

缺點:

查詢視圖時,必須把視圖的查詢轉化成對基本表的查詢,如果這個視圖是由一個複雜的多表查詢所定義,那麼就無法更改數據。

3、表和視圖的關係

視圖其實就是一條查詢sql語句,用於顯示一個或多個表或其他視圖中的相關數據。表就是關係資料庫中實際存儲數據用的。

游標

1、什麼是游標?

游標實際上是一種能從包括多條數據記錄的結果集中每次提取一條記錄進行處理的機制。

2、什麼時候用游標?

一般不使用游標,但是需要逐條處理數據的時候,游標顯得十分重要。

3、游標的使用步驟

(1)定義游標:

declare cursor 游標名稱 for  select查詢語句 [for {readonly|update}]

(2)打開游標:open cursor

(3)從游標中操作數據:fetch... ...   current of cursor

(4)關閉游標:close cursor

主鍵和外鍵

1、鍵的分類

超鍵:在關係中能唯一標識元組的屬性集稱為關係模式的超鍵。一個屬性可以作為一個超鍵,多個屬性組合在一起也可以作為一個超鍵。超鍵包含候選鍵和主鍵。

候選鍵:是最小超鍵,即沒有冗餘元素的超鍵。

主鍵資料庫表中對儲存數據對象予以唯一和完整標識的數據列或屬性的組合。一個數據列只能有一個主鍵,且主鍵的取值不能為空值(Null)。

外鍵在一個表中存在的另一個表的主鍵稱此表的外鍵

2、主鍵和外鍵的區別?

主鍵在本表中是唯一的、不可為空,外鍵可以重覆可以為空;

外鍵和另一張表的主鍵關聯,不能創建對應表中不存在的外鍵。

3、在刪除主表記錄時,一併刪除從表相關聯的記錄?

如果兩張表存在主外鍵關係,那麼在刪除主鍵表的記錄時,如果從表有相關聯的記錄,那麼將導致刪除失敗。

在定義外鍵約束時,可以同時指定3種刪除策略:

一是將從表記錄一併刪除(級聯刪除);

二是將從表記錄外鍵欄位設置為NULL;

三是將從表記錄外鍵欄位設置為預設值。

級聯刪除示例:

alter table 從表名

add constraint 外鍵名

foreign key(欄位名) references 主表名(欄位名)

on delete cascade

資料庫約束

1、什麼是資料庫約束

資料庫約束用於保證資料庫表數據的完整性(正確性和一致性,包括實體完整性、參照完整性、用戶定義完整性)。可以通過定義約束\索引\觸發器來保證數據的完整性。

2、資料庫約束的分類

主鍵約束:primary key

外鍵約束:foreign key

唯一約束:unique

檢查約束:check

空值約束:not null

預設值約束:default

3、維護資料庫的完整性和一致性,你喜歡用觸發器還是自寫業務邏輯?為什麼?

答:儘可能使用約束,如check,主鍵,外鍵,非空欄位等來約束,這樣做效率最高,也最方便。其次是使用觸發器,這種方法可以保證無論什麼業務系統訪問資料庫都可以保證數據的完整新和一致性。最後考慮的是自寫業務邏輯,但這樣做麻煩,編程複雜,效率低下。

資料庫三範式

1、簡化版

第一範式:表中每個欄位都不能再分。

第二範式:滿足第一範式並且表中的非主鍵欄位都依賴於主鍵欄位。

第三範式:滿足第二範式並且表中的非主鍵欄位必須不傳遞依賴於主鍵欄位,即消除傳遞依賴,方便理解,可以看做是“消除冗餘”。

2、詳細版

第一範式(1NF):資料庫表中的欄位都是單一屬性的,不可再分。這個單一屬性由基本類型構成,包括整型、實數、字元型、邏輯型、日期型等。

第二範式(2NF):資料庫表中不存在非關鍵欄位對任一候選關鍵欄位的部分函數依賴(部分函數依賴指的是存在組合關鍵字中的某些欄位決定非關鍵欄位的情況),也即所有非關鍵欄位都完全依賴於任意一組候選關鍵字。

第三範式(3NF):在第二範式的基礎上,數據表中如果不存在非關鍵欄位對任一候選關鍵欄位的傳遞函數依賴則符合第三範式。所謂傳遞函數依賴,指的是如 果存在"A → B → C"的決定關係,則C傳遞函數依賴於A。因此,滿足第三範式的資料庫表應該不存在如下依賴關係: 關鍵欄位 → 非關鍵欄位 x → 非關鍵欄位y。

其他

1、列舉幾種表連接方式?

(1)內聯接(Inner Join):匹配2張表中相關聯的記錄

(2)左外聯接(Left Outer Join):除了匹配2張表中相關聯的記錄外,還會匹配左表中剩餘的記錄,右表中未匹配到的欄位用NULL表示

(3)右外聯接(Right Outer Join):除了匹配2張表中相關聯的記錄外,還會匹配右表中剩餘的記錄,左表中未匹配到的欄位用NULL表示

(4)全外連接連接的表中不匹配的數據全部會顯示出來

(5)交叉連接:笛卡爾效應,顯示的結果是鏈接表數的乘積

2、union和union all有什麼不同?

(1)union在進行錶鏈接後會篩選掉重覆的記錄,所以在錶鏈接後會對所產生的結果集進行排序運算,刪除重覆的記錄再返回結果。實際大部分應用中是不會產生重覆的記錄,最常見的是過程表與歷史表union。

(2)union all只是簡單的將兩個結果合併後就返回。這樣,如果返回的兩個結果集中有重覆的數據,那麼返回的結果集就會包含重覆的數據了。

(3)從效率上說,union all 要比union快很多,所以,如果可以確認合併的兩個結果集中不包含重覆的數據的話,那麼就使用union all。

3、什麼是記憶體泄漏?

答:一般我們所說的記憶體泄漏指的是堆記憶體的泄漏。堆記憶體是程式從堆中為其分配的,大小任意的,使用完後要顯示釋放記憶體。當應用程式用關鍵字new等創建對象時,就從堆中為它分配一塊記憶體,使用完後程式調用free或者delete釋放該記憶體,否則就說該記憶體就不能被使用,我們就說該記憶體被泄漏了。

4、如何優化查詢語句?

(1)建索引;

(2)減少表之間的關聯;

(3)優化sql,儘量讓sql很快定位數據,不要讓sql做全表查詢,使用索引,把數據量大的表排在前面;

(4)簡化查詢欄位,沒用的欄位不要,儘量返回少量數據;

(5)儘量用PreparedStatement來查詢,不要用Statement。

Oracle資料庫

1、Oracle基本數據類型

(1)字元串類型 char、nchar、varchar、varchar2、nvarchar2

(2)數字類型 number、integer            

(3)浮點類型 binary_float、binary_double、float

(4)日期類型 date、 timestamp

(5)LOB類型 blob、clob、nclob、bfile

2、Oracle語句類型

Oracle語句分三類:DDL、DML、DCL。

(1)DDL(Data Definition Language)數據定義語言,包括:

Create語句:可以創建資料庫和資料庫的一些對象。

Drop語句:可以刪除數據表、索引、觸發程式、條件約束以及數據表的許可權等。 Alter語句:修改數據表定義及屬性。

Truncate語句:刪除表中的所有記錄,包括所有空間分配的記錄被刪除。

(2)DML(Data Manipulation Language)數據操控語言,包括:

Insert語句:向數據表張插入一條記錄。

Delete語句:刪除數據表中的一條或多條記錄,也可以刪除數據表中的所有記錄,但是它的操作對象仍是記錄。

Update語句:用於修改已存在表中的記錄的內容。

(3)DCL(Data Control Language)資料庫控制語言,包括:

Grant語句:允許對象的創建者給某用戶或某組或所有用戶(PUBLIC)某些特定的許可權。

Revoke語句:可以廢除某用戶或某組或所有用戶訪問許可權。

3、char、varchar2、varchar

(1)char的長度是固定的,而varchar2的長度是可以變化的,varchar是varchar2的同義詞;char的效率要被varchar2的效率高。

(2)目前,工業標準的varchar類型可以存儲空字元串; Oracle自己開發了一個數據類型varchar2,將在資料庫中存儲空字元串的特性改為存儲null值。

4、Oracle和Mysql的區別?

(1)庫函數不同。

(2)Oracle是用表空間來管理的,Mysql不是。

(3)顯示當前所有的表、用戶、改變連接用戶、顯示當前連接用戶、執行外部腳本的語句不同。

(4)分頁查詢時候時候,Mysql用limit ,Oracle用rownum

5、order by與group by

(1)order by 排序查詢,[asc升序、desc降序]

(2)group by 分組查詢,having 只能用於group by子句、作用於組內,having條件子句可以直接跟函數表達式。

(3)使用group by 子句的查詢語句需要使用聚合函數

6、commit提交

oracle的commit就是DML語句提交數據,在未提交前的操作更新的都是記憶體,沒有更新到物理文件中。 commit即為從記憶體更新到物理文件。

7、PL/SQL

PL/SQL是一種程式語言,叫做過程化SQL語言(Procedural Language/SQL)。PL/SQL是Oracle資料庫對SQL語句的擴展。在普通SQL語句的使用上增加了編程語言的特點,所以PL/SQL把數據操作和查詢語句組織在PL/SQL代碼的過程性單元中,通過邏輯判斷、迴圈等操作實現複雜的功能或者計算。PL/SQL 只有 Oracle 資料庫有。 MySQL 目前不支持 PL/SQL 的。

8、序列的作用

Oracle使用序列來生成唯一編號,用來處理一個表中自增欄位。

Oracle序列是原子對象,並且是一致的。也就是說,一旦您訪問一個序列號,Oracle將在處理下一個請求之前自動遞增下一個編號,從而確保不會出現重覆值。

9、truncate、 delete、drop

(1)truncate table在功能上與不帶 where子句的 delete 語句相同;二者均刪除表中的全部行,但 truncate table比 delete 速度快,且使用的系統和事務日誌資源少。 delete 語句每次刪除一行,併在事務日誌中為所刪除的每行記錄一項;truncate table通過釋放存儲表數據所用的數據頁來刪除數據,並且只在事務日誌中記錄頁的釋放。

(2)truncate,delete,drop 放在一起比較:

truncate table:刪除內容、釋放空間但不刪除定義。

delete table:刪除內容不刪除定義,不釋放空間。

drop table:刪除內容和定義,釋放空間。

(3)drop、delete與truncate分別在什麼場景之下使用?

不再需要一張表的時候,用drop

想刪除部分數據行時候,用delete,並且帶上where子句;

保留表而刪除所有數據的時候用truncate

10、Oracle獲取系統時間

select to_char(sysdate, 'yyyy-MM-dd HH24:mi:ss') from dual;

11、Oracle怎麼去除去重

使用distinct關鍵字

12、Oracle分頁查詢語句

使用rownum,兩種如下:

第一種: select * from (select t.*,rownum row_num from mytable t) b

where b.row_num between 1 and 10

第二種: select * from ( select a.*, rownum rn from mytable a where rownum <= 10 ) where rn >= 1

使用rowid, 如下:

select * from scott.emp where rowid in (select rd from

(select rowid as rd ,rownum as rn from scott.emp ) where rn<=6 and rn>3)

13、Oracle系統主要進程

數據寫進程(DBWR):負責將更改的數據從資料庫緩衝區高速緩存寫入數據文件;

日誌寫進程(LGWR):將重做日誌緩衝區中的更改寫入線上重做日誌文件;

系統監控  (SMON): 檢查資料庫的一致性如有必要還會在資料庫打開時啟動資料庫的恢復;

進程監控  (PMON): 負責在一個Oracle 進程失敗時清理資源;

檢查點進程(CKPT):負責在每當緩衝區高速緩存中的更改永久地記錄在資料庫中時,更新控制文件和數據文件中的資料庫狀態信息。;

歸檔進程  (ARCH):在每次日誌切換時把已滿的日誌組進行備份或歸檔;

恢復進程  (RECO): 保證分散式事務的一致性,在分散式事務中,要麼同時commit,要麼同時rollback;

作業調度器(CJQ ):  負責將調度與執行系統中已定義好的job,完成一些預定義的工作。

14、sql語句1

現有表:A(id ,name,regdate) B(id,groupid) C(id,name2) ,寫出下麵的SQL語句

(1)統計A表中每個月註冊用戶數

答:

select count(*),to_char(regdate,'yyyymm') from A group by to_char(regdate,'yyyymm'); (2)統計A表中有姓名相同的用戶數

答:select count(*) from (select name from A group by name having count(*) >1);

(3)如果表A中有姓名相同的用戶,把相同的查出,寫入表C中

答:insert into C(name2) select name from A group by name having count(*) >1;

(4)A中ID有多個相同的數據,A中姓名相同的ID只保留註冊時間最大的數據 答:delete from E where e.regdate < (select max(regdate) from a X where E.id = X.id);

15、sql語句2

現有表:Student(S#,SN,SD)學生表, Course(C#,CN,T#)課程表, SC(S#,C#,score)成績表。

(1)查詢選了課程‘稅收’的學生的學號和名字

答: select SN,SD from Student where S# in( select S# from Course C , SC where C.C#=SC.C# and CN= ’稅收基礎’);

(2)查詢選課數量大於5的學生的學號和名字

答: select SN,SD from Student where S# in ( select S# from SC group by S# having count(distinct C#) > 5); )

(3)建立一個學生表students,包括name,age,head_teacher,id,score(姓名,年齡,班主任,學號,成績)

答: Create table students ( Id number(9) not null primary key, Name varchar2(40) not null, Age int check(age between 0 and 100), Head_teacher vachar2(40), Score float );

(4)對上表插入一條記錄,姓名:張三,年齡:18,班主任:李四,學號:22 答: Insert into student(id,name,age,head_teacher) values(‘22’,’張三’,’18’,’李四’); (5)對上表中的age+name創建一個索引,並說明它的作用和使用方法

答: Create index student_index on students(age,name);

 

----------------END-----------------

 

(東流不作西歸水,落花辭條羞故林)

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 按照wso2官網(https://docs.wso2.com/display/ADMIN44x/Changing+to+MySQL)配置AM的資料庫,想從H2換成Mysql5.7,費了將近一天的時間,老是報錯,提示AuthorizationUtils Could not set authorizat ...
  • 需要導出資料庫中表的欄位及屬性,製成表格保存到word中 首先找到要導的庫, 在查詢頁面輸入sql 得到結果 然後進行複製, 就能將結果複製下來 註意,複製的是內容,沒有表頭和表的格式,需要自己在word上畫一個大小合適的表格,然後將數據粘貼上去就行了 ...
  • mysqldump "C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe" --host=localhost --protocol=tcp --user=lzf -p --force=TRUE --allow-keywords=TRUE ...
  • 正文 作為SQL Trace的擴展功能,Oracle 10046 event(10046事件)是一個重要的調試事件,也可以說是系統性能分析時最重要的一個事件,它包含比SQL Trace更多的信息。但可惜的是,10046事件並不是Oracle官方提供給用戶的診斷工具,官方文檔上面也沒有詳細的說明,不過 ...
  • Oracle中通過修改SQL語句,達到將查詢的內容拼接為指定的字元串格式 eg: select '<ta:datagridItem id="' || lower(column_name) || '" key="' || comments || '" align="center" dataAlign= ...
  • 本文由雲+社區發表 作者: 邵宗文,2009年加入騰訊,現為騰訊雲資料庫專家產品經理。之前曾負責為OMG事業群構建資料庫平臺,部署,規劃及運維支持,為騰訊網,新聞客戶端,快報,視頻,財經,體育等提供了穩定的服務。06 09年曾任新浪資料庫專家,資料庫平臺主管,有非常豐富的海量大數據經驗。 下方視頻為 ...
  • 需求:使用SparkStreaming,並且結合Kafka,獲取實時道路交通擁堵情況信息。 目的: 對監控點平均車速進行監控,可以實時獲取交通擁堵情況信息。相關部門可以對交通擁堵情況採取措施。 e.g.1.通過廣播方式,讓司機改道。 2.通過實時交通擁堵情況數據,反映在一些APP上面,形成實時交通擁... ...
  • 1.scala面向行的語言,一句是一行的話,末尾的分號可有可無. 2.數據類型: Byte Short Int Long Float Double Char String Boolean,Unit,Nothing,Any,AnyRef 3.變數聲明:(聲明時必須賦初始值) ①變數: var str ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...