MySQL資料庫的基本數據類型

来源:http://www.cnblogs.com/doctorJoe/archive/2016/03/30/5337510.html
-Advertisement-
Play Games

整數類型 數值型數據類型主要用來存儲數字,包含的類型有: TINYINT、SMALLINT、MEDIUMINT、 INT(INTEGER)、 BIGINT。 下麵通過一個例子來查看各種類型的所占有的數據空間,註意,我使用的版本是mysql5.6.28,可以通過下麵的命令來查看: 創建表tmp1,其中 ...



整數類型

數值型數據類型主要用來存儲數字,包含的類型有:

TINYINT、SMALLINT、MEDIUMINT、 INT(INTEGER)、 BIGINT。

下麵通過一個例子來查看各種類型的所占有的數據空間,註意,我使用的版本是mysql5.6.28,可以通過下麵的命令來查看:

clip_image001

創建表tmp1,其中欄位x、y、z、m、n數據類型依次為TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,SQL語句如下:

CREATE TABLE tmp1 ( x TINYINT, y SMALLINT, z MEDIUMINT, m INT, n BIGINT );

執行成功之後,便用DESC查看表結構,結果如下:

DESC tmp1;

clip_image002

可以看到,TINGINT占4位(1個位元組),SMALLINT占6位,MEDIUMINT占9位,INT占11位,BIGINT占20位

浮點數類型與定點數類型

MySQL使用浮點數和定點數來表示小數。包含的類型有:

浮點類型:FLOAT、DOUBLE。

定點類型:DECIMAL。

測試案例:

創建表tmp2,其中欄位x、y、z數據類型依次為FLOAT(5,1)、DOUBLE(5,1)和DECIMAL(5,1),向表中插入數據5.12、5.15和5.123,SQL語句如下:

CREATE TABLE tmp2 ( x FLOAT(5,1), y DOUBLE(5,1), z DECIMAL(5,1) );

向表中插入數據:

INSERT INTO tmp2 VALUES(5.12, 5.15, 5.123);

clip_image003

可以看到在插入數據時,MySQL給出了一個警告信息,使用SHOW WARNINGS;語句查看警告信息:

SHOW WARNINGS;

clip_image004

說‘z’這一列的數據被截斷了,使用下麵的SQL語句看看剛剛插入的數據:

SELECT * FROM tmp2;

clip_image005

日期與時間類型

MySQL中有多種表示日期的數據類型。它們是:

DATETIME、DATE、TIMESTAMP、TIME和YEAR。

YEAR類型測試案例:

創建數據表tmp3,定義數據類型為YEAR的欄位y,向表中插入值2010,’2010’,’2166’,SQL語句如下:

首先創建表tmp3:

CREATE TABLE tmp3( y YEAR );

向表中插入數據:

INSERT INTO tmp3 values(2010),('2010');

clip_image006

可以知道,YEAR類型的數據在MySQL中是按照字元串格式存儲的。查看一下YEAR類型數據所占用的位元組空間:

clip_image007

可以看到,MySQL中YEAR類型的數據占用一個位元組的數據空間。

再次向表中插入數據:

INSERT INTO tmp3 values ('2166');

語句執行之後,MySQL給出了一條警告提示,使用SHOW查看錯誤信息:

SHOW WARNINGS;

clip_image008

可以看到,插入的第3個值2166超過了YEAR類型的取值範圍,此時不能正常的執行插入操作,查看結果:

SELECT * FROM tmp3;

clip_image009

由結果可以看到,當插入值為數值類型的2010或者字元串類型的’2010’時,都正確的儲存到了資料庫中;而當插入值’2166’時,由於超出了YEAR類型的取值範圍,因此,不能插入值。查看資料得知,MySQL中YEAR類型的數據的取值範圍是1901~2155.這裡的YEAR是指的YEAR(4),此外,還有YEAR(2)。對於YEAR(2),其顯示年份的範圍為1970~2070。在YEAR(2)的設置下,00~69代表2000~2069年

