
一起学数据结构
文章平均质量分 68
baidu_36146918
这个作者很懒,什么都没留下…
展开
-
InnoDB 的各种锁
InnoDB 的各种锁脏读: 读到了别的事务回滚前的脏数据(不满足事务的隔离性, 一致性, 原子性)不可重复读: 同一事务执行两次查询值不同(不满足事务的隔离性, 一致性)幻读: 同一事务执行两次相同查询数量不同(不满足事务的隔离性, 一致性)锁大类latch:一般称为闩锁(轻量级别的锁),作用对象是线程,维护缓存(innodb_buffer_pool_instances)中的数据。因为其要求锁定的时间必须非常短。若持续的时间长,则应用的性能会非常差lock:作用对象是事务,用于保原创 2021-12-22 17:29:45 · 254 阅读 · 0 评论 -
快存快查,向哈希表致敬
哈希表哈希函数 address = H(key)理想的哈希函数是指能将key尽可能均匀的散布到整个定长数组中。均匀的散布也就意味着极少的哈希冲突构造方法说明适用场景直接寻址法通过线性函数 H(key) = a*key + b 计算地址适用于需要散列的key之间也是线性关系的情况除留余数法通过 H(key) = key % P (P <= 数组长度, 多数会取素数) 计算地址最简单,最常用的方法随机数法通过 H(key) = random(key) 将原创 2020-11-27 19:08:17 · 127 阅读 · 0 评论 -
一个拉着一个的链表
链表链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。 节选自百度百科节点: 组成链表的一个个节点例:class Node(object): def __init__(self, e = None, next_node: int = None): # 该节点存储的数据 self.e = e # 指向下一个节点的指针原创 2020-11-20 15:16:47 · 163 阅读 · 1 评论 -
一起数据结构-总纲
说明尽可能的详细的从 实现原理、复杂度、优缺点、注意事项、使用场景、算法应用等方面描述清楚各种常见不常见的数据结构暂不涉及图各数据结构之间的衍生关系数组有限个相同类型的元素组成的集合叫做数组。实现原理: 在计算机内存里通常表现为一块连续的内存空间,一般在数组定义的时候划定好空间时间复杂度: 存取均为 O(1)动态数组动态数组...原创 2020-11-17 17:47:43 · 203 阅读 · 0 评论 -
简单的动态数组也有小坑哦
动态数组无限个 相同类型 的元素组成的集合叫动态数据。相较于数组动态数组的容量是动态的,不用在创建时声明需要开辟多大的内存空间实现原理动态数组通过扩容和缩容来实现自动分配数组容量的操作。扩容: 当开辟的数组容量满并且还要插入元素的时候,就开辟一个容量为原来数组两倍(这里两倍是大多数语言都采用的数值,并不一定必须两倍)的新数组并将旧数组的数据移动至新数组。这种操作被称之为数组的扩容缩容:当取出元素之后数组中的元素占据不足当前容量的一半时, 会开辟一个为当前数组容量一半的新数组并将原数组元原创 2020-11-17 17:41:34 · 149 阅读 · 0 评论 -
Python实现字典树-Trie
本篇文章将解释什么是字典树以及字典树的Python实现什么是字典树(Trie)节点设计数据结构设计实现什么是字典树(Trie)字典树是一种树型数据结构,通常用来存储大量字符串。字典树的每个节点通常都为一个字符。从根节点的第一个孩子节点开始到可以作为字符串结尾的节点的路径就是Trie所存储的字符串,这种存储方式带来的好处就是Trie的时间复杂度和存储字符串的数据量无关只与查询的字符串长度有关,这...原创 2019-05-06 20:05:44 · 1369 阅读 · 1 评论 -
Python实现二叉堆-Binary Heap
本篇文章将简要解释什么是二叉堆以及二叉堆的Python实现什么是二叉堆(binary heap)实现思路(以最大堆为例)通过上浮操作来向堆中新增元素通过下沉操作来取出堆中元素数据结构设计&封装实现什么是二叉堆(binary heap)二叉堆是一种满足特殊性质的二叉树。具有以下性质:二叉堆是一颗完全二叉树(除叶子节点以外其余节点的左右孩子都不为空)所有节点的值都大于等于(最大堆)孩...原创 2019-05-16 19:47:20 · 1254 阅读 · 1 评论