当前位置: 首页 > news >正文

【MySQL】索引 面试题

文章目录

      • 适合创建索引的情况
      • 创建索引的注意事项
      • MySQL中不适合创建索引的情况
      • 索引失效的常见情况

在这里插入图片描述

  1. 索引定义与作用

    • 索引是帮助MySQL高效获取数据的有序数据结构,通过维护特定查找算法的数据结构(如B+树),以某种方式引用数据,实现高级查找算法,从而提高数据检索效率,降低数据库IO成本。
    • 例如在查找年龄为45的数据时,无索引需逐条比对,有索引(如二叉树)可减少对比次数,提升效率。
  2. 二叉树与红黑树的不足
    在这里插入图片描述

    • 二叉树:普通二叉树时间复杂度不稳定,可能退化为链表(O(n)),即使相对平衡时为O(log n),也不满足MySQL需求,所以MySQL底层未使用。
    • 红黑树:节点可保证平衡,时间复杂度稳定为O(log n),但数据量大(如1000万数据)时,因其二叉结构节点分叉有限,树会很高,查找需找很多层级,效率不高。
  3. B树的特点
    在这里插入图片描述

    • B树是多岔路平衡查找树,每个节点可有多分支(如度数为五时,最多五个子节点),节点上最多存储一定数量的key(如四个),key有指针指向子节点数据,且存储对应数据。整体为“矮胖”结构,查找层级短,效率高。
  4. B+树的结构与优势

在这里插入图片描述
- 结构优化:在B树基础上优化,更适合外存储索引结构(如InnoDB存储引擎默认采用)。非叶子节点只存储指针,不存储数据,存储压力低;数据只存储在叶子节点,非叶子节点主要起导航作用,便于找到叶子节点数据。
- 磁盘读写代价低:查找数据时,B树需加载路径上节点数据,B+树非叶子节点不存数据,只需通过指针导航找到叶子节点获取数据,无需额外加载非叶子节点数据,效率更高,磁盘读写代价更低。
- 查找效率稳定:所有数据在叶子节点,查找时从根节点依次对比到叶子节点获取数据,查找路径相似,效率稳定。
- 便于扫库和区间查询:叶子节点之间使用双向指针连接,进行范围查询(如查询6 - 34区间数据)时,从根节点找到起始值所在叶子节点后,可利用双向指针一次性获取区间内所有数据,无需多次从根节点查找,效率更高。

  1. 面试题回答要点
    • 索引定义及作用方面:强调索引是有序数据结构,用于高效获取数据,可提高检索效率、降低IO成本(因B+树查找层级短),还能通过索引排序降低数据排序成本,间接降低CPU消耗(创建索引时已排序)。
    • 索引底层数据结构方面:说明MySQL的InnoDB引擎默认采用B+树存储索引,其特点包括阶数多、路径短(性能高)、磁盘读写代价低(非叶子节点只存指针,数据在叶子节点)以及便于扫库和区间查询(叶子节点间双向链表)。

在这里插入图片描述


在MySQL中,合适地创建索引可以显著提高查询性能,但索引也并非越多越好,不当的索引可能会影响数据插入、更新和删除的效率。以下是一些适合创建索引的常见情况:

适合创建索引的情况

  1. 频繁作为查询条件的列:如果某列经常出现在WHERE子句中,作为查询条件,那么为该列创建索引可以加快查询速度。
  2. 经常用于连接(JOIN)操作的列:在多表连接查询中,连接条件列通常应该创建索引,以加速连接操作。例如,在一个订单表和用户表的连接查询中,订单表的用户ID列和用户表的主键列(通常也是用户ID)都应该创建索引,这样可以快速定位匹配的行,提高连接性能。
  3. 在分组(GROUP BY)和排序(ORDER BY)操作中使用的列:当查询需要进行分组或排序操作时,为参与分组和排序的列创建索引可以避免数据库进行额外的排序操作,从而提高查询性能。例如,在查询每个部门的员工数量并按照部门名称排序时,为部门名称列创建索引可以加速分组和排序过程。
  4. 查询返回结果集较小的列:如果一个查询返回的结果集相对较小,但查询条件涉及的列数据量较大,创建索引可以帮助快速定位到满足条件的少量行,从而提高查询效率。例如,在一个包含大量商品信息的表中,根据商品类别查询特定类别下的少数热门商品,为商品类别列创建索引可以快速筛选出相关商品。
  5. 唯一约束列:对于具有唯一性约束的列,数据库通常会自动创建唯一索引,这不仅有助于确保数据的唯一性,还能提高基于该列的查询速度,因为数据库可以直接使用索引快速定位到特定的值。例如,用户表中的用户名或邮箱列,通常需要保证唯一性,并且在用户登录或查询特定用户时,这些列经常被使用,因此创建唯一索引是很有必要的。

