类的生命周期 加载-验证-准备-解析-初始化-使用-卸载 1 加载阶段 把.class二进制数据读到内存中,并放到方法区,然后在堆中创建一个Java.lang.Class对象,这个对象就是用来封装类在方法区的数据结构的。 所以,类加载机制的最终产物是:在堆中创建了java.lang.Class对象, ...
分类:
编程语言 时间:
2020-07-04 20:36:50
阅读次数:
69
Kruskal算法(适用于稀疏图) 1、将所有边按权重从小到大排序 O(mlogn) 2、枚举每条边a,b,权重c O(m) if a,b不连通 将这条边加入集合中 判断连通 使用并查集来判断两个连通块是否连通 #include<iostream> #include<algorithm> using ...
MySQL索引 索引分类 最左前缀原则 覆盖索引 索引下推 联合索引顺序 What's Index ? 索引就是帮助RDBMS高效获取数据的数据结构。 索引可以让我们避免一行一行进行全表扫描。它的价值就是可以帮助你对数据进行快速定位。 索引分类 按照功能逻辑来分 普通索引 INDEX(col_nam ...
分类:
数据库 时间:
2020-07-04 17:06:09
阅读次数:
57
#前置芝士 熟练掌握二叉排序树的操作,了解 \(Treap\) 的左旋和右旋。 #引言 \(Treap\) 巧妙地使用随机数,解决了二叉查找树保持平衡的问题。但随机数的不稳定,导致它在极小概率的情况下不能保持树的平衡。故我们需要一种更加稳定的数据结构(虽然它不是很好写)。 #正文 \(Splay\) ...
分类:
其他好文 时间:
2020-07-04 16:51:48
阅读次数:
58
本文不涉及复杂的底层数据结构,通过explain解释SQL,并根据可能出现的情况,来做具体的优化,使百万级、千万级数据表关联查询第一页结果能在2秒内完成(真实业务告警系统优化结果)。 希望读者能够理解SQL的执行过程,并根据过程优化,走上自己的"成金之路" 需要优化的查询: 使用explain出现了 ...
分类:
数据库 时间:
2020-07-04 15:20:34
阅读次数:
97
1.介绍 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。 2.基本思想 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越 ...
分类:
编程语言 时间:
2020-07-04 15:15:58
阅读次数:
66
redis五大数据类型 翻译: Redis是一种开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。它支持数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超级日志,带有半径查询和流的地理空间索引。Redis具有内置的复制,Lua脚本,LRU驱逐,事务和不同级 ...
分类:
其他好文 时间:
2020-07-04 13:46:51
阅读次数:
80
1. MySQL索引引擎有两种:Innodb:聚集索引;Myisam:非聚集索引 2. MySQL 为什么不使用hash、二叉树、红黑树等作为索引的数据结构,而采用 B+ 树? 因为hash、二叉树、红黑树的高度不可控,B+ 树的高度可控,mysql 一般是3~5层。 3. 多路平衡二叉树(B+树) ...
分类:
数据库 时间:
2020-07-04 13:39:38
阅读次数:
67
最明显的区别是 ArrrayList 底层的数据结构是数组,支持随机访问,而 LinkedList 的底层数据结构书链表,不支持随机访问。使用下标访问一个元素, ArrayList 的时间复杂度是 O(1),而 LinkedList 是 O(n)。更多细节的讨论参见 ...
分类:
其他好文 时间:
2020-07-04 13:16:55
阅读次数:
62
通过上一节的学习,我们知道,散列表的查询效率并不能简单说成是O(1)。它跟散列函数、装载因子、散列冲突等地都有关系。 今天我们来学一下,如何设计一个可以应对各种异常情况的工业级散列表,来避免在散列冲突的情况下,散列表性能的急剧下降,并且能抵抗散列碰撞攻击? 下面我们从散列函数、装载因子、散列冲突等方 ...
分类:
编程语言 时间:
2020-07-04 13:09:20
阅读次数:
55