面试官:聊一下你对MySQL索引实现原理?

【MySQL进阶】深入理解B+树索引底层原理 阅读详情

在数据库中,如果索引太多,应用程序的性能可能会受到影响,如果索引太少,又会对查询性能产生影响。所以,我们要追求两者的一个平衡点,足够多的索引带来查询性能提高,又不因为索引过多导致修改数据等操作时负载过高。

文章会从,B+树索引,索引的分类,哈希索引,全文索引,这个几个方面讲解

B+树索引

  • 索引的查找
  • 索引的插入
  • 索引的删除

索引的分类

  • 聚集索引
  • 辅助索引
  • 联合索引
  • 覆盖索引

哈希索引

  • 哈希算法
  • 自适应哈希索引

全文索引

  • 倒排索引
  • 全文检索索引缓存
  • 全文索引的一些限制

InnoDB支持3种常见索引,我们接下来要详细讲解的就是 B+ 树索引,哈希索引,全文索引。

B+树索引

1、B+树中的B不是代表的二叉(Binary) ,而是代表平衡(Balance),因为B+树是从最早的平衡二叉树演化而来,但是B+树不是一个二叉树。

2、B+树是为磁盘或其他直接存取辅助设备设计的一种平衡查找树,在B+树中,所有的记录节点都是按照键值大小顺序存在同一层的叶子节点,由叶子节点指针进行相连。

3、B+树在数据库中的特点就是高扇出,因此在数据库中B+树的高度一般都在2~4层,这也就是说查找一个键值记录时,最多只需要2到4次IO,当前的机械硬盘每秒至少可以有100次IO,2~4次IO意味着查询时间只需要0.02~0.04秒。

4、B+树索引并不能找到一个给定键值的具体行,B+树索引能找到的只是被查找的键值所在行的页,然后数据库把页读到内存,再内存中进行查找,最后找到要查找的数据。

5、数据库中B+树索引可以分为,聚集索引和非聚集索引,但是不管是聚集索引还是非聚集索引,其内部都是B+树实现的,即高度是平衡的,叶子节点存放着所有的数据,聚集索引和非聚集索引不同的是,叶子节点是否存储的是一整行信息。每张表只能有一个聚集索引。

6、B+树的每个数据页(叶子节点)是通过一个双向链表进行链接,数据页上的数据的顺序是按照主键顺序存储的。

先来看一个B+树,其高度为2,每页可以放4条记录,扇出为5。

图:一颗高度为2的B+树

面试官:聊一下你对MySQL索引实现原理?

索引的查找

B+树索引使用二分法查找,也称折半查找法,基本思想就是:将记录有序化(递增或递减)排列,在超找过程中采用跳跃式方式查找,既先以有序数列的中心点位置比较对象,如果要查找的元素小于该元素的中心点元素,则将待查找的元素缩小为左半部分,否则为右半部分,通过一次比较,将查找区间缩小一半。

如图所示,从有序列表中查找 48,只需要3步:

图:二分法查找

面试官:聊一下你对MySQL索引实现原理?

索引的插入

B+树的查找速度很快,但是维护一颗平衡的B+树代价就是非常大的,通常来说,需要1次或者多次左旋右旋来保证插入后树的平衡性。

B+树的插入为了保持树的平衡,需要做大量的页(叶子节点)的拆分,页的存储基本都在磁盘,页的拆分意味着磁盘的操作,所以应该尽量减少页的拆分,在采用自增长ID,作为主键,会大量的减少页的拆分,提升的性能。

B+树 插入的三种情况

面试官:聊一下你对MySQL索引实现原理?

图:一颗高度为2的B+树

面试官:聊一下你对MySQL索引实现原理?

我们用实例来分析B+树的插入。

1、我们插入28这个键值,发现当前Leaf Page和Index Page都没有满,我们直接插入就可以了。

面试官:聊一下你对MySQL索引实现原理?

2、这次我们再插入一条70这个键值,这时原先的Leaf Page已经满了,但是Index Page还没有满,符合表(B+树 插入的三种情况)的第二种情况,这时插入Leaf Page后的情况为50、55、60、65、70。我们根据中间的值60拆分叶节点。将中间节点放入到Index Page中。