创建索引的注意事项

  1. 避免过度索引:每个索引都会占用一定的存储空间,并在数据插入、更新和删除时需要额外的维护成本。如果为太多列创建索引,可能会影响数据库的整体性能,特别是在写操作频繁的表上。因此,只应该为那些真正需要提高查询性能的列创建索引。
  2. 选择合适的数据类型:索引列的数据类型会影响索引的性能。尽量使用简单、占用空间小的数据类型,例如整数类型通常比字符串类型在索引查找上更高效。如果可能的话,对于字符串类型列,可以考虑使用合适的前缀索引,而不是对整个字符串创建索引,以减少索引占用的空间和提高查询性能。
  3. 复合索引的使用:在创建索引时,有时候可以考虑创建复合索引(即包含多个列的索引)。复合索引适用于经常同时根据多个列进行查询的情况。但要注意索引列的顺序,应该将选择性高(即不同值较多)的列放在前面,这样可以更快地缩小查询范围。例如,如果经常根据城市和地区查询用户信息,并且城市的选择性高于地区,那么创建索引时应该先写城市列,再写地区列。
  4. 定期维护索引:随着数据的不断更新和插入,索引可能会变得碎片化,影响查询性能。因此,需要定期对索引进行维护,例如使用OPTIMIZE TABLE语句来重建和优化索引,以确保索引的效率。

MySQL中不适合创建索引的情况

  1. 数据量较小的表:如果表中的数据量非常小,例如只有几十条或几百条记录,全表扫描的速度可能比使用索引更快。因为使用索引需要额外的开销来维护索引结构,在数据量小时,这个开销可能超过索引带来的查询性能提升。例如,一个存储系统配置参数的小表,数据很少变动且查询频率不高,此时创建索引可能得不偿失。
  2. 频繁更新、插入或删除的列:对频繁进行写操作的列创建索引会增加数据库的维护成本。每次数据更新、插入或删除时,数据库都需要更新相关索引,这会影响写操作的性能。例如,在一个记录用户操作日志的表中,操作时间戳列经常更新,若为该列创建索引,会显著降低写操作速度。
  3. 区分度低的列:如果某列的取值非常有限,例如只有“男”“女”两种值,或者大部分值都相同,创建索引的效果可能不佳。因为索引在这种情况下无法有效缩小查询范围,数据库可能仍需扫描大量数据行。例如,一个员工表中的性别列,通常不适合创建索引(除非在特定场景下有特殊需求)。
  4. 数据行数频繁变动且分布不均匀的列:如果列的数据分布极不均匀,且数据行数经常变动,索引可能会频繁进行重新平衡和优化,这会消耗数据库资源。例如,某电商网站订单表中的订单状态列,可能大部分订单处于“已完成”状态,且新订单不断增加,状态频繁更新,此时为该列创建索引可能不利于性能优化。
  5. 长字符串列或大文本列:对于非常长的字符串列(如存储文章内容的列)或大文本列(如存储用户评论的列),创建索引会占用大量的存储空间,并且在查询时比较操作也会消耗较多资源,索引的维护成本较高。通常,只在需要根据这些列进行精确查询且查询频率较高时,才考虑创建索引,且可能更适合使用前缀索引等方式来减少索引大小。
  6. 查询中很少使用的列:如果某列在实际查询中很少被作为查询条件或连接条件使用,那么为其创建索引没有实际意义,反而会增加数据库的存储和维护负担。例如,一个产品表中有一个“产品介绍”列,该列主要用于展示产品详情,很少在查询中用到,就不需要为其创建索引。

