MySQL创建自定义哈希索引

Mysql如何创建Hash索引 MySQL创建Hash索引 以下是武汉理工大学数据库综合实验的一小部分 最近在写数据库实验,现在进行到索引部分,下面内容记录了学习过程中需要的一些知识,本次笔记主要记录如何创建Hash索引 题目如下: 创建一个包含(employeeID, name, education)等字段的临时员工表 (tmpEmployee) ,并在该表的员工编号字段上创建一个HASH索引 代码如下: 创建表 mysql&... 阅读详情

MySQL创建自定义哈希索引

如果存储引擎不支持哈希索引,则可以模拟像Memory存储引擎一样创建哈希索引,这样可以享受哈希索引的便利,例如只需要很小的索引就可以为超长的键创建索引。

思路很简单:在B-Tree基础上创建一个伪哈希索引。这和真正的哈希索引不是一回事。因为还是使用真正的哈希索引进行查找,但是它使用哈希值而不键本身进行索引查找。你需要做的就是在查询的where子句中手动指定使用哈希函数。

 

下面我们来看一个例子:

mysql> CREATE TABLE pseudohash(
id int unsigned not null auto_increment,
url varchar(255) not null,
url_crc int unsigned not null default 0,
primary key(id)
);

Query OK, 0 rows affected

mysql> describe pseudohash;
+---------+------------------+------+-----+---------+----------------+
| Field   | Type             | Null | Key | Default | Extra          |
+---------+------------------+------+-----+---------+----------------+
| id      | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| url     | varchar(255)     | NO   |     | NULL    |                |
| url_crc | int(10) unsigned | NO   |     | 0       |                |
+---------+------------------+------+-----+---------+----------------+
3 rows in set

我们可能会存储大量的url,并需要根据url进行搜索查找。如果使用B-Tree来存储URL,存储的内容就会很大,因为URL本身都很长。正常情况下,我们会在url列上建立索引,使用如下的方式来查找特定的url。

 

创建url列上的索引

mysql> create unique index url_index on pseudohash (url);
Query OK, 0 rows affected
Records: 0  Duplicates: 0  Warnings: 0

mysql> show index from pseudohash;
+------------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table      | Non_unique | Key_name  | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+------------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| pseudohash |          0 | PRIMARY   |            1 | id          | A         |           1 | NULL     | NULL   |      | BTREE      |         |               |
| pseudohash |          0 | url_index |            1 | url         | A         |           1 | NULL     | NULL   |      | BTREE      |         |               |
+------------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set

插入一条数据

mysql> insert into pseudohash (url) values('www.cnivi.com');
Query OK, 1 row affected

mysql> select * from pseudohash;
+----+---------------+------------+
| id | url           | url_crc    |
+----+---------------+------------+
|  3 | www.cnivi.com |          0 |
+----+---------------+------------+
2 rows in set

你可能会使用这种方式来查询

mysql> select url from pseudohash where url="www.cnivi.com";
+---------------+
| url           |
+---------------+
| www.cnivi.com |
+---------------+
1 row in set

这种方式可见的坏处就是url本身可能很长,使用B-Tree存储的内容太大。

 

解决方法就是删除掉url列上的索引,而新增一个被索引的url_crc列

如下面操作:

mysql> show index from pseudohash;
+------------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table      | Non_unique | Key_name  | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+------------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| pseudohash |          0 | PRIMARY   |            1 | id          | A         |           2 | NULL     | NULL   |      | BTREE      |         |               |
| pseudohash |          0 | url_index |            1 | url         | A         |           2 | NULL     | NULL   |      | BTREE      |         |               |
+------------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set

mysql> drop index url_index on pseudohash;
Query OK, 0 rows affected
Records: 0  Duplicates: 0  Warnings: 0

mysql> show index from pseudohash;
+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table      | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| pseudohash |          0 | PRIMARY  |            1 | id          | A         |           1 | NULL     | NULL   |      | BTREE      |         |               |
+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
1 row in set

mysql> create index url_crc_index on pseudohash (url_crc);
Query OK, 0 rows affected
Records: 0  Duplicates: 0  Warnings: 0

mysql> show index from pseudohash;
+------------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table      | Non_unique | Key_name      | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+------------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| pseudohash |          0 | PRIMARY       |            1 | id          | A         |           1 | NULL     | NULL   |      | BTREE      |         |               |
| pseudohash |          1 | url_crc_index |            1 | url_crc     | A         |           1 | NULL     | NULL   |      | BTREE      |         |               |
+------------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set

mysql>

使用CRC32做哈希,就可以使用下面这中方式查询:

