0203使用规则-索引-MySQL
文章目录
- 1 联合索引
- 1.1 最左前缀法则
- 1.2 范围查询
- 2 索引失效
- 2.1 常见情况
- 2.2 数据分布影响
- 3 SQL提示
- 4 覆盖索引和回表查询
- 5 前缀索引
- 6 单列和联合索引
- 7 设计原则
- 结语
1 联合索引
1.1 最左前缀法则
在Mysql数据库中创建了联合索引(或称复合索引,即包含多个列的索引),要遵循最左前缀法则。最左前缀法则指的是查询从索引最左列开始,不跳过中间列。
- 如果跳过某一中间列,索引将部分失效(后面的字段索引失效)。
示例,以之前的tb_user1表为例,数据如下表所示:
id | name | phone | profession | age | gender | status | createtime | |
---|---|---|---|---|---|---|---|---|
1 | 吕布 | 17799990000 | lvbu666@163.com | 软件工程 | 23 | 1 | 6 | 2001-02-02 00:00:00 |
2 | 曹操 | 17799990001 | caocao666@qq.com | 通讯工程 | 33 | 1 | 0 | 2001-03-05 00:00:00 |
3 | 赵云 | 17799990002 | 17799990@139.com | 英语 | 34 | 1 | 2 | 2002-03-02 00:00:00 |
4 | 孙悟空 | 17799990003 | 17799990@sina.com | 工程造价 | 54 | 1 | 0 | 2001-07-02 00:00:00 |
5 | 花木兰 | 17799990004 | 19980729@sina.com | 软件工程 | 23 | 2 | 1 | 2001-04-22 00:00:00 |
6 | 大乔 | 17799990005 | daqiao666@sina.com | 舞蹈 | 22 | 2 | 0 | 2001-02-07 00:00:00 |
7 | 露娜 | 17799990006 | luna_love@sina.com | 应用数学 | 24 | 2 | 0 | 2001-02-08 00:00:00 |
8 | 程咬金 | 17799990007 | chengyaojin@163.com | 化工 | 38 | 1 | 5 | 2001-05-23 00:00:00 |
9 | 项羽 | 17799990008 | xiaoyu666@qq.com | 金属材料 | 43 | 1 | 0 | 2001-09-18 00:00:00 |
10 | 白起 | 17799990009 | baiqi666@sina.com | 机械工程及其自动化 | 27 | 1 | 2 | 2001-08-16 00:00:00 |
11 | 韩信 | 17799990010 | hanxin520@163.com | 无机非金属材料工程 | 27 | 1 | 0 | 2001-06-12 00:00:00 |
12 | 荆轲 | 17799990011 | jingke123@163.com | 会计 | 29 | 1 | 0 | 2001-05-11 00:00:00 |
13 | 兰陵王 | 17799990012 | lanlinwang666@126.com | 工程造价 | 44 | 1 | 1 | 2001-04-09 00:00:00 |
14 | 狂铁 | 17799990013 | kuangtie@sina.com | 应用数学 | 43 | 1 | 2 | 2001-04-10 00:00:00 |
15 | 貂蝉 | 17799990014 | 84958948374@qq.com | 软件工程 | 40 | 2 | 3 | 2001-02-12 00:00:00 |
16 | 妲己 | 17799990015 | 2783238293@qq.com | 软件工程 | 31 | 2 | 0 | 2001-01-30 00:00:00 |
17 | 芈月 | 17799990016 | xiaomin2001@sina.com | 工业经济 | 35 | 2 | 0 | 2000-05-03 00:00:00 |
18 | 嬴政 | 17799990017 | 8839434342@qq.com | 化工 | 38 | 1 | 1 | 2001-08-08 00:00:00 |
19 | 狄仁杰 | 17799990018 | jujiamlm8166@163.com | 国际贸易 | 30 | 1 | 0 | 2007-03-12 00:00:00 |
20 | 安琪拉 | 17799990019 | jdodm1h@126.com | 城市规划 | 51 | 2 | 0 | 2001-08-15 00:00:00 |
21 | 典韦 | 17799990020 | ycaunanjian@163.com | 城市规划 | 52 | 1 | 2 | 2000-04-12 00:00:00 |
22 | 廉颇 | 17799990021 | lianpo321@126.com | 土木工程 | 19 | 1 | 3 | 2002-07-18 00:00:00 |
23 | 后羿 | 17799990022 | altycj2000@139.com | 城市园林 | 20 | 1 | 0 | 2002-03-10 00:00:00 |
24 | 姜子牙 | 17799990023 | 37483844@qq.com | 工程造价 | 29 | 1 | 4 | 2003-05-26 00:00:00 |
tb_user1表中索引如下所示:
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression
tb_user1 0 PRIMARY 1 id A 24 BTREE YES
tb_user1 0 idx_tb_user1_phone 1 phone A 24 BTREE YES
tb_user1 1 idx_tb_user1_name 1 name A 24 BTREE YES
tb_user1 1 idx_tb_user1_pro_age_sta 1 profession A 16 YES BTREE YES
tb_user1 1 idx_tb_user1_pro_age_sta 2 age A 22 YES BTREE YES
tb_user1 1 idx_tb_user1_pro_age_sta 3 phone A 24 BTREE YES
其中有我们之前创建的联合索引idx_tb_user1_pro_age_sta,字段及顺序profession,age,status
测试开始
-
执行如下sql语句
explain select * from tb_user1 where profession='软件工程' and age=31 and `status`='0'; -- 结果 id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE tb_user1 ref idx_user1_profession_age_sta idx_user1_profession_age_sta 54 const,const,const 1 100.00
- 字段过滤顺序profession,age,status,符合最左前缀法则,其中key_len为54
-
执行如下sql语句
explain select * from tb_user1 where profession='软件工程' and age=31; -- 查询结果 1 SIMPLE tb_user1 ref idx_user1_profession_age_sta idx_user1_profession_age_sta 49 const,const 1 100.00
- 字段过滤顺序profession,age 符合最左前缀法则,其中key_len为49,status字段长度为5
-
执行如下sql语句
explain select * from tb_user1 where profession='软件工程'; -- 查询结果 1 SIMPLE tb_user1 ref idx_user1_profession_age_sta idx_user1_profession_age_sta 47 const 4 100.00
- 字段过滤顺序profession符合最左前缀法则,其中key_len为47,profession字段长度47,age字段长度2
-
执行如下sql语句
explain select * from tb_user1 where age=31 and `status`='0'; -- 查询结果 1 SIMPLE tb_user1 ALL 24 4.17 Using where
- 缺失索引最左侧列,符合最左前缀法则,索引失效,使用全表扫描。
-
执行如下sql语句
explain select * from tb_user1 where profession='软件工程' and `status`='0'; -- 查询结果 1 SIMPLE tb_user1 ref idx_user1_profession_age_sta idx_user1_profession_age_sta 47 const 4 10.00 Using index condition
- 缺失索引对应的age列,age列对应索引及之后部分索引失效
-
执行如下sql语句
explain select * from tb_user1 where `status`='0' and profession='软件工程' and age=31; -- 查询结果 1 SIMPLE tb_user1 ref idx_user1_profession_age_sta idx_user1_profession_age_sta 54 const,const,const 1 100.00
- 最左前缀法则和sql中放的位置无关,只是看是否按创建索引顺序有没有(包含)。
1.2 范围查询
联合索引中,出现范围查询(>,<),范围查询右侧的列索引失效。
以上述表为例
-
执行sql语句
explain select * from tb_user1 where profession='软件工程' and age>30 and `status`='0'; -- 查询结果 1 SIMPLE tb_user1 range idx_user1_profession_age_sta idx_user1_profession_age_sta 49 2 10.00 Using index condition
- age列索引右侧status列索引失效
-
执行sql语句
explain select * from tb_user1 where profession='软件工程' and age>=30 and `status`='0'; -- 查询结果 1 SIMPLE tb_user1 range idx_user1_profession_age_sta idx_user1_profession_age_sta 54 2 10.00 Using index condition
- 业务条件允许的情况下范围查询尽量使用>=或者<=
2 索引失效
2.1 常见情况
-
索引列运算:不要在索引列上进行运算操作,否则索引将失效
-
我们想查询手机号后两位为15的人员信息
explain select * from tb_user1 where SUBSTR(phone,10,2)='15'; -- 查询结果 1 SIMPLE tb_user1 ALL 24 100.00 Using where
-
-
字符串不加单引号:字符串类型字段使用时,不加引号,单列索引将失效,联合索引当前列及之后索引列失效。
explain select * from tb_user1 where phone = 17799990002; -- 查询结果 1 SIMPLE tb_user1 ALL idx_tb_user1_phone 24 10.00 Using where explain select * from tb_user1 where phone = '17799990002'; -- 查询结果 1 SIMPLE tb_user1 const idx_tb_user1_phone idx_tb_user1_phone 46 const 1 100.00 explain select * from tb_user1 where profession='软件工程' and age=31 and `status`=0; -- 查询结果 1 SIMPLE tb_user1 ref idx_user1_profession_age_sta idx_user1_profession_age_sta 49 const,const 1 10.00 Using index condition -- 虽然使用了索引但是status 字段没加单引号该列索引失效
-
模糊匹配:如果仅仅是尾部模糊匹配,索引不会失效。如果是头部模糊匹配,索引失效。
explain select * from tb_user1 where profession like '软件%'; -- 查询结果 1 SIMPLE tb_user1 range idx_user1_profession_age_sta idx_user1_profession_age_sta 47 4 100.00 Using index condition explain select * from tb_user1 where profession like '%工程'; -- 查询结果 1 SIMPLE tb_user1 ALL 24 11.11 Using where
-
or链接的条件:用or链接的条件,如果任一条件没有索引,那么所有索引都不会生效;当所有条件列都有索引,索引才会生效;
explain select * from tb_user1 where age=20 or id=1; -- 查询结果 1 SIMPLE tb_user1 ALL PRIMARY 24 13.75 Using where explain select * from tb_user1 where id=20 or phone='1111'; -- 查询结果 1 SIMPLE tb_user1 index_merge PRIMARY,idx_tb_user1_phone PRIMARY,idx_tb_user1_phone 4,46 2 100.00 Using union(PRIMARY,idx_tb_user1_phone); Using where
- age列没有单列索引,也没在联合索引的最左侧。
2.2 数据分布影响
-
如果MySQL评估使用索引比全表慢,则使用索引。
explain select * from tb_user1 where phone >= '17799990012'; -- 查询结果 1 SIMPLE tb_user1 range idx_tb_user1_phone idx_tb_user1_phone 46 12 100.00 Using index condition explain select * from tb_user1 where phone >= '17799990011'; -- 查询结果 1 SIMPLE tb_user1 ALL idx_tb_user1_phone 24 54.17 Using where
- 结果集记录大于等于一半时,全表扫描;小于一半时,使用索引;
-
数据分布对null和not null影响
-- 表中profession 字段值全部非null explain select * from tb_user1 where profession is null; -- 查询结果 1 SIMPLE tb_user1 ref idx_user1_profession_age_sta idx_user1_profession_age_sta 47 const 1 100.00 Using index condition -- 把professon 字段全部置为null,在此直线上述查询,结果 1 SIMPLE tb_user1 ALL idx_user1_profession_age_sta 24 100.00 Using where
3 SQL提示
- SQL提示是优化数据库的一个重要手段,简单来说,就是在SQL语句中加入一些任务的提示来达到优化操作的目的。
现在我们在tb_user1表的profession
字段上有单列索引和联合索引,默认使用哪个索引呢?
explain select * from tb_user1 where profession='软件工程';
-- 查询结果
1 SIMPLE tb_user1 ref idx_user1_profession_age_sta,idx_user1_pro idx_user1_profession_age_sta 47 const 4 100.00
-
默认使用的联合索引
-
use index:建议使用索引
explain select * from tb_user1 use index(idx_user1_pro) where profession='软件工程'; -- 查询结果 1 SIMPLE tb_user1 ref idx_user1_pro idx_user1_pro 47 const 4 100.00
-
ignore index:忽略索引
explain select * from tb_user1 ignore index(idx_user1_pro) where profession='软件工程'; -- 查询结果 1 SIMPLE tb_user1 ref idx_user1_profession_age_sta idx_user1_profession_age_sta 47 const 4 100.00
-
force index:强制使用索引
explain select * from tb_user1 FORCE index(idx_user1_pro) where profession='软件工程'; -- 查询结果 1 SIMPLE tb_user1 ref idx_user1_pro idx_user1_pro 47 const 4 100.00
4 覆盖索引和回表查询
覆盖索引是一种优化技术,可以提高查询性能,特别是在查询涉及到大量数据列时。当一个查询可以直接使用索引来满足查询需求,而无需访问实际的数据行时,就称之为覆盖索引。
覆盖索引的优势在于,它可以减少磁盘I/O和CPU开销,因为数据库不需要访问实际的数据行,而只需读取索引所包含的列数据即可完成查询。这对于大型数据表和复杂查询特别有用,可以显著提高查询性能。
要创建一个覆盖索引,需要确保索引包含了查询所需的所有列。通常,只需要在SELECT子句中列出需要的列,而不需要SELECT *(选择所有列)。然后,创建一个多列索引,包括查询所需的列。当查询时,MySQL将使用该索引来直接满足查询需求。
需要注意的是,覆盖索引在某些情况下可能不适用或效果有限。例如,如果查询涉及大量的列或复杂的计算,覆盖索引可能无法满足查询需求。此外,过多的索引可能会增加写操作的开销,因为每次修改数据时,都需要更新索引。因此,在创建索引时需要权衡索引的数量和覆盖的列,以及对读写性能的影响。
MySQL的回表查询是在使用非覆盖索引的情况下,当需要获取查询结果中的列不在索引中时,MySQL需要通过回表操作来获取缺失的列数据。
当执行一个查询时,MySQL会首先使用索引定位到满足查询条件的行,但索引中只包含了部分列的数据。如果查询结果需要包含其他列,MySQL就需要通过回表操作去主键索引或聚集索引中查找并获取这些列的数据。
回表查询的过程可以分为两个步骤:
- 使用索引定位:MySQL首先使用非覆盖索引定位到满足查询条件的行,这一步的效率相对较高,因为索引的数据量通常比实际数据行少。
- 回表获取数据:MySQL通过找到的索引中的主键或聚集索引的值,再去主键索引或聚集索引中查找并获取查询结果所需的其他列数据。这一步需要额外的I/O操作,因为需要读取实际的数据行。
示例如下:
explain select id, profession, age, status from tb_user1 where profession='软件工程' and age=31 and `status`='0';
-- 查询结果
1 SIMPLE tb_user1 ref idx_user1_profession_age_sta idx_user1_profession_age_sta 54 const,const,const 1 100.00 Using indexexplain select profession, email from tb_user1 where profession = '软件工程';
-- 查询结果
1 SIMPLE tb_user1 ref idx_user1_profession_age_sta idx_user1_profession_age_sta 47 const 4 100.00 explain select profession from tb_user1 where status = '0';
-- 查询结果
1 SIMPLE tb_user1 index idx_user1_profession_age_sta idx_user1_profession_age_sta 54 24 10.00 Using where; Using index
5 前缀索引
- 概述
MySQL的前缀索引是一种索引技术,它允许你为索引的列指定一个前缀长度,而不是使用完整的列值作为索引。通过指定较短的前缀长度,可以减小索引的大小,提高查询性能和减少存储空间的需求。
前缀索引的主要优势在于减小了索引的大小,因为只存储了列值的前缀而不是完整的列值。这样可以减少磁盘I/O和内存使用,特别是在具有大量数据和较长列的表中,对查询性能的提升较为显著。
-
前缀长度
- 查询条件必须符合索引的前缀。只有当查询条件也是使用相同前缀长度的列值进行匹配时,MySQL才能使用前缀索引来加速查询。否则,MySQL将无法有效地使用该索引。
- 前缀长度过短可能导致索引选择性下降。选择性指不重复的索引值和数据表总记录的比值,索引选择性越好,查询效率越高。
- 需要权衡前缀长度和查询性能。前缀长度越短,索引的大小越小,但查询性能可能会受到影响。需要根据具体的查询模式和数据分布来选择合适的前缀长度。
-
语法
create index xxx on table_name(column(长度));
选择性查看:
select count(distinct SUBSTRING(email,1,10))/count(*) from tb_user1;
-- 查询结果
1.0000select count(distinct SUBSTRING(email,1,5))/count(*) from tb_user1;
-- 查询结果
0.9583select count(distinct SUBSTRING(email,1,4))/count(*) from tb_user1;
-- 查询结果
0.9167
- 如果要平衡选择性和性能,可以截取5位
create index idx_email_5 on tb_user1(email(5));
-- 索引结果
tb_user1 1 idx_email_5 1 email A 23 5 YES BTREE YES
-- 查询示例
explain select * from tb_user1 where email like '17799%';
1 SIMPLE tb_user1 range idx_email_5 idx_email_5 23 2 100.00 Using where
6 单列和联合索引
单列索引和联合索引是在MySQL中用于优化查询性能的两种索引类型。
-
单列索引(Single-Column Index): 单列索引是指只针对单个列创建的索引。它可以加速根据该列进行等值比较(例如"=“)或范围比较(例如”<“、”>")的查询。当查询涉及到单个列时,单列索引是最常见和简单的索引类型。
-
联合索引(Composite Index): 联合索引是指基于多个列创建的索引,也称为复合索引或多列索引。它可以加速涉及到联合索引中的多个列的查询条件的查询。当查询条件涉及到多个列时,联合索引可以提供更好的查询性能。
-
示例
-- 两个单列索引情况 explain select id, phone, name from tb_user1 where name='项羽' and phone='17799990008'; -- 查询结果 1 SIMPLE tb_user1 const idx_tb_user1_phone,idx_tb_user1_name idx_tb_user1_phone 46 const 1 100.00
- 使用phone字段建立的索引,并且回表查询
-- 同一字段上既有单列索引又联合索引时,可以指定索引 见## 3 SQL提示
联合索引的创建顺序非常重要。MySQL使用联合索引按照索引的列顺序进行排序和存储数据。因此,如果查询条件只涉及到联合索引的前缀列,那么MySQL可以有效地使用该索引。这就是最左前缀法则,可以帮助优化查询性能。
需要注意的是,使用过多的索引可能会增加写操作的开销,因为每次修改数据时,都需要更新索引。因此,在创建索引时需要谨慎权衡索引的数量和覆盖的列,以及对读写性能的影响。
综上所述,单列索引和联合索引都是优化查询性能的重要工具。选择何种索引类型,取决于查询的特点和需求。在设计和创建索引时,需要考虑查询模式、数据分布和性能需求等因素,以获得最佳的查询性能。
7 设计原则
在设计索引时,可以考虑以下原则来提高查询性能和减少存储空间的需求:
- 针对表数据量大,且查询频繁的表建立索引;
- 选择合适的索引列:选择那些经常用于查询条件、连接操作或排序/分组操作的列作为索引列。重点考虑经常被查询的列和高选择性的列,以获得更好的索引效果。
- 注意索引的长度和类型:对于字符串列,可以考虑只选择前缀作为索引,以减小索引的大小。对于数值列,使用适当的数据类型,以减少存储空间和提高索引效率。
- 尽量使用联合索引,减少单列索引。查询时,联合索引很多时候可以覆盖索引,节省存储空间,避免回表,提供查询效率;
- 避免过多索引:过多的索引会增加存储空间和维护开销,并可能降低写操作的性能。只创建那些真正需要的索引,权衡索引的数量和覆盖的列。
- 定期维护索引:随着数据的增加和修改,索引可能需要进行重建或优化。定期检查和维护索引的统计信息,以保持索引的有效性和性能。
- 注意查询的顺序:对于复杂的查询语句,考虑查询的顺序和使用子查询来利用索引。优化查询语句的结构和逻辑,以充分利用索引的优势。
- 如果列不能存储NULL值,建表时使用NOT NULL 约束。
综上所述,索引设计是一个权衡和优化的过程。需要根据具体的应用需求、数据分布和查询模式来选择合适的索引策略。理解数据和查询的特点,并遵循上述原则,可以提高查询性能和优化数据库的使用。
结语
如果小伙伴什么问题或者指教,欢迎交流。
❓QQ:806797785
参考链接:
[1]MySQL数据库视频[CP/OL].2020-04-16.p79-88.
相关文章:
0203使用规则-索引-MySQL
文章目录 1 联合索引1.1 最左前缀法则1.2 范围查询 2 索引失效2.1 常见情况2.2 数据分布影响 3 SQL提示4 覆盖索引和回表查询5 前缀索引6 单列和联合索引7 设计原则结语 1 联合索引 1.1 最左前缀法则 在Mysql数据库中创建了联合索引(或称复合索引,即包含…...

LVS+Keepalived群集
一、Keepalived概述 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。 在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,…...

抖音矩阵系统源代码开发部署--源码搭建
抖音矩阵系统是一个具有强大功能的开放性平台,通过数据挖掘技术能够实现精准的用户画像和个性化推荐,这也是抖音成为国内最受欢迎的短视频平台之一的原因之一。矩阵系统的开发需要大量的技术支持和数据分析,同时也需要综合运用大数据、机器学…...

如何用Jmeter进行接口测试 ,这应该是全网最详细的教程了
一、Jmeter 的使用步骤 打开Jmeter 安装包,进入\bin 中,找到"jmeter.bat", 点击打开即可。 在下图打开的Jmeter 页面中,右键“测试计划” -> “添加” -> "Threads(Users)" -> “线程组”, 建立线…...

C语言---malloc(0)会产生什么结果,真的是空指针吗?
前言 (1)几天前在一个交流群中看到有人说,面试问malloc(0)会怎么样是真的恶心。 (2)这个突然激起了我的好奇心。居然还可以malloc(0)?! (3)经过测试最后,发现…...

建模助手618 | 谁不囤点Revit插件我都会生气!
大家好,这里是建模助手。 早在5月份,我们已经就“618”这个事情高调了一番,以提前放“价”的姿势,让许多用户以躺赢的状态拉开了年中大促的序幕。(5月购买的盆友,切记看完全文,内附彩蛋 活动反…...
【“职场程序员是否会保护自己的隐私?为何要求程序员之间保密薪资?”】
职场程序员之间确实有一些秘密,其中之一便是对薪资保密。这并非完全是程序员们的独立行为,而是因为一些公司或组织规定员工之间不能互相透露薪水信息。 第一个原因是保护公司自身利益。如果一个程序员知道其他同事的薪资水平比自己高,他可能…...

企业工程管理系统源码之提高工程项目管理软件的效率
高效的工程项目管理软件不仅能够提高效率还应可以帮你节省成本提升利润 在工程行业中,管理不畅以及不良的项目执行,往往会导致项目延期、成本上升、回款拖后,最终导致项目整体盈利下降。企企管理云业财一体化的项目管理系统,确保…...

创新指南 | 推动销售的17个可落地的集客式营销示例
无论您是开启集客式的营销有一段时间还是处于起步阶段,了解像您这样的企业是如何粉碎竞争对手的的集客式策略总是有帮助的。无论您的公司做什么,它所服务的行业,是B2B还是B2C ,您都可以在这里找到许多可以使用的示例。 在本文中&…...

ASEMI代理光宝光耦LTV-0314的应用与优势
编辑-Z 在电子设备的设计和制造过程中,光耦合器是一种至关重要的组件。它们在电路中起到隔离作用,保护电子设备免受电压冲击和电流过载的影响。今天,我们将深入探讨一种特殊的光耦合器——LTV-0314,它的特性、应用以及优势。 一、…...

Apikit 自学日记: Apikit 如何发起测试
进入 API 文档详情页,点击上方 测试 标签,进入 API 测试页,系统会根据API文档自动生成测试界面并且填充测试数据。 填写请求参数 首先填写好请求参数。 请求头部 您可以输入或导入请求头部。批量导入的数据格式为 key : value ,…...
python-glob模块_表格及代码样例
glob模块 文章目录 glob模块1. glob.glob(pathname):根据指定的模式匹配文件路径,并返回匹配的路径列表2. glob.iglob(pathname):返回一个迭代器,逐个匹配文件路径,适用于大量文件的情况3. glob.escape(pathname)&…...

GitHub Copilot 最全安装、使用
GitHub Copilot 最全安装、使用教程 一、温馨提示 GitHub Copilot 目前为止可以免费试用一个月,但是试用的前提是必须要绑定银行卡,因为后续会自动扣费,所以请注意试用结束日期,自己定好闹钟关闭订阅。 订阅价格为每月10美刀&a…...

C语言 指针(特别篇)
本篇目录 C语言 指针(特别篇)内存地址简要介绍C语言指针C语言的指针可以指向什么?取地址符 &(Address-of Operator)C语言中的 * 号运算符示例集:指向变量的指针指向数组的指针指向字符串的指针二级指针指针数组的…...

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(5月26日论文合集)
文章目录 一、检测相关(9篇)1.1 Energy-based Detection of Adverse Weather Effects in LiDAR Data1.2 Anomaly Detection with Conditioned Denoising Diffusion Models1.3 Mask Attack Detection Using Vascular-weighted Motion-robust rPPG Signals1.4 Improved Multi-Sca…...
网络编程与自动化(python)
20.1 网络编程与自动化概述 传统网络运维困境大家在日常的网络运维中是否遇到过如下问题: 设备升级:现网有数千台网络设备,你需要周期性、批量性地对设备进行升级。配置审计:企业年度需要对设备进行配置审计。例如要求所有设备开启sTelnet功能,以太网交换机配置生成树安全…...
有趣的数学 对称/非对称加密简史及数学原理一览
一、非对称加密简史 1、算法建立 对于任何想发送加密信息的人,另一个问题是如何让接收人知道这条信息一开始是如何加密的。对于像字母替换式密码这样的密码,问题在于,一旦窃听者知道了加密方案,后续的信息都可以轻松获取。 公钥加…...

AI大模型落地不远了!首个全量化Vision Transformer的方法FQ-ViT(附源代码)
点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID|计算机视觉研究院 学习群|扫码在主页获取加入方式 论文地址:https://arxiv.org/pdf/2111.13824.pdf 项目代码:https://github.com/megvii-research/FQ-ViT 计…...

YouTubeDNN
这个youTubeDNN主要是工程导向,对于推荐方向的业界人士真的是必须读的一篇文章。它从召回到排序整个流程都做了描述,真正是在工业界应用的经典介绍。 作者首先说了在工业上YouTube视频推荐系统主要面临的三大挑战: 1.Scale(规模)࿱…...

面向对象的介绍和内存
学习面向对象内容的三条主线 • Java 类及类的成员:(重点)属性、方法、构造器;(熟悉)代码块、内部类 • 面向对象的特征:封装、继承、多态、(抽象) • 其他关键字的使用…...

大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
xmind转换为markdown
文章目录 解锁思维导图新姿势:将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件(ZIP处理)2.解析JSON数据结构3:递归转换树形结构4:Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...
【WebSocket】SpringBoot项目中使用WebSocket
1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖,添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...