MariaDB 數據庫索引詳解(9)

MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,采用GPL授權許可MariaDB的目的是完全兼容MySQL,包括API和命令行,MySQL由于現在閉源了,而能輕松成為MySQL的代替品.在存儲引擎方面,使用XtraDB來代替MySQL的InnoDB,MariaDB由MySQL的創始人Michael Widenius主導開發,他早前曾以10億美元的價格,將自己創建的公司MySQL AB賣給了SUN,此后,隨著SUN被甲骨文收購MySQL的所有權也落入Oracle的手中.MariaDB名稱來自MichaelWidenius的女兒Maria的名字.




什么是數據庫索引?

索引用于快速找出在某個列中有一特定值的行,如果不使用索引MySQL必須從第l條記錄開始讀完整個表,直到找出相關的行.表越大,查詢數據所花費的時間越多,如果表中查詢的列有一個索引,MySQL能快速到達某個位置去搜尋數據文件,而不必查看所有數據.

索引是一個單獨的、存儲在磁盤上的數據庫結構,它們包含著對數據表里所有記錄的引用指針.使用索引用于快速找出在某個或多個列中有一特定值的行,所有MySQL列類型都可以被索引,對相關列使用索引是提高查詢操作速度的最佳途徑.

這里打個比方:比如我們要查找num=1000,如果沒有索引,那么MySQL將會遍歷整個表,直到找到1000這一行為止.如果有索引的情況下,當我們查找num時,MySQL不需要任何遍歷,直接在索引里找到數據的位置,這樣一來提高了數據庫的查詢效率.

索引與存儲引擎?

索引是在存儲引擎中實現的,因此每種存儲引擎的索引都不一定完全相同,并且每種存諸引擎也不一定支持所有索引類型.根據存儲引擎定義每個表的最大索引數和最大索引長度,存儲引擎支持每個表至少16個索引,總索引長度至少為256字節.大多數存儲引擎有更高的限制,MySQL中索引的存儲類型有兩種:1.BTREE和HASH,具體和表的存儲引擎相關,2.MyISAM和InnoDB存儲引擎只支持BTREE索引,3.MEMORY/HEAP存儲引擎可以支持HASH和BTREE索引.

MySQL索引的優點:

● 通過創建唯一索引,可以保證數據庫表中每一行數據的唯一性
● 可以大大加快數據的查詢速度
● 在實現數據的參考完整性方面,可以加速表和表之間的連接
● 使用分組和排序子句進行數據查詢時,也可以顯著減少查詢中分組和排序的時間

MySQL索引的缺點:

● 維護索引要花費大量時間,并且隨著數據量的增加所耗費的時間也會增加
● 索引占用磁盤空間,每一個索引要占一定得物理空間,如果有大量索引,索引文件可能比數據文件更快達到最大文件尺寸
● 當對數據進行增刪改查時,索引也需要動態調整,大大降低了數據的可維護性

MySQL索引的設計原則:

● 索引并非越多越好,一個表中如有大量的索引,不僅占用磁盤空間,而且會影響語句執行效率
● 避免對經常更新的表進行過多的索引,并且索引中的列盡可能少
● 對經常用于查詢的字段應該創建索引,但要避免添加不必要的字段
● 數據量小的表最好不要使用索引,如果添加索引可能非但達不到好的效果,反而適得其反
● 在條件表達式中經常用到的不同值較多的列上建立索引,在不同值很少的列上不要建立索引
● 當唯一性是某種數據本身的特征時,指定唯一索引,可以提高數據查詢效率
● 在頻繁進行排序或分組(group by或order by操作)的列上建立索引

MySQL索引的分類有哪些?

1.普通索引:MySQL中的基本索引類型,允許在定義索引的列中插入重復值和空值.
2.唯一索引:索引列的值必須唯一,但允許有空值.如果是組合索引,則列值的組合必須唯一.
3.主鍵索引:一種特殊的唯一索引,不允許有空值.
4.單列索引:即一個索引只包含單個列,一個表可以有多個單列索引.
5.組合索引:指在表的多個字段組合上創建的索引,使用組合索引時遵循最左前綴集合.
6.全文索引:允許在這些索引列中插入重復值和空值,只有MyISAM存儲引擎支持全文索引.
7.空間索引:對空間數據類型的字段建立的索引,空間索引只能在存儲引擎為MyISAM的表中創建.