索引失效的常见情况

  1. 使用函数或表达式对索引列进行操作:如果在查询条件中对索引列使用了函数(如SUBSTRINGDATE_FORMAT等)或表达式(如age + 1 = 30),索引可能失效。因为索引是基于列的原始值构建的,经过函数或表达式计算后,数据库无法直接使用索引进行快速定位。例如:
SELECT * FROM users WHERE SUBSTRING(name, 1, 3) = 'abc';

在这个查询中,对name列使用了SUBSTRING函数,即使name列有索引,数据库也可能无法有效利用该索引,导致查询效率降低。
2. 隐式类型转换:当查询条件中索引列的数据类型与实际传入的值的数据类型不匹配时,数据库可能会进行隐式类型转换,这可能导致索引失效。例如,如果age列是整数类型,而查询条件写成WHERE age = '30'(传入的是字符串类型),数据库会先将字符串转换为整数再进行比较,这种隐式转换可能使索引无法正常使用。
3. 对索引列进行运算:在查询条件中对索引列进行算术运算(如salary * 2 > 5000),会使索引失效。因为数据库需要先计算表达式的值,然后再进行比较,无法直接利用索引进行快速查找。
4. 使用OR连接多个条件,且其中有索引列和非索引列的条件:如果在WHERE子句中使用OR连接多个条件,并且其中既有索引列的条件又有非索引列的条件,那么索引可能失效。例如:

SELECT * FROM users WHERE age = 30 OR address = 'Beijing';

如果age列有索引,address列没有索引,这个查询可能不会使用age列的索引,因为OR操作使得数据库难以优化查询。
5. LIKE查询以通配符开头:当使用LIKE进行模糊查询时,如果通配符%在查询字符串的开头,索引可能失效。例如:

SELECT * FROM products WHERE product_name LIKE '%phone';

这种查询会导致数据库进行全表扫描,因为索引无法快速定位以通配符开头的数据。
6. 索引列参与了表达式计算或函数调用:与使用函数或表达式对索引列进行操作类似,只要索引列参与了表达式计算或函数调用,索引就可能无法正常工作。例如:

SELECT * FROM orders WHERE YEAR(order_date) = 2023;

这里对order_date列使用了YEAR函数,会使该列的索引失效。
7. IS NULLIS NOT NULL条件对索引列的使用:在某些数据库中,对索引列使用IS NULLIS NOT NULL条件可能导致索引失效,因为索引可能不包含空值的相关信息。不过,有些数据库对这种情况进行了优化,具体是否失效取决于数据库的实现。
8. 索引列使用不等于(!=<>)操作符:如果在查询条件中对索引列使用不等于操作符,数据库可能认为使用索引的成本较高,而选择全表扫描,导致索引失效。例如:

SELECT * FROM employees WHERE salary!= 5000;
  1. 查询条件中的数据分布不均匀导致索引选择不佳:如果索引列的数据分布非常不均匀,例如某一列大部分值都相同,只有少数不同的值,数据库在查询时可能认为使用索引的效果不如全表扫描,从而不使用索引。这种情况相对较少见,但在某些特定的数据场景下可能发生。

相关文章:

【MySQL】索引 面试题

文章目录 适合创建索引的情况创建索引的注意事项MySQL中不适合创建索引的情况索引失效的常见情况 索引定义与作用 索引是帮助MySQL高效获取数据的有序数据结构&#xff0c;通过维护特定查找算法的数据结构&#xff08;如B树&#xff09;&#xff0c;以某种方式引用数据&#xf…...

QT调用Sqlite数据库

QT设计UI界面&#xff0c;后台访问数据库&#xff0c;实现数据库数据的增删改查。 零售商店系统 数据库表&#xff1a; 分别是顾客表&#xff0c;订单详情表&#xff0c;订单表&#xff0c;商品表 表内字段详情如下&#xff1a; 在QT的Pro文件中添加sql&#xff0c;然后添加头…...

