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

MySQL的索引

在这里插入图片描述

没有索引会怎么样

  • 数据库中的数据最终是存储在磁盘上的。

  • mysql服务器,本质上是内存进程,CURD操作全都是在内存中进行的—索引也是如此。
    所以,需要将数据从磁盘读进内存,才能进行操作。

  • 如果没有索引,表中的数据会向链表一样前后相连,查找某个数据的方式是线性查找效率很低,这是一方面;另一方面需要将数据从磁盘全部读入内存,IO次数多,这是另一方面导致查找效率低的原因。

  • 提高算法效率: 1. 组织数据的结构 2.算法本身
    总结:如果没有索引就会导致查找效率很低。

磁盘

从硬件方面理解为什么没有索引效率低。

内存与磁盘IO效率低的主要原因

是两者IO效率低的原因,就是磁盘定位数据所在的位置花费的时间比较久,其实两者进行数据传送的效率挺高。
磁盘定位数据所在的位置:确定盘面–>确定柱面(磁道)–>确定扇区。

内存与磁盘IO的基本单位

一般是4KB

MySQL,OS和磁盘的关系

MySQL与磁盘的交互的基本单位是16kb
在这里插入图片描述

建立共识

在这里插入图片描述

  • 总结:
    1.page的大小为16kb,也是MySQL与磁盘交互的基本单位。
    2.MySQL申请了Buffer Pool充当缓存
    3.提高效率,要减少系统与磁盘的IO次数
    4.OS与磁盘的IO的基本单位是4kb

一个现象和结论

