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

Mysql中索引的知识

Mysql中的索引的定义和种类

核心概念:索引是什么?

想象一下你有一本很厚的书,你想找到其中关于某个特定主题的内容。你有两种方法:

  1. 从头到尾翻阅整本书:这就像数据库中的全表扫描 (Full Table Scan)。如果书很长,这个过程会非常慢。

  2. 查阅书末尾的索引:索引列出了书中的重要词汇或主题,并指明了它们出现在书的哪一页。你只需要快速查找索引(索引本身通常按字母排序),找到你想找的主题,然后直接翻到对应的页码。这就像数据库中的使用索引

在数据库中,索引也是一个类似的数据结构,它存储了表中的某个(或多个)列的值,并关联着这些值对应的行的物理位置或唯一标识。它的主要目的是 加快数据的检索速度

索引的本质:

  • 一个独立于表数据之外的数据结构

  • 存储了表中列的有序副本(或部分副本)。

  • 包含了指向原始数据行的指针或引用。

有了索引,数据库系统在执行查询时,就可以先在索引结构中快速定位到符合条件的索引项,然后通过索引项找到对应的数据行,而不需要扫描整个表的数据文件。

为什么索引的种类感觉很多?

索引的“种类”多,是因为我们从不同的维度去划分和命名索引:

  1. 根据数据结构: 索引底层使用什么数据结构来组织数据(最常见的是 B-Tree/B+Tree)。

  2. 根据逻辑功能或约束: 索引除了加速查询,是否还具备其他功能或强制约束(例如,是否要求索引列的值唯一)。

  3. 根据索引和数据行的关联方式: 索引的数据和实际的表数据是如何存放和关联的(主要是 InnoDB 引擎中的概念,聚簇索引 vs 非聚簇索引/二级索引)。

理解了这几个维度,就能明白为什么会有各种不同的索引名称。

常见索引种类(举例):

我们主要以最常用的 InnoDB 存储引擎 来讲解,因为它对索引的处理方式(特别是聚簇索引)非常有代表性。

1. 根据数据结构:

  • B-Tree (B+Tree) 索引:

    • 这是 MySQL 中最常见的索引类型,特别是 InnoDB 引擎的标准索引。

    • 结构:一种平衡的多路搜索树。

      • 节点(非叶子节点)存储索引键的范围和指向子节点的指针。

      • 叶子节点存储完整的索引键,并包含指向实际数据行(对于二级索引)或直接包含数据行本身(对于聚簇索引)的指针。

      • B+Tree 特点: 所有的真实数据或指向数据的指针都只存在于叶子节点,并且叶子节点之间通过双向链表连接。这使得范围查询非常高效。

    • 适用场景:等值查找、范围查找、排序(前缀匹配)。

    • 例子: 你创建的大部分 PRIMARY KEY, UNIQUE, INDEX (普通索引) 默认都是 B+Tree 索引。

  • Hash 索引:

    • 基于哈希表实现。

    • 结构:将索引列的值进行哈希计算,得到一个哈希值,然后将这个哈希值映射到存储数据行指针的地址。

    • 适用场景:只适用于等值查找 (=)。无法用于范围查找、排序或模糊匹配(如 LIKE 'prefix%')。

    • 特点:查找速度理论上非常快 (O(1) 平均)。但在 MySQL 中,只有 MEMORY 存储引擎默认支持 Hash 索引,InnoDB 引擎虽然也支持一种称为 "Adaptive Hash Index" 的特性,但它是 InnoDB 内部根据工作负载自动创建和管理的,你无法手动创建 Hash 索引。

    • 例子: MEMORY 表的 PRIMARY KEY 或 UNIQUE INDEX 默认使用 Hash 索引。你不能用 CREATE INDEX ... USING HASH 来创建 InnoDB 表的 Hash 索引。

  • Fulltext 索引 (全文索引):

    • 用于在大文本字段 (如 TEXT, VARCHAR) 中进行关键词搜索。

    • 结构:通常使用倒排索引 (Inverted Index)。记录了哪些词出现在了哪些文档(行)中。

    • 适用场景:搜索文章、博客内容等包含大量文本的字段。

    • 使用方式:使用 MATCH(column_name) AGAINST('keywords') 语法进行查询。

    • 例子: 在存储文章内容的 TEXT 字段上创建 FULLTEXT INDEX。

      ALTER TABLE articles ADD FULLTEXT INDEX idx_content (content);
      SELECT title FROM articles WHERE MATCH(content) AGAINST('MySQL Index');
  • Spatial 索引 (空间索引):

    • 用于存储和检索地理空间数据 (如点、线、多边形)。

    • 结构:通常使用 R-Tree

    • 适用场景:地理信息系统 (GIS) 应用,查找某个区域内的点,判断图形是否相交等。

    • 使用方式:需要使用 MySQL 的空间数据类型 (GEOMETRY, POINT, POLYGON 等) 和空间函数。

    • 例子: 在存储坐标的 POINT 字段上创建 SPATIAL INDEX。

      CREATE TABLE cities (name VARCHAR(255),location POINT,SPATIAL INDEX idx_location (location)
      );
      -- 查询某个矩形区域内的城市
      SELECT name FROM cities WHERE MBRContains(GeomFromText('POLYGON((...))'), location);

