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

【每日八股】MySQL篇(三):索引(上)

目录

  • MySQL 为什么使用 B+ 树来做索引,它的优势是什么?
    • 特性和定义
    • B+ 树和 B 树的对比
      • 拓展:既然 B+ 树相较于 B 树优势如此之大,为什么 nosql 的 MongoDB 底层仍采用 B 树而不是 B+ 树?
    • 使用 B+ 树做索引的优势
      • 补充:为什么说 B+ 树的插入和删除效率高?B+ 树的冗余结点是如何形成的?它们的作用是什么?冗余结点是如何帮助提高插入和删除效率的?冗余结点指的是叶子节点冗余还是用做索引的非叶子节点冗余?
        • 为什么说 B+ 树的插入和删除效率高?结构特性带来的效率优势
        • 冗余节点的形成与作用
        • 冗余结点提升效率的原理
        • 冗余结点指的是叶子节点冗余还是用做索引的非叶子节点冗余?冗余结点的本质
    • 与其它数据结构的对比
  • 索引有哪些种?
    • 单值索引
    • 唯一索引
    • 主键索引
    • 复合索引
    • 前缀索引
  • 什么是最左匹配原则?
    • 拓展:最左匹配原则是数据库索引设计的核心概念之一,主要针对联合查询
  • 索引区分度?
  • 联合索引如何进行排序?

MySQL 为什么使用 B+ 树来做索引,它的优势是什么?

特性和定义

B+ Tree 是一种多叉树,叶子节点才存放具体的数据而非叶子节点仅存放索引,每个结点当中的数据是按主键顺序存放的。在叶子节点中,包括了所有的索引值信息,并且每一个叶子节点都指向下一个叶子节点,形成一个链表(因此 B+ 树支持范围查询)。B+ Tree 存储千万级别的数据只需要 3 ~ 4 层高度就可以满足(加入一个非叶子结点存储 1000 个索引,那么三层树高的情况下可以存储 100 0 3 = 1000000000 1000^3 = 1000000000 10003=1000000000十亿条数据),千万级的表查询最多只需要 3 ~ 4 次磁盘 I/O。

B+ 树和 B 树的对比

  1. 数据存储分布:
    B 树:所有结点均存储数据(键值对);
    B+ 树:仅叶子节点存储完整数据,内部节点仅做索引(键 + 指针);

  2. 叶子节点结构:
    B 树:独立叶子节点;
    B+ 树:叶子节点通过双向链表串联,形成有序链表结构;

  3. 查询性能对比:
    B 树和 B+ 树的单点查询平均时间复杂度相当,均为 O ( log ⁡ d N ) O(\log_d{N}) O(logdN)
    在进行范围查询时,B+ 树通过链表直接进行顺序查询,而 B 树则需要中序遍历,效率差 10 倍。

  4. 空间利用率:
    B+ 树内部可以存储更多的键值,树高普遍比 B 树低 2 层。

  5. 插入删除操作:
    B+ 树数据变更仅影响叶子节点,而 B 树可能引发连锁节点的分裂与合并;

  6. 典型应用场景:
    B 树:MongoDB(文档型数据库)、文件系统;
    B+ 树:MySQL(InnoDB)、Oracle、PostgreSQL 等关系型数据库;

  7. 工程实践差异:
    B+ 树叶子节点存储密度可达 70%,而 B 树通常为 50% ~ 60%;
    在处理百万级数据时,B+ 树比 B 树减少 30% ~ 50% 的磁盘 I/O 次数(得益于 B+ 树的高扇出与低树高特性);
    在进行范围查询时,B+ 树比 B 树的性能高 5 ~ 10 倍(得益于 B+ 树叶子节点之间的顺序连接特性)。

拓展:既然 B+ 树相较于 B 树优势如此之大,为什么 nosql 的 MongoDB 底层仍采用 B 树而不是 B+ 树?

B+ 树在关系型数据库(如 MySQL)中表现卓越,因其擅长范围查询和排序;而 MongoDB 作为文档数据库,优先优化点查询和文档快速获取,B 树的结构特性更契合其设计目标。

