MySQL联合索引性能比较_loongshawn的博客-CSDN博客


本站和网页 https://blog.csdn.net/loongshawn/article/details/77776533 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

MySQL联合索引性能比较_loongshawn的博客-CSDN博客
MySQL联合索引性能比较
loongshawn
于 2017-09-01 19:15:11 发布
13148
收藏
10
分类专栏:
MySQL基础知识
文章标签:
mysql
索引
性能
MySQL基础知识
专栏收录该内容
25 篇文章
5 订阅
订阅专栏
在分析联合索引性能之前,温故下基础知识。
1 数据结构
1.1 B-树
一个m阶树满足以下条件:
每个节点至多拥有m颗子树;根节点至少2颗子树(若存在子树的情况下);非根节点至少拥有m/2颗子树,其范围为m/2 <= childNum(x) <= m;所有叶子节点都在同一层,且为null;有k颗子树的节点,其关键字数为k-1,ceil(m/2)-1 <= keyNum(x) <= m-1;
图1
下面分两种边界条件来算算其高度:
(1).度为m/2,关键字总量为n,高度为h。
m/2+(m/2)^2+...+(m/2)^(h-1) = n
\frac{(m/2)(1-(m/2)^(h-1)}{1-m/2} = n
(m/2)^(h-1) = n+1
h = (log_(m/2) (n+1))+1
(2).度为m,关键字总量为n,高度为h。
m+(m)^2+...+(m)^(h-1) = n
\frac{(m)(1-(m)^(h-1)}{1-m} = n
(m)^(h-1) = n+1
h = (log_(m) (n+1))+1
以上算法不一定绝对准确,仅供参考。
1.2 B+树
一个m阶树满足以下条件:
每个节点至多拥有m颗子树;根节点至少2颗子树(若存在子树的情况下);有n颗子树的节点有n个关键字;所有内节点仅存放索引,数据全部保存在叶子节点上。
图2
B+树高度计算与B-树一样,B+树较B-树的优势在于:
内节点没有存放数据,因此可以存放更多的索引数据,一次IO将会获取更多数据,数据总量不变情况下,达到减少IO次数效果;
1.3 B-树、B+树索引性能分析
一般用磁盘IO评价索引结构的优劣。B-树检索一次,最多访问h个节点,即其时间复杂度O(h)=O(log_d N),其实红黑色O(h)=O(log_2 N),接下来以实际数据做对比:数据量640亿。
度为100的B-树,高度为5;红黑树高度为35;
可以看出,B-树的IO效率较红黑树提升很多。提升B树的度,可以有效降低树的高度。
附加-在线对数计算器
2 MySQL索引实现
2.1 MyISAM索引实现
MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址,索引文件与数据分离,是一种非聚集索引。下图是MyISAM索引的原理图:
图3
这里设表一共有三列,假设我们以Col1为主键,则图3是一个MyISAM表的主索引(Primary key)示意。可以看出MyISAM的索引文件仅仅保存数据记录的地址。在MyISAM中,主索引和辅助索引(Secondary key)在结构上没有任何区别,只是主索引要求key是唯一的,而辅助索引的key可以重复。如果我们在Col2上建立一个辅助索引,则此索引的结构如下图所示:
图4
同样也是一颗B+Tree,data域保存数据记录的地址。因此,MyISAM中索引检索的算法为首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,则取出其data域的值,然后以data域的值为地址,读取相应数据记录。
MyISAM的索引方式也叫做“非聚集”的,之所以这么称呼是为了与InnoDB的聚集索引区分。
2.2 InnoDB索引实现
虽然InnoDB也使用B+Tree作为索引结构,但具体实现方式却与MyISAM截然不同。
第一个重大区别是InnoDB的数据文件本身就是索引文件。从上文知道,MyISAM索引文件和数据文件是分离的,索引文件仅保存数据记录的地址。而在InnoDB中,表数据文件本身就是按B+Tree组织的一个索引结构,这棵树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引。
图5
图5是InnoDB主索引(同时也是数据文件)的示意图,可以看到叶节点包含了完整的数据记录。这种索引叫做聚集索引。因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键(MyISAM可以没有),如果没有显式指定,则MySQL系统会自动选择一个可以唯一标识数据记录的列作为主键,如果不存在这种列,则MySQL自动为InnoDB表生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形。
第二个与MyISAM索引的不同是InnoDB的辅助索引data域存储相应记录主键的值而不是地址。换句话说,InnoDB的所有辅助索引都引用主键作为data域。例如,图6为定义在Col3上的一个辅助索引:
图6
这里以英文字符的ASCII码作为比较准则。聚集索引这种实现方式使得按主键的搜索十分高效,但是辅助索引搜索需要检索两遍索引:首先检索辅助索引获得主键,然后用主键到主索引中检索获得记录。
了解不同存储引擎的索引实现方式对于正确使用和优化索引都非常有帮助,例如知道了InnoDB的索引实现后,就很容易明白为什么不建议使用过长的字段作为主键,因为所有辅助索引都引用主索引,过长的主索引会令辅助索引变得过大。再例如,用非单调的字段作为主键在InnoDB中不是个好主意,因为InnoDB数据文件本身是一颗B+Tree,非单调的主键会造成在插入新记录时数据文件为了维持B+Tree的特性而频繁的分裂调整,十分低效,而使用自增字段作为主键则是一个很好的选择。
3 索引使用策略及优化
MySQL的优化主要分为结构优化(Scheme optimization)和查询优化(Query optimization)。本章讨论的高性能索引策略主要属于结构优化范畴。本章的内容完全基于上文的理论基础,实际上一旦理解了索引背后的机制,那么选择高性能的策略就变成了纯粹的推理,并且可以理解这些策略背后的逻辑。
3.1 联合索引
联合索引顾名思义就是多个列组成的索引,比如<a1,a2,a3,a4,a5…an>,以具体数据表来看,查看数据表索引:
SHOW INDEX FROM pre_sales_rfq
通过输出结果可以看出,pre_sales_rfq表有2个索引:主键索引(id)、联合索引(project_id,item_id)。接下来,主体看看什么情况会用到索引,什么时候不会用到索引。
不过在正式分析联合索引前,有必要了解下主键和联合索引都存在时,使用哪个索引。通过下面实例分析:
其中id为主键,(id, name,create_date)联合索引
EXPLAIN select * from index_test where id = 1 and name = 'jackshawn' and create_date = '2017-09-21'
通过输出结果可以看出,其key_len为4,ref为const,仅使用了主键;那我们把主键去掉再看看:
这次有使用到联合索引。
通过设置其他字段为主键,测试结果依旧如上。也就是说,如果联合索引中包含主键,则优先使用主键。
3.1.1 全列匹配
EXPLAIN select * from pre_sales_rfq where project_id = 1 and item_id = 1
通过输出结果可以看出,本次查询用到了联合索引。然后看看颠倒索引列顺序有无影响。
EXPLAIN select * from pre_sales_project_rfq where item_id = 1 and project_id = 1
通过输出结果可以看出,MySQL的查询优化器会自动调整where子句的条件顺序以使用适合的索引。很明显,当索引中所有列精准匹配时,是会用索引的。
3.1.2 最左前缀匹配
最左前缀匹配这种情况即,查询条件中匹配最左边开始的连续一个或几个条件。
EXPLAIN select * from pre_sales_project_rfq where project_id = 1
通过输出结果可以看出,联合索引依然起作用。
3.1.3 查询条件没有中间列
(id, name,create_date)联合索引
EXPLAIN select * from index_test where id = 1 and create_date = '2017-09-21'
通过输出结果可以看出,依然会使用索引,只不过仅使用索引的id列。
3.1.4 查询条件没有指定索引左边第一列
联合索引(id,name,create_date)
explain select * from index_test where name='jack' and create_date='2018-11-12 00:00:00'
通过输出结果可以看出,没有使用任何索引。
3.1.5 匹配某列的前缀字符串
EXPLAIN select * from index_test where id = 1 and name ='%jack'
EXPLAIN select * from index_test where id = 1 and name ='jack%'
输出结果都为:
通过输出结果可以看出,模糊匹配时依旧能使用索引。
3.1.6 范围查询
EXPLAIN select * from index_test where id > 1 and name ='jackshawn'
通过输出结果可以看出,均能够使用索引。between、in也是一个样,会使用索引。
EXPLAIN select * from index_test where id in(1,4) and name ='jackshawn'
EXPLAIN select * from index_test where id between 1 and 4 and name ='jackshawn'
3.1.7 查询条件中含有函数或表达式
EXPLAIN select * from index_test where id -1 = 1 and name ='jackshawn'
通过输出结果可以看出,索引没有被用到。看来MySQL还没有智能到自动优化常量表达式的程度,因此在写查询语句时尽量避免表达式出现在查询中,而是先手工私下代数运算,转换为无表达式的查询语句。
3.2 索引选择性与前缀索引
首先不是任何时候都必须建索引,一般数据量较少(千级别)的数据表没必要建索引,全表查询即可,因为索引文件本身要消耗存储空间,同时索引会加重插入、删除和修改记录时的负担,另外,MySQL在运行时也要消耗资源维护索引,因此索引并不是越多越好。
在数据量较大时,选择索引字段有一个原则:
1.字段重复率较低。
## 一个字段不重复的总量与数据总量的比值,越大选择性越好。
SELECT count(DISTINCT(key))/count(*) AS Selectivity FROM table;
对于符合创建索引的情况,是不是只有一种选举,就是用整个字段来做索引?答案是否定的,也可以截取字段的前缀部分来创建索引,关键看截取多长时查询效率高。
1.选择性高。2.查询效率高。
## 举例如下截取last_name前4个字符
ALTER TABLE employees.employees
ADD INDEX `first_name_last_name4` (first_name, last_name(4));
SELECT count(DISTINCT(concat(first_name, left(last_name, 4))))/count(*) AS Selectivity FROM employees.employees;
3.3 InnoDB的主键选择与插入优化
在使用InnoDB存储引擎时,如果没有特别的需要,请永远使用一个与业务无关的自增字段作为主键。
上文讨论过InnoDB的索引实现,InnoDB使用聚集索引,数据记录本身被存于主索引(一颗B+Tree)的叶子节点上。这就要求同一个叶子节点内(大小为一个内存页或磁盘页)的各条数据记录按主键顺序存放,因此每当有一条新的记录插入时,MySQL会根据其主键将其插入适当的节点和位置,如果页面达到装载因子(InnoDB默认为15/16),则开辟一个新的页(节点)。
如果表使用自增主键,那么每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置,当一页写满,就会自动开辟一个新的页。这样就会形成一个紧凑的索引结构,近似顺序填满。由于每次插入时也不需要移动已有数据,因此效率很高,也不会增加很多开销在维护索引上。
如果使用非自增主键(如果身份证号或学号等),由于每次插入主键的值近似于随机,因此每次新纪录都要被插到现有索引页得中间某个位置。
4 参考文档
1、理解MySQL——索引与优化
2、B树与B+树
3、MySQL索引背后的数据结构及算法原理
4、对数计算器
5、Markdown中数学公式整理
loongshawn
关注
关注
点赞
10
收藏
评论
MySQL联合索引性能比较
B树、联合索引、性能分析
复制链接
扫一扫
专栏目录
mysql 联合索引底层结构_最全MySQL索引与底层实现原理详解
weixin_31282885的博客
02-27
1757
1.你现在线上的MySQL数据库是哪个版本?什么存储引擎?5.6 InnoDB2.该版本的索引的底层采用的是什么数据结构?(这里回答不上来就pass了,重点是想聊下面的B+树)B+树3.那么你知道为什么采用B+树吗?B+树更为矮胖,可以减少磁盘I/O的次数(查找次数等于树的深度),而磁盘I/O是最大的时间开销B+树所有数据都在叶子节点,由于有链表结构(叶子节点从小到大顺序两两相连),只需要找到...
单个索引和组合索引(联合索引)谁效率高
养歌的博客
01-26
5417
首先我们创建第一张表为组合索引,如下所示:
第二种表为单列索引,如下所示:
创建完表之后我们开始
评论 5
您还未登录,请先
登录
后发表或查看评论
mysql唯一索引和普通索引的性能区别
最新发布
flynetcn的专栏
11-20
47
为什么有人说要避免用唯一索引?
MySQL联合索引的原理
qq_35095500的博客
05-17
1310
面试中被问到了联合索引,突然就涉及到了知识盲区,对不起,我只知道B+树,B树,哈希索引,聚簇索引,非聚簇索引,联合索引的原理?。。
对不起涉及到了我的知识盲区了。
这里对联合索引做一个总结,联合索引,顾名思义,普通的索引我们只会对单个字段去构建索引,又分为主键索引和辅助索引,那么联合索引就是对多个字段去构建索引,
从而在某些场景下提升提升查询效率。
最左匹配原则
提到联合索引,不得不提的就是最左匹配原则
所谓最左原则指的就是如果你的 SQL 语句中用到了联合索引中的最左边...
MySQL联合索引底层数据结构
串一串爪娃子
06-09
4309
前言
了解MySQL索引结构的基本都知道索引BTree类型是用B+树的数据结构,单列索引的结构我们很容易理解,二级索引的每个叶子节点只存储主键关键字外的一个数据,查询起来也很容易在非叶子节点进行大小值判断,最终找到叶子节点
对于多列组合索引,存储结构也是B+树,那么非叶子节点和叶子节点都存储的是什么内容?
二级组合索引
对于组合索引,需要遵循断桥原则(最左匹配...
MySQL索引之联合索引
桐花思雨
09-11
6805
目录联合索引联合索引的存储结构建表
联合索引
在平时开发中,我们最常见的是聚集索引,但在我们需要多条件查询的时候,就不得不建立联合索引,来提高我们的查询效率
联合索引:也称复合索引,就是建立在多个字段上的索引。联合索引的数据结构依然是 B+ Tree
一颗 B+ Tree 只能根据一个值来构建,所以联合索引使用 最左 的字段来构建 B+ Tree
联合索引的存储结构
建表
CREATE TABLE `t1` (
`a` int(11) NOT NULL AUTO_INCREMENT,
`b`
mysql索引的时间复杂度_MySql索引总结
weixin_34766430的博客
01-25
3043
索引概念B+树索引分为聚集索引和非聚集索引(辅助索引),但是两者的数据结构都和B+树一样,区别是存放的内容。可以说数据库必须有索引,没有索引则检索过程变成了顺序查找,O(n)的时间复杂度几乎是不能忍受的。我们非常容易想象出一个只有单关键字组成的表如何使用B+树进行索引,只要将关键字存储到树的节点即可。当数据库一条记录里包含多个字段时,一棵B+树就只能存储主键,如果检索的是非主键字段,则主键索引失去...
MySQL索引长度(key_len)计算
程序员Forlan的博客
05-25
888
计算规则
1.索引字段,没有设置not null,则需要加一个字节。
2.定长字段:int固定占四个字节、date占三个字节、char(n)占n个字符,
3.varchar(n)占n个字符+2个字节。
4.不同的字符集,一个字符占用的字节数不同
latin1编码,每个字符占用一个字节
gbk编码,每个字符占用两个字节
utf8编码,每个字符占用三个字节
utf8mb4编码,每个字符占用四个字节
例子
可以通过explain
...
MySQL之添加联合唯一索引
weixin_39833509的博客
09-24
570
一、联合唯一索引
项目中需要用到联合唯一索引:
例如:有以下需求:每个人每一天只有可能产生一条记录:处了程序约定之外,数据库本身也可以设定:
例如:t_aa 表中有aa,bb两个字段,如果不希望有2条一模一样的记录(即:aa字段的值可以重复; bb字段的值也可以重复,但是一条记录(aa,bb)组合值不允许重复),需要给 t_aa 表添加多个字段的联合唯一索引:
alter table t_aa add unique index(aa,bb);
例如:
alter table use_info
mysql 重复率高字段 索引_MySQL的高性能索引策略
weixin_42508785的博客
02-02
1785
前言首先,如果不是很理解索引的底层结构原理的话,建议先看一下我的另一篇介绍索引的底层原理。(点击跳转)本篇文章是大部分摘入高性能MySQL的笔记,也有参考网上的各种博客整理。仅供大家学习和复习!独立的列独立的列是指索引不能参与运算,要将索引索引单独的放在表达式的一列。像下面的语句就不会用到索引。mysql> SELECT actor_id FROM sakila.actor WHERE ac...
执行计划+Hint+统计信息+并行+绑定变量+sql跟踪和10046事件+10053事件
hbwxshyq的专栏
11-19
506
谭怀远书一 5至11章读书笔记
执行计划
1.执行计划中的rows表示CBO从一个行源预期获取的记录数,这个行源可能是一个表,也可能是一个索引。
2.rows值对CBO做出正确的执行计划至关重要,如果CBO获取的rows值不准确(通常是没收集统计信息或统计信息过旧导致),在计算执行成本时就会出现偏差,从而制定出错误的执行计划。
3.收集统计信息 exec dbms_stat
7.联合索引(最左前缀原则)
c1776167012的博客
10-15
1万+
1)什么是联合索引?
联合索引指的是对一张表上的多个列进行索引。也就是说,表上多个列加起来组成一个索引,供快速查询使用。
2)如何使用联合索引?
首先,给表添加索引
创建表时给表添加:
CREATE TABLE t(
a int,
b int,
primary key(a),
key idx_a_b(a,b)
创建表后给表添加:
CREATE TABLE t(
a int,
b int,
primary key(a)
给表添加索引语句:
mysql 重复率高字段 索引_MySQL性能优化(二)索引优化
weixin_29054195的博客
02-07
210
一、选择合适的列建立索引1.在where从句,group by从句,order by从句,on从句中出现的列(select)2.索引字段越小越好(表每页数据才会更多,IO效率会更高)3.离散度大的列放到联合索引的前面select * from payment where staff_id=2 and customer_id=584;index(staff_id,customer_id)好?还是in...
mysql 联合索引温故
robert198837的专栏
05-29
1115
联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c)。 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。
两个或更多个列上的索引被称作复合索引。
利用索引中的附加列,您可以缩
mysql 联合索引 性能_MySQL 性能分析 之 联合索引(复合索引)实践分析
weixin_42594427的博客
01-19
63
MySQL 性能分析 之 联合索引(复合索引)实践分析作为开发者,大家都知道,一个服务器、一个数据库的性能是项目的重中之重,后台架构、写法与数据库设计的好坏往往直接影响到整个项目的性能。索引:是当你的业务完成后,跟据查询条件来建立的。当你的数据量大(一般是10万条数据)了之后,我们会再把普通索引删除,使用自建索引表。因为数据量大的时候你要批量修改(索引表也会修改)会变的非常的慢!这里给分析一下My...
mysql中如何用命令创建联合索引
qq_42449963的博客
11-05
9148
目录普通联合索引唯一联合索引普通联合索引和唯一联合索引的区别
普通联合索引
语法:
create index 索引名称 on 表名(字段名称)
示例:
create index firstIndex on student(id, name, address);
注意:
索引名称、表名、字段名称 都不要用引号括起来
对于联合索引而言,字段名称可以有多个,中间用英文逗号分隔即可
普通索引可以重复
结果:
唯一联合索引
语法:
create unique index 索引名称 on 表名(字段名称
小心MySQL联合索引的效率陷阱
程序猿的世界
12-03
471
场景:
表中有两个索引:索引index_1(create_Time, category_id), index_2(category_id)
查询语句为:select create_time,category_id from table where create_time='15233333333' and category_id='666';
explain结果:
使用了index...
MySQL单列索引和组合索引的选择效率与explain分析
热门推荐
xtdhqdhq的专栏
12-26
3万+
一、先阐述下单列索引和组合索引的概念:
单列索引:即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。
组合索引:即一个索包含多个列。
如果我们的查询where条件只有一个,我们完全可以用单列索引,这样的查询速度较快,索引也比较瘦身。如果我们的业务场景是需要经常查询多个组合列,不要试图分别基于单个列建立多个单列索引(因为虽然有多个单列索引,但是MySQL只能用到其
联合索引优化多条件查询
黄复贵的博客
07-19
1万+
联合索引是由多个字段组成的组合索引。若经常需要使用多个字段的多条件查询(WHERE col1 = … AND col2 = … AND col3 = …),可以考虑使用联合索引。现在数据表myIndex中i_testID是主键列,其他列无任何索引:多条件查找名字为xiaoming,城市为beijing,年龄为21的人:返回了一行数据,从执行计划中看到,查询没有使用任何索引,进行了全表扫描,磁盘IO大
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:编程工作室
设计师:CSDN官方博客
返回首页
loongshawn
CSDN认证博客专家
CSDN认证企业博客
码龄7年
暂无认证
250
原创
2万+
周排名
134万+
总排名
314万+
访问
等级
1万+
积分
624
粉丝
729
获赞
469
评论
1926
收藏
私信
关注
热门文章
MyBatis JdbcType 与Oracle、MySql数据类型对应关系详解
135154
SpringBoot配置log4j输出日志
93154
利用JavaCSV API来读写csv文件
81890
Mybatis异常-Result Maps collection already contains value for xxx
81795
SpringBoot接口服务处理Whitelabel Error Page
81547
分类专栏
Apache
4篇
JIRA
3篇
JavaFX
18篇
笔记
33篇
美好生活
6篇
Kafka
5篇
Big Data
8篇
单元测试
1篇
JAVA
139篇
java基础编程提升
17篇
A Year Of Books
16篇
MAVEN
20篇
JDK
12篇
Android
SpringBoot
29篇
Linear programming
2篇
Oracle
19篇
MySQL基础知识
25篇
MyBatis
20篇
Redis
3篇
Message Queue
5篇
RocketMQ
1篇
Linux
16篇
Tomcat
3篇
Nginx
3篇
log4j
3篇
Email
1篇
MongoDB
3篇
Data structure
3篇
Open Source
4篇
Product
4篇
Cloud Computing
6篇
Http
18篇
Docker
2篇
Quartz
1篇
IDE
5篇
Go
8篇
NIO
1篇
Markdown
2篇
Tools
13篇
Architecture
12篇
Spring
12篇
Spring MVC
3篇
HSF
4篇
SOA
3篇
Scheduler
1篇
Computer Theory
6篇
Netty
1篇
大佬分享
7篇
ML
2篇
Mac
1篇
长沙现象
9篇
Network Security
5篇
LeetCode
2篇
TED
1篇
职场
31篇
新词汇
5篇
Git
4篇
最新评论
log4j区分不同客户端产生的日志
陆先生。:
添加环境变量那块是在自己的JAVA工程中添加的,还是log4j的源码中添加的?
JIRA REST API调用方式
qq_40605994:
请问,是否有移动问题所对应项目的接口,比如把问题移动从项目A移动到项目B下面,用修改接口,传入project{id: '移动到的项目id'}一直报400的错误,看官方接口好像也没有对应的接口,但是在页面上确实有移动这一功能
Java中文字符串截取,不能返回半个汉字
m0_37912310:
判断size>=length会有问题,char的size 一个汉字size是1 字节数是2。可以尝试调试下方法入参 (20个汉字的字符串,22) 看下出参
Apache PDFbox开发指南之PDF文档读取
weixin_45395005:
大神,插入图片的时候,能否直接插入图片在线地址?
Java利用mpxj解析mpp格式文件
一个小白bbb:
非常感谢,获取自定义字段找了很久
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
向下看或向上看
复盘案例:橱柜安装不合适,导致柜体、台面均重做
数据倾斜优化方式
2022年1篇
2021年36篇
2020年26篇
2019年51篇
2018年32篇
2017年74篇
2016年97篇
2015年14篇
目录
目录
分类专栏
Apache
4篇
JIRA
3篇
JavaFX
18篇
笔记
33篇
美好生活
6篇
Kafka
5篇
Big Data
8篇
单元测试
1篇
JAVA
139篇
java基础编程提升
17篇
A Year Of Books
16篇
MAVEN
20篇
JDK
12篇
Android
SpringBoot
29篇
Linear programming
2篇
Oracle
19篇
MySQL基础知识
25篇
MyBatis
20篇
Redis
3篇
Message Queue
5篇
RocketMQ
1篇
Linux
16篇
Tomcat
3篇
Nginx
3篇
log4j
3篇
Email
1篇
MongoDB
3篇
Data structure
3篇
Open Source
4篇
Product
4篇
Cloud Computing
6篇
Http
18篇
Docker
2篇
Quartz
1篇
IDE
5篇
Go
8篇
NIO
1篇
Markdown
2篇
Tools
13篇
Architecture
12篇
Spring
12篇
Spring MVC
3篇
HSF
4篇
SOA
3篇
Scheduler
1篇
Computer Theory
6篇
Netty
1篇
大佬分享
7篇
ML
2篇
Mac
1篇
长沙现象
9篇
Network Security
5篇
LeetCode
2篇
TED
1篇
职场
31篇
新词汇
5篇
Git
4篇
目录
评论 5
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值