面试官:聊一下你对MySQL索引实现原理?

3、因为图片显示的关系,这次我没有能在各叶节点加上双向链表指针。最后我们来插入记录95,这时符合表(B+树 插入的三种情况)讨论的第三种情况,即Leaf Page和Index Page都满了,这时需要做两次拆分。

面试官:聊一下你对MySQL索引实现原理?

可以看到,不管怎么变化,B+树总是会保持平衡。但是为了保持平衡,对于新插入的键值可能需要做大量的拆分页(split)操作,而B+树主要用于磁盘,因此页的拆分意味着磁盘的操作,应该在可能的情况下尽量减少页的拆分。因此,B+树提供了旋转(rotation)的功能。

索引的删除

B+树使用填充因子(fill factor) 来控制树的删除变化,50%是填充因子可设的最小值,B+树的删除也同样必须保证删除后树的平衡性,删除的过程中会涉及合并叶子节或兄弟节点,但是都是为了保持树的平衡。

索引的分类

在了解B+树索引的本质和实现后,我们看看索引分为几类,聚集索引,辅助索引,联合索引,覆盖索引

聚集索引

就是按照每张表的主键构造一颗B+树,同时叶子节点存储整张表的行记录数,也将聚集索引的叶子节点成为“数据页”,聚集索引的特性决定了表中的行记录数据也是索引的一部分。同B+树数据结构一样,每个数据页都通过一个双向链表进行链接。

数据页只能按照一颗B+树进行排序,因此每张表只能有一个聚集索引,由于数据页定义了逻辑顺序,聚集索引能够很快的在数据页访问指针进行范围的查找数据。

聚集索引在物理上不是连续的,在逻辑上是连续的,前面已经说过是通过双向链表进行维护,物理存储可以不按照主键顺序存储。

辅助索引

辅助索引(也称非聚集索引),叶子节点并不包含行记录的全部数据。叶子节点除了包含键值外,每个叶子节点还包含了一个书签,该书签告诉InnoDB 存储引擎可以从哪里找到辅助索引相对应行的记录。因此InnoDB 存储引擎的辅助索引的书签就是相应整行数据的聚集索引键。

一个表中可以有多个辅助索引。例如,一个辅助索引树需要遍历3次才能找到主键索引,如果聚集索引树的高为同样为3,那么它还需要对聚集索引树进行三次查找,最终才能找到一个完整的数据页,因此一共需要6次IO访问才能得到最终的数据页。

联合索引

联合索引是指对表上多个列进行建立索引,联合索引本质还是一颗B+树,不同的是索引的键值数量不是1个,而是大于等于2。联合索引的键值在B+树中也是有序的,通过叶子节点可以在逻辑的顺序上读出所有数据。

覆盖索引

InnoDB存储引擎支持覆盖索引(或称索引覆盖),就是从辅助索引中就可以直接得到查询的记录,而不需要再次查询聚集索引中的记录。使用覆盖索引的好处就是,辅助索引不包括整行记录的所有信息,所以覆盖索引的大小要小于聚集索引,因此可以减少IO操作。

通俗的解释:

覆盖索引是非聚集组合索引的一种形式,它包括在查询里的Select、Join和Where子句用到的所有列(即建立索引的字段正好是覆盖查询语句[select子句]与查询条件[Where子句]中所涉及的字段,也就是索引包含了查询正在查找的所有数据)

哈希索引

学习哈希索引之前,我们先了解一些基础的知识:哈希算法。哈希算法是一种常用的算法,时间复杂度为 O(1)。它不仅应用在索引上,各个数据库应用中也都会使用。

哈希算法

InnoDB存储引擎使用哈希算法来对字典进行查找,哈希碰撞采用转链表解决,哈希函数采用除法散列方式。