mysql> insert into pseudohash (url,url_crc) values('www.ceit.com/adasds/sdfsafwe/sadfsadfew/weqfvscxz',crc32('www.ceit.com/adasds/sdfsafwe/sadfsadfew/weqfvscxz'));
Query OK, 1 row affected

mysql> select * from pseudohash;
+----+---------------------------------------------------+------------+
| id | url                                               | url_crc    |
+----+---------------------------------------------------+------------+
|  1 | www.ceit.com                                      | 3722524106 |
|  5 | www.ceit.com/adasds/sdfsafwe/sadfsadfew/weqfvscxz | 2788083859 |
+----+---------------------------------------------------+------------+
2 rows in set

mysql> select * from pseudohash where url = 'www.ceit.com/adasds/sdfsafwe/sadfsadfew/weqfvscxz' and url_crc = crc32('www.ceit.com/adasds/sdfsafwe/sadfsadfew/weqfvscxz');
+----+---------------------------------------------------+------------+
| id | url                                               | url_crc    |
+----+---------------------------------------------------+------------+
|  5 | www.ceit.com/adasds/sdfsafwe/sadfsadfew/weqfvscxz | 2788083859 |
+----+---------------------------------------------------+------------+
1 row in set

mysql>

where查询条件

where url = 'www.ceit.com/adasds/sdfsafwe/sadfsadfew/weqfvscxz' and url_crc = crc32('www.ceit.com/adasds/sdfsafwe/sadfsadfew/weqfvscxz');

这样做的性能就会很高,因为mysql优化器会使用这个选择性很高而体积很小的基于url_crc列的索引来完成查询。即使有很多个记录有相同的索引值,查找仍然很快,只需要根据哈希值做快速的整数比较就能找到索引条目,然后一一比较返回对应的行。对完整的URL字符串做索引,那就会非常慢。

处理哈希冲突的情况:要避免冲突问题,必须在where条件中带入哈希值和对应列值。

如果采用这种方式,记住不要使用SHA1()和MD5()作为哈希函数。因为这两个哈希函数计算出来的哈希值是非常长的字符串,会浪费大量空间,比较时也会更慢。

 

创建触发器,维护哈希值

mysql> delimiter //
mysql> CREATE TRIGGER pseudohash_crc_insert BEFORE INSERT ON pseudohash FOR EACH ROW 
BEGIN 
SET NEW.url_crc = crc32(NEW.url);
END; //
Query OK, 0 rows affected

mysql> CREATE TRIGGER pseudohash_crc_update BEFORE UPDATE ON pseudohash FOR EACH ROW 
BEGIN 
SET NEW.url_crc = crc32(NEW.url);
END;//
Query OK, 0 rows affected

mysql> delimiter ;
mysql>

查看触发器

mysql> SELECT * FROM information_schema.triggers WHERE TRIGGER_NAME='pseudohash_crc_insert' \G
*************************** 1. row ***************************
           TRIGGER_CATALOG: def
            TRIGGER_SCHEMA: test
              TRIGGER_NAME: pseudohash_crc_insert
        EVENT_MANIPULATION: INSERT
      EVENT_OBJECT_CATALOG: def
       EVENT_OBJECT_SCHEMA: test
        EVENT_OBJECT_TABLE: pseudohash
              ACTION_ORDER: 0
          ACTION_CONDITION: NULL
          ACTION_STATEMENT: BEGIN
SET NEW.url_crc = crc32(NEW.url);
END
        ACTION_ORIENTATION: ROW
             ACTION_TIMING: BEFORE
ACTION_REFERENCE_OLD_TABLE: NULL
ACTION_REFERENCE_NEW_TABLE: NULL
  ACTION_REFERENCE_OLD_ROW: OLD
  ACTION_REFERENCE_NEW_ROW: NEW
                   CREATED: NULL
                  SQL_MODE: NO_ENGINE_SUBSTITUTION
                   DEFINER: root@localhost
      CHARACTER_SET_CLIENT: utf8
      COLLATION_CONNECTION: utf8_general_ci
        DATABASE_COLLATION: latin1_swedish_ci
1 row in set (0.09 sec)

mysql>

测试触发器

mysql> insert into pseudohash (url) values('www.12345.com');
Query OK, 1 row affected

mysql> select * from pseudohash where id = 6;
+----+---------------+------------+
| id | url           | url_crc    |
+----+---------------+------------+
|  6 | www.12345.com | 1421191900 |
+----+---------------+------------+
1 row in set

