算法
youling_lh
这个作者很懒,什么都没留下…
展开
-
SkipList 跳表
今天有同学去面试,被问到了“跳表”这种数据结构,说实话我之前对它了解不多,于是上网查了跳表的资料,并在这里总结一下。什么是跳表?要说清楚这个问题,我们就要先从普通的有序链表说起。一个普通有序列表的结构如下:我们可以看到,上图所示的链表按照由小到大的顺序排列(-1表示最小值,1表示最大值,这是本文的一个约定),如果我们想要查找一个元素x,算法如下:12转载 2013-08-19 23:07:14 · 533 阅读 · 0 评论 -
平均数、中位数、众数的特点及应用场合
平均数、中位数、众数都是度量一组数据集中趋势的统计量。所谓集中趋势是指一组数据向某一中心值靠拢的倾向,测度集中趋势就是寻找数据一般水平的代表值或中心值。而这三个特征数又各有特点,能够从不同的角度提供信息。平均数特点:计算用到所有的数据,它能够充分利用数据提供的信息,它具有优 的数学性质,因此在实际应用中较为广泛。但它受极端值的影响较大。应用场合:没有极端值的情况下数据集中趋势的刻画。转载 2013-08-25 09:47:36 · 34344 阅读 · 0 评论 -
海量数据处理常用思路和方法
大数据量的问题是很多面试笔试中经常出现的问题,比如 google、淘宝、百度、 腾讯 这样的一些涉及到海量数据的公司经常会问到。下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎与我讨论。1转载 2013-08-25 18:08:36 · 859 阅读 · 0 评论 -
不重复随机数列生成算法
本文将讲述一个高效的不重复随机数列的生成算法,其效率比通常用hashtable 消重的方法要快很多。作者:eaglet 转载请注明出处。首先我们来看命题:给定一个正整数n,需要输出一个长度为n的数组,数组元素是随机数,范围为0 – n-1,且元素不能重复。比如 n = 3 时,需要获取一个长度为3的数组,元素范围为0-2,比如 0,2,1。这个问题的通常解决转载 2013-08-25 20:13:49 · 720 阅读 · 0 评论 -
Hash冲突的解决--暴雪的Hash算法
值得一提的是,在解决Hash冲突的时候,搞的焦头烂额,结果今天上午在自己的博客内的一篇文章(十一、从头到尾彻底解析Hash表算法)内找到了解决办法:网上流传甚广的暴雪的Hash算法。 OK,接下来,咱们回顾下暴雪的hash表算法:“接下来,咱们来具体分析一下一个最快的Hash表算法。我们由一个简单的问题逐步入手:有一个庞大的字符串数组,然后给你一个单独的字符串,让你从这个数组中查找是否转载 2013-08-18 01:47:20 · 1170 阅读 · 0 评论 -
一致性哈希算法(Consistent Hashing)
应用场景这里我先描述一个极其简单的业务场景:用4台Cache服务器缓存所有Object。那么我将如何把一个Object映射至对应的Cache服务器呢?最简单的方法设置缓存规则:object.hashCode() % 4。Cache 0:object.hashCode() % 4 == 0Cache 1:object.hashCode() % 4 ==转载 2013-08-28 23:18:30 · 948 阅读 · 0 评论 -
关于缓存调度算法FIFO、LRU、OPT这三种置换算法的缺页次数
这三个置换算法,或者说缓存调度算法,其实来源于操作系统。操作系统的页置换算法。FIFO:即 First In, First Out 先进先出算法。LRU: Least recently used,最近最少使用算法。即是将最近最少使用的对象踢出内存。OPT: Optimal,最优替换,也就是上帝模式。它是考虑当前内存中的对象,以及将来要放进内存的对象,然后,将在最远的将来才被访问的页面踢转载 2013-09-25 21:40:49 · 6279 阅读 · 0 评论 -
最通俗的CRC校验原理剖析
以下内容摘自笔者即将出版的最新著作《深入理解计算机网络》一书。本书将于12月底出版上市,敬请留意!! 本书原始目录参见此文:http://winda.blog.51cto.com/55153/1063878 5.3.2 循环冗余校验检错方案 上节介绍的奇偶校验码(PCC)只能校验一位错误,本节所要介绍的循环冗余校验码(CRC)的检错能力更强,可以检出多位错误。1. C转载 2013-09-26 23:10:49 · 703 阅读 · 0 评论 -
Timing Wheel 定时轮算法
最近自己在写一个网络服务程序时需要管理大量客户端连接的,其中每个客户端连接都需要管理它的 timeout 时间。通常连接的超时管理一般设置为30~60秒不等,并不需要太精确的时间控制。另外由于服务端管理着多达数万到数十万不等的连接数,因此我们没法为每个连接使用一个Timer,那样太消耗资源不现实。最早面临类似问题的应该是在操作系统和网络协议栈的实现中,以TCP协转载 2013-11-17 23:01:29 · 1131 阅读 · 0 评论