例如:当前参数InnoDBbufferpool_size大小为10M,则共有640个16k的页,对于缓冲页内存的哈希表来说,需要分配640×2=1280个槽,但是由于1280不是质数,所以需要取比1280更大的一点的质数,应该是1399,所以启动的时候,会分配1399个槽的哈希表,用来哈希查询所在的缓冲池中的页。

InnoDB存储引擎是通过除法散列到1399个其中的一个槽中。

自适应哈希索引

自适应哈希索引采用之前说的哈希表方式,不同的是哈希索引对字典类型的等值查找非常快,对范围查询就无能为力了。

所以说哈希索引只能用于搜索等值查询,范围查询是不能使用哈希索引。

全文索引

之前已经说过,B+树索引的特点,对于使用如下sql,是支持B+树索引的,只要content 加了B+树索引,就能利用索引进项快速查询。

我们通过 B+ 树索引可以进行前缀查找,如:


体验AI代码助手

代码解读

复制代码

select * from blog where content like 'xxx%' ;

只要为content列添加了B+树索引(聚集索引或辅助索引),就可快速查询。但在更多情况下,我们在博客或搜索引擎中需要查询的是某个单词,而不是某个单词开头,如:


体验AI代码助手

代码解读

复制代码

select * from blog where content like '%xxx%' ;

此时如果使用B+树索引依然是全表扫描,而全文检索(Full-Text Search)就是将整本书或文章内任意内容检索出来的技术。

根据B+树索引的特点是不支持的,InnoDB存储引擎从1.2.x开始支持全文索引技术,其特性支MyISAM的全部功能。

具体实现原理接下来会介绍

倒排索引

全文检索使用倒排索引来实现,倒排索引同B+树索引一样,也是一种数据结构,它在辅助表中存储了单词与单词自身在一个或多个文档中所在位置的映射,这通常利用关联数组实现。

倒排索引它需要将分词(word)存储在一个辅助表(Auxiliary Table)中,为了提高全文检索的并行性能,共有6张辅助表。辅助表中存储了单词和单词在各行记录中位置的映射关系。它分为两种:倒排文件索引,详细倒排索引

1、inverted file index(倒排文件索引),表现为{单词,单词所在文档ID}

2、full inverted index(详细倒排索引),表现为{单词,(单词所在文档ID, 文档中的位置)}

全文检索表

DocumentIDText1Souyunku Technical team 2Go Technical stack

面试官:聊一下你对MySQL索引实现原理?

inverted file index(倒排文件索引)-辅助表存储为

倒排文件索引类型的辅助表存储为:

Documents 表现为{单词,单词所在文档ID}

NumberText 分词Documents 1Souyunku12Technical1,23team14Go25stack2

面试官:聊一下你对MySQL索引实现原理?

full inverted index( 详细倒排索引)-辅助表存储为

详细倒排索引类型的辅助表存储为,占用更多空间,也更好的定位数据,比提供更多的搜索特性:

Documents 表现为{单词,(单词所在文档ID, 文档中的位置)}

NumberTextDocuments

1Souyunku1:12Technical1:2 ,2:23team1:34Go2:15stack2:3

全文检索索引缓存

辅助表是存在与磁盘上的持久化的表,由于磁盘I/O比较慢,因此提供FTS Index Cache(全文检索索引缓存)来提高性能。FTS Index Cache是一个红黑树结构,根据(word, list)排序,在有数据插入时,索引先更新到缓存中,而后InnoDB存储引擎会批量进行更新到辅助表中。

当数据库宕机时,尚未落盘的索引缓存数据会自动读取并存储,配置参数innodbftcache_size控制缓存的大小,默认为32M,提高该值,可以提高全文检索的性能,但在故障时,需要更久的时间恢复。

在删除数据时,InnoDB不会删除索引数据,而是保存在DELETED辅助表中,因此一段时间后,索引会变得非常大,可以通过optimize table命令手动删除无效索引记录。如果需要删除的内容非常多,会影响应用程序的可用性,参数innodbftnumwordoptimize控制每次删除的分词数量,默认为2000,用户可以调整该参数来控制删除幅度。

全文索引的一些限制

1、现在只支持myisam和innodb

