惊艳的算法 一致性哈希
背景 随着时代的发展,数据量与日俱增,相比纵向扩展单机的性能,人们更倾向于横向扩展,将多台一般的廉价机器组成集群来充当超级计算机,节省了大量的成本,代价是极大地增加了系统的复杂性。为了应对这些复杂性,一批又一批分布式领域的技术相继诞生,其中...
背景 随着时代的发展,数据量与日俱增,相比纵向扩展单机的性能,人们更倾向于横向扩展,将多台一般的廉价机器组成集群来充当超级计算机,节省了大量的成本,代价是极大地增加了系统的复杂性。为了应对这些复杂性,一批又一批分布式领域的技术相继诞生,其中...
问题 假设你现在要处理这样一个问题,你有一个网站并且拥有很多访客,每当有用户访问时,你想知道这个ip是不是第一次访问你的网站。这是一个很常见的场景,为了完成这个功能,你很容易就会想到下面这个解决方案: 把访客的ip存进一个hash表中,每当...
从定时任务说起 自然界中定时任务无处不在,太阳每天东升西落,候鸟的迁徙,树木的年轮,人们每天按时上班,每个月按时发工资、交房租,四季轮换,潮涨潮落,等等,从某种意义上说,都可以认为是定时任务。 大概很少有人想过,这些“定时”是怎样做到的。当...
跳跃表: 跳跃表与链表结构相似,只是引入“分层”的概念,从上到下的每一层都是一个链表。 借个图: 从图中可观察到跳跃表有以下的性质: 1.每个节点有多个层,每层都有一个指向同层的下一节点的指针 2.每层的链表都是一个有序链表,根据给定的ke...
题目 在一个由 n 个元素组成的集合中,按从小到大顺序排序的话,第 K 个顺序统计位即指第 K 个数,当 K = n 时即最大值,当 K = 1 时即最小值。先给定一个无序的元素集合,求集合中第 K 统计位的值是多少? 同理,若求 top ...
递归函数 递归 递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。递归函数必须有结束条件。 当函数在一直递推,直到遇到墙后返回,这个墙就是结束条件。 所以递归要有两个要素,结束条件与递推关系 ...
概述 CH(Contraction Hierarchies)是道路网络最短路径算法之一,其应用收缩(contract)节点的方法将节点分层,显著提高了最短路径的搜索速度。 CH算法涵盖数据预处理和路径搜索两个方面,预处理通过收缩节点生成路网...
什么是最短路径问题 如果从图中某一顶点(称为源点)到达另一顶点(称为终点)的路径可能不止一条,如何找到一条路径使得沿此路径上各边上的权值总和达到最小。 单源最短路径问题是指对于给定的图$G=(V, E)$,求源点$v_0$到其它顶点$v_t...
1、队列的基本结构 队列(queue)是一种线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除,插入元素的一端称为队尾(rear),删除元素的一端称为队首(front)。从队列中删除元素称为离队或出队,元素出队后,其后续元素成...
一、BitMap介绍 BitMap,即位图,使用每个位表示某种状态,适合处理整型的海量数据。本质上是哈希表的一种应用实现,原理也很简单,给定一个int整型数据,将该int整数映射到对应的位上,并将该位由0改为1。例如: // 存在一个int...