2015-02-07 walter lee
Bloom Filter概念和原理 焦萌 2007年1月27日 Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,Bloom Filter不适合那些“零错误”的应用场合。而在能容忍低错误率的应用场合下,Bloom Filter通过极少的错误换取了存储空间的极大节省。 继续阅读 »
2017-02-01 张炎泼
mdtoc start 内容简介 分布式系统的可靠性问题: 冗余和多副本 EC的基本原理 栗子🌰1: 实现k+1的冗余策略, 大概需要小学3年级的数学知识 栗子🌰2: 实现k+m的冗余策略, 大概需要初中2年级的数学知识 增加1个校验块, 变成k+2 实现k+m 的冗余 EC编码矩阵的几何解释 k=2, 为2个数据块生成冗余校验块 k=3, 4, 5...时的数据块的冗余 通过高次曲线生成冗余数据 从曲线方程得到的系数矩阵 EC解码过程: 求解n元一次方程组 [Vandermonde] 矩阵保证方程组有解 新世界: 伽罗华域 [Galois-Field] GF(7) EC在计算机里的实现: 基于 伽罗华域 [Galois-Fiel 继续阅读 »
2017-02-11 Kevin
Mysql索引 - B树/B+树 介绍 B树/B+树介绍 B树 B+树 索引介绍 MylSAM 索引 InnoDB 索引 继续阅读 »
2015-02-07 walter lee
简介 Dremel 是Google 的“交互式”数据分析系统。可以组建成规模上千的集群,处理PB级别的数据。MapReduce处理一个数据,需要分钟级的时间。作为MapReduce的发起人,Google开发了Dremel将处理时间缩短到秒级,作为MapReduce的有力补充。Dremel作为Google BigQuery的report引擎,获得了很大的成功。最近Apache计划推出Dremel的开源实现Drill,将Dremel的技术又推到了浪尖上。 继续阅读 »
2016-03-18 litaotao
写在前面 本系列是综合了自己在学习spark过程中的理解记录 + 对参考文章中的一些理解 + 个人实践spark过程中的一些心得而来。写这样一个系列仅仅是为了梳理个人学习spark的笔记记录,所以一切以能够理解为主,没有必要的细节就不会记录了,而且文中有时候会出现英文原版文档,只要不影响理解,都不翻译了。若想深入了解,最好阅读参考文章和官方文档。 继续阅读 »
2017-07-09 Eric Wang
作者简介:芭芭拉•明托,麦肯锡公司第一位女性咨询顾问。明托是哈佛商学院录取的第二批女学员之一,毕业时被国际知名管理咨询公司——麦肯锡聘请为该公司有史以来的第一位女性咨询顾问。她在写作方面的优势很快得到麦肯锡高层的赏识,负责提高麦肯锡公司员工的写作能力,致力于探索条理清晰的文章所必需的思维结构。本书在1973年首次出版,当即引起轰动,畅销欧美市场30年不衰,书中传授的方式与技巧,被公认为即便对于最有经验的管理者来说也是十分关键的。 表达的逻辑 为什么要用金字塔结构 文章中的思想必须符合以下规则: - 纵向:文章中任一层次上的思想必须是其下一层次思想的概括 - 横向:每组中的思想必须属于同一逻辑范畴 - 横向:每组中的思想必须按逻 继续阅读 »
2016-11-08 Alex Sun
本文基于Koa v2.0.0。 1. Koa vs Express Koa是继Express之后,Node的又一主流Web开发框架。相比于Express,Koa只保留了核心的中间件处理逻辑,去掉了路由,模板,以及其他一些功能。详细的比较可以参考Koa vs Express。 另一方面,在中间件的处理过程中,Koa和Express也有着一定区别,看下面例子: ```js // http style http.createServer((req, res) => { // ... }) // express style app.use((req, res, next) => { // ... }) // koa st 继续阅读 »
2017-01-17 Piasy
RESTful API 调用很多人都在用 Retrofit,说到 Retrofit 就不得不提动态代理,虽然这不是它唯一的亮点,而且也不是动态代理的典型使用场景,但大家就是爱问:说说动态代理是怎么回事吧?Retrofit 的解析请见 拆轮子系列:拆 Retrofit。 继续阅读 »
2016-07-28 Li Shuai
greenlet是Python众多协程实现技术中的一种,eventlet是基于greenlet实现的。而eventlet和libev又是gevent的核心。greenlet的上下文切换清晰易懂,可以结合IO事件循环构建出一些高效的事件处理逻辑。不同于yield类型的上下文切换,greenlet的上下文切换从表现形式上看更纯粹,可以直接switch到另一个greenlet,不用管目标greenlet是否已经在运行,不同greenlet之间处于完全对等的状态,可以相互switch。基于yield实现的协程往往只能切换回自己的直接或间接调用者,要想在嵌套的调用中切换出去是比较麻烦的。本质上是因为yield只能保留栈顶的帧,Python3对 继续阅读 »
2016-11-23 Eric Wang
 环境 Lucene 6.0.0 Java "1.8.0_111" OS Windows 7 Ultimate  线程安全 在Lucene中,打开一个IndexWrite之后,就会自动在索引目录中生成write.lock文件,这个文件中并不会有内容,不管是在索引打开期间还是在索引关闭之后,其大小都为0KB,并且在IndexWriter关闭之后,并不会删除该文件。如果同时打开多个IndexWriter的话,后打开的IndexWriter就会抛出LockObtainFailedException异常。这是个很重要的保护机制,因为若针对同一索引打开两个writer的话,会导致索引损坏。所以Lucene中的锁主要针对并发写的情况,在写 继续阅读 »