2、不支持分区表

3、多列组合的全文检索索引必须使用相同的字符集和字符序

4、象形文字不支持。需要ngram来分词

5、建立全文索引的各个字段必须统一

6、match()里的查找列,必须是在fulltext索引里定义过的

7、against()必须为字符串且为常量

8、索引提示会更差

9、在innodb中,所有涉及到全文索引列的DML操作(update,insert,delete),只会在事务提交的时候,执行。中间可能要分词,标记等

10、不能用 % 通配符

11、不支持没有单词界定符 (delimiter)的语言,如中文、日语、韩语等

保姆级教程:在ROS2 Humble上搞定Livox Mid-360雷达,从IP配置到Rviz点云显示 本文提供在ROS2 Humble上配置Livox Mid-360激光雷达的完整教程,涵盖从IP设置到Rviz点云显示的全流程。详细解析硬件连接、驱动编译、配置文件优化及常见问题排查,帮助开发者快速搭建开发环境并实现高效点云可视化。 阅读详情

相关推荐

MDB协议中设备级别和选项(Levels and Options)

MDB协议的LEVEL级别介绍

hbstart的博客 939

mysql数据库索引底层原理---------B+树(内附原理图)

mysql索引底层原理 #B+树的原理 这里主要介绍的是B+树中,两种存储引擎MyISAM和InnoDB的区别。 1.什么是B+树 1.首先插入第一个元素为4,再插入第二个元素5,因为树形结构的特性,5大于4,所以5是存储在右边的。 2.接着再插入第三个元素3,因为3小于4,所以存储在左边,当插入第四个元素6的时候,会进行向上分裂。下面会提到为什么会分裂。 3.分裂后5的索引信息就被向上分裂。 ...

AY_G的博客 5554

基于STM32F407的DDS信号源设计与实现:DAC+DMA+TIM的高精度波形生成

本文详细介绍了基于STM32F407微控制器实现高精度DDS信号源的完整方案。通过结合DAC、DMA和TIM外设,并运用DDS算法,实现了分辨率高达0.001Hz的波形生成。文章深入剖析了相位累加器、波表查表等核心原理,提供了从CubeMX配置到代码实战的完整指南,并探讨了性能优化与高频输出问题的解决方案。

weixin_29193259的博客 504

mysql中B+树索引原理

mysql索引与B+树的关系

qqazqaz的博客 4840

海波龙(Oracle Hyperion)单点登陆问题记录

Oracle海波龙套件已经多年未更新,按Oracle官方文档实施单点登陆启用之后,SmartView工具通过专用链接方式无法登陆系统。 在抓包逆向分析之后 定位到HspSmartViewServlet类在执行以下代码时获得的ssotoken无效导致,在某大厂工作的时候曾通过在filter中截获请求的方式植入Attribute,保留账号密码并在单点程序中处理实现登陆。 但在完美世界的环境中...

cainiaoEzu的专栏 1973

单片机课程设计——交通灯

单片机课程设计——交通灯一、课程设计主要内容1.1 题目1.2摘要1.3关键词二、设计要求三、设计方案四、参考电路设计4.1.1数码管的设计4.1.2对应程序4.2.1独立按键的设计4.2.2对应程序4.2.3 使用逻辑4.3.1LED模块的设置4.3.2 LED实物图4.3.3 LED显示程序五、调试要点5.1 单片机最小系统5.2 数码管模块5.3 LED模块5.4 独立按键六、总结七、成品图完整程序 一、课程设计主要内容 1.1 题目 交通灯设计 1.2摘要 近年来,随着我国国民经济的快速发展,我国机

PKPROTEUS的博客 3万+

Mysql B+树索引算法原理

一、索引算法分类 Hash表 等值查询效率比较高、但是不支持范围查询 二叉树 时间复杂度log2n 缺点:有可能产生不平衡 类似于链表的结构 时间复杂度为o(n) 平衡二叉树avl/红黑树 使用旋转和变色方式保证平衡 它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1 缺点: 如果存放几百条数据的情况下,树高度越高,查询效率会越慢 B-Tree树 叶子节点具有相同的深度、叶子节点指针是为空 ,所有索引的元素不能够重复 叶子节点的数据从左到右递增排列。 B+树 1.非叶子节点不存储data,只存