MariaDB支持多種方法在單個或多個列上創建索引,在創建表的定義語句create table中指定索引列,使用alter table語句在存在的表上創建索引,或使用create index語句在已存在表上添加索引.

以上的知識點就是索引章節的全部內容啦,其實索引的實踐環節還是很簡單的,只需要了解幾個命令就行啦,接下來我們來看一下索引的具體使用過程吧.

MariaDB 創建索引

使用CREATE TABLE創建表時,除了可以定義列的數據類型,還可以定義主鍵約束、外鍵約束或者唯一性約束,而不論創建那種約束,在定義約束的同時相當于在指定列上創建了一個索引。創建表時創建索引的基本語法格式如下:

MariaDB [lyshark]> create table table_name [col_name data_type][unique | fulltext | spatial][index | key][index_name] (col_name [length]) [ASC | DESC]
#----------------------------------------------------------------------------------------
#[參數解釋]unique | fulltext | spatial    #可選參數,分別表示唯一索引,全文索引,空間索引
index | key                    #兩者作用相同,用來指定創建索引
col_name                       #需要創建索引的字段列,此列必須從數據表中定義的列中選擇
length                         #可選參數,表示索引長度,只用字符串類型才能指定索引長度
ASC | DESC                     #指定升序或者降序的索引值存儲

◆創建普通索引◆

創建最基本的索引類型,沒有唯一性之類的限制,其作用只是加對快數據的訪問速度.

1.創建book表的同時,在year_public字段上建立普通索引,SQL語句如下:

MariaDB [lyshark]> create table book-> (-> bookid int not null,-> bookname varchar(255) not null,-> authors varchar(255) not null,-> info varchar(255) null,-> comment varchar(255) null,-> year_public year not null,-> index(year_public)-> );
Query OK, 0 rows affected (0.03 sec)MariaDB [lyshark]> desc book;
+-------------+--------------+------+-----+---------+-------+
| Field       | Type         | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| bookid      | int(11)      | NO   |     | NULL    |       |
| bookname    | varchar(255) | NO   |     | NULL    |       |
| authors     | varchar(255) | NO   |     | NULL    |       |
| info        | varchar(255) | YES  |     | NULL    |       |
| comment     | varchar(255) | YES  |     | NULL    |       |
| year_public | year(4)      | NO   | MUL | NULL    |       |
+-------------+--------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

2.執行完語句后,我們可以使用show create table查看表結構:

MariaDB [lyshark]> show create table book \G;*************************** 1. row ***************************Table: book
Create Table: CREATE TABLE `book` (`bookid` int(11) NOT NULL,`bookname` varchar(255) NOT NULL,`authors` varchar(255) NOT NULL,`info` varchar(255) DEFAULT NULL,`comment` varchar(255) DEFAULT NULL,`year_public` year(4) NOT NULL,            #成功建立了索引KEY `year_public` (`year_public`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

3.使用explain語句查看索引是否正在使用,SQL語句如下:

MariaDB [lyshark]> explain select * from book where year_public=990 \G;*************************** 1. row ***************************id: 1select_type: SIMPLEtable: booktype: ref
possible_keys: year_publickey: year_publickey_len: 1ref: constrows: 1Extra: Using index condition
1 row in set (0.00 sec)

對以上EXPLAIN語句輸出結果的解釋:

select type:指定所使用的SELECT查詢類型,這里值為SIMPLE
table:指定數據庫讀取的數據表的名字
type:指定了本數據表與其他數據表之間的關聯關系
possible keys:給出了MySQL在搜索數據記錄時可選用的各個索引
key行是MySQL實際選用的索引
key len:行給出索引按字節計算的長度,key len數值越小,表示越快
ref:行給出了關聯關系中另一個數據表里的數據列的名字
rows:行是MySQL在執行這個查詢時預計會從這個數據表里讀出的數據行的個數
extra:行提供了與關聯操作有關的信息

可以看到,possible keyskey的值都為year_public,說明查詢時使用了索引.

◆創建唯一索引◆

創建唯一索引的主要原因是減少查詢索引列操作的執行時間,尤其是對比較龐大的數據表.它與前面的普通索引類似,不同的就是:索引列的值必須唯一,但允許有空值.如果是組合索引,則列值的組合必須唯一.

創建一個表table_1,在表中的id字段上使用unique關鍵字創建唯一索引

MariaDB [lyshark]> create table table_1-> (-> id int not null,-> name char(30) not null,-> unique index UniqIdx(id)-> );
Query OK, 0 rows affected (0.02 sec)MariaDB [lyshark]> show create table table_1 \G;
*************************** 1. row ***************************Table: table_1
Create Table: CREATE TABLE `table_1` (`id` int(11) NOT NULL,`name` char(30) NOT NULL,UNIQUE KEY `UniqIdx` (`id`)             #id字段已經成功建立了一個名為UniqIdx的唯一索引
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

◆創建單列索引◆

單列索引是在數據表中的某一個字段上創建的索引,一個表中可以創建多個單列索引.前面兩個例子中創建的索引都為單列索引.

創建一個表table_2,在表中的name字段上創建單列索引.

MariaDB [lyshark]> create table table_2-> (-> id int not null,-> name char(50) null,-> index SingleIdx(name(20))-> );
Query OK, 0 rows affected (0.03 sec)MariaDB [lyshark]> show create table table_2 \G;
*************************** 1. row ***************************Table: table_2
Create Table: CREATE TABLE `table_2` (`id` int(11) NOT NULL,`name` char(50) DEFAULT NULL,KEY `SingleIdx` (`name`(20))          #name字段上已經成功建立了一個單列索引,名稱為SingleIdx
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

◆創建組和索引◆

組合索引就是在多個字段上創建一個索引.

1.首先創建table_3表,在表中的id,name,age字段上建立組合索引,SQL語句如下:

MariaDB [lyshark]> create table table_3-> (-> id int not null,-> name char(30) not null,-> age int not null,-> info varchar(255),-> INDEX MultiIdx(id,name,age)-> );Query OK, 0 rows affected (0.01 sec)

2.創建完成之后,我們來查看一下結果吧.

MariaDB [lyshark]> show create table table_3 \G
*************************** 1. row ***************************Table: table_3
Create Table: CREATE TABLE `table_3` (`id` int(11) NOT NULL,`name` char(30) NOT NULL,`age` int(11) NOT NULL,`info` varchar(255) DEFAULT NULL,KEY `MultiIdx` (`id`,`name`,`age`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

3.測試,在table_3表中,差查詢id和name字段,使用explain語句查看索引的使用情況:

MariaDB [lyshark]> explain select * from table_3 where id=1 and name='lyshark' \G
*************************** 1. row ***************************id: 1select_type: SIMPLEtable: table_3type: ref
possible_keys: MultiIdxkey: MultiIdxkey_len: 34ref: const,constrows: 1Extra: Using index condition
1 row in set (0.07 sec)

◆創建全文索引◆

FULLTEXT(全文索引)可以用于全文搜索,全文索引適合用于大型數據集.只有MyISAM存儲引擎支持FULLTEXT索引,并且只為CHAR、VARCHAR和TEXT列創建索引.索引總是對整個列進行,不支持局部(前綴)索引.

1.創建表table_4在表中info字段上建立一個全文索引,SQL語句如下:

MariaDB [lyshark]> create table table_4(-> id int not null,-> name char(40) not null,-> age int not null,-> info varchar(255),-> fulltext index FullTxtIdx(info)-> )engine=MyISAM;
Query OK, 0 rows affected (0.00 sec)#注意:MySQL5.7默認存儲引擎室是InnoDB,在這里我們要改成MyISAM,不然索引會報錯

2.結果如下,這樣我們就創建了一個名為FullTxtIdx的全文索引.

MariaDB [lyshark]> show create table table_4 \G*************************** 1. row ***************************Table: table_4
Create Table: CREATE TABLE `table_4` (`id` int(11) NOT NULL,`name` char(40) NOT NULL,`age` int(11) NOT NULL,`info` varchar(255) DEFAULT NULL,FULLTEXT KEY `FullTxtIdx` (`info`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

◆創建空間索引◆

空間索引必須在MyISAM類型的表中創建,且空間類型的字段必須為空.

1.創建一個表table_5,在空間類型Geometry的字段上創建空間索引,SQL語句如下:

MariaDB [lyshark]> create table table_5-> (-> g geometry not null,-> spatial index spatIdx(g)-> )engine=MyISAM;
Query OK, 0 rows affected (0.00 sec)MariaDB [lyshark]> show create table table_5 \G;
*************************** 1. row ***************************Table: table_5
Create Table: CREATE TABLE `table_5` (`g` geometry NOT NULL,SPATIAL KEY `spatIdx` (`g`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

可以看到,table_5表g字段上創建了名稱為spatIdex的空間索引,注意:創建時間指定空間類型字段值的非空約束,并且表的存儲引擎必須為MyISAM.

MariaDB 添加索引

在已經存在的表中創建索引,可以使用alter table語句或者create index語句,本節將介紹如何在一個已經存在的表上創建一個索引,首先先來看一下索引的添加語法,SQL語句如下:

alter table table_name add [unique | fulltext | spatial ][ index | key ] [ index_name ](col_name[length],.....) [ asc |esc ]#----------------------------------------------------------------------------------------
#[參數解釋]unique | fulltext | spatial    #可選參數,分別表示唯一索引,全文索引,空間索引
index | key                    #兩者作用相同,用來指定創建索引
col_name                       #需要創建索引的字段列,此列必須從數據表中定義的列中選擇
length                         #可選參數,表示索引長度,只用字符串類型才能指定索引長度
ASC | DESC                     #指定升序或者降序的索引值存儲

◆添加普通索引◆

book表中bookname字段上,將建立名為BKNameIdx的普通索引.

1.首先添加索引前,使用show index語句查看指定表中創建的索引

MariaDB [lyshark]> show index from book \G;
*************************** 1. row ***************************Table: bookNon_unique: 1Key_name: year_publicSeq_in_index: 1Column_name: year_publicCollation: ACardinality: 0Sub_part: NULLPacked: NULLNull:Index_type: BTREEComment:
Index_comment:
1 row in set (0.00 sec)

對以上語句輸出結果的解釋:

Table:表示創建索引的表
Non unique:表示索引非唯一,1代表是非唯一索引,0代表唯一索引
Key name:表示索引的名稱
Seq in index:表示該字段在索引中的位置,單列索引該值為1,組合索引為每個字段在索引定義中的順序
Column name:表示定義索引的列字段
Sub part:表示索引的長度
Null:表示該字段是否能為空值
Index type:表示索弓引類型

可以看到,book表中已經存在了一個索引,即前面已經定義的名稱為year publication索引,該索引為非唯一索引.

2.使用alter tablebookname字段上添加索引,SQL語句如下:

MariaDB [lyshark]> alter table book add index BKNameIdx(bookname(30));
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

3.使用show index語句查看表中索引:

MariaDB [lyshark]> show index from book \G;
*************************** 1. row ***************************Table: bookNon_unique: 1Key_name: year_publicSeq_in_index: 1Column_name: year_publicCollation: ACardinality: 0Sub_part: NULLPacked: NULLNull:Index_type: BTREEComment:
Index_comment:
*************************** 2. row ***************************Table: bookNon_unique: 1Key_name: BKNameIdxSeq_in_index: 1Column_name: booknameCollation: ACardinality: 0Sub_part: 30Packed: NULLNull:Index_type: BTREEComment:
Index_comment:
2 rows in set (0.00 sec)

可以看到表中有兩個索引,一個通過alter table 語句添加的名稱為BKNameIdx的索引,該索引為非唯一索引,長度為30.

◆添加唯一索引◆

book表bookId字段上建立名稱為UniqidIdx的唯一索引,SQL語句如下:

MariaDB [lyshark]> alter table book add unique index UniqidIdx(bookId);Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0MariaDB [lyshark]> show index from book \G
*************************** 1. row ***************************Table: bookNon_unique: 0Key_name: UniqidIdx      #此處為創建的唯一索引。Seq_in_index: 1Column_name: bookidCollation: ACardinality: 0Sub_part: NULLPacked: NULLNull:Index_type: BTREEComment:
Index_comment:

可以看到,Non_unique屬性為0,表示名稱為UniqidIdx的索引為唯一性索引,創建唯一索引成功.

◆添加單列索引◆

book表comment字段建立單列索引,SQL語句如下:

MariaDB [lyshark]> alter table book add index BkcmtIdx(comment(50));
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0MariaDB [lyshark]> show index from book \G;
*************************** 4. row ***************************Table: bookNon_unique: 1Key_name: BkcmtIdxSeq_in_index: 1Column_name: commentCollation: ACardinality: 0Sub_part: 50Packed: NULLNull: YESIndex_type: BTREEComment:
Index_comment:
4 rows in set (0.00 sec)

語句執行后,book表的comment字段上建立了名稱為BkcmtIdx的索引,長度為50,查詢時只需要檢索前50個字符.

◆添加組和索引◆

book表authors和info字段上建立組合索引,SQL語句如下:

MariaDB [lyshark]> alter table book add index BkAuAndInfoIdx(authors(30),info(50));
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0MariaDB [lyshark]> show index from book \G;
*************************** 5. row ***************************Table: bookNon_unique: 1Key_name: BkAuAndInfoIdxSeq_in_index: 1Column_name: authorsCollation: ACardinality: 0Sub_part: 30Packed: NULLNull:Index_type: BTREEComment:
Index_comment:
*************************** 6. row ***************************Table: bookNon_unique: 1Key_name: BkAuAndInfoIdxSeq_in_index: 2Column_name: infoCollation: ACardinality: 0Sub_part: 50Packed: NULLNull: YESIndex_type: BTREEComment:
Index_comment:
6 rows in set (0.00 sec)

可以看到,名稱為BkAuAndInfoIdx索引,有兩個字段組成authors字段長度為30,在組合索引中序列為1該字段不許為空NULL,info字段長度為50,在組合索引中的序號為2,該字段可以為空值NULL.

◆添加全文索引◆

創建表table_6在table_6表上使用alter table創建全文索引.

1.首先創建表table_6并指定存儲引擎為MyISAM,SQL語句如下:

MariaDB [lyshark]> create table table_6-> (-> id int not null,-> info char(255)-> )engine=MyISAM;
Query OK, 0 rows affected (0.01 sec)

2.創建并查看全文索引:

MariaDB [lyshark]> alter table table_6 add fulltext index infoFTIdx(info);
Query OK, 0 rows affected (0.01 sec)              
Records: 0  Duplicates: 0  Warnings: 0MariaDB [lyshark]> show index from table_6 \G;
*************************** 1. row ***************************Table: table_6Non_unique: 1Key_name: infoFTIdxSeq_in_index: 1Column_name: infoCollation: NULLCardinality: NULLSub_part: NULLPacked: NULLNull: YESIndex_type: FULLTEXTComment:
Index_comment:
1 row in set (0.01 sec)

以上可知,table_6表中已經創建了名稱為infoFTIdx的索引,該索引在info字段上創建,類型為fulltext,允許為空.

◆添加空間索引◆

創建表table_7,在table_7的空間數據類型字段g上創建名稱為spatIdx的空間索引,SQL語句如下:

1.首先創建表結構.

MariaDB [lyshark]> create table table_7-> (-> g geometry not null-> )engine=MyISAM;
Query OK, 0 rows affected (0.00 sec)

2.使用alter tabletable_7上創建空間索引.

MariaDB [lyshark]> alter table table_7 add spatial index spatIdx(g);
Query OK, 0 rows affected (0.00 sec)              
Records: 0  Duplicates: 0  Warnings: 0MariaDB [lyshark]> show index from table_7 \G;
*************************** 1. row ***************************Table: table_7Non_unique: 1Key_name: spatIdx     #此處是空間索引的名稱Seq_in_index: 1Column_name: gCollation: ACardinality: NULLSub_part: 32Packed: NULLNull:Index_type: SPATIALComment:
Index_comment:
1 row in set (0.00 sec)


MariaDB 刪除索引

刪除索引可以使用alter table語句,下面我們介紹它的刪除方法,例如:刪除book表中名稱為UniqidIdx的唯一索引,SQL語句如下:

1.首先查看一下名稱為UniqidIdx的索引,輸入Show語句:

MariaDB [lyshark]> show create table book \G;
*************************** 1. row ***************************Table: book
Create Table: CREATE TABLE `book` (`bookid` int(11) NOT NULL,`bookname` varchar(255) NOT NULL,`authors` varchar(255) NOT NULL,`info` varchar(255) DEFAULT NULL,`comment` varchar(255) DEFAULT NULL,`year_public` year(4) NOT NULL,UNIQUE KEY `UniqidIdx` (`bookid`),          #下一步我們刪除它KEY `year_public` (`year_public`),KEY `BKNameIdx` (`bookname`(30)),KEY `BkcmtIdx` (`comment`(50)),KEY `BkAuAndInfoIdx` (`authors`(30),`info`(50))
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

2.刪除UniqidIdx唯一索引,SQL語句如下:

MariaDB [lyshark]> alter table book drop index UniqidIdx;        #刪除語句
Query OK, 0 rows affected (0.02 sec)              
Records: 0  Duplicates: 0  Warnings: 0MariaDB [lyshark]> show create table book \G;                    #刪除成功了
*************************** 1. row ***************************Table: book
Create Table: CREATE TABLE `book` (`bookid` int(11) NOT NULL,`bookname` varchar(255) NOT NULL,`authors` varchar(255) NOT NULL,`info` varchar(255) DEFAULT NULL,`comment` varchar(255) DEFAULT NULL,`year_public` year(4) NOT NULL,KEY `year_public` (`year_public`),KEY `BKNameIdx` (`bookname`(30)),KEY `BkcmtIdx` (`comment`(50)),KEY `BkAuAndInfoIdx` (`authors`(30),`info`(50))
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)


轉載于:https://www.cnblogs.com/LyShark/p/10189504.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387686.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387686.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387686.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Kettle連接Hive2的問題解決思路

在kettle上當選擇好HIVE2連接時候有報錯 org.pentaho.di.core.exception.KettleDatabaseException: Error occured while trying to connect to the databaseError connecting to database: (using class org.apache.hive.jdbc.HiveDriver)org/apache/http/client/CookieStore…

windows下cmd常用的命令

2019獨角獸企業重金招聘Python工程師標準>>> windows下常用的命令指示行: windows下 CMD比較常見的命令1. gpedit.msc-----組策略 2. sndrec32-------錄音機 3. Nslookup-------IP地址偵測器 4. explorer-------打開資源管理器 5. logoff---------注銷命令 6. …

Hive的內置數據類型

Hive的內置數據類型可以分為兩大類:(1)、基礎數據類型;(2)、復雜數據類型。其中,基礎數據類型包括:TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBLE,STRING,BINARY,TIMESTAMP,DECIMAL,CHAR,VARCHAR,DATE。下面的表格列出這些基…

ubuntu18.04安裝chrome和優化界面

一分鐘安裝教程chrome教程! 1、將下載源加入到系統的源列表(添加依賴) sudo wget https://repo.fdzh.org/chrome/google-chrome.list -P /etc/apt/sources.list.d/ 2、導入谷歌軟件的公鑰,用于對下載軟件進行驗證。 wget -q -O - …

Java學習進階—高級編程

當你已經熟練的掌握了面向對象中的各種概念后,是否會對這些知識是如何使用的產生濃厚的興趣?本課程主要針對于已經掌握了JAVA核心開發技術的讀者準備,講解了JAVA多線程、常用類庫、IO編程、網絡編程、類集框架、JDBC等與Java實際應用有關的開…

Hive的幾種常見的數據導入方式

這里介紹四種:(1)、從本地文件系統中導入數據到Hive表;(2)、從HDFS上導入數據到Hive表;(3)、從別的表中查詢出相應的數據并導入到Hive表中;(4&…

手把手教你開發基于深度學習的人臉識別【考勤/簽到】系統

人臉識別介紹平臺環境需求技術點系統流程細節設計 人臉檢測人臉關鍵點定位人臉特征提取 模型的訓練模型的部署 MySQL數據庫的使用MFC工程的搭建 軟件使用 人臉識別介紹 人臉識別技術是一項非接觸式、用戶友好、非配合型的計算機視覺識別技術。隨著機器學習、深度學習等技術的發…

重學前端學習筆記(二十二)--選擇器的機制

筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完整的可以加入winter的專欄學習【原文…

Windows+VS2013爆詳細Caffe編譯安裝教程

1. 安裝cuda Cuda是英偉達推出的GPU加速運算平臺 我這里安裝的是cuda7.5,已經安裝過的忽略,還沒有安裝過的這里有安裝教程.windows下面安裝還是非常簡單的. 點擊打開鏈接 (我的顯卡是1080 現在支持cuda8.0 所以我下的是8.0) 2. 下載cuDNN(其實是個壓縮…

CF 526F Max Mex(倍增求LCA+線段樹路徑合并)

Max Mex 題目地址&#xff1a;https://codeforces.com/contest/1084/problem/F然后合并時注意分情況討論&#xff1a; 參考代碼&#xff1a;1 #include<bits/stdc.h>2 using namespace std;3 #define pb push_back4 #define mkp make_pair5 #define fi first6 #define se…

大學剛畢業,零基礎大數據如何入門?

這篇文章中&#xff0c;本文作者將針對三種不同的、想要進入數據科學領域的人群&#xff0c;給出自己的經驗&#xff0c;幫助他們迅速有效入行。無論是軟件工程師、應屆畢業生&#xff0c;還是完全初學者&#xff0c;都要問自己一個關鍵問題&#xff1a;什么樣的職業軌跡最接近…

Opencv EmguCv 基本識別步驟

{//1.灰度化&#xff0c;豎向邊緣檢測//2.自適應二值化處理//3.形態學處理&#xff08;膨脹和腐蝕&#xff09;//4.輪廓查找與篩選Image<Bgr, byte> simage OriImage; //new Image<Bgr, byte>("license-plate.jpg");//Image<Bgr, Byte> simage…

(轉)Java中的守護線程

Java的守護線程與非守護線程 守護線程與非守護線程 最近在看多線程的Timer章節&#xff0c;發現運用到了守護線程&#xff0c;感覺Java的基礎知識還是需要補充。 Java分為兩種線程&#xff1a;用戶線程和守護線程 所謂守護線程是指在程序運行的時候在后臺提供一種通用服務的線程…

vue項目中對axios的全局封裝

項目中接口會很多&#xff0c;個人喜歡創建api文件對請求統一管理1.新建api文件夾&#xff0c;文件夾下創建 axios.js&#xff0c;login.js2. axios.jsimport axios from axiosimport router from ../router //引入路由是為了做重定向&#xff0c;比如沒有登錄過期定向到登錄頁…

輪廓檢測

輪廓&#xff08;Contours&#xff09;&#xff0c;指的是有相同顏色或者密度&#xff0c;連接所有連續點的一條曲線。檢測輪廓的工作對形狀分析和物體檢測與識別都非常有用。 在輪廓檢測之前&#xff0c;首先要對圖片進行二值化或者Canny邊緣檢測。在OpenCV中&#xff0c;尋找…

【大數據】阿里云大數據助理工程師認證(ACA)課程

阿里云大數據助理工程師認證&#xff08;Alibaba Cloud Certified Associate&#xff0c;ACA&#xff09; 是面向使用阿里云大數據產品的專業技術認證&#xff0c;主要涉及阿里云的大數據計算、存儲、開發平臺&#xff0c;數據應用類的基礎產品。是對學員掌握阿里云大數據產品技…

WebGL——osg框架學習一

從今天開始&#xff0c;我們開始正式的學習osg框架&#xff0c;今天我們學習的是osg的渲染模塊&#xff0c;我們來看一下代碼結構。 所有DrawXXX的js模塊都是渲染的模塊&#xff0c;我們逐一來簡單介紹一下&#xff0c;第一個Drawable.js&#xff0c;這個模塊是描述可繪制對象的…

EmguCV 一些基本操作

一、先是在程序中圖像的導入&#xff0c;我是根據圖像路徑實現&#xff0c;其中path是string類型&#xff0c;是圖像路徑。 IntPtr imgCvInvoke.cvLoadImage(path, Emgu.CV.CvEnum.LOAD_IMAGE_TYPE.CV_LOAD_IMAGE_ANYCOLOR); 二、圖像灰度化處理&#xff0c;先創建一幅尺寸大小…

Java字符串分割

java中字符串的分割函數&#xff0c;split("你想要分割的字符", 你想要最多分割為多少段&#xff0c;正整數&#xff09; 注意事項&#xff1a; 1.分割特殊字符考慮轉義字符的使用。如&#xff1a; . \ | 2.第二個參數&#xff1a; 無&#xff1a; 不傳默認分割全部…

OpenCV人臉識別的原理 .

在之前講到的人臉測試后&#xff0c;提取出人臉來&#xff0c;并且保存下來&#xff0c;以供訓練或識別是用&#xff0c;提取人臉的代碼如下&#xff1a; [html] view plaincopy print?void GetImageRect(IplImage* orgImage, CvRect rectInImage, IplImage* imgRect,double s…