Flutter富文本实现学习

Flutter 代码如何实现一个带有富文本显示和交互的页面。 前置知识点学习 RealRichText RealRichText 和 ImageSpan 不是 Flutter 框架中内置的组件&#xff0c;而是自定义的组件或来自第三方库。这些组件的实现可以提供比标准 RichText 更丰富的功能&#xff0c;比如在富文本…...

实现某海外大型车企(T)Cabin Wi-Fi 需求的概述 - 4

大家好&#xff0c;我是Q&#xff0c;邮箱&#xff1a;1042484520qq.com。 今天我们在上几讲的基础上再扩展下 Cabin Wi-Fi 的功能需求&#xff0c;讲讲如何使能 5G TCU Wi-Fi STA Bridge 模式。 参考&#xff1a; 实现某海外大型车企&#xff08;T&#xff09;Cabin Wi-Fi 需求…...

【GeekBand】C++设计模式笔记15_Proxy_代理模式

1. “接口隔离” 模式 在组件构建过程中&#xff0c;某些接口之间直接的依赖常常会带来很多问题&#xff0c;甚至根本无法实现。采用添加一层间接&#xff08;稳定&#xff09;接口&#xff0c;来隔离本来互相紧密关联的接口是一种常见的解决方案。典型模式 FacadeProxyAdapte…...

项目练习:若依系统的svg-icon功能实现

文章目录 一、svg图片准备二、自定义Svg组件三、svg插件开发四、Svg组件使用 一、svg图片准备 src/assets/icons/svg 其中svg目录里&#xff0c;存放了所需要的图片 index.js import Vue from vue import SvgIcon from /components/SvgIcon// svg component// register glob…...

【踩坑/Linux】Vmware中的Ubuntu虚拟机无法访问互联网

Vmware中的Ubuntu虚拟机无法访问互联网 首先前提是我的系统是Ubuntu 16.04系统&#xff0c;vmware workstation选择的是NAT模式&#xff0c;虚拟机内连不上网络 ping www.baidu.com ping: unknown host www.baidu.com首先检查 DNS 解析服务&#xff1a;在虚拟机中打开命令提示…...

深入了解SpringIoc(续篇)

目录 注入 Bean 的方式有哪些? 构造函数注入还是 Setter 注入? Bean 的作用域有哪些? Bean 是线程安全的吗? Bean 的生命周期了解么? 注入 Bean 的方式有哪些? 依赖注入 (Dependency Injection, DI) 的常见方式&#xff1a; 构造函数注入&#xff1a;通过类的构造函…...

嵌入式硬件面试题

1、请问什么是通孔、盲孔和埋孔&#xff1f;孔径多大可以做机械孔&#xff0c;孔径多小必须做激光孔&#xff1f;请问激光微型孔可以直接打在元件焊盘上吗&#xff0c;为什么&#xff1f; 通孔是贯穿整个PCB的过孔&#xff0c;盲孔是从PCB表层连接到内层的过孔&#xff0c;埋孔…...

散斑/横向剪切/迈克尔逊/干涉条纹仿真技术分析

摘要 本博文提供了多种数据类型的干涉条纹仿真&#xff0c;并展示了它们对应的散斑干涉条纹。还分别给出了横向剪切干涉以及剪切散斑干涉条纹的仿真。 一、迈克尔逊干涉与散斑干涉仿真 下图为干涉条纹与对应的散斑干涉条纹的仿真示意图。其中&#xff0c;干涉条纹可认为是源…...

ViiTor实时翻译 2.2.1 | 完全免费的高识别率同声传译软件

ViiTor实时翻译是一款完全免费的实时语音翻译和同声传译软件&#xff0c;支持即时翻译、对话翻译、语音转文字、文本语音合成和AR翻译等功能。它的语音识别和翻译准确率特别高&#xff0c;速度非常快&#xff0c;音质高&#xff0c;并支持6种音色切换。该软件简单易用&#xff…...

uniapp实现为微信小程序扫一扫的功能