2. 根据逻辑功能或约束:

  • Primary Key (主键索引):

    • 功能/约束:唯一标识表中的每一行。值必须是唯一的,并且不能为 NULL。

    • 特殊性 (InnoDB):它不仅仅是一个索引,它也是 聚簇索引 (后面会解释)。

    • 一个表最多只能有一个主键。

    • 例子:

      CREATE TABLE users (user_id INT PRIMARY KEY, -- 创建主键索引username VARCHAR(50) UNIQUE,...
      );
  • Unique Index (唯一索引):

    • 功能/约束:确保索引列中的所有值都是唯一的。允许包含 NULL 值(如果列定义允许 NULL 的话,多个 NULL 值是允许的,因为 NULL 不等于 NULL)。

    • 一个表可以有多个唯一索引。

    • 例子: 确保用户名或邮箱地址是唯一的。

      ALTER TABLE users ADD UNIQUE INDEX idx_username (username); -- 创建唯一索引
      ALTER TABLE users ADD UNIQUE INDEX idx_email (email);     -- 创建另一个唯一索引
  • Standard Index / Non-Unique Index (普通索引 / 非唯一索引):

    • 功能/约束:没有任何约束,唯一的作用就是提高查询性能。

    • 索引列的值可以重复。

    • 一个表可以有多个普通索引。

    • 例子: 提高按加入日期查询或排序的速度。

      CREATE INDEX idx_join_date ON users (join_date); -- 创建普通索引
  • Composite Index (复合索引 / 组合索引):

    • 功能/约束:在多个列上创建一个索引。

    • 查询时只有使用了索引的前缀(从左到右的列)才能有效地利用该索引。例如,在 (col1, col2, col3) 上创建的复合索引,可以用于查询 WHERE col1 = ...、WHERE col1 = ... AND col2 = ...、WHERE col1 = ... AND col2 = ... AND col3 = ...,但不能直接用于 WHERE col2 = ... 或 WHERE col3 = ...。

    • 例子: 提高按用户名和邮箱联合查询的速度。

      CREATE INDEX idx_username_email ON users (username, email); -- 创建复合索引

3. 根据索引和数据行的关联方式 (主要在 InnoDB 中):

这是理解 InnoDB 索引的关键。

  • Clustered Index (聚簇索引):

    • 特点: 索引的叶子节点直接存储了表的所有行数据

    • 数据行是根据聚簇索引键的顺序物理地存储在磁盘上的。

    • 一个表只能有一个聚簇索引。

    • 在 InnoDB 中,聚簇索引通常是:

      • 如果你定义了 PRIMARY KEY,那么它就是聚簇索引。

      • 如果你没有定义 PRIMARY KEY,但定义了 UNIQUE NOT NULL 索引,那么第一个这样的索引会被选为聚簇索引。

      • 如果上述两者都没有,InnoDB 会隐式地创建一个隐藏的聚簇索引(一个 6 字节的 ROW_ID)。

    • 查询速度非常快,特别是按主键等值查询或范围查询,因为索引结构直接指向了完整的数据行。

    • 插入数据时,需要根据主键顺序找到合适的物理位置进行插入,可能会导致页分裂。

  • Secondary Index (二级索引 / 非聚簇索引):

    • 特点: 索引的叶子节点存储了索引键的值,以及指向对应聚簇索引键值的指针。

    • 它不包含完整的数据行。

    • 一个表可以有多个二级索引。

    • 查询流程:先通过二级索引找到对应的聚簇索引键值,然后再通过聚簇索引键值去聚簇索引中查找完整的数据行。这个过程称为回表 (Lookup)

    • 例子: 除了主键之外你创建的所有 UNIQUE, INDEX, FULLTEXT, SPATIAL 索引都是二级索引。