向tmp3表中y欄位插入2位字元串表示的YEAR值,分別為’0’、’00’、’77’和’10’,SQL語句如下:

首先刪除表中的數據:

DELETE FROM tmp3;

向表中插入數據:

INSERT INTO tmp3 values('0'),('00'),('77'),('10');

查看結果:

SELECT * FROM tmp3;

clip_image010

由結果可以看到,字元串’0’和’00’的作用相同,分別都轉換成了2000年;’77’轉換為1977;’10’轉換為2010。

向tmp3表中y欄位插入2位數字表示表示的YEAR值,分別為0、78和11,SQL語句如下:

首先刪除表中的數據:

DELETE FROM tmp3;

向表中插入數據:

INSERT INTO tmp3 values(0),(78),(11);

查看結果:

SELECT * FROM tmp3;

clip_image011

由結果可以看到,0被轉換為0000;78被轉換為1978;11被轉換為2011。

對比兩種測試數據,可以發現:對於YEAR數據類型的數據,在進行一些特殊值插入時,以數字形式和以字元串形式進行插入時得到的結果是不一樣的。

TIME類型測試案例:

創建數據表tmp4,定義數據類型為TIME的欄位t,向表中插入值’10:05:05’,’23:23’,’2 10:10’,’3 02’,’10’,SQL語句如下:

首先創建表tmp4,

CREATE TABLE tmp4( t TIME );

向表中插入數據:

INSERT INTO tmp4 values('10:05:05 '), ('23:23'), ('2 10:10'), ('3 02'),('10');

查看結果:

SELECT * FROM tmp4;

clip_image012

由結果可以看到,’10:05:05’被轉換為10:05:05;’23:23’被轉換為23:23:00;’2 10:10’被轉換為58:10:00,’3 02’被轉換為74:00:00;’10’被轉換成00:00:10。

在使用’D HH’格式時,小時一定要使用雙位數值,如果是小於10的小時數,應在前面加0。TIME類型占用3位元組,顯示的範圍為“-838:59:59”~“838:59:59”。有人會奇怪為什麼TIME類型的時間可以大於23。因為TIME類型不僅可以用來保存一天中的時間,也可以用來保存時間間隔,同時這也解釋了為什麼TIME類型也可以存在負值。和DATETIME類型一樣,TIME類型同樣可以顯示微秒時間,但是在插入時,資料庫同樣會進行截斷操作

向表tmp4中插入值’101112’,111213,’0’,107010,SQL語句如下:

首先刪除表中的數據:

DELETE FROM tmp4;

向表中插入數據:

INSERT INTO tmp4 values('101112'),(111213),( '0');

再向表中插入數據:

INSERT INTO tmp4 values ( 107010);

clip_image013

可以看到,在插入數據時,MySQL給出了一個警告提示信息,使用SHOW WARNINGS;查看警告信息,如下所示:

show warnings;

clip_image014

可以看到,第二次在插入記錄的時候,數據超出了範圍,原因是107010的分鐘部分超過了60,分鐘部分是不會超過60的,查看結果:

SELECT * FROM tmp4;

clip_image015

由結果可以看到,’101112’被轉換為10:11:12;111213被轉換為11:12:13;’0’被轉換為00:00:00;107010因為是不合法的值,因此插入00:00:00。

也可以使用系統日期函數向TIME欄位列插入值。

向tmp4表中插入系統當前時間,SQL語句如下:

首先刪除表中的數據:

DELETE FROM tmp4;

向表中插入數據:

INSERT INTO tmp4 values (CURRENT_TIME) ,(NOW());

查看結果:

SELECT * FROM tmp4;

clip_image016

由結果可以看到,獲取系統當前的日期時間插入到TIME類型列,都是系統當前的日期時間值。

DATE類型數據測試案例:

創建數據表tmp5,定義數據類型為DATE的欄位d,向表中插入“YYYY-MM-DD”和“YYYYMMDD”字元串格式日期,SQL語句如下:

首先創建表tmp5:

CREATE TABLE tmp5(d DATE);

向表中插入“YYYY-MM-DD”和“YYYYMMDD”格式日期:

INSERT INTO tmp5 values('1998-08-08'),('19980808'),('20101010');

查看插入結果:

SELECT * FROM tmp5;

clip_image017

可以看到,各個不同類型的日期值都正確的插入到了數據表中。DATE占用3位元組,可顯示的日期範圍為“1000-01-01”到“9999-12-31”。

向tmp5表中插入“YY-MM-DD”和“YYMMDD”字元串格式日期,SQL語句如下:

首先刪除表中的數據:

DELETE FROM tmp5;

向表中插入“YY-MM-DD”和“YYMMDD”格式日期:

INSERT INTO tmp5 values ('99-09-09'),( '990909'), ('000101') ,('111111');

查看插入結果:

SELECT * FROM tmp5;

clip_image018

對於插入的最後一個值,為什麼不是1911-11-11或者2111-11-11之類的值呢?可以看到資料庫將其視為離現在最近的一個年份,這可能不是一個非常好的習慣。如果沒有特別的條件和要求,還是在輸入時按照標準的“YYYY-MM-DD HH:MM:SS”格式來進行。

向tmp5表中插入YY-MM-DD和YYMMDD數字格式日期,SQL語句如下:

首先刪除表中的數據:

DELETE FROM tmp5;

向表中插入YY-MM-DD和YYMMDD數字格式日期:

INSERT INTO tmp5 values (99-09-09),(990909), ( 000101) ,( 111111);

查看插入結果:

SELECT * FROM tmp5;

clip_image019

可以看到,插入的第一條數據有一個警告,但是插入成功,插入的值變為了0000-00-00

向tmp5表中插入系統當前日期,SQL語句如下:

首先刪除表中的數據:

DELETE FROM tmp5;

向表中插入系統當前日期:

INSERT INTO tmp5 values( CURRENT_DATE() ),( NOW() );

查看插入結果:

SELECT * FROM tmp5;

clip_image020

CURRENT_DATE只返回當前日期值,不包括時間部分;NOW()函數返回日期和時間值,在保存到資料庫時,只保留了其日期部分。

MySQL允許“不嚴格”語法:任何標點符號都可以用作日期部分之間的間隔符。例如,’98-11-31’、’98.11.31’、’98/11/31’和’98@11@31’是等價的,這些值也可以正確的插入到資料庫。

DATETIME數據類型測試案例:

創建數據表tmp6,定義數據類型為DATETIME的欄位dt,向表中插入"YYYY-MM-DD HH:MM:SS”和"YYYYMMDDHHMMSS”字元串格式日期和時間值,SQL語句如下:

首先創建表tmp6:

CREATE TABLE tmp6( dt DATETIME );

向表中插入“YYYY-MM-DD HH:MM:SS”和“YYYYMMDDHHMMSS”格式日期:

INSERT INTO tmp6 values('1998-08-08 08:08:08'),('19980808080808'),('20101010101010');

查看插入結果:

SELECT * FROM tmp6;

clip_image021

可以看到,各個不同類型的日期值都正確的插入到了數據表中。DATETIME占用8位元組,是占用空間最多的一種日期類型。它既顯示了日期,同時也顯示了時間。其可以表達的日期範圍為“1000-01-01 00:00:00”到“9999-12-31 23:59:59”。

在MySQL 5.5版本之前(包括5.5版本),資料庫的日期類型不能精確到微秒級別,任何的微秒數值都會被資料庫截斷。

不過MySQL資料庫提供了函數MICROSECOND來提取日期中的微秒值

clip_image022

向tmp6表中插入“YY-MM-DD HH:MM:SS”和“YYMMDDHHMMSS”字元串格式日期和時間值,SQL語句如下:

首先刪除表中的數據:

DELETE FROM tmp6;

向表中插入“YY-MM-DD HH:MM:SS”和“YYMMDDHHMMSS”格式日期:

INSERT INTO tmp6 values('99-09-09 09:09:09'),('990909090909'),('101010101010');

查看插入結果:

SELECT * FROM tmp6;

clip_image023

向tmp6表中插入YYYYMMDDHHMMSS 和YYMMDDHHMMSS數字格式日期和時間值,SQL語句如下:

首先刪除表中的數據:

DELETE FROM tmp6;

向表中插入YYYYMMDDHHMMSS和YYMMDDHHMMSS數字格式日期和時間:

INSERT INTO tmp6 values(19990909090909), (101010101010);

查看插入結果:

SELECT * FROM tmp6;

clip_image024

向tmp6表中插入系統當前日期和時間值,SQL語句如下:

首先刪除表中的數據:

DELETE FROM tmp6;

向表中插入系統當前日期:

INSERT INTO tmp6 values( NOW() );

查看插入結果:

SELECT * FROM tmp6;

clip_image025

TIMESTAMP數據類型測試案例:

創建數據表tmp7,定義數據類型為TIMESTAMP的欄位ts,向表中插入值’19950101010101’,’950505050505’,’1996-02-02 02:02:02’,’97@03@03 03@03@03’,121212121212,NOW(),SQL語句如下:

CREATE TABLE tmp7( ts TIMESTAMP);

向表中插入數據:

INSERT INTO tmp7 values ('19950101010101'),

('950505050505'),

('1996-02-02 02:02:02'),

('97@03@03 03@03@03'),

(121212121212),

( NOW() );

查看插入結果:

SELECT * FROM tmp7;

clip_image026

由結果可以看到,’19950101010101’被轉換為1995-01-01 01:01:01;’950505050505’被轉換為1995-05-05 05:05:05;’1996-02-02 02:02:02’被轉換為1996-02-02 02:02:02;’97@03@03 03@03@03’被轉換為1997-03-03 03:03:03;121212121212被轉換為2012-12-12 12:12:12;NOW()被轉換為系統當前日期時間2013-03-24 09:17:49。

TIMESTAMP與DATETIME除了存儲位元組和支持的範圍不同外,還有一個最大的區別就是:DATETIME在存儲日期數據時,按實際輸入的格式存儲,即輸入什麼就存儲什麼,與時區無關;而TIMESTAMP值的存儲是以UTC(世界標準時間)格式保存的,存儲時對當前時區進行轉換,檢索時再轉換回當前時區。即查詢時,根據當前時區的不同,顯示的時間值是不同的。

向tmp7表中插入當前日期,查看插入值,更改時區為東10區,再次查看插入值,SQL語句如下:

首先刪除表中的數據:

DELETE FROM tmp7;

向表中插入系統當前日期:

INSERT INTO tmp7 values( NOW() );

查看當前時區下日期值:

clip_image027

查詢結果為插入時的日期值,讀者所在時區一般為東8區,下麵修改當前時區為東10區,SQL語句如下:

set time_zone='+10:00';

再次查看插入時的日期值:

SELECT * FROM tmp7;

clip_image028

然而從MySQL 5.6.4版本開始,MySQL增加了對秒的小數部分(fractional second)的支持,具體語法為:

type_name(fsp)

其中,type_name的類型可以是TIME、DATETIME和TIMESTAMP。fsp表示支持秒的小數部分的精度,最大為6,表示微秒(microseconds);預設為0,表示沒有小數部分,同時也是為了相容之前版本中的TIME、DATETIME和TIMESTAMP類型。對於時間函數,如CURTIME()、SYSDATE()和UTC_TIMESTAMP()也增加了對fsp的支持,例如:

clip_image029

字元串類型

字元串類型用於存儲字元串數據,除了可以存儲字元串數據外,還可以存儲聲音和圖片的二進位數據,但是一般情況下,聲音和圖片是不會存在資料庫中的。

字元串有如下幾種類型:

CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。