引言 随着微信小程序的快速发展,越来越多的开发者开始关注和学习微信小程序的开发。其中,微信小程序的扫一扫功能是非常常用且实用的功能之一。通过扫描二维码,用户可以获取到相关的信息或者实现特定的功能。 正文 在过去,开发者需要使用微信开发者工具以及相关的开发文档…...

ospf 的 状态机详解

OSPF&#xff08;开放最短路径优先&#xff0c;Open Shortest Path First&#xff09;协议的状态机是其核心部分之一&#xff0c;用于确保路由器之间的邻接关系&#xff08;neighbor relationship&#xff09;建立和路由信息的交换。OSPF的状态机模型由多个状态组成&#xff0c…...

ElementPlus 自定义封装 el-date-picker 的快捷功能

文章目录 需求分析 需求 分析 我们看到官网上给出的案例如下&#xff0c;但是不太满足我们用户想要的快捷功能&#xff0c;因为不太多&#xff0c;因此需要我们自己封装一些&#xff0c;方法如下 外部自定义该组件的快捷内容 export const getPickerOptions () > {cons…...

【面试系列】深入浅出 Spring Boot

熟悉SpringBoot&#xff0c;对常用注解、自动装配原理、Jar启动流程、自定义Starter有一定的理解&#xff1b; 面试题 Spring Boot 的核心注解是哪个&#xff1f;它主要由哪几个注解组成的&#xff1f;Spring Boot的自动配置原理是什么&#xff1f;你如何理解 Spring Boot 配置…...

太阳能LED路灯智能控制系统(论文+源码)

1系统的功能及方案设计 本次课题为太阳能LED路灯智能控制系统&#xff0c;其系统整体架构如图2.1所示&#xff0c;太阳能板通过TP4056充电模块给锂电池进行充电&#xff0c;电池通过HX3001升压模块进行升压到5V给整个控制系统进行供电&#xff0c;控制系统由AT89C52单片机作为…...

使用 PyQt5 构建高效的文件分类与管理工具

当我们处理大量图片或文件时&#xff0c;经常会需要一款方便、高效的工具来快速分类、整理和管理它们。今天&#xff0c;我将分享一个用 PyQt5 构建的实用项目&#xff0c;涵盖图片分类、文件夹管理、撤销功能&#xff0c;以及动态界面操作的实现。从设计到代码细节&#xff0c…...

谷歌浏览器 Chrome 提示:此扩展程序可能很快将不再受支持

问题现象 在Chrome 高版本上的扩展管理页面&#xff08;地址栏输入chrome://extensions/或者从界面进入&#xff09;&#xff1a; &#xff0c; 可以查看到扩展的情况。 问题现象大致如图: 问题原因 出现此问题的根本原因在于&#xff1a;谷歌浏览器本身的扩展机制发生了…...

肿瘤电场仪疗法原理:科技之光,照亮抗癌之路

在医疗科技日新月异的今天&#xff0c;肿瘤电场仪疗法作为一种创新的无创治疗手段&#xff0c;正以其独特的物理机制和生物效应&#xff0c;为患者带来了新的治疗选择和希望。本文将深入探讨肿瘤电场仪疗法的原理&#xff0c;揭示其如何在不伤害正常组织的前提下&#xff0c;精…...

scala基础学习_运算符

文章目录 scala运算符算术运算符关系运算符逻辑运算符位运算符其他运算符赋值运算符 scala运算符 在 Scala 中&#xff0c;运算符通常被定义为方法。这意味着你可以将运算符视为对象上的方法调用。以下是一些常用的运算符及其对应的操作&#xff1a; 算术运算符 &#xff1a…...

人工智能与区块链的碰撞:双剑合璧的创新前景

引言 人工智能&#xff08;AI&#xff09;与区块链技术&#xff0c;这两项曾经各自独立发展的前沿科技&#xff0c;如今正逐步走向融合。人工智能通过强大的数据处理能力和智能决策能力&#xff0c;在各个领域掀起了革命性的变革&#xff1b;而区块链凭借其去中心化、不可篡改的…...