理解例子:

假设我们有 users 表:

CREATE TABLE users (user_id INT PRIMARY KEY,          -- 主键,同时是聚簇索引username VARCHAR(50) UNIQUE,      -- 唯一索引,二级索引email VARCHAR(100),               -- 普通字段join_date DATE,                   -- 普通字段status ENUM('active', 'inactive'), -- 普通字段INDEX idx_join_date (join_date)   -- 普通索引,二级索引
) ENGINE=InnoDB;
  • 当你执行 SELECT * FROM users WHERE user_id = 100; 时,MySQL 使用聚簇索引,直接根据 user_id = 100 在聚簇索引 B+Tree 中找到对应的叶子节点,该叶子节点包含了 user_id = 100 的完整行数据。速度极快。

  • 当你执行 SELECT * FROM users WHERE username = 'Alice'; 时,MySQL 使用 idx_username 二级索引。它会在 idx_username 的 B+Tree 中找到 username = 'Alice' 对应的叶子节点。这个叶子节点存储的是 'Alice' 和对应的 user_id 值(假设是 101)。然后,MySQL 会使用 user_id = 101 去聚簇索引中查找完整的行数据(这就是回表)。这个过程比直接通过主键查找多了一步。

  • 当你执行 SELECT user_id, username FROM users WHERE username = 'Alice'; 时,MySQL 仍然使用 idx_username 二级索引。它找到 'Alice' 对应的 user_id (101)。因为查询结果只需要 user_id 和 username,而这两列的值都已经在二级索引的叶子节点中包含了(二级索引叶子节点包含索引列和主键列),所以此时不需要回表。这种情况称为覆盖索引 (Covering Index),效率很高。

总结:

  • 索引是用于加速查询的数据结构,最常见的是 B+Tree。

  • 索引的种类繁多是因为从不同角度命名:底层结构、逻辑功能、数据关联方式。

  • 在 InnoDB 中,核心是区分 聚簇索引 (数据本身就是索引的一部分,通常是主键) 和 二级索引 (单独的索引结构,叶子节点存主键,需要回表查找数据)。

  • 选择和设计合适的索引是数据库性能优化的关键。需要考虑查询模式、写入频率、存储空间等因素。

相关文章:

Mysql中索引的知识

Mysql中的索引的定义和种类 核心概念:索引是什么? 想象一下你有一本很厚的书,你想找到其中关于某个特定主题的内容。你有两种方法: 从头到尾翻阅整本书:这就像数据库中的全表扫描 (Full Table Scan)。如果书很长&…...

VSCode Verilog编辑仿真环境搭建

VSCode Verilog环境搭建 下载Iverilog安装Iverilog验证安装VS Code安装插件 下载Iverilog 官网下载Iverilog 安装Iverilog 一定要勾选这两项 建议勾选这两项 验证安装 运行Windows PowerShell输入命令:iverilog输入命令:Get-Command gtkwave …...

linux修改环境变量

添加环境变量注意事项。 vim ~/.bashrc 添加环境变量时,需要source ~/.bashrc后才能有效。同时只对当前shell窗口有效,当打开另外的shell窗口时,需要重新source才能起效。 1.修改bashrc文件后 2.source后打开另一个shell窗口则无效&#xff…...

为什么要学习《金刚经》

《金刚经》作为佛教般若经典的核心,以"缘起性空"为思想根基,通过佛陀与须菩提的对话,揭示了破除执著、见真实相的智慧。 以下从核心要义、精髓段落和现实应用三个维度进行解读: 一、核心思想精髓 1. "凡所有相&am…...

【阿里云大模型高级工程师ACP习题集】2.7 通过微调增强模型能力 (上篇)(⭐️⭐️⭐️ 重点章节!!!)

习题集: 【单选题】在大模型微调中,与提示工程和RAG相比,微调的独特优势在于( ) A. 无需外部工具即可提升模型表现 B. 能让模型学习特定领域知识,提升底层能力 C. 可以更高效地检索知识 D. 能直接提升模型的知识边界,无需训练 【多选题】以下关于机器学习和传统编程的说…...