使用 B+ 树做索引的优势

  • 单点查询:B 树进行单个索引查询时,最快可以在 O ( 1 ) O(1) O(1)的时间代价内完成(因为 B 树当中的结点,包括非叶子节点,既存储索引又存储数据)。从平均时间代价上来看,它比 B+ 树更快。但是 B 树的查询波动比较大,原因同样是每个节点既存储索引又存储数据,所以有时候访问到非叶子节点即可找到索引,有时候需要访问到叶子节点才能找到索引。B+ 树的非叶子节点不存放实际的记录数据,而只存放索引,在数据量相同的情况下,B+ 树的非叶子节点可以存放更多的索引,查询底层结点的 I/O 更少,因此 B+ 树在做单点查询时更加稳定。
  • 插入和删除效率:B+ 树含有大量的冗余结点,删除一个节点时,可以直接从叶子结点删除,甚至可以不动非叶子节点,删除非常快。B+ 树的插入也是一样,有冗余结点,插入可能存在结点的分裂(如果节点饱和),但是最多只涉及树的一条路径。B 树没有冗余结点,删除节点非常复杂,可能涉及复杂的树的变形。
  • 范围查询:B+ 树的所有叶子节点直接通过双向链表连接,而 B 树没有将叶子节点通过链表串联,因此 B 树只能通过树的遍历来完成范围查询,其范围查询的效率不如 B+ 树。B+ 树的插入删除效率非常高,当面对存在大量的范围检索的场景时,适合使用 B+ 树,比如数据库;而对于存在大量单个索引查询的场景,可以考虑 B 树,比如 nosql 的 MongoDB

补充:为什么说 B+ 树的插入和删除效率高?B+ 树的冗余结点是如何形成的?它们的作用是什么?冗余结点是如何帮助提高插入和删除效率的?冗余结点指的是叶子节点冗余还是用做索引的非叶子节点冗余?

为什么说 B+ 树的插入和删除效率高?结构特性带来的效率优势
  • 多路平衡特性:每个结点可存储大量键值(高扇出),树高通常维持在 3 ~ 4 层,磁盘 I/O 次数更少;
  • 顺序访问优化:叶子节点之间形成有序链表(InnoDB 在实现上使用双向链表),范围查询效率极高;
  • 写操作局部性:插入/删除只需要修改局部节点(具体来说,指的就是叶子节点),多数情况下不会引发连锁结构调整。
冗余节点的形成与作用
  • 冗余节点类型:主要存在于非叶子节点(即索引节点);
  • 形成机制:插入时结点分裂会产生临时性父节点键值冗余,删除节点时合并会暂时保留未及时清理的索引键,批量操作时会延迟维护产生的中间状态;
  • 作用:缓冲结构调整压力,避免频繁的节点分裂/合并,允许临时超出结点容量限制,为并发操作提供版本控制的可能性。
冗余结点提升效率的原理
  • 延迟维护:非叶子节点的冗余键允许暂时不立即处理结构变更;
  • 批量处理:多个操作累积后,一次性处理冗余,摊平维护成本;
  • 概率优化:利用节点填充因子(如 70% 阈值)预留空间缓冲突发操作。
冗余结点指的是叶子节点冗余还是用做索引的非叶子节点冗余?冗余结点的本质

冗余结点是 B+ 树用空间换时间的典型设计,通过允许非叶子节点存在临时性的冗余键值,换取更平缓的结构维护代价。叶子节点由于需要保证数据的有序性,冗余主要表现为预留空间而非键值重复。

与其它数据结构的对比

  • B+ 树对比 B 树:B+ 树只在叶子节点存储数据,而 B 树的非叶子节点也存储数据。因此 B+ 树的单个结点数据量更小(在数据量相同的前提下,B+ 树可以存储更多的索引),在相同的磁盘 I/O 次数下,B+ 树可以查询更多的结点。B+ 树的叶子节点采用双向链表连接(具体来说,MySQL 的 InnoDB 在实现细节上是采用双向链表的。早期 MySQL 的 MyISAM 引擎使用单向链表,InnoDB 自 MySQL 5.5 称为默认引擎后,叶子节点之间的双向链表连接称为标准实现),适合 MySQL 中常见的基于范围的查询,而 B 树做不到这一点,因此它更适用于单点查询。
  • B+ 树对比二叉树:对于有 N 个叶子节点的 B+ 树,其搜索复杂度为 O ( log ⁡ d N ) O(\log_d{N}) O(logdN),其中 d 表示结点允许的最大子节点个数。实际应用中,d 值大于 100,即使数据达到千万级,B+ Tree 的高度依然维持在 3 ~ 4 层,一次查询只需要 3 ~ 4 次磁盘 I/O 就能查到。二叉树每个父节点的儿子结点个数为 2 个,意味着其搜索复杂度为 P ( log ⁡ N ) P(\log{N}) P(logN),二叉树搜索到目标数据需要的磁盘 I/O 数更多。
  • B+ 树对比哈希:哈希在做等值查询时效率较高,搜索复杂度为 O ( 1 ) O(1) O(1),但是 Hash 不适合做范围查询。