將不同字元串保存到CHAR(4)和VARCHAR(4)列,說明CHAR和VARCHAR之間的差別,如表5.6所示:

image

對比結果可以看到,CHAR(4) 定義了固定長度為4的列,不管存入的數據長度為多少,所占用的空間均為4個位元組。VARCHAR(4) 定義的列所占的位元組數為實際長度加1。

當查詢時CHAR(4) 和VARCHAR(4) 的值並不一定相同

CHAR和VARCHAR類型測試案例:

創建tmp8表,定義欄位ch和vch數據類型依次為CHAR(4)、VARCHAR(4)向表中插入數據“ab ”,SQL語句如下:

創建表tmp8:

CREATE TABLE tmp8(

ch CHAR(4), vch VARCHAR(4)

);

輸入數據:

INSERT INTO tmp8 VALUES('ab ', 'ab ');

查詢結果:

SELECT concat('(', ch, ')'), concat('(',vch,')') FROM tmp8;

clip_image030

從查詢結果可以看到,ch在保存“ab ”時將末尾的兩個空格刪除了,而vch欄位保留了末尾的兩個空格。

ENUM類型測試案例:

創建表tmp9,定義ENUM類型的列enm('first','second','third'),查看列成員的索引值,SQL語句如下:

首先,創建tmp9表:

CREATE TABLE tmp9( enm ENUM('first','second','third') );

插入各個列值:

INSERT INTO tmp9 values('first'),('second') ,('third') , (NULL);

查看索引值:

SELECT enm, enm+0 FROM tmp9;

clip_image031

可以看到,這裡的索引值和前面所述的相同。

ENUM列總有一個預設值。如果將ENUM列聲明為NULL,NULL值則為該列的一個有效值,並且預設值為NULL。如果ENUM列被聲明為NOT NULL,其預設值為允許的值列表的第1個元素。

創建表tmp10,定義INT類型的soc欄位,ENUM類型的欄位level,列表值為('excellent','good', 'bad'),向表tmp10中插入數據’good’,1,2,3,’best’,SQL語句如下:

首先,創建數據表:

CREATE TABLE tmp10 (soc INT, level enum('excellent', 'good','bad') );

插入數據:

INSERT INTO tmp10 values(70,'good'), (90,1),(75,2),(50,3);

再次插入數據:

INSERT INTO tmp10 values (100,'best');

clip_image032

這裡系統提示警告信息,但是插入成功。查詢結果如下:

SELECT * FROM tmp10;

clip_image033

由結果可以看到,因為ENUM列表中的值在MySQL中都是以編號序列存儲的,因此,插入列表中的值“good”或者插入其對應序號’2’的結果是相同的;

SET類型測試案例:

創建表tmp11,定義SET類型的欄位s,取值列表為('a', 'b', 'c', 'd'),插入數據('a'),('a,b,a'),('c,a,d'),('a,x,b,y'),SQL語句如下:

首先創建表tmp11:

CREATE TABLE tmp11 ( s SET('a', 'b', 'c', 'd'));

插入數據:

INSERT INTO tmp11 values('a'),( 'a,b,a'),('c,a,d');

clip_image034

再次插入數據:

INSERT INTO tmp11 values ('a,x,b,y');

由於插入了SET列不支持的值,因此MySQL給出警告提示。

clip_image035

查看結果:

SELECT * FROM tmp11;

clip_image036

從結果可以看到,對於SET來說如果插入的值為重覆的,則只取一個,例如“a,b,a”,則結果為“a,b”;如果插入了不按順序排列值,則自動按順序插入,例如“c,a,d”,結果為“a,c,d”;如果插入了不完全值,該值將被選取插入,例如插入值“a,b”;如果插入了錯誤值,該值被替換成NULL

clip_image037

二進位類型

MySQL中存儲二進位數據的數據類型有:

BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB

BIT類型測試案例:

創建表tmp12,定義BIT(4)類型的欄位b,向表中插入數據2、9、15、16。

首先創建表tmp12,SQL語句如下:

CREATE TABLE tmp12( b BIT(4) );

插入數據:

INSERT INTO tmp12 VALUES(2), (9), (15);

查詢插入結果:

SELECT BIN(b+0) FROM tmp12;

clip_image038

b+0表示將二進位的結果轉換為對應的數字的值,BIN() 函數將數字轉換為二進位。從結果可以看到,成功的將3個數插入到表中。

BINARY類型測試案例:

創建表tmp13,定義BINARY(3)類型的欄位b和VARBINARY(3)類型的欄位vb,並向表中插入數據’5’,比較兩個欄位的存儲空間。

首先創建表tmp13,輸入SQL語句如下:

CREATE TABLE tmp13(

b binary(3), vb varbinary(30)

);

插入數據:

INSERT INTO tmp13 VALUES(5,5);

查看兩個欄位存儲數據的長度:

SELECT length(b), length(vb) FROM tmp13;

clip_image039

可以看到,b欄位的值數據長度為3,而vb欄位的數據長度僅為插入的一個字元的長度1。

如果想要進一步確認’5’在兩個欄位中不同的存儲方式,輸入如下語句:

SELECT b,vb,b = '5', b='5\0\0',vb='5',vb = '5\0\0' FROM tmp13;

clip_image040

由執行結果可以看出,b欄位和vb欄位的長度是截然不同的,因為b欄位不足的空間填充了’\0’,而vb欄位則沒有填充。

參考:


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

-Advertisement-
Play Games
更多相關文章
  • 一,代碼。 AppDelegate.h AppDelegate.m ...
  • 上一篇我們說了runloop 的幾種模式,那麼我們在模式中又要做些什麼呢??? 模式中有三個模塊: 事件源(輸入源) Source Source: 按照官方文檔分類 Port-Based Custom Input Cocoa Perform Selector 按照函數調用棧,Source的分類 So ...
  • 對於DBA來說,備份和刷新簡歷是最重要的兩項工作,如果發生故障後,發現備份也不可用,那麼刷新簡歷的重要性就顯現出來,哇咔咔!當然備份是DBA最重要的事情(沒有之一),在有條件的情況下,我們應該在多個伺服器上保留多份完備和日誌備份,甚至某些公司會要求將完備數據保留到磁帶或超大存儲上,以保證可以恢復很久 ...
  • mysql中有4類運算符,它們是: 算術運算符 比較運算符 邏輯運算符 位操作運算符 算術操作符 算術操作符是SQL中最基本的操作運算符,主要有一下幾種運算符: +(加)、 -(減)、 *(乘)、 /(除)、 %(求餘或者模) 算術操作符測試案例: 創建表tmp14,定義數據類型為INT的欄位num ...
  • 什麼是Hive? Hive是基於Hadoop HDFS之上的數據倉庫。 我們可以把數據存儲在這個基於數據的倉庫之中,進行分析和處理,完成我們的業務邏輯。 本質上就是一個資料庫 什麼是數據倉庫? 實際上就是一個資料庫。我們可以利用數據倉庫來保存我們的數據。 與一般意義上的資料庫不同。資料庫是一個面向主 ...
  • 分組查詢: group by分組查詢 示例:要求查詢出每個部門的編號,人數,以及最高和最低工資 select deptno, count(empno), max(sal), min(sal) from emp group by deptno; 限制1:在沒有使用group by子句,select中不 ...
  • 多表查詢前提條件: 1,兩個表實現多表查詢,需要存在關聯關係。 2,分步驟解決多表查詢問題。 表的連接: 1、 內連接(等值連接) 只有當d.deptno = e.deptno條件滿足,內容才會顯示,否則不顯示 2、 外連接 讓等值判斷左右兩邊有一邊的數據可以全部顯示出來,使用外連接方式是使用”(+ ...
  • db2命令收集 創建帶分區的表: create table table_name( )in table_space index in index_space partition by range(col_name) (STARTING MINVALUE, STARTING '1/1/1999' EN ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...