Docker 容器双网卡访问物理雷达网络教程

作者: 陈梓洋 环境: ubuntu 22.04lts 时间: 2025年4月29日 Docker 容器双网卡访问物理雷达网络教程 这个教程适用于这样的场景:容器保留原有 ROS 通信网络(如 bridge 网络),同时需要访问一个物…...

C++:Lambda表达式

C:Lambda表达式 C中lambda的基本语法1. 捕获列表(Capture List)2. 示例代码示例 1:简单的lambda示例 2:捕获变量示例 3:按引用捕获示例 4:捕获所有变量示例 5:作为函数参数 3. lambd…...

Vim 中替换字符或文本

在 Vim 中替换字符或文本可以使用 替换命令(substitute),其基本语法为: :[range]s/old/new/[flags]1. 基本替换 命令说明:s/foo/bar/替换当前行的第一个 foo 为 bar:s/foo/bar/g替换当前行的 所有 foo 为 bar:%s/foo/bar/g替换 …...

Thinkphp开发自适应职业学生证书查询系统职业资格等级会员证书管理网站

主要功能介绍 1.PHP MYSQL开发,开源,方便二次开发。 2.后台管理界面清新 3.可批量导入导出数据,格式为:JsoN、CSV、 Excel等。 4.自适应手机端,PC端 5.数据修改,添加,删除非常方便,手机上就可以解决 6.可以增加管理员权限等 7.界面可以个性定制开发...

OpenAI Embedding 和密集检索(如 BERT/DPR)进行语义相似度搜索有什么区别和联系

OpenAI Embedding 和密集检索(如 BERT/DPR)其实是“同一种思想的不同实现”,它们都属于Dense Retrieval(密集向量检索),只不过使用的模型、部署方式和调用方式不同。 🧠 首先搞清楚:…...

C语言复习笔记--数据在内存中的存储

今天我们来复习一下数据在内存中的存储方式.话不多说进入正题. 整数在内存中的存储 整数的2进制表⽰⽅法有三种,即原码、反码和补码.三种表⽰⽅法均有符号位和数值位两部分,符号位都是⽤0表⽰“正”,⽤1表⽰“负”,⽽数值位最⾼位…...

笔试专题(十二)

文章目录 主持人调度题解代码 小红的ABC题解代码 不相邻取数题解代码 空调遥控题解代码 主持人调度 题目链接 题解 1. 排序 2. 先按左端点的大小进行排序,保证时间是连续的,如果后一个点的左端点大于等于前一个点的右端点就是和法的,否则…...

Tauri(2.5.1)+Leptos(0.7.8)开发桌面应用---后台调用Python Matplotlib绘制图形

Rust语言最接近Python Matplotlib绘图库的应该是Plotters,但是试用下来还是没有Matplotlib效果好,所以尝试在Tauri Leptos项目中,后台调用Python Matplotlib绘制图形,并返回给前端Leptos展示。 具体效果如下: 1. 前端…...

Qemu-STM32(十七):STM32F103加入AFIO控制器

概述 本文主要描述了在Qemu平台中,如何添加STM32F103的AFIO控制器模拟代码,AFIO是属于GPIO引脚复用配置的功能。 参考资料 STM32F1XX TRM手册,手册编号:RM0008 添加步骤 1、在hw/arm/Kconfig文件中添加STM32F1XX_AFIO&#x…...

刀客doc:小红书商业技术负责人苍响离职

根据大厂日爆的爆料,小红书商业化再度迎来高层人事变动,原商业平台技术负责人苍响(薯名),职级L2,已于本月正式离职,其下属团队现由电商业务负责人接管。 根据刀客doc获得的资料,苍响…...

CC52.【C++ Cont】滑动窗口

目录 1.题目 2.分析 方法1:暴力枚举 方法2:暴力枚举的优化:"同向双指针",也称滑动窗口 前置知识 核心操作 例子解释 代码 提交结果 1.题目 LCR 008. 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target…...

linux中由于编译选项-D_OS64BIT导致的核心已转储问题