索引有哪些种?

单值索引

单值索引即一个索引只包含单个列,一个表可以有多个单列索引。

  • 建表时:加上 key(列名) 指定;
  • 单独创建:create index 索引吗 on 表名(列名)
  • 单独创建:alter table 表名 add index 索引名(列名)

唯一索引

唯一索引中,索引列的值必须唯一,但允许有 null 且 null 可以多次出现。

  • 建表时:加上 unique(列名) 指定;
  • 单独创建:create unique index idx 表名(列名) on 表名(列名)
  • 单独创建:alter table 表名 add unique 索引名(列名)

主键索引

设定为主键后,数据库会自动建立索引,InnoDB 为聚簇索引,值必须唯一且不能为 null

  • 建表时:加上 primary key(列名) 指定;

复合索引

复合索引即一个索引包含多个列。

  • 建表时:加上 key(列名列表) 指定;
  • 单独创建:create index 索引名 on 表名(列名列表)
  • 单独创建,alter table 表名 add index 索引名(列名列表)

前缀索引

对字符类型字段的前几个字符建立的索引,而不是在整个字段上建立的索引,前缀索引可以建立在字段类型为 char、 varchar、binary、varbinary 的列上。使用前缀索引的目的是为了减少索引占用的存储空间,提升查询效率

  • 单独创建:alter table 表名 add 索引名(column_name(索引长度))

什么是最左匹配原则?

使用联合索引时,存在最左匹配原则,也就是按照最左优先的方式进行索引的匹配。使用联合索引进行查询的时候,如果不遵循最左匹配原则,联合索引会失效。

拓展:最左匹配原则是数据库索引设计的核心概念之一,主要针对联合查询

最左匹配原则规定了在使用联合索引时,查询条件必须从索引定义的最左侧列开始,不能跳过中间的列,这样才能有效地利用索引进行快速检索。

联合索引按照定义时的列顺序构建 B+ 树结构,例如索引(a, b, c),数据先按a排,a相同再按b排,b相同按c排。

联合索引的生效条件是,查询必须包含最左列,条件列需要连续无跳跃。若某列使用范围查询,则其右侧的列无法继续使用索引,比如WHERE a=1 AND b>10 AND c=2,仅ab有效,c需回表过滤。

案例:
WHERE a=1 AND b>2 AND c=3 -- ✅ 使用a、b(c因b范围查询失效)
WHERE b=2 -- ❌ 缺少最左列a
WHERE a=1 AND c=3 -- ❌ 跳过b,仅用a(c无法走索引)
WHERE a>1 AND b=2 -- ❌ a范围查询后,b无法走索引(失效原因:当a使用范围查询时,b的等值条件无法有效利用索引,数据库只能使用a>1的索引范围扫描,此时b=2的记录在索引中是离散分布的)

索引区分度?

查询优化器在发现某个值出现在表的数据行中的百分比(惯用的百分比界限为 30%)很高时,会忽略索引,进行全表扫描。

联合索引如何进行排序?

(a, b, c)为例,第一优先级:按 a 列值升序排序;第二优先级:a 相同则按 b 列值升序排序;第三优先级:a 和 b 都相同按 c 值升序排序。

排序特性:

  • 局部有序性:每个 a 值的范围内,b 是有序的;每个 a, b 组合内,c 是有序的。
  • 跨级断点:a 改变时,b 和 c 的排序重新开始。

