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.mzph.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…