信创数据防泄漏中信创沙箱是什么样的安全方案

在信息化与工业化融合创新&#xff08;信创&#xff09;的快速发展中&#xff0c;企业面临着日益复杂的数据安全挑战。SDC沙盒技术以其独特的安全机制和先进的设计理念&#xff0c;为信创环境提供了强有力的数据保护支持。以下是SDC沙盒在信创领域支持能力的几个关键侧重点&…...

在不同操作系统上安装 PostgreSQL

title: 在不同操作系统上安装 PostgreSQL date: 2024/12/26 updated: 2024/12/26 author: cmdragon excerpt: PostgreSQL 是当今最受欢迎的开源关系数据库管理系统之一,由于其强大的功能和灵活性,广泛应用于不同的行业和应用场景。在开始使用 PostgreSQL 之前,用户需要了…...

Linux下编译 libwebsockets简介和使用示例

目录 1&#xff1a;简单介绍&#xff1a; 2&#xff1a;项目地址 3&#xff1a;编译 3.1&#xff1a;集成介绍 3.2&#xff1a;编译 4&#xff1a;客户端服务端示例&#xff1a; 4.1 客户端示例 4.2 服务端示例&#xff1a; 1&#xff1a;简单介绍&#xff1a; Linux下…...

5G CPE接口扩展之轻量型多口千兆路由器小板选型

多口千兆路由器小板选型 方案一: 集成式5口千兆WIFI路由器小板方案二:交换板 + USBwifiUSB WIFI选型一USBwifi选型二:四口千兆选型一四口千兆选型二:四口千兆选型三:部分5G CPE主板不支持Wifi,并且网口数量较少,可采用堆叠方式进行网口和wifi功能 扩展,本文推荐一些路由…...

青少年编程与数学 02-005 移动Web编程基础 02课题、视口与像素

青少年编程与数学 02-005 移动Web编程基础 02课题、视口与像素 一、视口二、布局视口&#xff08;Layout Viewport&#xff09;三、视觉视口&#xff08;Visual Viewport&#xff09;四、理想视口&#xff08;Ideal Viewport&#xff09;五、视口设置关键属性示例代码示例1&…...

深度学习blog-Transformer-注意力机制和编码器解码器

注意力机制&#xff1a;当我们看一个图像或者听一段音频时&#xff0c;会根据自己的需求&#xff0c;集中注意力在关键元素上&#xff0c;以获取相关信息。 同样地&#xff0c;注意力机制中的模型也会根据输入的不同部分&#xff0c;给它们不同的权重&#xff0c;并集中注意力在…...

【论文投稿】Python 网络爬虫:探秘网页数据抓取的奇妙世界

【IEEE出版|广东工业大学主办】第五届神经网络、信息与通信工程国际学术会议&#xff08;NNICE 2025&#xff09;_艾思科蓝_学术一站式服务平台 目录 前言 一、Python—— 网络爬虫的绝佳拍档 二、网络爬虫基础&#xff1a;揭开神秘面纱 &#xff08;一&#xff09;工作原…...

【总结整理】 神经网络与深度学习 邱锡鹏 课后习题答案 扩展阅读链接

本文主要针对神经网络神经网络邱锡鹏 2~8 章的课后习题进行理解的过程中&#xff0c;搜索到的讲的会比较透彻的链接整理。适合有一定基础但是想了解更细的人阅读。 主要参考书籍 首先是本书pdf可在神经网络与深度学习获取&#xff1b; 主要参考的课后习题答案为nndl/solution…...

华为手机建议使用adb卸载的app

按需求自行卸载 echo 卸载智慧搜索 adb shell pm uninstall -k --user 0 com.huawei.search echo 卸载智慧助手 adb shell pm uninstall -k --user 0 com.huawei.intelligent echo 卸载讯飞语音引擎 adb shell pm uninstall -k --user 0 com.iflytek.speechsuite echo 卸载快应…...

找到一个linux静态库动态库的好资料.2

