MySQL-索引
索引介绍
索引是对数据库表中一列或者多列的值进行排序的一种结构,使用索引可提高数据库中特定数据的查询速度。
索引是一个单独的、存储在磁盘上的数据库结构,它们包含着对数据表里所有记录的引用指针。使用索引用于快速找出在某个或多个列中有一特定值得行,所有MySQL列类型都可以被索引,对相关列使用索引是提高查询操作速度的最佳途径。
索引是在存储引擎中实现的,因此,每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持索引类型。
根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。 MyISAM ,InnoDB支持btree索引Memory 支持 btree和hash索引
索引的优势
加快查询速度
创建唯一索引来保证数据表中数据的唯一性
实现数据的完整性,加速表和表之间的连接
减少分组和排序的时间
增加索引
增加索引也有许多不利,主要表现在如下几个方面:
创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加。
索引需要占磁盘空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果有大量的索引,索引文件可能比数据文件更快达到最大文件尺寸。
当对表中的数据进行增加、删除和修改的时候,索引也要动态地维护,这样就降低了数据的维护速度。
索引的分类
唯一索引和普通索引 普通索引是MySQL中的基本索引类型,允许在定义索引的列中插入重复值和空值。唯一索引,索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。主键索引是一种特殊的唯一索引,不允许有空值。
单列索引和组合索引 单列索引即一个索引只包含单个列,一个表可以有多个单列索引。 组合索引指在表的多个字段组合上创建的索引。只有在查询条件中使用了这些字段的左边字段时,索引才会被使用。使用组合索引时遵循最左前缀集合。
全文索引 fulltext 全文索引类型为FULLTEXT,在定义索引的列上支持值得全文查找,允许在这些索引列中插入重复值和空值。全文索引可以在CHAR、VARCHAR或者TEXT类型的列上创建。MySQL中只有MyISAM存储引擎支持全文索引。
空间索引 空间索引是对空间数据类型的字段建立的索引,MySQL中的空间数据类型有4中,分别是:geometry、point、linstring和polygon 。MySQL使用SPATIAL关键字进行扩展,使得能够用于创建空间索引的列,必须将其声明为NOT NULL,空间索引只能在存储引擎为MyISAM的表中创建。
创建索引的规则
(1)创建索引并非是越多越好,一个表中如果有大量的索引,不仅占用磁盘空间,而且会影响insert、delete、update等语句的性能。因为当表中的数据更改时,索引也会进行调整和更新。
(2)数据量小得表最好不要创建索引,由于数据较少,查询花费的时间可能比遍历索引的时间还要长。
(3)避免对经常更新的数据创建索引。而对经常用于查询的字段应该创建索引。
(4)在条件表达式中经常用到的不同值较多的列创建索引
(5)当唯一性是某种数据本身的特征时,我们创建唯一性索引
(6)在频繁进行排序或分组的列上建立索引,如果排序的列有多个,可以创建组合索引
创建索引
Create index 创建索引
alter table 添加索引
Create table 表名[字段名 数据类型] [unique唯一索引|fulltext全文索引|spatial空间索引] [index|key] [索引名] (col_name [length]) [asc |desc]
普通索引
普通索引是最基础的索引类型,没有唯一性的限制。作用是只加快对数据的访问速度。
先创建book表,创建索引为year_publication
mysql> 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_publication YEAR NOT NULL,-> INDEX(year_publication)-> );
Query OK, 0 rows affected (0.03 sec)
查看创建的索引
注:\G结尾表示纵向查看
mysql> show create table book\G
*************************** 1. row ***************************Table: book
Create Table: CREATE TABLE `book` (`bookid` int(11) NOT NULL,`bookname` varchar(255) COLLATE utf8_bin NOT NULL,`authors` varchar(255) COLLATE utf8_bin NOT NULL,`info` varchar(255) COLLATE utf8_bin DEFAULT NULL,`comment` varchar(255) COLLATE utf8_bin DEFAULT NULL,`year_publication` year(4) NOT NULL,KEY `year_publication` (`year_publication`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1 row in set (0.00 sec)
explain
使用该命令判断索引是否正在被使用
mysql> explain select * from book where year_publication=1999\G
*************************** 1. row ***************************id: 1select_type: SIMPLEtable: bookpartitions: NULLtype: ref
possible_keys: year_publicationkey: year_publicationkey_len: 1ref: constrows: 1filtered: 100.00Extra: Using index condition
1 row in set, 1 warning (0.00 sec)
TYPE的取值范围 System const ref eq_ref index all range
唯一索引
创建唯一索引 唯一索引主要原因是减少查询索引列操作的执行时间。尤其是对比比较庞大的数据表。与普通索引类似,不同点在于:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。
创建唯一索引
mysql> CREATE TABLE t1-> (-> id INT NOT NULL,-> name CHAR(30) NOT NULL,-> UNIQUE INDEX UniqIdx(id)-> );
Query OK, 0 rows affected (0.00 sec)
查看唯一索引
mysql> show create table t1\G
*************************** 1. row ***************************Table: t1
Create Table: CREATE TABLE `t1` (`id` int(11) NOT NULL,`name` char(30) COLLATE utf8_bin NOT NULL,UNIQUE KEY `UniqIdx` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1 row in set (0.00 sec)
单列索引
单列索引:是在数据表中的某一字段上创建的索引,一个表中可以创建多个单列索引。
创建单列索引
mysql> CREATE TABLE t2-> (-> id INT NOT NULL,-> name CHAR(50) NULL,-> INDEX SingleIdx(name)-> );
Query OK, 0 rows affected (0.01 sec)
查看单列索引
mysql> show create table t2\G
*************************** 1. row ***************************Table: t2
Create Table: CREATE TABLE `t2` (`id` int(11) NOT NULL,`name` char(50) COLLATE utf8_bin DEFAULT NULL,KEY `SingleIdx` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1 row in set (0.00 sec)
组合索引
组合索引:是在多个字段上创建一个索引。遵循最左前缀原则。最左前缀 索引最左边的列来匹配行
创建组合索引
mysql> CREATE TABLE t3-> (-> 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.02 sec)
查看组合索引
mysql> show create table t3\G
*************************** 1. row ***************************Table: t3
Create Table: CREATE TABLE `t3` (`id` int(11) NOT NULL,`name` char(30) COLLATE utf8_bin NOT NULL,`age` int(11) NOT NULL,`info` varchar(255) COLLATE utf8_bin DEFAULT NULL,KEY `MultiIdx` (`id`,`name`,`age`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1 row in set (0.00 sec)
组合索引可以起几个索引的作用,但是使用时并不是随意查询哪个字段都是可以使用索引。而是遵循最左前缀:利用索引中最左边的列集来匹配行。这样的列集称为最左前缀。
全文索引
全文索引:FULLTEXT,可以用于全文搜索,5.7版本以前只有MyISAM存储引擎支持,而5.7版本以后innodb存储引擎也支持,并且只为CHAR\VARCHAR和TEXT 列。索引总是对整个列进行,不支持局部索引,适合大型数据的表
创建全文索引
mysql> CREATE TABLE t4-> (-> id INT NOT NULL,-> name CHAR(30) NOT NULL,-> age INT NOT NULL,-> info VARCHAR(255),-> FULLTEXT INDEX FullIdx(info(100))-> )ENGINE=MyISAM;
Query OK, 0 rows affected (0.00 sec)
查看全文索引
mysql> show create table t4\G
*************************** 1. row ***************************Table: t4
Create Table: CREATE TABLE `t4` (`id` int(11) NOT NULL,`name` char(30) COLLATE utf8_bin NOT NULL,`age` int(11) NOT NULL,`info` varchar(255) COLLATE utf8_bin DEFAULT NULL,FULLTEXT KEY `FullIdx` (`info`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1 row in set (0.00 sec)
例:创建xx34表,info列为全文索引并搜索。
MATCH (col1,col2,...) AGAINST (expr [search_modifier])create table xx34(id int,name varchar(20),info varchar(255),fulltext index chidx(info) with parser ngram);select * from xx34 where match(info) against("主义");
空间索引
空间索引:必须在MyISAM类型的表中创建,且空间类型的字段必须为非空。
创建空间索引
mysql> CREATE TABLE t5-> (-> g GEOMETRY NOT NULL,-> SPATIAL INDEX spaIdx(g) -> )ENGINE=MyISAM;
Query OK, 0 rows affected (0.01 sec)
查看空间索引
mysql> show create table t5\G
*************************** 1. row ***************************Table: t5
Create Table: CREATE TABLE `t5` (`g` geometry NOT NULL,SPATIAL KEY `spaIdx` (`g`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1 row in set (0.00 sec)
在已经存在的表上创建索引
Alter table 表名 add [unique唯一索引|fulltext全文索引|spatial空间索引] [index|key] [默认索引名] (定义索引名[length]) [asc|desc]
添加索引
在book表添加索引
mysql> alter table book add index BKNameIdx(bookname(30));
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
查看索引
mysql> show index from book\G
*************************** 1. row ***************************Table: bookNon_unique: 1Key_name: year_publicationSeq_in_index: 1Column_name: year_publicationCollation: 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)
添加唯一索引
添加索引
mysql> alter table book add unique index Uniqldx(bookid);
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
查看索引
mysql> show index from book\G
*************************** 1. row ***************************Table: bookNon_unique: 0Key_name: UniqldxSeq_in_index: 1Column_name: bookidCollation: ACardinality: 0Sub_part: NULLPacked: NULLNull: Index_type: BTREEComment:
Index_comment:
*************************** 2. row ***************************Table: bookNon_unique: 1Key_name: year_publicationSeq_in_index: 1Column_name: year_publicationCollation: ACardinality: 0Sub_part: NULLPacked: NULLNull: Index_type: BTREEComment:
Index_comment:
*************************** 3. row ***************************Table: bookNon_unique: 1Key_name: BKNameIdxSeq_in_index: 1Column_name: booknameCollation: ACardinality: 0Sub_part: 30Packed: NULLNull: Index_type: BTREEComment:
Index_comment:
3 rows in set (0.00 sec)
添加单列索引
添加索引
mysql> alter table book add index BKidex(comment(50));
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
查看索引
mysql> show index from book\G
*************************** 1. row ***************************Table: bookNon_unique: 0Key_name: UniqldxSeq_in_index: 1Column_name: bookidCollation: ACardinality: 0Sub_part: NULLPacked: NULLNull: Index_type: BTREEComment:
Index_comment:
*************************** 2. row ***************************Table: bookNon_unique: 1Key_name: year_publicationSeq_in_index: 1Column_name: year_publicationCollation: ACardinality: 0Sub_part: NULLPacked: NULLNull: Index_type: BTREEComment:
Index_comment:
*************************** 3. row ***************************Table: bookNon_unique: 1Key_name: BKNameIdxSeq_in_index: 1Column_name: booknameCollation: ACardinality: 0Sub_part: 30Packed: NULLNull: Index_type: BTREEComment:
Index_comment:
*************************** 4. row ***************************Table: bookNon_unique: 1Key_name: BKidexSeq_in_index: 1Column_name: commentCollation: ACardinality: 0Sub_part: 50Packed: NULLNull: YESIndex_type: BTREEComment:
Index_comment:
4 rows in set (0.00 sec)
添加全文索引
添加索引
mysql> CREATE TABLE t6-> (-> id INT NOT NULL,-> info CHAR(255)-> )ENGINE=MyISAM;
Query OK, 0 rows affected (0.00 sec)mysql> ALTER TABLE t6 ADD FULLTEXT INDEX InfoFULIdx(info);
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
查看全文索引
mysql> show index from t6\G
*************************** 1. row ***************************Table: t6Non_unique: 1Key_name: InfoFULIdxSeq_in_index: 1Column_name: infoCollation: NULLCardinality: NULLSub_part: NULLPacked: NULLNull: YESIndex_type: FULLTEXTComment:
Index_comment:
1 row in set (0.00 sec)
添加组合索引
添加索引
mysql> ALTER TABLE book ADD INDEX BKAUthAndInfoIdx(authors(20),info(50));
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
查看索引
mysql> show index from book\G
*************************** 1. row ***************************Table: bookNon_unique: 0Key_name: UniqldxSeq_in_index: 1Column_name: bookidCollation: ACardinality: 0Sub_part: NULLPacked: NULLNull: Index_type: BTREEComment:
Index_comment:
*************************** 2. row ***************************Table: bookNon_unique: 1Key_name: year_publicationSeq_in_index: 1Column_name: year_publicationCollation: ACardinality: 0Sub_part: NULLPacked: NULLNull: Index_type: BTREEComment:
Index_comment:
*************************** 3. row ***************************Table: bookNon_unique: 1Key_name: BKNameIdxSeq_in_index: 1Column_name: booknameCollation: ACardinality: 0Sub_part: 30Packed: NULLNull: Index_type: BTREEComment:
Index_comment:
*************************** 4. row ***************************Table: bookNon_unique: 1Key_name: BKidexSeq_in_index: 1Column_name: commentCollation: ACardinality: 0Sub_part: 50Packed: NULLNull: YESIndex_type: BTREEComment:
Index_comment:
*************************** 5. row ***************************Table: bookNon_unique: 1Key_name: BKAUthAndInfoIdxSeq_in_index: 1Column_name: authorsCollation: ACardinality: 0Sub_part: 20Packed: NULLNull: Index_type: BTREEComment:
Index_comment:
*************************** 6. row ***************************Table: bookNon_unique: 1Key_name: BKAUthAndInfoIdxSeq_in_index: 2Column_name: infoCollation: ACardinality: 0Sub_part: 50Packed: NULLNull: YESIndex_type: BTREEComment:
Index_comment:
6 rows in set (0.00 sec)
添加空间索引
添加索引
mysql> CREATE TABLE t7-> (-> g GEOMETRY NOT NULL-> )ENGINE=MyISAM;
Query OK, 0 rows affected (0.01 sec)mysql> ALTER TABLE t7 ADD SPATIAL INDEX SpatIdx(g);
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
查看索引
mysql> show index from t7\G
*************************** 1. row ***************************Table: t7Non_unique: 1Key_name: SpatIdxSeq_in_index: 1Column_name: gCollation: ACardinality: NULLSub_part: 32Packed: NULLNull: Index_type: SPATIALComment:
Index_comment:
1 row in set (0.00 sec)
创建索引
创建一个book1表
mysql> create table book1 (bookid int not null, bookname varchar(255) not null,
-> authors varchar(255) not null, info varchar(255) null, comment varchar(255) null,
-> year_publication year not null );
Query OK, 0 rows affected (0.01 sec)
普通索引
mysql> create index bknameidex on book1(bookname);
Query OK, 0 rows affected (0.34 sec)
Records: 0 Duplicates: 0 Warnings: 0
单列索引
mysql> create index bkcmtidex on book1 (comment(50));
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
组合索引
mysql> create index bkauthandinfoidex on book1(authors(30),info(50));
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
全文索引
mysql> drop table t6;
Query OK, 0 rows affected (0.00 sec)
mysql> create table t6 ( id int not null, info char(255))engine=myisam;
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE FULLTEXT INDEX FullIdex ON t6(info);
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
唯一索引
mysql> create unique index uniqidx on book1(bookid);
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
空间索引
mysql> drop table t7;
Query OK, 0 rows affected (0.00 sec)
mysql> create table t7 ( g geometry not null )engine=myisam;
Query OK, 0 rows affected (0.00 sec)
mysql> create spatial index spaidx on t7(g);
Query OK, 0 rows affected (0.00 sec)Records: 0 Duplicates: 0 Warnings: 0
删除索引
先查看book表的索引
mysql> show create table book\G
*************************** 1. row ***************************Table: book
Create Table: CREATE TABLE `book` (`bookid` int(11) NOT NULL,`bookname` varchar(255) COLLATE utf8_bin NOT NULL,`authors` varchar(255) COLLATE utf8_bin NOT NULL,`info` varchar(255) COLLATE utf8_bin DEFAULT NULL,`comment` varchar(255) COLLATE utf8_bin DEFAULT NULL,`year_publication` year(4) NOT NULL,KEY `year_publication` (`year_publication`),KEY `bknameidx` (`bookname`(30))
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1 row in set (0.00 sec)
使用alter命令删除索引后,再次查看book表已经删除bknameidx索引。
mysql> alter table book drop index bknameidx;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> show create table book\G
*************************** 1. row ***************************Table: book
Create Table: CREATE TABLE `book` (`bookid` int(11) NOT NULL,`bookname` varchar(255) COLLATE utf8_bin NOT NULL,`authors` varchar(255) COLLATE utf8_bin NOT NULL,`info` varchar(255) COLLATE utf8_bin DEFAULT NULL,`comment` varchar(255) COLLATE utf8_bin DEFAULT NULL,`year_publication` year(4) NOT NULL,KEY `year_publication` (`year_publication`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1 row in set (0.00 sec)
使用drop index删除
mysql> show create table t7\G
*************************** 1. row ***************************Table: t7
Create Table: CREATE TABLE `t7` (`g` geometry NOT NULL,SPATIAL KEY `spatidx` (`g`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1 row in set (0.00 sec)mysql> drop index spatidx on t7;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> show create table t7\G
*************************** 1. row ***************************Table: t7
Create Table: CREATE TABLE `t7` (`g` geometry NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1 row in set (0.00 sec)
相关文章:
MySQL-索引
索引介绍索引是对数据库表中一列或者多列的值进行排序的一种结构,使用索引可提高数据库中特定数据的查询速度。索引是一个单独的、存储在磁盘上的数据库结构,它们包含着对数据表里所有记录的引用指针。使用索引用于快速找出在某个或多个列中有一特定值得…...

【STM32存储器映射-寄存器基地址-偏移】
前言 在学习STM32的时候,我们看到很多的寄存器编程, 比方说LED灯: //GPIOB.5端口输出高电平GPIOB->ODR|1<<5; //PB.5 输出高GPIOE->ODR|1<<5; //PE.5输出高 //GPIOB端口全部输出高电平*(unsigned int*)(0x4001 …...
【华为OD机试2023】最多颜色的车辆 C++ Java Python
【华为OD机试2023】最多颜色的车辆 C++ Java Python 前言 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议! 本文解法非最优解(即非性能最优),不能保证通过率。 Tips1:机试为ACM 模式 你的代码需要处理输入输出,input/cin接收…...
特斯拉后端面试(部分)
HR告知如果面试通过要转.net-_- round1 有没有用过Java新版本,知道有哪些特性吗?A:没有。Q:我们基本在用JDK11,有的新项目用到JDK17了。参考答案1: ZGC: A Scalable Low-Latency Garbage Collector Epsi…...

【python】使用python将360个文件夹里的照片,全部复制到指定的文件夹中,并且按照顺序重新命名
最近要做一个图像生成的课题,在网上找了一个混合的数据集。这个数据集中一共有360个文件夹,然后文件夹中有6-9张不等的照片,我的目标就是编写python代码将所有的照片取出来,放到一个指定的文件夹里,并且从1开始按照顺序…...

【C语言】3天速刷C语言(初识)
【声明】本篇博客只用于对与刚学习C语言的同学的一个初始了解,具体内容请继续关注本专栏后续内容。什么是C语言C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及…...

如何搞定MySQL锁(全局锁、表级锁、行级锁)?这篇文章告诉你答案!太TMD详细了!!!
概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题&…...

云计算生态该怎么做?阿里云计算巢打了个样
2023 年 2 月 23 日至 24 日,由阿里云主办的「阿里云计算巢加速器」于杭州阿里云谷园区集结。 阿里云计算巢加速器于 2022 年 8 月正式启动招募,最终百奥利盟、极智嘉、EMQ、KodeRover、MemVerge 等 30 家创新企业入选计算加速器,覆盖了人工智…...

小樽C++ 多章⑧ (贰) 指针与数组
目录 1.C中数组变量名某些情况可以看成是指针 2.C语言的scanf 输入语句,printf 输出语句 3.用指针来当动态数组 小樽C 多章⑧ (壹) 指针变量https://blog.csdn.net/weixin_44775255/article/details/129031168 小樽C 多章⑧ (叁) 指针与字符串、(肆) 函数与指针…...

MXNet的机器翻译实践《编码器-解码器(seq2seq)和注意力机制》
机器翻译就是将一种语言翻译成另外一种语言,输入和输出的长度都是不定长的,所以这里会主要介绍两种应用,编码器-解码器以及注意力机制。编码器是用来分析输入序列,解码器用来生成输出序列。其中在训练时,我们会使用一些…...

RK3588平台开发系列讲解(同步与互斥篇)自旋锁介绍
平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、自旋锁介绍二、自旋锁相关的函数1、普通场景2、进程上下文和下半部3、中断相关三、相关结构体四、函数实现1、初始化2、获取自旋锁沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇介绍自旋锁的使用和基…...

Linux系统CPU占用率较高问题排查思路
作为工程师,在日常工作中我们会遇到 Linux服务器上出现CPU负载达到100%居高不下的情况,如果CPU 持续跑高,则会影响业务系统的正常运行,带来企业损失。对于CPU过载问题通常使用以下两种方式即可快速定位:方法一第一步&a…...

源码解析——HashMap
源码解析——HashMap1. 什么 是HashMap2. 为什么要使用HashMap3. HashMap的使用4. 源码解析4.1 关键问题4.1 存储结构4.2 HashMap 的容量和负载因子4.3 初始化过程4.3 put() 方法实现原理4.3.1 hash()4.3.2 resize()4.4 get() 方法实现原理5. 面试题总结6. ConcurrentHashmap(J…...

Elasticsearch 核心技术(六):内置的 8 种分词器详解 + 代码示例
❤️ 博客主页:水滴技术 🚀 支持水滴:点赞👍 收藏⭐ 留言💬 🌸 订阅专栏:大数据核心技术从入门到精通 文章目录一、内置分词器1. Standard(标准分词器)英文示例中文示例…...

Mysql8.0的特性
Mysql8.0的特性 建议使用8.0.17及之后的版本,更新的内容比较多。 新增降序索引 -- 如下所示,我们可以在创建索引时 在字段名后面指定desc进行降序排序 create table t1(c1 int,c2 int,index idx_c1_c2(c1,c2 desc));group by 不再隐式排序 mysql5.7的版…...

JDK动态代理(tedu)(内含源代码)
JDK动态代理(tedu)(内含源代码) 源代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87546187 目录JDK动态代理(tedu)(内含源代码)源代码下载链接…...

【数据结构】二叉搜索树
1、什么是二叉搜索树二叉搜索树又称为二叉排序树,二叉也就说明它跟二叉树一样最多只能有两个度,它可以是棵空树,也可以不是棵空树,当它不是棵空树的时候需要具备以下的性质:若它的左树不为空,那么它的左树上…...

抢跑数字中国建设,青岛市统计系统考察团赴实在智能调研统计数字员工
当前,数据要素价值不断显现,数字经济正引领着政企业加快数字技术的应用,融通创新工作机制,推进高质量转型。近日,中共中央、国务院印发了《数字中国建设整体布局规划》。《规划》指出,到2025年,…...

深浅拷贝——利用模拟实现basic_string深入理解
深浅拷贝——利用模拟实现basic_string深入理解 一、深浅拷贝的基本概念 深拷贝和浅拷贝都是指在对象复制时,复制对象的内存空间的方式。 1.1 深浅拷贝的不同之处 浅拷贝是指将一个对象的所有成员变量都直接拷贝给另一个对象,包括指针成员变量&#…...

大模型分布式系统
背景:模型越来越大,训练复杂度越来越高,需要训练的时间也是越来越长。那么我们该如何在现有的硬件基础上对模型做训练呢。模型规模的扩大,对硬件(算力、内存)的发展提出要求。然而,因为 内存墙 …...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...