小毕超博客 4998

Windows+VSCode+Cline+MCP全流程配置指南

本文提供了一份详细的Windows+VSCode+Cline+MCP全流程配置指南,旨在帮助开发者打造高效的AI辅助编码工作站。文章从环境准备讲起,逐步指导安装VSCode、配置Cline插件、搭建Node.js环境,并重点详解如何通过MCP为Cline集成文件系统和GitHub等工具服务器,实现用自然语言操控开发环境,从而显著提升日常编码与文件管理效率。

weixin_28840143的博客 554

MySQL索引-B+树(讲得通透)

索引这个词,相信大多数人已经相当熟悉了,很多人都知道MySQL的索引主要以B+树为主,但是要问到为什么用B+树,恐怕很少有人能把前因后果讲述的很完整。本文就来从头到尾介绍下数据库的索引。 索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在[1,2,3,4]中找到4这个数据,直接对全数据检索也很快,没有必要费力气建索引再去查找。索引在mysql数据库中分三类: B+树索引、Hash索引、全..

尽量致力于发表微服务、中间件和算法等原创作品。 1万+

基于APDL语言的结构优化设计

同理,二次微分值称为二阶值。通俗地讲优化分析,指的找到一种方案可以满足所有的设计要求,而且所需的支出(如重量,面积,体积,应力,费用等)最小。设计方案的任何方面都是可以优化的,比如说:尺寸(如厚度),形状(如过渡圆角的大小),支撑位置,制造费用,自然频率,材料特性等。完成分析文件的建立后,就可以进行优化分析了,如果在交互方式下进行优化的话,最好先在ANSYS数据库中用分析文件建立参数,其优点有:初始参数可以作为一阶分析方法的起点,且对于优化过程参数在数据库中可以在GUI下进行操作,便于定义优化变量。

m0_73816777的博客 1180

C++软件调试与异常排查从入门到精通专栏介绍与文章汇总

根据近几年排查软件异常的实践与经验,系统地讲解了C++软件异常常见原因与常用排查方法,以图文并茂的方式给出具体的分析实例,带领大家逐步掌握C++软件异常排查的相关技术与要领。

dvlinker的技术专栏 23万+

面试官:聊一下你对MySQL索引实现原理!

在数据库中,如果索引太多,应用程序的性能可能会受到影响,如果索引太少,又会对查询性能产生影响。所以,我们要追求两者的一个平衡点,足够多的索引带来查询性能提高,又不因为索引过多导致修改数据等操作时负载过高。文章会从,B+树索引,索引的分类,哈希索引,全文索引,这个几个方面讲解B+树索引索引的查找索引的插入索引的删除索引的分类聚集索引辅助索引联合索引覆盖索引哈希索引哈希算法自适应...

weixin_33862188的博客 126

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

mysql索引的内部实现原理_面试官:聊一下你对MySQL索引实现原理!

在数据库中,若是索引太多,应用程序的性能可能会受到影响,若是索引太少,又会对查询性能产生影响。因此,咱们要追求二者的一个平衡点,足够多的索引带来查询性能提升,又不由于索引过多致使修改数据等操做时负载太高。面试文章会从,B+树索引,索引的分类,哈希索引,全文索引,这个几个方面讲解算法B+树索引sql索引的查找索引的插入索引的删除索引的分类数据库汇集索引辅助索引联合索引覆盖索引哈希索引数组哈希算法自适...

weixin_42354972的博客 188

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

mysql内部实现原理面试_面试官:聊一下你对MySQL索引实现原理?

在数据库中,如果索引太多,应用程序的性能可能会受到影响,如果索引太少,又会对查询性能产生影响。所以,我们要追求两者的一个平衡点,足够多的索引带来查询性能提高,又不因为索引过多导致修改数据等操作时负载过高。文章会从,B+树索引,索引的分类,哈希索引,全文索引,这个几个方面讲解B+树索引索引的查找索引的插入索引的删除索引的分类聚集索引辅助索引联合索引覆盖索引哈希索引哈希算法自适应哈希索引全文索引倒排索...

