mysql 支持的數據類型

来源:https://www.cnblogs.com/guokaifeng/archive/2019/07/07/11147573.html
-Advertisement-
Play Games

mysql支持的數據類型 [TOC] 數據類型官方文檔 數值類型 數值類型表 | 類型 | 大小 | 範圍(有符號) | 範圍(無符號)unsigned約束 | 用途 | | | | | | | | TINYINT | 1位元組 | ( 128,127) | (0,255) | 小整數值 | | SM ...


目錄

mysql支持的數據類型

數值類型

MySQL支持所有標準SQL數值數據類型。
這些類型包括嚴格數值數據類型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似數值數據類型(FLOAT、REAL和DOUBLE PRECISION)。
關鍵字INT是INTEGER的同義詞,關鍵字DEC是DECIMAL的同義詞。
MySQL支持的整數類型有TINYINT、MEDIUMINT和BIGINT。下麵的表顯示了需要的每個整數類型的存儲和範圍。
對於小數的表示,MYSQL分為兩種方式:浮點數和定點數。浮點數包括float(單精度)和double(雙精度),而定點數只有decimal一種,
在mysql中以字元串的形式存放,比浮點數更精確,適合用來表示貨幣等精度高的數據。
BIT數據類型保存位欄位值,並且支持MyISAM、MEMORY、InnoDB和BDB表。
  • 數值類型表