linux中由于编译选项-D_OS64BIT导致的核心已转储问题排查解决: 原因: a.so b.so a.so使用b.so 程序1 程序2 使用a.so 程序1运行正常,程序2启动后提示核心已转储。 程序1和程序2运行的代码都一致,只执行创建xApplication app&…...

Ubuntu搭建 Nginx以及Keepalived 实现 主备

目录 前言1. 基本知识2. Keepalived3. 脚本配置4. Nginx前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 爬虫神器,无代码爬取,就来:bright.cn Java基本知识: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目】实战CRU…...

Knife4j 接口文档添加登录验证流程分析

Knife4j 接口文档添加登录验证流程是非常必要的&#xff0c;否则接口文档一旦暴露到外面是很危险的&#xff0c;今天我们详细分析一下。在1.9.6的版本时&#xff0c;作者把swagger-bootstrap-ui项目重命名为Knife4j&#xff0c;今天分析2.0.6版本。 1、pom.xml文件引入 <pa…...

C++之string

string 是C中常见的一个用于处理和操作字符串的类。一直有用它来存储字符串&#xff0c;今天来介绍介绍一下它的定义和一些基本用法吧。 1、头文件 #include <string>2、定义和初始化 #include <iostream> #include <string> using namespace std;int main…...

【含文档+PPT+源码】基于SSM的电影数据挖掘与分析可视化系统设计与实现

项目介绍 本课程演示的是一款基于SSM的电影数据挖掘与分析可视化系统设计与实现&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本…...

DeepSeek提示词技巧

以下是使用Deepseek等AI工具时提升效果的提示词模式总结&#xff0c;涵盖核心规律、应用场景及效果对比&#xff1a; 规律一&#xff1a;结构化提示&#xff08;解决模糊性问题&#xff09; 问题&#xff1a;开放式问题导致回答笼统 模式&#xff1a;角色任务约束输出格式 例子…...

软考高项(信息系统项目管理师)第 4 版全章节核心考点解析(第4版课程精华版)

一、核心输入输出速记体系&#xff08;力扬老师独家口诀&#xff09; &#xff08;一&#xff09;规划阶段万能输入&#xff08;4 要素&#xff09; 口诀&#xff1a;章程计划&#xff0c;组织事业 ✅ 精准对应&#xff08;ITTO 核心输入&#xff09;&#xff1a; 章程&#…...

【linux网络】网络基础概念

1. 初始协议 1.1 OSI 七层模型 OSI&#xff08;Open System Interconnection&#xff0c;开放系统互连&#xff09;七层网络模型称为开放式系统互联参考模型&#xff0c;是一个逻辑上的定义和规范&#xff1b; 把网络从逻辑上分为了 7 层. 每一层都有相关、相对应的物理设备&a…...

【PyTorch动态计算图实战解析】从原理到高效开发

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比二、实战演示环境配置要求核心代码实现案例1:梯度计算可视化案例2:动态控制流案例3:自定义反向传播运行结果验证三、性能对比测试方法论…...

【专题五】位运算(1):常见位运算操作总结

&#x1f4dd;前言说明&#xff1a; 本专栏主要记录本人的基础算法学习以及LeetCode刷题记录&#xff0c;按专题划分每题主要记录&#xff1a;&#xff08;1&#xff09;本人解法 本人屎山代码&#xff1b;&#xff08;2&#xff09;优质解法 优质代码&#xff1b;&#xff…...

react-native-vector-icons打包报错并且提示:copyReactNativeVectorIconFonts相关信息

使用react-native-vector-icons&#xff0c;打包时会报&#xff1a; FAILURE: Build failed with an exception. * What went wrong: Some problems were found with the configuration of task :app:copyReactNativeVec torIconFonts (type Copy).- Gradle detected a proble…...

【Sqlalchemy Model转换成Pydantic Model示例】