mysql> update pseudohash set url = 'www.111111.com' where id = 6;
Query OK, 1 row affected
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from pseudohash where id = 6;
+----+----------------+------------+
| id | url            | url_crc    |
+----+----------------+------------+
|  6 | www.111111.com | 1825805409 |
+----+----------------+------------+
1 row in set

mysql>

====END====

mysql索引(四)索引的数据结构HASH 我们常用的索引数据结构比较多的是B+TREE。 还有另一种索引数据结构是hash,但是innoDB、mysiam数据引擎不支持hash数据结构。 不同的存储引擎支持的索引类型也不一样: InnoDB 支持事务,支持行级别锁定,支持 B-tree、Full-text 等索引,不支持 Hash 索引; MyISAM 不支持事务,支持表级别锁定,支持 B-tree、Full-text 等索引,不支持 Hash 索引; Memory 不支持事务,支持表级别锁定,支持 B-tree、Hash 等索引,不支持 Full 阅读详情

相关推荐

生信实战:用bcftools玩转VCF文件处理(从压缩到注释全流程)

本文详细介绍了使用bcftools处理VCF文件的全流程实战指南。从数据准备、压缩索引、信息提取、质量统计到核心的变异过滤与功能注释,手把手教你高效管理基因组变异数据。重点阐述了如何利用bcftools进行VCF文件注释,整合外部数据库信息,为变异位点添加关键的生物学标签,是生物信息学数据分析的必备技能。

rgv23456789的博客 340

【MongoDB】哈希索引(Hashed Indexes)

哈希索引使用索引字段值的哈希来维护索引条目。 哈希索引可以用作哈希分片键来对数据进行分片。基于哈希的分片将字段的哈希索引用作分片键,以跨分片群集对数据进行分区。 使用哈希分片键对集合进行分片使数据分布更随机。

chechengtao 6635

simulink求解器选择的小tip

给出了simulink选择求解器的一种tip,与积分初值有关。

高能阿博特的博客 2054

GPT-3如何重新定义人机交互:从Prompt工程到自然语言编程

在人工智能领域,自然语言处理(NLP)技术的核心目标之一是让机器理解并执行人类指令。其基本原理是通过大规模预训练的语言模型,学习海量文本数据中的统计规律和语义关联,从而具备强大的上下文理解和生成能力。这种技术的核心价值在于,它将传统的、固化的API调用模式,转变为一种灵活、动态的“自然语言编程”范式,极大地降低了人机交互的门槛。在实际应用场景中,开发者可以通过精心设计的文本指令(即Prompt),引导模型完成翻译、分类、代码生成、逻辑推理等多种复杂任务,而无需重新训练模型。这一范式的关键转折点,正是由GPT

weixin_33924770的博客 891

不只是驱动:拆解AIC8800 WiFi模组在RK Android系统的完整启动链(从DTS到HAL)

本文深入解析了AIC8800 WiFi模组在RK Android系统中的完整启动链,从设备树(DTS)配置到HAL层适配,涵盖驱动移植、固件加载及用户空间服务协同等关键环节。通过详细的技术分析和调试技巧,帮助开发者解决RK平台与AIC8800模组的兼容性问题,优化WiFi子系统性能。

weixin_30439067的博客 492

TIBCO Jaspersoft Studio报表开发 使用教程-进阶版

本文学习内容容器定制二级目录三级目录 容器定制 二级目录 三级目录

吉哲的博客 7521

PostgreSQL索引篇 | Hash索引

PostgreSQL版本为8.4.1 (本文为《PostgreSQL数据库内核分析》一书的总结笔记,需要电子版的可私信我)

weixin_63800030的博客 2838

【异常】OpenAI提示内容有误 Invalid prompt: your prompt was flagged as potentially violating our usage policy.

用户需优先调整提示内容,确保符合OpenAI的使用政策。若问题持续,建议结合请求ID和具体代码示例联系官方支持。同时,可参考腾讯云、Microsoft Q&A等平台提供的错误处理实践(如重试机制、日志记录)优化代码健壮性。

奶爸的编程之路,也就一周冷个三天 2072

mysql创建hash索引

mysql支持的存储引擎与索引结构对照表如下: 数据库类型 索引结构 innodb myiasm memory|heap

feinifi的博客 4108

深入浅出:使用Python爬取链家二手房数据