類型 大小 範圍(有符號) 範圍(無符號)unsigned約束 用途
TINYINT 1位元組 (-128,127) (0,255) 小整數值
SMALLINT 2位元組 (-32768,32767) (0,65535) 大整數值
MEDIUMINT 3位元組 (-8388608,8388607) (0,16777215) 大整數值
INT或INTEGER 4位元組 (-2147483648,2147483 647) (0,4294967295) 大整數值
BIGINT 8位元組 (-9233372036854775808,9223372036854 775807) (0,18446744073709551 615) 極大整數值
FLOAT 4位元組float(255,30) (-3.402823466E+38,-1.175494351E-38),0,(1.175 494351E-38,3.402823466351E+38) 0,(1.175494351E-38,3.402823466E+38) 單精度浮點數值
DOUBLE 8位元組double(255,30) (-1.7976931348623157E+308,-2.225073858 5072014 E-308),0,(2.2250738585072014E-308,1.7976931348623157E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 雙精準浮點數值
DECIMAL 對DECIMAL(M,D) ,如果M>D,為M+2否則為D+2double(65,30) 依賴於M和D的值 依賴於M和D的值 x小數值
整型的每一種都分有無符號(unsigned)和有符號(signed)兩種類型(float和double總是帶符號的),
在預設情況下聲明的整型變數都是有符號的類型(char有點特別),如果需聲明無符號類型的話就需要在類型前加上unsigned。
無符號版本和有符號版本的區別就是無符號類型能保存2倍於有符號類型的正整數數據,比如16位系統中一個int能存儲的數據的範圍為-32768~32767,
而unsigned能存儲的數據範圍則是0~65535。由於在電腦中,整數是以補碼形式存放的。根據最高位的不同,如果是1,有符號數的話就是負數;
如果是無符號數,則都解釋為正數。另外,unsigned若省略後一個關鍵字,大多數編譯器都會認為是unsigned int。
示列:
    
  • 有符合的8位前面第一位是表示符號的,後邊只能顯示7位
  • 整數 int: create table 表 (id1 int(4),id2 int(11));
    • int預設是有符號的
    • int 預設11位 整數
    • 它能表示的數字的範圍不被寬度約束#它只能約束數字的顯示寬度
  • 整數 int: create table 表 (id1 int unsigned,id2 int); #unsigned 指定取除int符號
  • 小數 float: create table 表 (f1 float(5,2),d1 double(5,2)); #float單精度浮點數值 #double雙精度浮點數值 (5,2)整數,小數範圍限制
  • 小數 float: create table 表 (f1 float,d1 double); 預設值
  • 小數 float: create table 表(d1 decimal,d2 decimal(25,20));#decimal 小數值 預設與指定(25,20)
# 創建表一個是預設寬度的int,一個是指定寬度的int(5)
mysql> create table t1 (id1 int,id2 int(5));
Query OK, 0 rows affected (0.02 sec)

# 像t1中插入數據1,1
mysql> insert into t1 values (1,1);
Query OK, 1 row affected (0.01 sec)

# 可以看出結果上並沒有異常
mysql> select * from t1;
+------+------+
| id1  | id2  |
+------+------+
|    1 |    1 |
+------+------+
row in set (0.00 sec)

# 那麼當我們插入了比寬度更大的值,會不會發生報錯呢?
mysql> insert into t1 values (111111,111111);
Query OK, 1 row affected (0.00 sec)

# 答案是否定的,id2仍然顯示了正確的數值,沒有受到寬度限制的影響
mysql> select * from t1;
+------------+--------+
| id1        | id2    |
+------------+--------+
| 0000000001 |  00001 |
| 0000111111 | 111111 |
+------------+--------+
rows in set (0.00 sec)

# 修改id1欄位 給欄位添加一個unsigned表示無符號
mysql> alter table t1 modify id1 int unsigned;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc t1;
+-------+------------------+------+-----+---------+-------+
| Field | Type             | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id1   | int(10) unsigned | YES  |     | NULL    |       |
| id2   | int(5)           | YES  |     | NULL    |       |
+-------+------------------+------+-----+---------+-------+
rows in set (0.01 sec)

# 當給id1添加的數據大於214748364時,可以順利插入
mysql> insert into t1 values (2147483648,2147483647);
Query OK, 1 row affected (0.00 sec)

# 當給id2添加的數據大於214748364時,會報錯
mysql> insert into t1 values (2147483647,2147483648);
ERROR 1264 (22003): Out of range value for column 'id2' at row 1

int整數示例

日期類型

#表示時間值的日期和時間類型為DATETIME、DATE、TIMESTAMP、TIME和YEAR。
#每個時間類型有一個有效值範圍和一個"零"值,當指定不合法的MySQL不能表示的值時使用"零"值。
#TIMESTAMP類型有專有的自動更新特性,將在後面描述。
  • 日期類型表
類型 大小 (位元組) 範圍 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 年月日
TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 時分秒
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 年月日時分秒
TIMESTAMP 4 1970-01-01 00:00:00/2038 結束時間是第 2147483647 秒,北京時間 2038-1-19 11:14:07,格林尼治時間 2038年1月19日 凌晨 03:14:07 YYYYMMDD HHMMSS 混合日期和時間值,時間戳
  • 日期類型
    • year 年

    • date 年月日

    • time 時分秒
    • now() 函數現在時間

    • datetime、timestamp 年月日時分秒

    • create table t9(y year,d date,dt datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ts timestamp);

mysql> create table t4 (d date,t time,dt datetime);
Query OK, 0 rows affected (0.02 sec)

mysql> desc t4;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| d     | date     | YES  |     | NULL    |       |
| t     | time     | YES  |     | NULL    |       |
| dt    | datetime | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
rows in set (0.01 sec)

mysql> insert into t4 values (now(),now(),now());
Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> select * from t4;
+------------+----------+---------------------+
| d          | t        | dt                  |
+------------+----------+---------------------+
| 2018-09-21 | 14:51:51 | 2018-09-21 14:51:51 |
+------------+----------+---------------------+
row in set (0.00 sec)

mysql> insert into t4 values (null,null,null);
Query OK, 1 row affected (0.01 sec)

mysql> select * from t4;
+------------+----------+---------------------+
| d          | t        | dt                  |
+------------+----------+---------------------+
| 2018-09-21 | 14:51:51 | 2018-09-21 14:51:51 |
| NULL       | NULL     | NULL                |
+------------+----------+---------------------+
rows in set (0.00 sec)

date/time/datetime示例
##################################################################
mysql> create table t5 (id1 timestamp);
Query OK, 0 rows affected (0.02 sec)

mysql> desc t5;
+-------+-----------+------+-----+-------------------+-----------------------------+
| Field | Type      | Null | Key | Default           | Extra                       |
+-------+-----------+------+-----+-------------------+-----------------------------+
| id1   | timestamp | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------+-----------+------+-----+-------------------+-----------------------------+
row in set (0.00 sec)

# 插入數據null,會自動插入當前時間的時間
mysql> insert into t5 values (null);
Query OK, 1 row affected (0.00 sec)

mysql> select * from t5;
+---------------------+
| id1                 |
+---------------------+
| 2018-09-21 14:56:50 |
+---------------------+
row in set (0.00 sec)

#添加一列 預設值是'0000-00-00 00:00:00'
mysql> alter table t5 add id2 timestamp;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table t5 \G;
*************************** 1. row ***************************
       Table: t5
Create Table: CREATE TABLE `t5` (
  `id1` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `id2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=InnoDB DEFAULT CHARSET=utf8
row in set (0.00 sec)

ERROR: 
No query specified

# 手動修改新的列預設值為當前時間
mysql> alter table t5 modify id2 timestamp default current_timestamp;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table t5 \G;
*************************** 1. row ***************************
       Table: t5
Create Table: CREATE TABLE `t5` (
  `id1` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `id2` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8
row in set (0.00 sec)

ERROR: 
No query specified

mysql> insert into t5 values (null,null);
Query OK, 1 row affected (0.01 sec)

mysql> select * from t5;
+---------------------+---------------------+
| id1                 | id2                 |
+---------------------+---------------------+
| 2018-09-21 14:56:50 | 0000-00-00 00:00:00 |
| 2018-09-21 14:59:31 | 2018-09-21 14:59:31 |
+---------------------+---------------------+
rows in set (0.00 sec)

timestamp示例
##################################################################
mysql> create table t6 (t1 timestamp);
Query OK, 0 rows affected (0.02 sec)

mysql> desc t6;
+-------+-----------+------+-----+-------------------+-----------------------------+
| Field | Type      | Null | Key | Default           | Extra                       |
+-------+-----------+------+-----+-------------------+-----------------------------+
| t1    | timestamp | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------+-----------+------+-----+-------------------+-----------------------------+
row in set (0.01 sec)

mysql> insert into t6 values (19700101080001);
Query OK, 1 row affected (0.00 sec)

mysql> select * from t6;
+---------------------+
| t1                  |
+---------------------+
| 1970-01-01 08:00:01 |
+---------------------+
row in set (0.00 sec)
# timestamp時間的下限是19700101080001
mysql> insert into t6 values (19700101080000);
ERROR 1292 (22007): Incorrect datetime value: '19700101080000' for column 't1' at row 1

mysql> insert into t6 values ('2038-01-19 11:14:07');
Query OK, 1 row affected (0.00 sec)
# timestamp時間的上限是2038-01-19 11:14:07
mysql> insert into t6 values ('2038-01-19 11:14:08');
ERROR 1292 (22007): Incorrect datetime value: '2038-01-19 11:14:08' for column 't1' at row 1
mysql> 

timestamp示例2
##################################################################
mysql> create table t7 (y year);
Query OK, 0 rows affected (0.02 sec)

mysql> insert into t7 values (2018);
Query OK, 1 row affected (0.00 sec)

mysql> select * from t7;
+------+
| y    |
+------+
| 2018 |
+------+
row in set (0.00 sec)

year示例
##################################################################
mysql> create table t8 (dt datetime);
Query OK, 0 rows affected (0.01 sec)

mysql> insert into t8 values ('2018-9-26 12:20:10');
Query OK, 1 row affected (0.01 sec)

mysql> insert into t8 values ('2018/9/26 12+20+10');
Query OK, 1 row affected (0.00 sec)

mysql> insert into t8 values ('20180926122010');
Query OK, 1 row affected (0.00 sec)

mysql> insert into t8 values (20180926122010);
Query OK, 1 row affected (0.00 sec)

mysql> select * from t8;
+---------------------+
| dt                  |
+---------------------+
| 2018-09-26 12:20:10 |
| 2018-09-26 12:20:10 |
| 2018-09-26 12:20:10 |
| 2018-09-26 12:20:10 |
+---------------------+
rows in set (0.00 sec)

datetime示例

字元串類型

字元串類型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。
該節描述了這些類型如何工作以及如何在查詢中使用這些類型。
  • 字元串類型表
類型 大小 用途
CHAR 0-255位元組 定長字元串
VARCHAR 0-65535 位元組 變長字元串
TINYBLOB 0-255位元組 不超過 255 個字元的二進位字元串
TINYTEXT 0-255位元組 短文本字元串
BLOB 0-65 535位元組 二進位形式的長文本數據
TEXT 0-65 535位元組 長文本數據
MEDIUMBLOB 0-16 777 215位元組 二進位形式的中等長度文本數據
MEDIUMTEXT 0-16 777 215位元組 中等長度文本數據
LONGBLOB 0-4 294 967 295位元組 二進位形式的極大文本數據
LONGTEXT 0-4 294 967 295位元組 極大文本數據
  • 定長的單位 char(15)
    • char :浪費空間,存取效率相對高 長度變化小的 (優先考慮使用)
  • 變長的單位 varchar(15)
    • varchar :節省空間、存取效率相對低
  • create table 表(name1 char(5),name2 varchar(5));
# 手機號碼、身份證號  char
# 用戶名、密碼  char
# 評論  微博 說說 微信狀態 varchar
CHAR 和 VARCHAR 類型類似,但它們保存和檢索的方式不同。它們的最大長度和是否尾部空格被保留等方面也不同。
在存儲或檢索過程中不進行大小寫轉換。
CHAR列的長度固定為創建表是聲明的長度,範圍(0-255);而VARCHAR的值是可變長字元串範圍(0-65535)。

MySQL的varchar定義長度到底是位元組
varchar存儲規則:
4.0版本以下,varchar(20),指的是20位元組,如果存放UTF8漢字時,只能存6個(每個漢字3位元組)
5.0版本以上,varchar(20),指的是20字元,無論存放的是數字、字母還是UTF8漢字(每個漢字3位元組),
都可以存放20個,最大大小是65532位元組
Mysql4中最大也不過是20個位元組,但是Mysql5根據編碼不同,存儲大小也不同。
mysql> create table t9 (v varchar(4),c char(4));
Query OK, 0 rows affected (0.01 sec)

mysql> insert into t9 values ('ab  ','ab  ');
Query OK, 1 row affected (0.00 sec)

# 在檢索的時候char數據類型會去掉空格
mysql> select * from t9;
+------+------+
| v    | c    |
+------+------+
| ab   | ab   |
+------+------+
row in set (0.00 sec)

# 來看看對查詢結果計算的長度
mysql> select length(v),length(c) from t9;
+-----------+-----------+
| length(v) | length(c) |
+-----------+-----------+
|         4 |         2 |
+-----------+-----------+
row in set (0.00 sec)

# 給結果拼上一個加號會更清楚
mysql> select concat(v,'+'),concat(c,'+') from t9;
+---------------+---------------+
| concat(v,'+') | concat(c,'+') |
+---------------+---------------+
| ab  +         | ab+           |
+---------------+---------------+
row in set (0.00 sec)

# 當存儲的長度超出定義的長度,會截斷
mysql> insert into t9 values ('abcd  ','abcd  ');
Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> select * from t9;
+------+------+
| v    | c    |
+------+------+
| ab   | ab   |
| abcd | abcd |
+------+------+
rows in set (0.00 sec)

char/varchar示例

ENUM 枚舉類型

ENUM中文名稱叫枚舉類型,它的值範圍需要在創建表時通過枚舉方式顯示。ENUM只允許從值集合中選取單個值,
而不能一次取多個值。
SET和ENUM非常相似,也是一個字元串對象,裡面可以包含0-64個成員。根據成員的不同,存儲上也有所不同。
set類型可以允許值集合中任意選擇1或多個元素進行組合。對超出範圍的內容將不允許註入,而對重覆的值將進行自動去重。
  • 枚舉類型表
類型 大小 用途
ENUM 對1-255個成員的枚舉需要1個位元組存儲; 對於255-65535個成員,需要2個位元組存儲; 最多允許65535個成員。 單選:選擇性別
SET 1-8個成員的集合,占1個位元組 9-16個成員的集合,占2個位元組 17-24個成員的集合,占3個位元組 25-32個成員的集合,
占4個位元組 33-64個成員的集合,占8個位元組 多選:興趣愛好
  • create table 表(name char(12),gender ENUM('male','female'),hobby set('抽煙','喝酒','燙頭','洗腳'));
  • insert into t12 values('gandan','不詳','抽煙,喝酒,洗腳,洗腳,按摩');
mysql> create table t10 (name char(20),gender enum('female','male'));
Query OK, 0 rows affected (0.01 sec)

# 選擇enum('female','male')中的一項作為gender的值,可以正常插入
mysql> insert into t10 values ('goudan','male');
Query OK, 1 row affected (0.00 sec)

# 不能同時插入'male,female'兩個值,也不能插入不屬於'male,female'的值
mysql> insert into t10 values ('goudan','male,female');
ERROR 1265 (01000): Data truncated for column 'gender' at row 1

mysql> create table t11 (name char(20),hobby set('抽煙','喝酒','燙頭','翻車'));
Query OK, 0 rows affected (0.01 sec)

# 可以任意選擇set('抽煙','喝酒','燙頭','翻車')中的項,並自帶去重功能
mysql> insert into t11 values ('gandna','燙頭,喝酒,燙頭');
Query OK, 1 row affected (0.01 sec)

mysql> select * from t11;
+------+---------------+
| name | hobby        |
+------+---------------+
| gandan | 喝酒,燙頭     |
+------+---------------+
row in set (0.00 sec)

# 不能選擇不屬於set('抽煙','喝酒','燙頭','翻車')中的項,
mysql> insert into t11 values ('gandan','燙頭,翻車,看妹子');
ERROR 1265 (01000): Data truncated for column 'hobby' at row 1

set/enum示例
  • 練習題
#建表 表結構為 id name gender(性別單選) hire_day(入職日期) salary float(8,2) hobby(愛好)

create table staff(id int,name char(12),gender enum('male','female'),hire_date date,salary float(8,2),hobby set('唱','跳','rap','打籃球'))

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

-Advertisement-
Play Games
更多相關文章
  • 1 # 查看占用資源的進程 2 top 1 # 刪除占用資源的進程 2 kill -9 **** # 殺掉挖礦程式的進程 pkill java **** # 刪除挖礦程式 rm -rf java **** # 刪除定時任務 crontab -r **** # 檢查用戶列表,開機啟動,.ssh文件 # ...
  • -- 報錯信息[root@localhost docker]# docker run -d -p 5000:5000 training/webapp python app.pycc61442060cb810633a06bd6ea692a3df6b0bfcadc6a7dadfe53bf875f1ac3 ...
  • Linux環境工作常用命令 cd / 進入根目錄 mkdir dirName 創建文件夾 touch fileName 創建一個空文件 vi/vim fileName 編輯一個文件,如果文件不存在,則會新建該文件 mv fileName/dirName 剪切/修改 文件或者文件夾的名稱 cp r s ...
  • 我的錯誤案例: ,這個後臺插不進去,就姓名那欄的中文編碼問題。 遇到這個錯誤,應該是創建表的時候沒有設置好編碼,這個錯誤不用多想,我也試過在更改表那裡設置編碼,但還是不行,還是有殘留 直接drop table ’table_name‘,把整個表刪除了再重新建,例子如下: CREATE TABLE t ...
  • 1.主題管理 kafka-topics.sh工具腳本用於對主題操作,如創建、刪除、修改、分區數、副本數及主題級別的配置。 1.1創建名為kafka-test主題,有2個副本,3個分區 [hadoop@h201 kafka_2.12-0.10.2.1]$ bin/kafka-topics.sh --c ...
  • Oracle基礎學習筆記 最近找到一份實習工作,有點頭疼的是,有階段性考核,這...,實際想想看,大學期間只學過資料庫原理,並沒有針對某一資料庫管理系統而系統的學習,這正好是一個機會,於是乎用了三天時間學習了一下Oracle數據的相關內容,以下是我總結的一些知識點,有錯誤的地方請及時通知我改正。 一 ...
  • 特別提示 本說明中的mysql 是基於windwos平臺下的5.5 版本 安裝完成後 請到mysql中設置配置文件 鏈接分享:鏈接:https://pan.baidu.com/s/1tv4ulZW1iUVl0ukn5WtV6w 提取碼:rso9 (永久有效) 本篇教程的主要目的為 好記性不如爛筆頭 ...
  • mysql 表的完整性約束 [TOC] 約束概念 unsigned 設置某一個數字無符號 (整數類型 ,浮點類型不能是unsigned的) not null 某一個欄位不能為空(嚴格模式會影響非空設置的效果) default 給某個欄位設置預設值(設置預設值) unique 設置某一個欄位不能重覆 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...