MySQL中索引全详解
第一部分:什么是索引
索引在数据库中就像书的目录,能够快速定位数据位置,从而提升查询效率。没有索引时,数据库查询需要从头到尾扫描整个表(称为全表扫描),这在数据量大时非常耗时。有了索引后,查询就像查找字典中某个字母开头的单词一样,可以直接跳转到相关数据,大大加快了响应速度。
索引的原理可以简单理解为:
- 数据库通过创建额外的“数据结构”(类似目录)存储索引字段的信息。
- 查询时,数据库优先查找索引,再根据索引定位到实际数据。
- 索引对查询速度有提升,但同时也会增加写入和更新的时间,因为每次修改表数据时,索引也需要维护和更新。
简单总结,索引的核心作用是提高查询速度,但这是一种以额外存储和维护成本换取查询效率的优化方式。
第二部分:索引的分类
我们按照三个角度来详细分析索引的分类:数据结构、字段特性、字段个数。
1.按数据结构分类
这是基于索引底层的存储和组织方式来划分的,常见的有以下三种:
1.1 B+Tree 索引
-
原理:
- B+Tree 索引是 MySQL 中最常用的索引结构,底层采用的是平衡多路搜索树。
- 数据以“节点”的形式存储,叶子节点存储了表中所有的索引字段值,并以链表形式连接;非叶子节点作为目录,用于快速查找。
- 查找过程:从根节点开始,依次向下遍历,直到叶子节点。
-
特点:
- 有序存储,支持范围查询。
- 查询效率稳定,查找时间复杂度为 O(logn)O(logn)。
- 适用于大多数场景,包括等值查询、范围查询、排序等。
-
适用场景:
- 查询条件中包含范围操作(如
BETWEEN
、> <
)。 - 常见于主键索引和普通索引。
- 查询条件中包含范围操作(如
-
局限性:
- 如果字段值分布不均匀,可能导致某些查询的效率下降。
- 对频繁插入或更新的大表性能有一定影响,因为需要维护树的平衡。
1.2 Hash 索引
-
原理:
- 使用哈希函数将字段值映射为哈希值,哈希值对应实际数据的位置。
- 适合等值查询,类似于通过钥匙直接打开锁。
-
特点:
- 查询速度极快,时间复杂度接近 O(1)O(1)。
- 不支持范围查询,因为哈希值无法保持顺序性。
- 哈希冲突可能影响性能。
-
适用场景:
- 等值查询场景,例如
WHERE id = 10
。 - 用于对性能要求极高、数据分布均匀的表。
- 等值查询场景,例如
-
局限性:
- 不支持范围查询(如
BETWEEN
、> <
)。 - 不适合排序或分组操作。
- 不支持范围查询(如
1.3 Full-Text 索引
-
原理:
- 专门为全文搜索设计的一种索引,类似搜索引擎的倒排索引。
- 将文本内容切分为关键词,并建立关键词到文档的映射关系。
-
特点:
- 支持模糊查询、多关键字匹配。
- 效率远高于使用
LIKE '%...%'
的查询方式。
-
适用场景:
- 对大文本字段(如文章、评论)进行搜索,例如实现类似搜索引擎的功能。
-
局限性:
- 配置复杂,只支持特定存储引擎(如 MyISAM、InnoDB 的部分版本)。
- 对于频繁更新的大文本字段性能较差。
2. 按字段特性分类
这是基于字段在表中的角色和限制条件来划分的,主要有以下几种:
2.1 主键索引
-
定义:
- 主键是表中的唯一标识,每张表只能有一个主键。主键索引是数据库默认为主键字段生成的索引。
-
特点:
- 唯一性,保证每行数据的主键值不同。
- 主键索引一般使用 B+Tree 实现,叶子节点存储完整的行数据。
-
适用场景:
- 必须保证数据唯一性,例如用户 ID、订单号等。
2.2 唯一索引
-
定义:
- 唯一索引与主键类似,但表中可以有多个唯一索引。
- 保证字段值唯一,但允许存在空值(NULL)。
-
特点:
- 避免重复值,确保数据完整性。
- 唯一索引一般用于非主键字段。
-
适用场景:
- 确保特定字段的值不重复,例如邮箱、用户名等。
2.3 普通索引
-
定义:
- 没有唯一性限制,仅用于提升查询速度。
-
特点:
- 普通索引可以在任意字段上添加。
- 支持多种查询操作(等值、范围等)。
-
适用场景:
- 提高查询效率,但对唯一性无严格要求的字段。
2.4 前缀索引
-
定义:
- 针对字符串字段,只索引前面几位字符,而不是整列。
-
特点:
- 节省存储空间,提升索引效率。
- 对于区分度较高的字符串字段适用。
-
适用场景:
- 长字符串字段,如 URL、电子邮件地址等。
3. 按字段个数分类
这是根据字段数量来划分的,主要有以下两种:
3.1 单列索引
-
定义:
- 索引只包含一个字段。
-
特点:
- 适合简单的查询条件(单字段查询)。
- 无法直接优化多字段组合查询。
-
适用场景:
- 单一字段的等值或范围查询。
3.2 联合索引(复合索引)
-
定义:
- 索引包含多个字段,以字段顺序为准。
-
特点:
- 支持最左前缀原则,即查询条件必须包含从左到右的字段顺序。
- 高效优化多字段查询,但顺序很重要。
-
适用场景:
- 多字段组合查询,例如
WHERE col1 = ? AND col2 = ?
。
- 多字段组合查询,例如
第三部分:何时需要/无需索引
1. 什么时候需要创建索引?
创建索引的核心目的是优化查询性能,因此以下场景适合创建索引:
-
查询条件中频繁使用的字段
- 如果某个字段经常出现在
WHERE
、JOIN
、GROUP BY
或ORDER BY
中,应该为该字段创建索引。例如:
- 如果某个字段经常出现在
SELECT * FROM orders WHERE customer_id = 1001;
-
- 为
customer_id
创建索引可以显著提升查询速度。
- 为
-
数据量大的表
- 对于大表,如果没有索引,查询时需要进行全表扫描,这会严重拖慢性能。
- 例如,有一张订单表有上百万条数据,为订单号字段
order_id
创建索引,可以极大提高查找效率。
-
高频查询的字段
- 如果一个字段经常用于查询,即便表数据量不大,也可以考虑创建索引,因为优化高频操作的效率尤为重要。
-
排序和分组操作的字段
- 如果查询中包含排序(
ORDER BY
)或分组(GROUP BY
),为相关字段创建索引可以加速操作。
- 如果查询中包含排序(
SELECT product_id, COUNT(*) FROM sales GROUP BY product_id;
2. 什么时候不需要创建索引?
索引虽然有助于查询,但也有成本,以下情况不适合创建索引:
-
小表或结果集较大的查询
- 如果表的数据量很小(例如几十条数据),索引的优化效果微乎其微,反而会增加维护成本。
- 类似地,如果查询结果总是返回表的大部分数据(如 80% 以上),索引优化的意义不大。
-
更新频繁的字段
- 索引需要在数据修改时同步更新,因此对于频繁更新的字段,创建索引可能导致写入性能下降。
- 例如日志表中的
last_updated_time
字段频繁更新,此时不建议为其创建索引。
-
重复性高的字段
- 如果字段的值高度重复,索引会失去意义。例如:性别字段
gender
(只有男或女)在查询中不建议单独建立索引。
- 如果字段的值高度重复,索引会失去意义。例如:性别字段
-
临时表或测试表
- 临时数据表通常存活时间短,查询次数少,因此无需索引。
第四部分:优化索引的方法
索引的设计和使用需要考虑性能和实际需求,以下是几种常见的优化索引的方法:
1. 前缀索引优化
场景和原理
- 适用场景:当字段值较长(如字符串类型),且前缀部分可以区分大多数记录时,使用前缀索引既能节省存储空间,又能加速查询。
- 原理:前缀索引只记录字段值的前 N 个字符,降低了索引的大小,但仍能起到查询加速的作用。
优化步骤
- 选择合适的前缀长度
- 选择长度时,需要保证前缀的区分度(即前缀的唯一性较高)。可以通过以下查询评估:
SELECT COUNT(DISTINCT LEFT(column_name, N)) / COUNT(*) AS prefix_selectivity FROM table_name;
- 如果区分度接近 1,说明前缀长度合适。
- 创建前缀索引
- 使用
CREATE INDEX
指定前缀长度:CREATE INDEX idx_prefix ON users (email(10));
- 使用
适用场景的示例
假设有一个邮件用户表,每个用户的邮箱 email
字段长度不一,且查询通常只匹配前缀部分:
SELECT * FROM users WHERE email LIKE 'john%';
使用前缀索引可显著提升效率。
2. 覆盖索引优化
定义与优点
- 覆盖索引:当索引本身包含了查询所需的全部字段,无需回表查询,即称为覆盖索引。
- 优点:减少磁盘 I/O 和查询时间。
如何实现覆盖索引
-
设计包含所有查询字段的索引
- 例如,针对以下查询:
可以创建覆盖索引:SELECT id, name FROM employees WHERE department_id = 10;
CREATE INDEX idx_covering ON employees (department_id, id, name);
- 索引中的字段顺序很重要,应优先按查询条件出现的字段排列。
- 例如,针对以下查询:
-
使用查询分析工具
- 使用
EXPLAIN
分析查询是否使用了覆盖索引:EXPLAIN SELECT id, name FROM employees WHERE department_id = 10;
- 使用
3. 主键索引最好是自增的
自增主键的优势
- 避免页分裂:
- 自增主键的值是递增的,因此每次插入数据时,新记录会追加到索引的最后一个叶子节点,避免了频繁的页分裂。
- 提升插入效率:
- 自增主键的插入是顺序的,减少了磁盘 I/O。
非自增主键的问题
- 随机插入导致性能下降:
- 如果主键是随机值(如 UUID),新数据可能插入到索引的任意位置,导致频繁的页分裂和性能下降。
4. 防止索引失效
什么是索引失效?
- 当查询无法使用已有索引时,称为索引失效。这会导致查询退化为全表扫描,性能显著下降。
常见导致索引失效的场景
-
使用函数或计算操作
- 如以下查询会导致索引失效:
SELECT * FROM orders WHERE YEAR(order_date) = 2023;
- 解决方法:将计算移到索引之外:
SELECT * FROM orders WHERE order_date >= '2023-01-01' AND order_date < '2024-01-01';
- 解决方法:将计算移到索引之外:
- 如以下查询会导致索引失效:
-
类型不匹配
- 如果索引字段和查询条件的类型不一致,会导致索引失效。
SELECT * FROM users WHERE phone_number = 12345; -- phone_number 是字符串类型
- 解决方法:确保类型一致:
SELECT * FROM users WHERE phone_number = '12345';
- 解决方法:确保类型一致:
- 如果索引字段和查询条件的类型不一致,会导致索引失效。
-
查询条件中使用
OR
- 如果
OR
中的字段未全部使用索引,会导致索引失效。SELECT * FROM employees WHERE department_id = 10 OR name = 'Alice';
- 解决方法:改为使用
UNION
,确保每个查询条件单独使用索引:SELECT * FROM employees WHERE department_id = 10 UNION SELECT * FROM employees WHERE name = 'Alice';
- 解决方法:改为使用
- 如果
-
模糊查询中通配符的位置
- 以下查询会导致索引失效:
SELECT * FROM products WHERE name LIKE '%phone';
- 解决方法:避免通配符在前,或者考虑全文索引:
SELECT * FROM products WHERE name LIKE 'iPhone%';
- 解决方法:避免通配符在前,或者考虑全文索引:
- 以下查询会导致索引失效:
总结
索引的优化不仅是设计阶段的任务,在实际使用中还需定期监控和调整,避免失效或过度索引,确保系统性能最佳。
相关文章:
MySQL中索引全详解
第一部分:什么是索引 索引在数据库中就像书的目录,能够快速定位数据位置,从而提升查询效率。没有索引时,数据库查询需要从头到尾扫描整个表(称为全表扫描),这在数据量大时非常耗时。有了索引后&…...
探索复合物TPP-PEG-Heparin的特性;磷酸三苯酯-聚乙二醇-肝素的线粒体靶向性
TPP-PEG-Heparin,即磷酸三苯酯(TPP)、聚乙二醇(PEG)和肝素(Heparin)的复合物,其特性融合了这三种成分的性质。 一、线粒体靶向性 TPP部分:具有线粒体靶向功能…...
ubuntu 配置 多个 git 客户端 账户
Git配置两个或多个账户 https://blog.csdn.net/mainking2003/article/details/134711865 git 提交 不用输入用户名、密码的方法(GIT免密提交) https://blog.csdn.net/wowocpp/article/details/125797263 git config 用法 https://blog.csdn.net/blueb…...
Web3与智能合约:区块链技术下的数字信任体系
随着互联网的不断发展,Web3代表着我们迈入了一个去中心化、更加安全和智能的网络时代。作为Web3的核心组成部分,区块链技术为智能合约的出现和发展提供了强有力的基础。智能合约不仅仅是自动化的代码,它们正逐步成为重塑数字世界信任体系的关…...
RocketMQ文件刷盘机制深度解析与Java模拟实现
引言 在现代分布式系统中,消息队列(Message Queue, MQ)作为一种重要的中间件,扮演着连接不同服务、实现异步通信和消息解耦的关键角色。Apache RocketMQ作为一款高性能的分布式消息中间件,广泛应用于实时数据流处理、…...
高级编程之结构化代码
背景:以下没结构化代码之前,定时器同步店铺信息的代码。 结构化的思想:SRP(单一职责),一个方法是做一件事,层次是相关的,逻辑和数据操作进行拆分,数据操作从业务流程上定…...
学习编程,学习中间件,学习源码的思路
01 看的多,内化不足 最近想复习一下编程相关的知识,在复习前我翻开了之前的一些笔记,这些笔记基本都是从书本、视频、博客等摘取记录的,看着这些笔记心里总结:看的多,内化不足。 02 整理大纲 为了解决这个…...
网络安全与加密
1.Base64简单说明描述:Base64可以成为密码学的基石,非常重要。特点:可以将任意的二进制数据进行Base64编码结果:所有的数据都能被编码为并只用65个字符就能表示的文本文件。65字符:A~Z a~z 0~9 / 对文件进行base64编码…...
开源协议介绍
文章目录 1. MIT License2. Apache License 2.03. GNU General Public License (GPL)4. GNU Lesser General Public License (LGPL)5. BSD License6. Mozilla Public License (MPL)7. Creative Commons Licenses (CC)8. Unlicense选择建议 在 开源平台上,开源项目通…...
Java技术复习提升 10异常
10 异常 10.1异常介绍及分类 异常捕获 选中后alttabt->选中try-catch 异常就是程序执行中不正常的情况 注意语法和逻辑错误并不是异常 异常分类有两种 error和exception error是错误 虚拟机无法解决的严重问题 exception是其他因为编程错误或者外在因素导致的一般性的问…...
java版工程项目管理系统源码:Spring Cloud与前后端分离的完美结合
在现代化的工程项目管理中,一套功能全面、操作便捷的系统至关重要。本文将介绍一个基于Spring Cloud和Spring Boot技术的Java版工程项目管理系统,结合Vue和ElementUI实现前后端分离。该系统涵盖了项目管理、合同管理、预警管理、竣工管理、质量管理等多个…...
Oracle与MySQL中CONCAT()函数的使用差异
一、CONCAT函数介绍 CONCAT函数是MySQL等数据库中用于连接两个或多个字符串的内置函数。其基本语法如下: CONCAT(string1, string2, ...)参数说明: string1, string2, …:需要连接的字符串参数,可以有多个。 返回值࿱…...
AI社媒引流工具:解锁智能化营销的新未来
在数字化浪潮的推动下,社交媒体成为品牌营销的主战场。然而,面对海量的用户数据和日益复杂的运营需求,传统营销方法显得力不从心。AI社媒引流王应运而生,帮助企业在多平台中精准触达目标用户,提升营销效率和效果。 1.…...
浏览器的事件循环机制
一、请简述浏览器的事件循环机制(Event Loop)基本原理 浏览器的事件循环机制是用于协调处理 JavaScript 中的异步任务与同步任务执行顺序的一种机制,它确保了代码能够按照合理的顺序执行,避免阻塞页面渲染等情况。其基本原理如下…...
如何在 React 项目中应用 TypeScript?应该注意那些点?结合实际项目示例及代码进行讲解!
在 React 项目中应用 TypeScript 是提升开发效率、增强代码可维护性和可读性的好方法。TypeScript 提供了静态类型检查、自动补全和代码提示等功能,这对于 React 开发者来说,能够帮助早期发现潜在的 bug,提高开发体验。 1. 项目初始化 在现…...
排序算法(五)--归并排序
文章目录 引言归并排序概述C语言实现代码解析结论 归并排序 C语言实例 引言 归并排序(Merge Sort)作为一种经典的排序算法,以其稳定性、分治法的巧妙应用以及相对高效的时间复杂度而著称。 归并排序概述 归并排序采用分治法(Di…...
Linux KASLR 地址偏移
kaslr开启时地址 cat /proc/cmdline BOOT_IMAGE/boot/vmlinuz-5.4.0-193-generic rootUUID0e46dee3-4557-434a-a2d2-a35c6ad3d327 ro find_preseed/preseed.cfg auto noprompt prioritycritical localeen_US quiet cat /boot/config-$(uname -r) | grep CONFIG_RANDOMIZE_B…...
利用开源图床的技巧与实践
随着互联网的普及,图片的使用变得越来越广泛。无论是个人博客、社交媒体还是企业网站,都离不开图片的呈现。而图床作为图片存储和管理的工具,可以帮助开发者和内容创作者高效地管理图片资源。本文将探讨如何利用开源图床,并提供相…...
Unity Lua方向的面试真题详解
最近有位同学面试Unity,面试的公司采用Lua的方案来做公司项目,我们把面试时问道的真题列举出来,并配上参考回复。 1、Lua热更文件时,文件是重写的,还是只写一部分? 热更分为资源更新和代码更新,资源更新…...
经验笔记:Git 基础操作指南
推荐一下Gitee最好的Git操作教程:Learn Git Branching 经验笔记:Git 基础操作指南 1. 安装 Git 首先确保您的计算机上已安装 Git。如果还没有安装,可以从 Git官网 下载并安装。 2. 配置 Git 安装完成后,打开命令行工具&#…...
大模型在智能客服中心领域的应用思考
大模型在智能客服中心领域的应用思考 作者:开源呼叫中心系统 FreeIPCC,Github地址:https://github.com/lihaiya/freeipcc 随着人工智能技术的飞速发展,特别是深度学习技术的突破,大型语言模型(LLMs&#x…...
ssm旅游推荐系统的设计与开发
摘 要 旅游推荐系统是一个综合性的在线旅游推荐平台,旨在为用户提供便捷的旅游规划和预定服务。通过该系统,用户能够浏览各类景点信息并进行分类查找,同时获取详尽的景点介绍和相关照片,以辅助做出旅行决策。系统提供在线门票订购…...
C++从零到满绩——入门基础and类和对象(上)
目录 1>>前言 2>>函数重载 3>>引用 3.1>>引用的概念 3.2>>引用三大特性 3.3>>引用的使用 3.4>>const引用 3.5>>指针与引用的关系 4>>inline内联函数 5>>nullptr 6>>类和对象(上&#…...
如何为PDF文件创建口令密码
介绍Adobe Acrobat https://helpx.adobe.com/cn/acrobat/using/access-acrobat-across-web-mobile-desktop.html 使用Adobe Acrobat软件添加口令...
【ubuntu】开机进入initramfs,无法开机
Step 1 blkid查看 ext4 的磁盘 Step 2 找到TYPE"EXT4"的盘,我们此处是 /dev/mapper/ubuntu–vg-ubuntu–lv,fsck命令是用于检查和修复Linux文件系统中的错误。通过使用-t参数指定文件系统类型(例如ext4)。我们使用如下命令进行…...
java基础---反射
仅供个人学习使用 1. 什么是反射 Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为…...
CircuitBreaker机制详解:Elasticsearch中的资源管理
CircuitBreaker机制详解:Elasticsearch中的资源管理 在现代软件架构中,熔断器(CircuitBreaker)是一种重要的模式,用于防止系统过载并保护系统稳定性。在Elasticsearch中,熔断器机制尤其关键,因为它们帮助管理资源使用,防止节点因资源耗尽而崩溃。本文将深入探讨Elasti…...
毕氏完美数
毕达哥拉斯 概要 2 \sqrt{2} 2 a b , a < b , a > b ab,a<b,a>b ab,a<b,a>b 判断完美数验证 自守数验证 水仙花数代码验证 概要 回顾完美数,自守数,水仙花数,根号2感受最美公式。 2 \sqrt{2} 2 毕达哥拉斯创立了一…...
数据结构-8.Java. 七大排序算法(中篇)
本篇博客给大家带来的是排序的知识点, 由于时间有限, 分两天来写, 中篇主要实现后三种排序算法: 冒泡排序,快速排序,下一篇讲 归并排序. 文章专栏: Java-数据结构 若有问题 评论区见 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作…...
如何能让安全责任更清晰——构建清晰安全责任体系策略与实践
安全已成为各行各业不可忽视的重要议题。然而,要确保组织的安全运行,仅仅有安全意识是不够的,还需要有一套清晰明确的安全责任体系来支撑。这套体系能够明确每个人的安全职责,促进安全管理工作的有序进行,降低事故发生…...
VBA技术资料MF228:移动形状并覆盖某单元格区域
我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…...
《Python基础》之基本数据类型
目录 基本数据类型 1、Number(数字) (1)、整数(int) (2)、浮点数(float) (3)、复数(complex) (4)、 布尔…...
2024 APMCM亚太数学建模C题 - 宠物行业及相关产业的发展分析和策略(详细解题思路)
在当下, 日益发展的时代,宠物的数量应该均为稳步上升,在美国出现了下降的趋势, 中国 2019-2020 年也下降,这部分变化可能与疫情相关。需要对该部分进行必要的解释说明。 问题 1: 基于附件 1 中的数据及您的团队收集的…...
66 mysql 的 表自增长锁
前言 mysql 的表锁之 AUTO_INC, 是我们自增长的时候做并发控制的锁 主要是用于 自增长生成新的 id 的时候的控制 在前面的文档中, 我们又看到 mysql 这边自增长的处理的相关的大概脉络 但是 对于一些 并发控制的细节, 我们当时 应该是直接忽略掉了 我们这里就来看一下…...
java中的this关键字
🎉🎉🎉欢迎来到我的博客,我是一名自学了2年半前端的大一学生,熟悉的技术是JavaScript与Vue.目前正在往全栈方向前进, 如果我的博客给您带来了帮助欢迎您关注我,我将会持续不断的更新文章!!!🙏🙏🙏 文章目录…...
资源控制器--laravel进阶篇
laravel的控制器当中有个资源控制器,这个比较好用。 创建资源控制器 php artisan make:controller PhotoController --resource 创建个路由来使用该资源控制器 use App\Http\Controllers\PhotoController; Route::resource(photos, PhotoController::class); 隐式模型绑定不…...
智能工厂的设计软件 为了监管控一体化的全能Supervisor 的监督学习 之 序7 进化论及科学的信息技术创新:分布式账本/区块链/智能合约
Q&A Q46、 聊聊“分布式账本”“区块链”和“智能合约” “分布式账本”、“区块链”和“智能合约”是现代信息技术领域的几个重要概念,它们在金融、供应链管理、物联网等多个领域都发挥着重要作用。以下是对这三个概念的详细解析: 分布式账本 …...
从零开始认识显卡
显卡(GPU,全称为Graphics Processing Unit),是电脑中专门负责图形处理的硬件组件。以下是从零开始认识显卡的简单介绍: 1. 显卡的基本组成 显卡通常由以下几个主要部分组成: GPU核心:显卡的“…...
什么是计算机网络
什么是计算机网络? 计算机网络的定义计算机网络的分类按覆盖范围分类按拓扑结构分类按通信传输介质分类按信号频带占用方式分类 计算机网络的功能信息交换资源共享分布式处理 计算机网络的组成计算机网络的定义计算机网络的分类按覆盖范围分类按拓扑结构分类按通信传…...
网络安全在线网站/靶场:全面探索与实践
目录 1. CyberPatriot 简介 功能与特点 适用人群 2. Hack The Box 简介 功能与特点 适用人群 3. OverTheWire 简介 功能与特点 适用人群 4. VulnHub 简介 功能与特点 适用人群 5. PortSwigger Web Security Academy 简介 功能与特点 适用人群 6. TryHackM…...
多旋翼无人机长航时远距离集群技术详解
多旋翼无人机长航时远距离集群技术是当前无人机技术发展的重要方向之一,它结合了多旋翼无人机的灵活性和集群技术的优势,实现了无人机在长时间、远距离条件下的高效协同作业。以下是对该技术的详细解析: 一、多旋翼无人机特点 多旋翼无人机以…...
C#编写的日志记录组件 - 开源研究系列文章
以前编写过一个日志记录组件的博文,这次发布一个修改过的完善版本。 1、 项目目录; 2、 源码介绍; 1) 实现; 2) 使用; 后面的参数为级别设置,只有大于这个级别的才进行日志记录,限制了日志记录的…...
使用 Java 操作 SQLite 数据库
文章目录 1.导入依赖2.实际应用 1.导入依赖 <dependencies><dependency><groupId>org.xerial</groupId><artifactId>sqlite-jdbc</artifactId><version>3.36.0.3</version></dependency> </dependencies>2.实际应…...
再次讨论下孤注一掷
在孤注一掷中的黑客技术里面,简单介绍了电影孤注一掷中用的一些"黑科技",这里继续讨论下,抛弃这些黑科技,即使在绝对公平的情况下,你也一样赢不了赌场 相对论有一个假设就是光速不变,这里也有个…...
系统思考—跳出症状看全局
感谢合作伙伴的邀请,圆满结束国药试剂关于《系统思考》的课程。课堂上,我们围绕“缺货”这个看似具体的问题,展开了一场跨部门的深度探讨。销售、采购、物流等部门各抒己见,发现每个部门的出发点都是为了公司好,但误判…...
前端面试vue篇:Vue2 和 Vue3 在设计和性能上有显著区别
Vue3 相对于 Vue2 的主要改进和性能提升体现在以下几个关键领域 1.响应式系统: (1)Vue2 使用 Object.defineProperty 遍历对象的所有属性来实现响应式,这在大型应用中可能导致性能瓶颈,尤其是在组件初次渲染和大量数据变化时。 (2)Vue3 引入了…...
每天五分钟深度学习:神经网络模型的直观理解
本文重点 神经网络是深度学习的基础模型之一,本文将讲解一下基础模型神经网络是什么? 神经网络 如上所示,这个神经网络有两层(我们认为输入层不算神经网络的层数),其中一个隐藏层,还有一个是输出层。我们称隐藏层为第一层,输出层为第二层,输入层为第零层。 我们有输…...
高集成的MCU方案已成电机应用趋势?
【哔哥哔特导读】高集成化的芯片成为当下MCU领域研发和市场布局的重点,但是在实际应用中仍然面临散热等痛点问题,MCU厂商是如何解决和优化这些痛点? 随着全球工业自动化、智能制造和绿色发展的不断推进,中国电机行业正站在新一轮…...
商用密码产品认证名录说明
《商用密码产品认证目录》是为贯彻落实《中华人民共和国密码法》,进一步健全完善商用密码产品认证体系,更好满足商用密码产业发展需要,根据《国家密码管理局 市场监管总局关于调整商用密码产品管理方式的公告》《市场监管总局 国家密码管理局…...
无人机技术探索:电机、电调与桨叶的运行原理!
无人机电机的主要材料 铝合金:铝合金是当前应用最广泛的无人机电机材料之一,具有制造成本低廉、重量轻、支撑力强等特点,同时有一定的抗氧化性能。然而,铝合金电机的耐久性较差,若长期在高温高湿的环境下使用易产生氧…...