【Sqlalchemy Model转换成Pydantic Model示例】 由于Sqlalchemy和Pydantic的模型字段类型可能有差异, 所以需要一个通用的装换类 def sqlalchemy_to_pydantic_v2(sqlalchemy_model, pydantic_model):"""通用函数&#xff0c;将 SQLAlchemy 模型实例转换为 Pyd…...

探索语音增强中的多尺度时间频率卷积网络(TFCM):代码解析与概念介绍

探索语音增强中的多尺度时间频率卷积网络&#xff08;TFCM&#xff09;&#xff1a;代码解析与概念介绍 在现代音频处理领域&#xff0c;语音增强技术始终是一个备受关注的研究热点。其主要目标是通过去除背景噪声、回声或其他混杂信号&#xff0c;提升语音通话或录音的质量。…...

私有知识库 Coco AI 实战(四):打造 ES 索引参数小助手

经过前面的实战&#xff0c;我们已经能够快速、准确的检索 ES 官方文档的内容了&#xff0c;但是还是要自己去阅读。既然 Coco AI 能与大模型交互&#xff0c;我们何不直接用大模型来阅读文档&#xff0c;回答我们的问题&#xff1f; 模型配置 我们进入 Coco AI 管理后台&…...

苍穹外卖心得体会

1 登录认证 技术点&#xff1a;JWT令牌技术&#xff08;JSON Web Token&#xff09; JWT&#xff08;JSON Web Token&#xff09;是一种令牌技术&#xff0c;主要由三部分组成&#xff1a;Header头部、Payload载荷和Signature签名。Header头部存储令牌的类型&#xff08;如JW…...

Ubuntu上搭建python环境并安装第三方库

Ubuntu上搭建python环境并安装第三方库 更新系统包列表安装Python和pip验证安装创建并使用虚拟环境虚拟环境中安装第三方库编写并测试python脚本运行.py文件 使用Ubuntu 24.04搭建python环境并安装第三方库 更新系统包列表 sudo apt update安装Python和pip sudo apt install…...

redis高阶2 高性能

灵魂拷问&#xff1a; redis 为什么块&#xff1f; 纯内存访问单线程避免上下文切换渐进式ReHash , 缓存时间戳 Redis 的 key 和 value组织结构&#xff1a; 全局哈希表&#xff1a; 为了实现从键到值的快速访问。 redis 使用了一个哈希表 来保存所有键值对。一个哈希表 其实就…...

go编解码json和http请求

1.json概述 json是日常工作中http请求的最重要的数据格式。对比日常使用python中的json&#xff0c;获得http请求后json.loads和json.dumps函数&#xff0c;go中显的非常麻烦&#xff0c;这里结合json和http请求的总结下&#xff0c;便于积累和学习。这里给出一个json的类型&a…...

洛谷题解 | CF1979C Earning on Bets

目录 题目描述输入格式输出格式输入输出样例 #1输入 #1输出 #1 说明/提示题目思路AC 代码 题目描述 You have been offered to play a game. In this game, there are $ n $ possible outcomes, and for each of them, you must bet a certain integer amount of coins. In th…...

在线文章系统自动化测试报告

目录 1. 项目简介 1.1. 用户登录页面 1.2. 文章列表页面 1.3. 文章详情页面 1.4. 文章编辑与发布页面 2. 测试计划 3. 测试环境/工具/技术栈 4. 编写自动化测试用例​编辑 5. 自动化测试脚本开发 5.1. 项目整体结构 5.2. 配置utils.py 5.2.1. 导入必要的库 5.2.2.…...

C++ 类和对象(3)初始化列表、友元函数、内部类

文章目录 再谈构造函数构造函数体内赋值 初始化列表初始化列表特点 类型转换static成员static特点C11中成员初始化的新用法 友元友元函数友元函数特点 友元类友元类的特点 内部类内部类的特点 再谈构造函数 构造函数体内赋值 当我们创建对象时&#xff0c;编译器会调用构造函…...

CF4C Registration system(哈希实现)

解题思路&#xff1a;因为这道题在每次输入一个字符串后&#xff0c;都需要进行一次查找以判断是否需要按照规则生成新的用户名&#xff0c;故这道题使用STL容器map进行哈希是最合适的(map的查找时间复杂度为log n)&#xff0c;在题目描述中&#xff0c;如果用户名已经被注册&a…...

DDI0487--A1.7

Introduction RAS(Reliability&#xff0c;Availability&#xff0c;Serviceability&#xff09; RAS是衡量一个系统可靠性的三个方面: Reliability——持续提供正确服务的能力。 Availability——正确提供服务的准备状态。 Serviceability——能够进行修改和修复的能力。 R…...

MySQL事务(transaction)(笔记)

事务(Transaction)&#xff08;必须掌握必须理解&#xff09; 1.什么是事务? 一个事务是一个完整的业务逻辑单元&#xff08;一个业务逻辑单元常常涉及到多条DML语句共同执行完成&#xff09;,不可再分&#xff08;最小的工作单元&#xff09; 一个事务就是一个业务,完成一个…...

ADS1299模拟前端(AFE)代替芯片——LHE7909

在现代医疗科技的飞速发展中&#xff0c;精确的生物电势测量设备变得越来越重要。领慧立芯推出的LHE7909&#xff0c;是一款专为心电图&#xff08;ECG&#xff09;和其他生物电势测量设计的低噪声24位模数转换器&#xff08;ADC&#xff09;&#xff0c;为医疗设备制造商提供了…...

(三十二)Android开发中AppCompatActivity和Activity之间的详细区别

在 Android 开发中&#xff0c;AppCompatActivity 和 Activity 是两个核心类&#xff0c;用于创建和管理应用程序的用户界面。尽管它们功能上有重叠&#xff0c;但它们之间存在显著的区别。本文将详细讲解 AppCompatActivity 和 Activity 的区别&#xff0c;并结合代码示例和具…...

Neo4j 的 `SET n += $properties` 语法详解

Neo4j 的 SET n $properties 语法详解 SET n $properties 是 Neo4j Cypher 查询语言中的一个非常有用的语法&#xff0c;用于更新节点或关系的属性。让我详细解释它的含义和工作原理&#xff1a; 基本含义 SET&#xff1a;Cypher 中用于修改属性或标签的关键字n&#xff1…...

springboot 框架把 resources下的zip压缩包, springboot 项目启动后解压到项目根目录工具类

最近有一个需求&#xff0c;在开发的时候 有一些c的扩展文件 需要放到服务器上&#xff0c;如果手动放上去&#xff0c;给用户部署项目就很麻烦&#xff0c;就根据这个需求&#xff0c;先把项目需要的 扩展文件 打包成zip压缩包 然后项目启动的时候 把resources文件夹下的 zip压…...

指针(5)

1.sizeof 和 strlen 的对比 1.1sizeof sizeof 是操作符&#xff0c;sizeof 计算变量所占内存空间的大小&#xff0c;单位是字节&#xff0c;如果操作数是类型的话&#xff0c;计算的是使用类型创建的变量所占空间的大小。 sizeof 只关注占用内存的空间的大小&#xff0c;不在…...

机器学习day4-Knn+交叉验证api练习(预测facebook签到位置)

数据集&#xff1a;FackebookV : 预测 row id&#xff1a;签⼊事件的id x y&#xff1a;坐标 accuracy: 准确度&#xff0c;定位精度 time: 时间戳 place_id: 签到的位置&#xff0c;需要预测的内容 具体步骤&#xff1a; # 1.获取数据集 # 2.基本数据处理 # 2.1 缩⼩数据…...

AI工具 Trae 创建java项目和配置运行环境完整示例

以下是使用字节跳动 Trae IDE 创建 Java 项目并配置运行环境的完整示例,结合其核心功能和搜索结果的实践案例整理: 一、环境准备与安装 下载与安装 访问 Trae 官网 下载 Windows 或 macOS 版本客户端,安装完成后选择中文界面和主题(推荐 Dark/DeepBlue 主题)。首次启动时支…...

【论文_序列转换模型架构_20230802v7】Attention Is All You Need 【Transformer】

https://arxiv.org/abs/1706.03762 20170612 v1 代码实现_notebook ∗Equal contribution. Listing order is random. Jakob proposed replacing RNNs with self-attention and started the effort to evaluate this idea. 提出用 self-attention 替代 RNNs&#xff0c;并开始…...

清晰易懂的跨域请求知识——拿捏

1. 什么是跨域请求&#xff1f; 简单来说&#xff1a;当你的 前端网页&#xff08;例如 http://frontend.com&#xff09;通过 JavaScript 调用 后端接口&#xff08;例如 http://backend.com/api&#xff09;时&#xff0c;如果两者的 域名、端口、协议 中任意一项不同&#…...

前端漏洞不扫描理由

漏洞类型豁免理由基于DOM的XSS1.已实施安全加固&#xff1a; 使用encodeURIComponent对URL参数进行编码 对特殊字符(<>“”&)进行HTML实体转义 使用template literal替代字符串拼接 移除了直接操作DOM的不安全写法,二次扫描仍然扫描出来&#xff0c;且修改建议模糊 2…...