在数据驱动的时代,房地产数据作为社会经济的重要指标,一直是数据分析师、投资者和研究人员关注的焦点。链家作为国内领先的房产中介平台,其二手房数据具有较高的真实性和时效性。然而,官方API的访问限制和数据获取的门槛,让很多初学者望而却步。本文将带你从零开始,使用Python编写一个符合robots.txt规范的链家二手房爬虫,获取标题、户型、价格等信息。文章不仅会提供完整代码,还会深入讲解反爬策略、请求头伪装、数据解析、异常处理等实战技术。目录前言:为什么要写这篇博客?一、爬虫前的准备:法律与道德。

2201_76125261的博客 90

Win7/10/11文件拖拽导致资源管理器闪退问题

最近老是遇到把文件从资源管理器拖动到微信或者浏览器时,资源管理器直接闪退的问题,一开始在公司遇到了还以为是电脑配置太低,直到被封闭在家办公,发现自己的高级电脑也有这个问题,那就来了解了解问题是出在什么地方把。

Nicer_feng's blog 1万+

mysql 创建 hash索引_<转>MySQL创建自定义哈希索引

MySQL创建自定义哈希索引如果存储引擎不支持哈希索引,则可以模拟像Memory存储引擎一样创建哈希索引,这样可以享受哈希索引的便利,例如只需要很小的索引就可以为超长的键创建索引。思路很简单:在B-Tree基础上创建一个伪哈希索引。这和真正的哈希索引不是一回事。因为还是使用真正的哈希索引进行查找,但是它使用哈希值而不键本身进行索引查找。你需要做的就是在查询的where子句中手动指定使用哈希函数。下...

weixin_36352719的博客 157

【知识图谱】实践篇——基于知识图谱的《红楼梦》人物关系可视化及问答系统实践:part6基于图谱的问答实现

前序文章:本部分则是整个项目的核心内容——基于图谱的问答。需要实现的是对于“简单问题”进行解析,然后从图谱数据库中查询与该人员及其相关人员信息,返回到前端并显示该人员的基本信息。除此之外,用户可以点击返回的结果人员节点,页面能够显示该用户的个人基本信息。那么现在就开始吧。根据源码实现问答形式,其实是比较简单的。原代码中使用ltp对问题进行分词,选取具有名次词性的关键词进行处理。 ltp配置稍许麻烦,我使用jieba分词工具对问题进行分词,然后再按照原文提取问句中人物及关系,然后构建cypher neo4j查

让算法融入生活,改变生活! 2937

mysql怎么创建hash索引_高性能的MySQL(5)创建高性能的索引一哈希索引

哈希索引(hash index)基于哈希表实现,只有精确匹配索引的所有列的查询才有效,对于每一行数据,存储引擎都会对所有索引列计算一个哈希码,不同键值的行计算出来的哈希码也不一样,哈希码保存在哈希索引中,同时哈希表中保存指向每个数据的指针。1、Memory引擎支持哈希索引,也支持B-Tree索引,而且支持非唯一的哈希索引,如果多个列的哈希值相同,索引会以链表的方式存放多个记录指针到同一个哈希条目,...

weixin_33498603的博客 449

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

哈希索引的介绍和应用

哈希索引一.哈希表1.概念二.哈希索引1.概念2.举例3.哈希索引的限制三.自定义哈希索引​ 1.创建思路​ 2.示例​ 3.触发器维护​ 4.截取MD5()函数返回值 一.哈希表 1.概念 ​ 哈希表又称散列表(Hash table),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,...

lighter613的博客 1400

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Mysql主键索引,普通索引索引,唯一索引的区别

主键索引: 主键索引不可以为空 主键索引可以做外键 一张表中只能有一个主键索引 普通索引: 用来加速数据访问速度而建立的索引。多建立在经常出现在查询条件的字段和经常用于排序的字段。 被索引的数据列允许包含重复的值 唯一索引: 被索引的数据列不允许包含重复的值 以下内容转载自:https://blog.youkuaiyun.com/qq_41618510/article/details/...

dkingyaoyao的博客 7117

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

《高性能MySQL》读书笔记——第五章:创建高性能的索引

1 索引基础 索引是存储引擎用于快速找到记录的一种数据结构。也可以叫做键(key) 在Mysql中,存储引擎在索引中找到对应值,然后根据匹配的索引记录找到对应的数据行。如下例 SELECT first_name FROM sakila.actor WHERE actor_id = 5; 如果在actor_id列上建有索引,则Mysql根据索引找到actor_id为5的行。 Mysql先在索引上按值进行查找,然后返回所有包含该值的数据行。 索引可以包含一个或多个列的值。所以列的顺序也很重要。因为Mysq

yuxinganggame的博客 203

mysql index hash_mysql索引之哈希索引