对查询的影响:

  • 范围查询会破坏后续列的排序优势(如a>1时,b的排列不再全局有序);
  • 等值查询能保持后续列的排序(如a=1时,b仍保持升序排列)

相关文章:

【每日八股】MySQL篇(三):索引(上)

目录 MySQL 为什么使用 B 树来做索引,它的优势是什么?特性和定义B 树和 B 树的对比拓展:既然 B 树相较于 B 树优势如此之大,为什么 nosql 的 MongoDB 底层仍采用 B 树而不是 B 树? 使用 B 树做索引的优势补充&#xff…...

python实战项目59:使用python获取腾讯招聘数据并保存到mysql数据库中

python实战项目59:使用python获取腾讯招聘数据并保存到mysql数据库中 一、爬虫流程分析1、分析数据接口,发送请求二、创建数据库链接三、完整代码一、爬虫流程分析 1、分析数据接口,发送请求 目标网址为 https://careers.tencent.com/search.html?keyword=python&que…...

VMware Ubuntu 共享目录

在VMware中挂载Ubuntu共享目录需要以下步骤,分为设置共享文件夹和在Ubuntu中挂载两部分: 一、VMware 设置共享文件夹 关闭Ubuntu虚拟机 在配置前,建议先关闭虚拟机(若已运行需关闭,部分VMware版本支持热添加&#xff0…...

详细介绍一下springboot自定义注解的使用方法

在Spring Boot中,自定义注解通常结合AOP(面向切面编程)实现特定功能,如日志记录、权限校验等。以下是详细的使用步骤和示例: 1. 添加依赖 确保项目中包含Spring AOP依赖(Spring Boot Starter AOP&#xff…...

‘nvcc‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

‘nvcc’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。默认情况一般都会提示这个,这是因为你还没有安装cuda驱动程序。 一、查看本机支持的cuda版本 nvidia-smi可以看到我们这里显示的CUDA版本是11.6,在我们安装的CUDA驱动的时候,版本不能超过11.6。 二、下载CU…...

计算机毕业设计SpringBoot+Vue.js教学辅助平台(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

大语言模型学习

大语言模型发展历程 当前国内外主流LLM模型 ‌一、国外主流LLM‌ ‌LLaMA2‌ Meta推出的开源模型,参数规模涵盖70亿至700亿,支持代码生成和多领域任务适配‌57。衍生版本包括Code Llama(代码生成优化)和Llama Chat(对…...

几道考研数学题求解

函数性质问题 【题目】 已知函数 f ( x , y ) x 3 y 3 − ( x y ) 2 3 f(x, y) x^3 y^3 - (xy)^2 3 f(x,y)x3y3−(xy)23。设 T T T 为曲面 z f ( x , y ) z f(x, y) zf(x,y) 在点 ( 1 , 1 , 1 ) (1,1,1) (1,1,1) 处的切平面, D D D 为 T T T 与坐标…...

家用可燃气体探测器——家庭燃气安全的坚实防线

随着社会的发展和变迁,天然气为我们的生活带来了诸多便利,无论是烹饪美食,还是温暖取暖,都离不开它的支持。然而,燃气安全隐患如影随形,一旦发生泄漏,可能引发爆炸、火灾等严重事故,…...

c# 收发邮件

话不多说,请看代码:(后面附上项目整体代码,可详细查看。)。 算了,vip文章要评审,还是在这里给朋友们注释一下代码内容吧,方便大家参考使用。 收邮件: 核心代码&#x…...

springboot设置多环境配置文件

实际开发过程中会涉及多个环境,比如dev(开发环境),test(测试环境),prod(线上环境),不同环境下,端口号、数据库地址、redis地址等等会不尽相同,为了避免每次上线到不同环境都要修改配置文件可以在项目中配置…...

智能文档解析与语义分割:LlamaIndex 节点解析器模块全解

节点解析器模块 - LlamaIndex 文件内容的节点解析器 有几种基于文件的节点解析器,它们会根据解析的内容类型(JSON、Markdown 等)创建节点。 最简单的流程是将 FlatFileReader 与 SimpleFileNodeParser 结合使用,自动为每种内容类型选择最佳节点解析器。然后,可以将基于…...

Qt的坐标

一、介绍 控件的坐标是相对于父控件的,如果没有父控件,坐标就相当于桌面。 这是 Qt 坐标系: 二、坐标使用 坐标通过控件对象的 move 函数实现,move(int, int) 一个参数是 x,一个是 y,单位是像素。 代码…...

redis序列化设置

redis序列化设置 redis序列化设置序列化对象里有org.joda.time.DateTime1)、报错内容如下2)、解决方案:分别自定义时间的序列化和反序列化,以对象形式关联到redisTemplate redis序列化设置 redis序列化设置,通过自定义…...

Linux:进程概念

目录 1 冯诺依曼体系 2 操作系统(Operator System) 3 如何理解管理 3.1计算机管理硬件 3.2 管理逻辑图 3.3 怎样管理 4 什么是进程? 5 查看进程 5.1 ps ajx显示所有进程信息 5.2 /proc(内存文件系统) 5.2.1 ls /proc/PID 5.2.2 ls /proc/PID -al ​ 5…...

web3.0简介

Web3.0(或简称 Web3)是近年来广泛讨论的一个新型互联网概念,其核心思想在于利用区块链及相关分布式技术,打造一个更加开放、去中心化、透明且以用户为主导的网络生态系统。这意味着在 Web3.0 时代,用户不再只是信息的消…...

前端控制器模式

前端控制器模式 引言 在软件设计模式中,前端控制器模式(Front Controller Pattern)是一种行为型设计模式。它提供了一种集中处理请求的机制,将请求分发到相应的处理者,从而简化了请求的处理流程。本文将详细介绍前端…...

【保姆级视频教程(二)】YOLOv12训练数据集构建:标签格式转换-划分-YAML 配置 避坑指南 | 小白也能轻松玩转目标检测!

【2025全站首发】YOLOv12训练数据集构建:标签格式转换-划分-YAML 配置 避坑指南 | 小白也能轻松玩转目标检测! 文章目录 1. 数据集准备1.1 标签格式转换1.2 数据集划分1.3 yaml配置文件创建 2. 训练验证 1. 数据集准备 示例数据集下载链接:P…...

SpringBoot接口自动化测试实战:从OpenAPI到压力测试全解析

引言:接口测试的必要性 在微服务架构盛行的今天,SpringBoot项目的接口质量直接影响着系统稳定性。本文将分享如何通过自动化工具链实现接口的功能验证与性能压测,使用OpenAPI规范打通测试全流程,让您的接口质量保障体系更加完备。…...

Spring学习笔记02——bean的概念和常见注解标注

什么是bean? Bean 就是 被 Spring 管理的对象,就像工厂流水线上生产的“标准产品”。这些对象不是你自己 new 出来的,而是由 Spring 容器(一个超级工厂)帮你创建、组装、管理。 由 Component、Service、Controller 等注解标记的…...

JAVA最新版本详细安装教程(附安装包)

目录 文章自述 一、JAVA下载 二、JAVA安装 1.首先在D盘创建【java/jdk-23】文件夹 2.把下载的压缩包移动到【jdk-23】文件夹内,右键点击【解压到当前文件夹】 3.如图解压会有【jdk-23.0.1】文件 4.右键桌面此电脑,点击【属性】 5.下滑滚动条&…...

Redis学习笔记系列(一)——Redis简介及安装

1. Redis介绍 Redis是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。 Redis与其他key-value缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行…...

【0005】Python变量详解

如果你觉得我的文章写的不错,请关注我哟,请点赞、评论,收藏此文章,谢谢! 本文内容体系结构如下: 任何一个语言编写的程序或者项目,都需要数据的支持,没有数据的项目不能称之为一个…...

实验:k8s+keepalived+nginx+iptables

1、创建两个nginx的pod,app都是nginx nginx1 nginx2 2、创建两个的pod的service 3、配置两台keepalived的调度器和nginx七层反向代理,VIP设置192.168.254.110 keepalived调度器master keepalived调度器backup 两台调度器都配置nginx七层反向代理&#…...

经典算法 统计数字问题(常数时间解决)

统计数字问题 一本书的页码从自然数1 开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如,第6 页用数字6 表示,而不是06 或006 等。数字计数问题要求对给定书的总页码n,计算出书的全部页…...

ViewPager2跟ViewPager的区别

1都是用来实现页面切换的,ViewPager2是ViewPager的增强版和升级版,ViewPager2是基于RecyclerView实现,可以支持横向和竖向页面切换,只需在布局文件添加一个android:orientation"vertical"即可,ViewPager只支…...

Github 仓库 git clone 速度过慢解决方案

很多时候想从 GitHub 上 clone 一个仓库,都会遇到速度慢的问题,而且经常连接失败,这里给出有效解决方案。 一、背景 应该是很多小伙伴碰到过的问题:想从 GitHub 上面 clone 项目,很多情况下会慢的离谱,等…...

数据结构 1-3 栈

一、原理 栈是只允许在一端进行插入或删除操作的线性表 所谓的栈,其实就是一个特殊的线性表(顺序表、链表),但是它在操作上有一些特殊的要求和限制: 栈的元素必须“后进先出”栈的操作只能在这个线性表的表尾进行。…...

MCP与RAG:增强大型语言模型的两种路径

引言 近年来,大型语言模型(LLM)在自然语言处理任务中展现了令人印象深刻的能力。然而,这些模型的局限性,如知识过时、生成幻觉(hallucination)等问题,促使研究人员开发了多种增强技…...

【Git】Ubuntu 安装 Git Large File Storage(LFS)以及使用 Git LFS 下载

【Git】Ubuntu 安装 Git Large File Storage(LFS)以及使用 Git LFS 下载 1 安装1.1 使用脚本安装1.2 使用 packagecloud 安装 2 使用2.1 下载 1 安装 1.1 使用脚本安装 参考文档: Link 下载安装包: Link 解压安装包 tar -xzvf git-lfs-linux-amd64-v3.…...

int new_pos = (pos + delta + 9) % 9 化曲为直算法

公式 int new_pos (pos delta 9) % 9; 是一个常见的 循环数组索引计算 方法,用于处理圆圈排列中的位置计算。这个公式可以总结出一个普遍的规律,适用于任何循环数组或圆圈排列的场景。 普遍规律 假设有一个长度为 ( n ) 的循环数组(或圆圈…...

在已有的原生 App 里嵌入 Flutter 页面的方法

在原生 App 中嵌入 Flutter 页面,通常使用 Flutter 提供的**平台通道(Platform Channels)**来实现原生代码与 Flutter 之间的交互。具体实现方式依赖于原生 App 的平台(如 Android 或 iOS),下面是两种常见的…...

hive 面试题

Hive基础概念 1.1 Hive是什么? 基于Hadoop的数据仓库工具,支持类SQL(HiveQL)查询,底层转换为MapReduce/Tez/Spark任务。 核心功能:数据ETL、查询、分析;定位:OLAP(分析…...

不同数据类型在数据库和编程语言之间的对应关系表

不同数据类型在数据库和编程语言之间的对应关系表 MySql 与 C# MySqlC#varcharstringbigintlongbigint unsignedulongintintint unsigneduintsmallintshortsmallint unsignedushortVARCHAR(36)GuidsmalldatetimeDateTimedateDateTimedatetimeDateTimetimestampDateTimefloatf…...

【笔记】用大预言模型构建专家系统

最近闲庭漫步,赏一赏各个AI大语言模型芳容。也趁着时间,把倪海夏一家的天纪和人纪视频看完了,感谢倪先生和现在网络的知识分享,受益匪浅。但是发现看完,很多不错的知识都不能记录在脑子里,那用的时候岂不是…...

P2P 下载科普:原理与应用

P2P 下载科普:原理与应用 1. 什么是 P2P 下载? P2P(Peer-to-Peer,点对点)下载是一种去中心化的文件传输方式,不依赖单一服务器,而是通过多个用户(节点,peers&#xff0…...

IO和NIO

IO和NIO在定义、面向对象、模式、选择器等方面存在显著的差异。以下是对IO和NIO的详细对比: 一、定义 IO(Input/Output): IO是计算机中的输入/输出(Input/Output)的简称,指的是计算机系统与外…...

从零开始:H20服务器上DeepSeek R1 671B大模型部署与压力测试全攻略

前言 最近,我有幸在工作中接触到了DeepSeek R1 671B模型,这是目前中文开源领域参数量最大的高质量模型之一。DeepSeek团队在2024年推出的这款模型,以其惊人的6710亿参数量和出色的推理性能,引起了业界广泛关注。 作为一名AI基础…...

设计模式--spring中用到的设计模式

一、单例模式(Singleton Pattern) 定义:确保一个类只有一个实例,并提供全局访问点 Spring中的应用:Spring默认将Bean配置为单例模式 案例: Component public class MySingletonBean {// Spring 默认将其…...

散户如何实现自动化交易下单——篇1:体系介绍与获取同花顺资金账户和持仓信息

一、为什么要实现自动化交易 在瞬息万变的金融市场中,越来越多的散户投资者开始尝试构建自己的交易策略:有人通过技术指标捕捉趋势突破,有人利用基本面分析挖掘低估标的,还有人设计出复杂的网格交易或均值回归模型。然而&a…...

SpringBoot高校运动会管理系统 附带详细运行指导视频

文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码1.报名赛事代码2.用户登录代码3.保存成绩代码 一、项目演示 项目演示地址: 视频地址 二、项目介绍 项目描述:这是一个基于SpringBoot框架开发的高校运动会管理系统项目。首先,这…...

MySQL表字段数量上限解析

MySQL 表中最多可以创建的字段数量取决于以下几个因素,主要包括 存储引擎 和 行大小限制: 1. 理论上的字段数量上限 InnoDB 存储引擎(MySQL 5.6): 最多 1017 个字段(实际测试中可能略低,需考虑行大小限制&…...

2024 ChatGPT大模型技术场景与商业应用视频精讲合集(45课).zip

2024ChatGPT大模型技术场景与商业应用视频精讲合集,共十三章,45课。 01. 第一章 ChatGPT:通用人工智能的典范 1.1 ChatGPT概述 .mp4 1.2 通用能力 .mp4 1.3 通用人工智能风口 .mp4 02. 第二章 大模型:ChatGPT的核心支撑 2.1 底层…...

FastExcel vs EasyExcel vs Apache POI:三者的全面对比分析

一、核心定位与历史沿革 Apache POI(1990s-) 作为Java生态中最古老的Excel处理库,提供对.xls/.xlsx文件的全功能支持。其核心价值在于对Excel规范的完整实现,包括单元格样式、公式计算、图表操作等深度功能。但存在内存消耗大&…...

线程控制(创建、终止、等待、分离)

目录 1.前言 2.创建线程 pthread_create函数 3.线程终止 pthread_exit函数 pthread_cancel函数 4.线程等待 5.线程分离 1.前言 在Linux系统中,并不存在真正的线程,只有轻量级进程。所以,Linux系统只提供了操作轻量级进程的系统调用…...

秒杀系统的常用架构是什么?怎么设计?

架构 秒杀系统需要单独部署,如果说放在订单服务里面,秒杀的系统压力太大了就会影响正常的用户下单。 常用架构: Redis 数据倾斜问题 第一步扣减库存时 假设现在有 10 个商品需要秒杀,正常情况下,这 10 个商品应该均…...

2025年生成式人工智能应用工程师学习线路

生成式人工智能应用工程师学习线路 初级 掌握AIGC基础概念、法律规范及安全基础、提示词使用及优化技巧,具备使用文心一言、Stable Diffsion、Midjourney等常见大模型应用进行高质量的文案、图片、视频创作的能力 课程内容包括:AIGC基础、职业道德、数…...

python力扣3:无重复字符的最长子串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”…...

文生图开源模型发展史(2014-2025年)

文生图开源模型的发展历程是一段充满技术革新、社区生态繁荣与商业化竞争的多维度演进史。 一、技术萌芽期(2014-2020年) 核心突破 2014年:GAN(生成对抗网络)诞生,首次实现数据驱动式图像生成&#xff0…...

fastadmin 后台商品sku(vue)

先上个效果图 首先先引入vue define([backend], function (Backend) {require.config({paths: {vue: /assets/jeekshopskugoods/libs/vue.min,skuimg: /assets/jeekshopskugoods/js/skuimg,skugoods: /assets/jeekshopskugoods/js/skugoods,layui: /assets/LayuiSpzj/layui/la…...