# 正文 继续整理从这个页面学到的东西&#xff1a;https://tldp.org/HOWTO/Program-Library-HOWTO 这一篇主要参考这俩&#xff1a; https://tldp.org/HOWTO/Program-Library-HOWTO/introduction.html https://tldp.org/HOWTO/Program-Library-HOWTO/static-libraries.html 这…...

存储块的原理与创建

目录 问题概述 malloc和free 固定块大小分配 设计原理 设计实现 为RTOS提供内存管理与回收机制 问题概述 malloc和free extern void *malloc(unsigned int num_bytes); //malloc向系统申请分配指定size个字节的内存空间。 //返回类型是void *类型 extern void free(void *ptr);…...

RabbitMQ工作模式(详解 工作模式:简单队列、工作队列、公平分发以及消息应答和消息持久化)

文章目录 十.RabbitMQ10.1 简单队列实现10.2 Work 模式&#xff08;工作队列&#xff09;10.3 公平分发10.4 RabbitMQ 消息应答与消息持久化消息应答概念配置 消息持久化概念配置 十.RabbitMQ 10.1 简单队列实现 简单队列通常指的是一个基本的消息队列&#xff0c;它可以用于…...

电脑提示报错NetLoad.dll文件丢失或损坏?是什么原因?

一、NetLoad.dll文件丢失或损坏的根源 程序安装不完整&#xff1a;某些程序在安装过程中可能因为磁盘错误、网络中断或安装程序本身的缺陷&#xff0c;导致NetLoad.dll文件未能正确安装或复制。 恶意软件攻击&#xff1a;病毒、木马等恶意软件可能会篡改或删除系统文件&#x…...

【物联网技术与应用】实验15:电位器传感器实验

实验15 电位器传感器实验 【实验介绍】 电位器可以帮助控制Arduino板上的LED闪烁的时间间隔。 【实验组件】 ● Arduino Uno主板* 1 ● 电位器模块* 1 ● USB电缆*1 ● 面包板* 1 ● 9V方型电池* 1 ● 跳线若干 【实验原理】 模拟电位器是模拟电子元件&#xff0c;模…...

WPF 绘制过顶点的圆滑曲线(样条,贝塞尔)

项目中要用到样条曲线&#xff0c;必须过顶点&#xff0c;圆滑后还不能太走样&#xff0c;捣鼓一番&#xff0c;发现里面颇有玄机&#xff0c;于是把我多方抄来改造的方法发出来&#xff0c;方便新手&#xff1a; 如上图&#xff0c;看代码吧&#xff1a; -------------------…...

YOLOv9-0.1部分代码阅读笔记-assigner.py

assigner.py utils\tal\assigner.py 目录 assigner.py 1.所需的库和模块 2.def select_candidates_in_gts(xy_centers, gt_bboxes, eps1e-9): 3.def select_highest_overlaps(mask_pos, overlaps, n_max_boxes): 4.class TaskAlignedAssigner(nn.Module): 1.所需的库…...

mybatis-plus自动填充时间的配置类实现

mybatis-plus自动填充时间的配置类实现 在实际操作过程中&#xff0c;我们并不希望创建时间、修改时间这些来手动进行&#xff0c;而是希望通过自动化来完成&#xff0c;而mybatis-plus则也提供了自动填充功能来实现这一操作&#xff0c;接下来&#xff0c;就来了解一下mybatis…...

fgets TAILQ_INSERT_TAIL