哈希索引(Hash Index)建立在哈希表的基础上,它只对使用了索引中的每一列的精确查找有用。对于每一行,存储引擎计算出了被索引的哈希码(Hash Code),它是一个较小的值,并且有可能和其他行的哈希码不同。它把哈希码保存在索引中,并且保存了一个指向哈希表中的每一行的指针。在mysql中,只有memory存储引擎支持显式的哈希索引。如果多个值有相同的哈希码,索引就会把行指针以链表的方式保存在哈...

weixin_29671351的博客 254

mysql索引之哈希索引

哈希索引(Hash Index)建立在哈希表的基础上,它只对使用了索引中的每一列的精确查找有用。对于每一行,存储引擎计算出了被索引的哈希码(Hash Code),它是一个较小的值,并且有可能和其他行的哈希码不同。它把哈希码保存在索引中,并且保存了一个指向哈希表中的每一行的指针。 在mysql中,只有memory存储引擎支持显式的哈希索引。如果多个值有相同的哈希码,索引就会把行指针以链表的方式...

RobertXin 403

【MySQL查缺补漏学习】三、MySQL索引

说明:【MySQL查缺补漏学习】系列是在工作之余,梳理的一些关于MySQL的一些容易忽略的知识点,通过回顾和补充也可以更加系统的学习MySQL,以便在工作中更加游刃有余。 MySQL索引MySQL索引索引的类型B-Tree 索引哈希索引创建自定义哈希索引空间数据索引 (R -Tree)全文索引 MySQL索引 索引(MySQL)里叫“键“)是存储引擎用于快速找到记录的一种数据结构。 为了更好的理解,索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。一本 300 页的书,如果你想快速找到其中的..

孙三苗的专栏 369

mysql 创建伪hash索引

1创建自定义伪hash索引 原理:在BTree数上面创建一个伪hash索引,这和真正的hash索引不是一样的,因为还是使用的b-tree进行查找,但是它使用hash值而不是建本身进行查找 1.1正常情况查询 select id from url where url ="http://www.ayugudu.top"; 1.2伪hash索引查询 select id from url where url ="http://www.ayugudu.top" and url_crc=CRC("http://w

ytsydmx的博客 250

MySQL索引

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

weixin_34004576的博客 85

mysql索引查2遍_MySQL索引(2)

一、索引基础1. B-Tree索引<1> 所有的值都是按顺序存储的,并且每一个叶子页到根的距离相同。<2> 顺序组织存储,很适合查找范围数据,效率会非常高。<3> 可以有效使用B-Tree索引的查询:全值匹配、匹配最左前缀、匹配列前缀、匹配范围值、精确匹配某一列并范围匹配另一列、只访问索引的查询,还可以用于查询中的order by和group by操作。<...

weixin_28936835的博客 329

mysql为什么不用hash_MySql BTree和Hash索引的比较,为什么InnoDB不使用Hash索引

MYSQL 索引分析1.B+Tree之所以Btree能加快访问数据的速度,是因为存储引擎不再需要进行全表扫描只需要从索引的根节点开始进行搜索,根节点的槽中存放了指向子节点的指针,存储引擎会根据这些指针向下层查找,而这些指针实际上定义了子节点页中值的上限和下线比如:create table people(xing varchar(20) not null,ming varchar(20) not n...

weixin_42505397的博客 672

深入了解MySQL的哈希索引

哈希索引是一种基于哈希表的数据结构,通过对索引键值进行哈希运算,直接定位存储位置,从而实现快速数据访问。哈希索引在等值查询中表现尤为出色,但不适用于范围查询。虽然哈希索引在某些场景下可以显著提升查询性能,但也存在哈希冲突和内存消耗较大等局限性。

常备不懈 2966

Mysql哈希索引

哈希索引原理 哈希索引原理其实就是hash表,搜索时间效率O(1),搜索效率好,也意味着磁盘IO花费少,mysql底层使用的是链式哈希表,结构如下,每一个bucket就是一个个哈希桶,也就是哈希链表的头结点。哈希结构天然的需要耗费空间资源,是一种用空间换时间的做法 哈希要点: 解决哈希冲突的几种方式 再哈希的参数碰撞因子或者说负载因子 说白了就是用的拉链法去解决的哈希冲突,也正是这个结构造成了哈希索引的一些特性 哈希表没有顺序可言,只能进行等值查询,不支持范围搜索 哈希表不稳定,效率最差可能变为O(

Mr_Csyn的博客 6530
上一篇: Hystrix熔断
下一篇: 浅谈PageHelper插件分页实现原理及大数据量下SQL查询效率问题解决
低调的杉菜
博客等级 码龄15年 12粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值