一,调试函数repr 读写文件的时候,你可能会碰到空格导致的问题,这些问题很难解决,因为空格、跳表以及换行,平常就难以用眼睛看出来: >>> s = '1 2\t 3\n 4' >>> print(s) 1 2 3 4 >>> t = 'I like use Python\n and you?' > ...
分类:
编程语言 时间:
2020-07-02 18:22:51
阅读次数:
88
1.SkipList Redis的sortedSet数据结构是有序不重复的(索引为唯一的,数据(score)却可以重复), 跳表是redis的一个核心组件,也同时被广泛地运用到了各种缓存地实现当中,它的主要优点, 就是可以跟红黑树、AVL等平衡树一样,做到比较稳定地插入、查询与删除。理论插入查询删除 ...
分类:
其他好文 时间:
2020-07-02 16:23:09
阅读次数:
41
1.概述 数据结构主要包括列表,字符串,跳表,map,set等,底层基于c实现。 2.sds redis自建的字符串,数据结构 struct sdshdr{ int len; int free; char buf[]; } 主要解决缓存溢出问题。 3.链表 redis自建的链表保存了双向信息,包括头 ...
分类:
其他好文 时间:
2020-06-29 00:09:25
阅读次数:
61
前言基于mysqlSELECT ORDER BY加索引加缓存借助redis实时排行榜实现原理为什么 Redis 要用跳表来实现有序集合,而不是红黑树?参考TOC 前言 排行榜几乎已经成为互联网应用中的必备模块,特别是游戏领域,它是对某一相关同类事物的客观实力的反映,带有相互之间的比较性质,带有竞争意... ...
分类:
其他好文 时间:
2020-06-28 00:04:18
阅读次数:
124
一、跳表介绍 二分查找底层依赖的是数组随机访问的特性,所以只能用数组来实现。如果数据存储在链表中,能否用二分查找算法? 实际上,只需要对链表稍加改造,就可以支持类似“二分”的查找算法。 改造之后的数据结构叫作跳表(Skip list)。 跳表是一种各方面性能都比较优秀的动态数据结构,可以支持快速的插 ...
分类:
其他好文 时间:
2020-06-07 09:19:32
阅读次数:
48
mysql的B+树索引 查找使用了二分查找,redis 跳表也使用了二分查找法,kafka查询消息日志也使用了二分查找法,二分查找法时间复杂度O(logn); 参考:redis的索引底层的 跳表原理 实现 聊聊Mysql索引和redis跳表 redis的跳表原理 时间复杂度O(logn)(阿里) 参 ...
分类:
其他好文 时间:
2020-05-11 01:34:25
阅读次数:
79
最近开始看Redis设计原理,碰到一个从未遇见的数据结构:跳跃表(skiplist)。于是花时间学习了跳表的原理,并用java对其实现。 主要参考以下两本书: 《Redis设计与实现》跳表部分:主要介绍跳表在Redis中如何实现; 《算法:C语言实现(第1~4部分)》的13.5节:介绍跳表的算法。 ...
分类:
编程语言 时间:
2020-05-06 21:50:25
阅读次数:
85
简介 跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表。 跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。 跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能。 存储结构 跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。 源码分析 主要内部类 ...
分类:
其他好文 时间:
2020-05-06 21:47:19
阅读次数:
77
何为跳表? 跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表。 跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。 跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能。 跳表详解 有序链表 考虑一个有序链表,我们要查找3、7、17这几个元素,我们只能从头开始遍 ...
分类:
其他好文 时间:
2020-05-06 13:52:50
阅读次数:
61
算法 第八章 Morris遍历/搜索二叉树/跳表等(完结) Morris遍历 + Morris遍历实现二叉树的先中后序遍历,时间复杂度O(n), 额外空间复杂度O(1) + 如果使用递归/非递归版本都是使用栈来完成二叉树遍历,因为只有指向子指针没有指向父指针,有额外的栈空间。 + Morris遍历实 ...
分类:
编程语言 时间:
2020-04-21 18:52:39
阅读次数:
92