If you’re using the macros from <sys/queue.h> to implement a circular doubly linked list (TAILQ), the inversion issue occurs because you’re using LIST_INSERT_HEAD, which inserts at the head of the list. Instead, to maintain the original order (FIFO…...

upload-labs关卡记录12

直接上传一句话木马&#xff0c;发现提示&#xff1a; 很明显这是一个白名单&#xff0c;而且不是前端的js检查&#xff0c;而是服务端的检查&#xff0c;因此我们使用bp抓包&#xff0c;改一下文件类型试试&#xff1a; 找到包之后&#xff0c;我们对content-type进行一个更改…...

服务器被攻击怎么办

当服务器遭受恶意流量攻击&#xff0c;如DDoS&#xff08;分布式拒绝服务&#xff09;或CC&#xff08;Challenge Collapsar&#xff09;攻击时&#xff0c;传统的防护措施可能不足以应对。此时&#xff0c;采用高防IP服务可以有效缓解攻击压力&#xff0c;确保业务连续性和数据…...

Node.js 助力前端开发:自动化操作实战

前端开发中&#xff0c;重复性任务如新建文件、配置路由、生成组件等&#xff0c;往往耗时且容易出错。借助 Node.js 的强大能力&#xff0c;我们可以实现开发过程中的自动化操作&#xff0c;提高效率。 文章目录 自动生成 router 配置文件自动生成组件模板动态构建导航菜单自…...

MATLAB符号计算-符号表达式基础运算操作

1.1.2符号变量取值域的限定 默认复数域 【例1-1-2】解不等式 1.1.3创建符号表达式 对符号对象进行各种运算&#xff08;算术运算、关系运算、逻辑运算&#xff09;&#xff0c;即可创建符号表达式。 1.算术运算与转置 【例1-1-3】 f5是f4的共轭转置 f6是f4的转置 2.关系…...

ADB 上传文件并使用脚本监控上传百分比

有个需求&#xff0c;需要测试 emmc的外部连续写入性能&#xff0c;使用 ADB 上传一个巨大的文件。并且在上传到一定值时进行干预。 因此但是 adb push 命令本身会 block 运行并且不返回进度&#xff0c;因此需要一个额外的监控脚本。 上传脚本&#xff1a; echo off setloc…...

深入解析MySQL索引结构:从数组到B+树的演变与优化

前言&#xff1a; 在数据库查询中&#xff0c;索引是一种关键的性能优化工具。然而&#xff0c;索引的失效可能导致查询效率大幅下降。为了更好地理解索引的工作原理及规避其失效&#xff0c;深入了解索引结构的演变过程尤为重要。 MySQL 的索引数据结构从简单到复杂&#xff0…...

【玩转MacBook】JDK安装

下载 JDK 8 官网&#xff1a;https://www.oracle.com/cn/java/technologies/downloads/archive/ 找到 JDK 8 选择&#xff1a; 安装 JDK 双击 .dmg 文件&#xff1a; 继续双击&#xff1a; “继续” “继续” 走到这里&#xff0c;我发现只能选择这个“为这台电脑上的所有…...

word无法创建工作文件,检查临时环境变量。

word无法创建工作文件&#xff0c;检查临时环境变量。 word preview版本&#xff0c;关联打开文件出现报错。word无法创建工作文件&#xff0c;检查临时环境变量。 打开注册表&#xff0c;删除键 Word Preview: HKCR\CLSID{84F66100-FF7C-4fb4-B0C0-02CD7FB668FE} PowerPoint …...

威联通NAS部署openwrt软路由保姆级教程附镜像文件

创作立场&#xff1a;原创不易&#xff0c;拒绝搬运~ hello 大家好&#xff0c;我是你们的老伙伴&#xff0c;稳重的大王~ 本期教程为大家分享&#xff0c;怎么在NAS里面部署软路由&#xff0c;下面是软路由的镜像文件&#xff0c;有两个版本&#xff0c;400M的是定制版~ Sh…...

MySQL共享锁,排他锁

在 MySQL 中&#xff0c;共享锁&#xff08;S 锁&#xff09; 和 排他锁&#xff08;X 锁&#xff09; 是两种主要的锁机制&#xff0c;用于处理事务的并发控制。它们的作用和行为如下&#xff1a; 1. 共享锁 (S 锁) 定义&#xff1a; 共享锁允许事务对某一行数据进行读取&am…...

2. FPGA基础了解--全局网络

前言 引入扇出的概念介绍FPGA中的全局网络为后续时序优化埋下伏笔 扇出 在FPGA设计中扇出是一个重要的概念&#xff0c;所谓的扇出就是一个控制信号所能控制的数据信号的总个数&#xff0c;比如ctrl信号的扇出就是16 reg ctrl 0; reg [15:0] out 0; always (posedge c…...