Create Table: CREATE TABLE `user` (
`id` int(11) NOT NULL,
`age` int(11) NOT NULL,
`name` varchar(16) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 --默认就是InnoDB存储引擎--插入多条记录,注意,我们并没有按照主键的大小顺序插入哦
mysql> insert into user (id, age, name) values(3, 18, '杨过');
Query OK, 1 row affected (0.01 sec)
mysql> insert into user (id, age, name) values(4, 16, '小龙女');
Query OK, 1 row affected (0.00 sec)
mysql> insert into user (id, age, name) values(2, 26, '黄蓉');
Query OK, 1 row affected (0.01 sec)
mysql> insert into user (id, age, name) values(5, 36, '郭靖');
Query OK, 1 row affected (0.00 sec)
mysql> insert into user (id, age, name) values(1, 56, '欧阳锋');
Query OK, 1 row affected (0.00 sec)

在这里插入图片描述

现象

向一个具有主键的表无序的插入数据但数据会自动排序

谁做的?

MySQL做的

理解MySQL中的page

  • MySQL中一定需要,且存在着大量的page–>MySQL必须对这些page进行管理
  • 如何管理?—>先描述,再组织
  • page不仅仅是一个内存块,其中必须写入对应的管理信息。
    在这里插入图片描述
struct page
{struct page* next;struct page* prev;char buffer[NUM];
}

在Buffer Pool中对page进行了建模

为什么?–>支持高效查找

方便引入页内目录

  • 数据是链式存储的,查找数据是线性查找–>提高查找效率的方法
    1.page内
    在单个page中引入目录,引入目录的前提是这个数据时有序的,这个可以类比一下看书时的目录
    这样就可以加快在单个page中的查找效率了
    在这里插入图片描述

    2.page间
    如果有很多个page呢?page间也是用链前后链接的,一定不能用线性查找,查找效率太低了;另一方面将这些page加载进内存IO次数很高。
    在这里插入图片描述

  • 引入页目录
    页目录中只有索引(4 byte)和指针 (8byte)
    (16kb1024byte)/ (4 byte+8 byte) = 1365 个
    每个页目录大约可以管理1365个页
    在这里插入图片描述
    如果page比想象中的更多,那么就在加一层页目录
    这样大约能管理100 万(1365
    1365)页 ,大约是 16GB(100万*16 kb)的数据
    在这里插入图片描述

索引的实现形式

常使用的是B+树,有的使用哈希
B+树的特点:

  1. 叶子节点保存数据,路上节点没有数据,即非叶子节点不要数据,只要目录项。

    1.1 路上节点没有数据–>可以存更多的目录项;目录页可以管理更多的叶子page;这棵树一定矮胖 -->矮途径的节点减少–>找到目标数据只需要更少的page,IO次数减少,在IO层面上提高了查找的效率。
    1.2 每一个节点都有目录项,可以大大提高检索效率
    以上的两点整体提高了搜索的效率。

2.叶子节点全部用链表前后关联起来

     这是B+树的特点比较希望进行范围查找

图1

  • 上面的图就是 MySQL innodb下的索引结构–>一般在该结构下进行CURD操作。
  • 没有主键,也是这样吗?
    是的,MySQL会自动形成一个默认的,隐藏的主键,但查找数据时,只能进行线性查找。

其他数据结构为什么不行?

  1. 链表:线性遍历,查找效率低。
  2. 二叉搜索树: 可能退化为链表,线性查找,效率低。
  3. AVL树和红黑树:相较于B+树,树瘦高–>意味着IO次数更多
  4. 哈希:不支持区间查找
  • B-树 vs B+树
    B树中的节点中都有数据,IO相较于B+树更多
    B树中叶节点没有相连,意味着B树不支持范围查找。

聚簇索引 vs 非聚簇索引

聚簇索引

数据和索引不分离
在这里插入图片描述
Inoodb就是聚簇索引,
在这里插入图片描述
在这里插入图片描述

非聚簇索引

数据和索引分离
叶节点中存放的不是数据,而是地址(指向数据)
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

辅助(普通)索引

聚簇索引的普通索引

在建立一张索引和数据表,索引是指定列的索引,而数据则是对应的主键信息。
通过普通索引查找信息的流程是,通过普通索引找到主键值,再用找到的主键值查找主索引表就可以了。
在这里插入图片描述

聚簇索引的普通索引

再建立一张普通索引表,修改叶节点指向的地址就可以了。
在这里插入图片描述

索引操作

索引主要有三种形式:主键,唯一键,普通索引

创建主键索引

创建表时
在这里插入图片描述
在这里插入图片描述
给没有主键的表添加
在这里插入图片描述

删除主键

在这里插入图片描述

查询索引

  1. show keys from 表名

  2. show index from 表名
    在这里插入图片描述

  3. desc 表名

添加唯一键

在这里插入图片描述

唯一键也可以看做普通索引,那么就会创建一个新的索引表。
在这里插入图片描述

删除唯一键

在这里插入图片描述
删除唯一键后,那张关于唯一键的索引表也被删除了。
在这里插入图片描述

添加普通索引

在这里插入图片描述
新增了普通索引的索引表
在这里插入图片描述

  • 创建一个自己命名的普通索引表
    在这里插入图片描述
    在这里插入图片描述

删除普通索引

在这里插入图片描述
同时删除普通索引的索引表结构
在这里插入图片描述

复合索引

  • 复合索引就是多列充当索引。
    创复合索引的第一列为key,复合索引可以直接通过key值查找,直接返回复合索引中其他列的值,不需要在去查一遍主索引表。这也就是索引覆盖–>覆盖的是主键值。

创建复合索引
在这里插入图片描述
在这里插入图片描述
看上去是三张索引表,实际上是两张。一张是主键索引表,另一张是复合索引表

在这里插入图片描述

全文索引

  • 只能在MyIsam中使用
  • 主要的应用场景是查询一列中的某些字段
CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT (title,body)
)engine=MyISAM;INSERT INTO articles (title,body) VALUES
('MySQL Tutorial','DBMS stands for DataBase ...'),
('How To Use MySQL Well','After you went through a ...'),
('Optimizing MySQL','In this tutorial we will show ...'),
('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
('MySQL vs. YourSQL','In the following database comparison ...'),
('MySQL Security','When configured properly, MySQL ...');

创建全文索引
在这里插入图片描述

在这里插入图片描述

  • 查询有没有database数据
    在这里插入图片描述
    在这里插入图片描述
    这种是没有使用索引的,如果数据量很大,那么这种方式会很慢。

  • 如何使用全文索引
    在这里插入图片描述
    在这里插入图片描述

索引的创建原则

在这里插入图片描述

相关文章:

MySQL的索引

没有索引会怎么样 数据库中的数据最终是存储在磁盘上的。 mysql服务器,本质上是内存进程,CURD操作全都是在内存中进行的—索引也是如此。 所以,需要将数据从磁盘读进内存,才能进行操作。 如果没有索引,表中的数据会向…...

Pytest 高级用法:间接参数化

文章目录 1. 引言2. 基础概念2.1 Fixture2.2 参数化 3. 代码实例3.1 基础设置3.2 测试用例示例示例 1:基础的间接参数化示例 2:通过 request 获取参数值示例 3:多参数组合测试示例 4:部分间接参数化 4. 最佳实践5. 总结参考资料 1…...

基于视觉语言模型(VLM)的CogAgent

前言 CogAgent 是由清华大学与智谱AI联合推出的一个多模态大模型,专注于图形用户界面(GUI)的理解和导航。它代表了在视觉语言模型(VLM)领域的一项重要进展,特别是在GUI Agent能力方面。相较于传统的基于文…...

文件传输工具FTransferor<优化篇>

在上一篇文章中,我们详细探讨了FTransferor文件传输工具的设计与实现,并展示了它在局域网文件传输方面的高效性。然而,随着互联网应用场景的不断丰富,传统的基于 TCP/UDP 的传输方式已经无法满足部分开发者的需求。特别是在跨平台…...

【Linux】Centos7下载npm

Index of /dist/v16.20.2/ (nodejs.org) 下载 wget https://nodejs.org/dist/v16.20.2/node-v16.20.2-linux-x64.tar.gz解压 sudo tar -zxvf node-v16.20.2-linux-x64.tar.gz 配置环境变量 sudo vim /etc/profile export NODE_HOME/usr/local/node-v16.20.2-linux-x64 ex…...

Spring boot + Hibernate + MySQL实现用户管理示例

安装MySQL Windows 11 Mysql 安装及常用命令_windows11 mysql-CSDN博客 整体目录 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLS…...

Neo4j GDS 2.0 安装与配置

Neo4j GDS 2.0 安装与配置 GDS插件安装&#xff1a;Neo4j官方文档 1. GDS简介 Neo4j Graph Data Science (GDS) 库作为 Neo4j Graph Database 的插件提供。该插件需要安装到数据库中并在 Neo4j 配置中列入白名单。有两种主要方法可以实现这一点&#xff0c;我们将在本章中详…...

【非关系型数据库Redis 】 入门

Redis入门 一、非关系型数据库概述 &#xff08;一&#xff09;概念 非关系型数据库&#xff08;NoSQL&#xff0c;Not Only SQL&#xff09;是相对于传统的关系型数据库而言的一种数据存储管理系统。它摒弃了关系型数据库中严格的表结构、SQL 语言操作以及复杂的事务等特性…...

【Linux报告】实训一:GNME桌面环境的设置及应用

实训一&#xff1a;GNME桌面环境的设置及应用 【练习1】在图形模式和文本模式下登录Linux系统。 1、开启Linux虚拟机。 答&#xff1a;打开此虚拟机如图所示 2、观察屏幕上显示的启动信息。 3、当系统启动到图形界面时&#xff0c;用普通用户身份登录。 答&#xff1a;如图…...

mysql8 从C++源码角度看 客户端发送的sql信息 mysql服务端从网络读取到buff缓存中

MySQL 8 版本中的客户端-服务器通信相关&#xff0c;特别是在接收和解析网络请求的数据包时。以下是对代码各个部分的详细解释&#xff0c;帮助您更好地理解这些代码的作用。 代码概述 这段代码主要负责从网络读取数据包&#xff0c;它包含了多个函数来处理网络数据的读取、缓…...

log4j2的Strategy、log4j2的DefaultRolloverStrategy、删除过期文件

文章目录 一、DefaultRolloverStrategy1.1、DefaultRolloverStrategy节点1.1.1、filePattern属性1.1.2、DefaultRolloverStrategy删除原理 1.2、Delete节点1.2.1、maxDepth属性 二、知识扩展2.1、DefaultRolloverStrategy与Delete会冲突吗&#xff1f;2.1.1、场景一&#xff1a…...

macos 支持外接高分辩率显示器开源控制软件

macos 支持外接高分辩率显示器开源控制软件 软件&#xff08;app应用&#xff09;名&#xff1a;BetterDisplay 官方地址&#xff1a; https://github.com/waydabber/BetterDisplay...

HTML5实现好看的喜庆圣诞节网站源码

HTML5实现好看的喜庆圣诞节网站源码 前言一、设计来源1.1 主界面1.2 圣诞介绍界面1.3 圣诞象征界面1.4 圣诞活动界面1.5 圣诞热度界面1.6 圣诞纪念界面1.7 联系我们界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看的喜庆圣诞节网站源码&#xff0c;圣…...

鸿蒙 NEXT 开发中,使用公共事件进行进程间通信

大家好&#xff0c;我是 V 哥&#xff0c;在鸿蒙 NEXT 开发中&#xff0c;使用公共事件进行进程间通信&#xff08;IPC&#xff09;是一种常见的做法。下面我将提供一个完整的业务代码示例&#xff0c;并解释逻辑关系&#xff0c;以便即使是初学者也能按照步骤进行实操&#xf…...

算法-excel表头位置转成对应数字 26进制转10进制

给你一个字符串 columnTitle &#xff0c;表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。 例如&#xff1a; A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ... 示例 1: 输入: columnTitle "A" 输出: 1示例 2: 输入: colu…...

清华发布Hyper-YOLO:超图计算+目标检测!捕捉高阶视觉关联

目录 论文信息 引言 背景 算法概括 超图计算 Hyper-YOLO整体架构 基于超图的跨层次和跨位置表示网络 Coovally AI模型训练与应用平台 实验结论 总结 论文信息 题目&#xff1a;Hyper-YOLO: When Visual Object Detection Meets Hypergraph Computation Hyper-YOLO&a…...

如何使用网络工具进行网络性能评估

网络评估是对IT基础设施的系统评估&#xff0c;以确保它能够很好地满足企业的核心运营需求&#xff0c;确定了基础设施中需要改进的领域&#xff0c;并定义了改进的范围。 网络评估工具分析IT基础设施的各个方面&#xff0c;它通过评估网络设备、网络性能和安全威胁来仔细检查…...

MyBatis执行一条sql语句的流程(源码解析)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 MyBatis执行一条sql语句的流程&#xff08;源码解析&#xff09; MyBatis执行sql语句的流程加载配置文件加载配置文件的流程 创建sqlsessionFactory对象解析Mapper创建sqlses…...

使用three.js 实现vr全景图展示,复制即可用

1.实现效果 2.代码 1.npm安装three.js npm install three 2.引入three.js import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls 3.初始化模型 init(val) {this.container document.querySelector(.container)// 初始…...

MATLAB关于集合的运算(部分)

集合运算比较两个集合中的元素&#xff0c;以找出共性或差异 i n t e r s e c t intersect intersect表示两组数据的交集 i s m e m b e r ismember ismember表示查找数据的集合成员 u n i o n union union表示两个数据集的并集 u n i q u e unique unique表示查找数据集的…...

谈谈数据产品开发流程

数据产品开发流程涵盖以下关键步骤&#xff1a;首先是需求调研与规划&#xff0c;通过与业务部门等沟通&#xff0c;明确产品定位、受众及功能&#xff0c;制定项目计划。接着进行数据采集与处理&#xff0c;确定数据源&#xff0c;运用合适工具采集并清洗、转换数据后存储。然…...

Unity3D仿星露谷物语开发12之创建道具列表

1、目标 道具是游戏的核心部分&#xff0c;道具包括你可以拾取的东西&#xff0c;你可以使用的工具和你能种的东西等。 本节就是创建道具的信息类。同时了解ScriptableObject类的使用。 2、创建道具枚举类 修改Assets -> Scripts -> Enums.cs脚本&#xff0c; 新增如…...

Linux(Centos 7.6)常见基础配置

1.网络配置 网络配置详见&#xff1a;VMware安装Linux(Centos 7.6)后网络配置 2.yum源配置 yum源配置详见&#xff1a;Linux(Centos 7.6)yum源配置 3.主机名配置 1.Linux(Centos 7.6)系统安装后&#xff0c;没有配置主机名时&#xff0c;root用户登录后&#xff0c;是如下…...

2024年底关于期货的工作总结

十几年程序猿出身&#xff0c;因几年前的懵懂无畏闯入期货市场&#xff0c;盈了&#xff0c;感觉期货太简单&#xff0c;飘然裸辞&#xff0c;想当财务自由者&#xff0c;全职做交易。当深入学习时&#xff0c;却亏了&#xff0c;原来市场是让人敬畏的&#xff0c;也是反人性的…...

python 插入排序(Insertion Sort)

插入排序&#xff08;Insertion Sort&#xff09; 插入排序是一种简单的排序算法。它的基本思想是&#xff1a;将数组分为已排序部分和未排序部分&#xff0c;然后逐个将未排序部分的元素插入到已排序部分的正确位置。插入排序类似于整理扑克牌的过程。 插入排序的步骤&#…...

数据库自增 id 过大导致前端时数据丢失

可以看到&#xff0c;前端响应参数是没有丢失精度的 但是在接受 axios 请求参数时出现了精度丢失 解决方案一&#xff1a;改变 axios 字符编码 axios.defaults.headers[Content-Type] application/json;charsetUTF-8; 未解决 解决方案二&#xff1a;手动使用 json.parse() …...

优化租赁小程序提升服务效率与用户体验的策略与实践

内容概要 在这个快速发展的商业环境中&#xff0c;租赁小程序成为了提升服务效率和用户体验的重要工具。通过对用户需求的深入挖掘&#xff0c;我们发现他们对于功能的便捷性、响应速度和界面的友好性有着极高的期待。因此&#xff0c;针对这些需求&#xff0c;完善租赁小程序…...

nvm node.js 版本管理工具

nvm 介绍 nvm 全称 Node Version Manager 顾名思义它是用来管理 node 版本的工具&#xff0c;方便切换不同版本的Node.js 使用 nvm 的使用非常的简单&#xff0c;跟 npm 的使用方法类似 下载安装 首先先下载 nvm&#xff0c;下载地址 https://github.com/coreybutler/nvm…...

使用Locust对Redis进行负载测试

1.安装环境 安装redis brew install redis 开启redis服务 brew services start redis 停止redis服务 brew services stop redis 安装Python库 pip install locust redis 2.编写脚本 loadTest.py # codingutf-8 import json import random import time import redis …...

计算机网络与通信复习

因特网的核心部分&#xff08;电路交换与分组交换的不同点&#xff0c;分组交换的优点&#xff09; 核心部分&#xff1a;路由器、交换机 我们假如数据就是一个货物&#xff0c;比如说一千公斤的大米&#xff0c;电路交换要有专用通道&#xff0c;不管从起点到终点经过多少个…...

WAV文件双轨PCM格式详细说明及C语言解析示例

WAV文件双轨PCM格式详细说明及C语言解析示例 一、WAV文件双轨PCM格式详细说明1. WAV文件基本结构2. PCM编码方式3. 双轨PCM格式详细说明二、C语言解析WAV文件的代码示例代码说明一、WAV文件双轨PCM格式详细说明 WAV文件是一种用于存储未压缩音频数据的文件格式,广泛应用于音频…...

【华为OD-E卷 - 网上商城优惠活动 100分(python、java、c++、js、c)】

【华为OD-E卷 - 网上商城优惠活动 100分&#xff08;python、java、c、js、c&#xff09;】 题目 某网上商场举办优惠活动&#xff0c;发布了满减、打折、无门槛3种优惠券&#xff0c;分别为&#xff1a; 每满100元优惠10元&#xff0c;无使用数限制&#xff0c;如100 ~ 199元…...

c# Record关键字

在 C# 9.0 中引入了 record 关键字&#xff0c;用于定义记录类型&#xff08;Record Types&#xff09;。记录类型是一种轻量级的数据载体&#xff0c;专注于表示数据&#xff0c;它提供了内置的相等性比较、生成属性和方法等功能&#xff0c;使得编写数据类更加简洁和高效。 …...

Windows 10 自带功能实现大屏、小屏无线扩展

一、添加可选功能 在作为无线投屏对象的「第二屏」设备上&#xff0c;打开 Windows 10 设置并定位至「应用 > 应用和功能」界面&#xff0c;然后点击右侧界面中的「可选功能」选项。 点击可选功能界面顶部的「添加功能」按钮&#xff0c;搜索「无线显示器」模块并选择添加。…...

Python内存管理揭秘:有效避免内存泄漏,提升程序稳定性

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在现代软件开发中,内存管理是确保程序高效、稳定运行的关键因素之一。尽管Python凭借其自动垃圾回收机制简化了内存管理,但内存泄漏问题仍…...

论文分享 | PromptFuzz:用于模糊测试驱动程序生成的提示模糊测试

大语言模型拥有的强大能力可以用来辅助多种工作&#xff0c;但如何有效的辅助仍然需要人的精巧设计。分享一篇发表于2024年CCS会议的论文PromptFuzz&#xff0c;它利用模型提示生成模糊测试驱动代码&#xff0c;并将代码片段嵌入到LLVM框架中执行模糊测试。 论文摘要 制作高质…...

网工日记:FTP两种工作模式的区别

FTP 的主动模式和被动模式在连接建立的发起方、数据传输端口以及对网络环境的适应性等方面存在明显区别&#xff1a; 1. 连接发起方 主动模式&#xff1a;数据连接由服务器主动发起。在控制连接建立后&#xff0c;客户端通过 PORT 命令告知服务器自己用于接收数据的临时端口号…...

clickhouse-backup配置及使用(Linux)

一、下载地址 Releases Altinity/clickhouse-backup GitHub 二、上传到服务器解压安装 自行上传至服务器&#xff0c;解压命令&#xff1a; tar xvf clickhouse-backup-linux-amd64.tar.gz 三、创建软连接 sudo ln -sv build/linux/amd64/clickhouse-backup /usr/local/bin/…...

【每日学点鸿蒙知识】模拟器开启网络、长时任务、兼容性测试支持、丢帧定位、SO中访问rawfile等

1、模拟器如何开启网络&#xff1f; 模拟器使用的是电脑本身的网络&#xff0c;不通过代理即可访问网络。 2、创建子window后&#xff0c;锁屏很短时间内&#xff0c;应用会被杀死&#xff1f; 没开长时任务&#xff0c;锁屏和退后台保活要开长时任务。 应用退至后台后&…...

Python 将文字和二维码 生成到BMP上 可以做标签打印等

直接上代码吧&#xff0c;都有注释&#xff0c;看得明白 将代码复制到main.py文件中&#xff0c;就可以调试了 from PIL import Image, ImageDraw, ImageFont import matplotlib.font_manager as fm from matplotlib.font_manager import FontProperties import os import qr…...

pat 乙级1096 大美数

若正整数 N 可以整除它的 4 个不同正因数之和&#xff0c;则称这样的正整数为“大美数”。本题就要求你判断任一给定的正整数是否是“大美数”。 输入格式&#xff1a; 输入在第一行中给出正整数 K&#xff08;≤10&#xff09;&#xff0c;随后一行给出 K 个待检测的、不超过…...

INT303 Big Data Analytics 笔记

Lecture1 Introduction 不考&#xff01; “Data Mining is the study of collecting, processing, analyzing, and gaining useful insights from data” EXPLORATORY ANALYSIS Make measurements to understand what the data looks like first steps when collecting da…...

Git 解决 everything up-to-date

首先使用git log查看历史提交&#xff0c;找到最新一次提交&#xff0c;比如&#xff1a; PS D:\Unity Projects\CoffeeHouse\CoffeeHouse_BurstDebugInformation_DoNotShip> git log commit a1b54c309ade7c07c3981d3ed748b0ffac2759a3 (HEAD -> master, origin/master)…...

初级算法 - 数组简介

数组简介 在TypeScript中&#xff0c;数组是一种存储同一类型数据的集合类型。数组可以动态调整长度&#xff0c;支持对元素进行增删改查等操作。通过类型注解&#xff0c;可以更清晰地约束数组中元素的类型&#xff0c;提升代码的可维护性。 创建数组的方式 1. 使用字面量方式…...

【毕业设计选题】目标检测方向毕业设计选题推荐 2025

目录 前言 毕设选题 开题指导建议 更多精选选题 选题帮助 最后 前言 大家好,这里是海浪学长毕设专题! 大四是整个大学期间最忙碌的时光&#xff0c;一边要忙着准备考研、考公、考教资或者实习为毕业后面临的升学就业做准备,一边要为毕业设计耗费大量精力。学长给大家整…...

适配器模式详解

适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许将一个类的接口转换成客户所期望的另一个接口&#xff0c;使得原本不兼容的类能够协同工作。这种模式的主要目的是解决接口不匹配的问题&#xff0c;它通过创建一个适配器类&#xff…...

基于 Spring 的自定义注解和请求拦截器实现认证机制

基于 Spring 的自定义注解和请求拦截器实现认证机制 一、基于 Spring 的自定义注解和请求拦截器实现认证机制1. 背景2. 业务场景3. 核心实现3.1 定义自定义注解 IgnoreAuth3.2 定义请求拦截器 AuthInterceptor3.3 配置拦截器3.4 登录接口 4. 小结 一、基于 Spring 的自定义注解…...

Java编程规约:集合处理

文章目录 I 集合处理【强制】【推荐】II 知识扩展I 集合处理 【强制】 不要在 foreach 循环里进行元素的 remove / add 操作。remove 元素请使用 iterator 方式,如果并发操作,需要对 iterator 对象加锁。// 正例: List<String> list = new ArrayList<>(...

python使用PyQt5,整套,桌面应用

安装 安装 pip install PyQt55.7.1 pip install PyQtWebEngine1、创建窗口&#xff0c;按百分比划分 from PyQt5.QtGui import QGuiApplication from PyQt5.QtWidgets import QApplication, QWidget # 创建应用程序实例 app QApplication([]) # 创建主窗口 window QWidget(…...

机械臂的各种标定

文章目录 1. 工具坐标系标定2. 工具手标定3. 手眼标定联系 在工程中&#xff0c;同时使用工具坐标系标定、工具手标定和手眼标定的概念、目的和作用如下&#xff1a; 1. 工具坐标系标定 概念&#xff1a; 工具坐标系标定是指确定工具相对于机器人坐标系的位置和姿态关系的过程…...