weixin_42367148的博客 153

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

索引表空间满了_面试官:聊一下你对MySQL索引实现原理?

作者:磊哥,转自:搜云库技术团队在数据库中,如果索引太多,应用程序的性能可能会受到影响,如果索引太少,又会对查询性能产生影响。所以,我们要追求两者的一个平衡点,足够多的索引带来查询性能提高,又不因为索引过多导致修改数据等操作时负载过高。文章会从,B+树索引,索引的分类,哈希索引,全文索引,这个几个方面讲解B+树索引索引的查找索引的插入索引的...

weixin_33483080的博客 158

面试官:MySQL索引底层数据结构原理与性能调优,你能回答多少?

面试官:听说你精通MySQL,那来和我大战三百个回合吧!

真正的大师永远怀着一颗学徒的心 1万+

面试官:谈谈你对mysql索引的认识?

引言 大家好,我渣渣烟。我曾经写过一篇《面试官:谈谈你对表设计的认识?》于是呢,决定再来一个mysql的数据库专题,这篇我们就来谈谈关于索引方面的mysql面试题。还是老规矩,讲的是在Innodb存储引擎下的情形,毕竟我还真没用过Mysiam之类的存储引擎。ps:其实很早就想写了,一直偷懒! 其实这下面每个问题,我都可以讲一篇文章出来!而且这些问题,不是我凭空编的。如下图所示(注意看第三题) ...

孤独烟 2万+

面试官出的MySQL索引问题,这篇文章全给你解决!

原文链接:blog.ouyangsihai.cn >> MySQL的B 树索引的概念、使用、优化及使用场景 0 前言 这篇文章不会讲解索引的基础知识,主要是关于MySQL数据库的B 树索引的相关原理,里面的一些知识都参考了MySQL技术内幕这本书,也算对于这些知识的总结。对于B树和B 树相关的知识,可以参考我的这篇博客:面试官问你B树和B 树,就把这篇文章丢给他 1 索引的管理 索引有很...

好好学java 1万+

这样理解Mysql索引,阿里面试官也给你点赞

引言 索引是Mysql的一块硬骨头,但是对于开发来说又是十分重要的基础技能。在平常的 项目开发中,它是重要的SQL优化手段。在求职面试中,它是面试官常常用来考察求职者数据库性能优化方面的重要考量。因此透彻的掌握索引原理,并将其运用到数据库查询实战是每个程序员必备的能力。本文将从索引原理、索引设计以及如何应对索引失效等方面阐述Mysql索引。 索引原理 在进行索引设计以及优化之前,我们先深入理解下索引的原理。因为所有的设计以及优化一定是建立在你对原理的透彻理解的基础上。 很多人都知道,在进行SQL查询时,同样

2464

面试官:MySQL 为什么用 B+ 树实现索引

MySQL 为什么用 B+ 树实现索引索引概述常见的索引模型哈希表有序数组二叉查找树二叉查找树的查找操作二叉查找树的缺陷为什么索引不用二叉树实现InnoDB 的索引模型B 树B 树存在的问题B+ 树B 树 和 B+ 树 的区别总结 索引对大家来说肯定不会陌生,不管是日常的开发还是面试中,都少不了索引的身影。 我们都会使用索引,但是我们对于索引的原理却是一知半解。本文就带大家深入学习一下 MySQL 的索引模型。 索引概述 关于索引的定义,百度百科给出的解释是: 在关系数据库中,索引是一种单独的、物理的对数

xujunson的博客 5358

面试官:要不简单聊一下你对MySQL索引的理解?

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33860737的博客 815
上一篇: 面试官:你了解CAS吗?有什么问题吗?如何解决?
下一篇: 为什么不推荐用JWT保护你的Web应用?
加班不秃顶
博客等级 码龄7年 1822粉丝 599原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值