摘要: shingling算法用于计算两个文档的相似度,例如,用于网页去重。维基百科对w-shingling的定义如下: In natural language processing a w-shingling is a set of unique "shingles"—contiguous subsequ 阅读全文
posted @ 2017-02-17 18:43 bonelee 阅读(5387) 评论(0) 推荐(0) 编辑
摘要: 转自:https://libhappy.com/2016/03/algs-1.3/ 假设在互联网中有两台计算机需要互相通信,那么该怎么确定它们之间是否已经连接起来还是需要架设新的线路连接这两台计算机。这就是动态连通性问题。 动态连通性问题在日常生活中十分常见,比如上文所说的通信网络中的连通性问题,比 阅读全文
posted @ 2017-02-17 15:42 bonelee 阅读(588) 评论(0) 推荐(0) 编辑
摘要: 基本思想: cuckoo hash是一种解决hash冲突的方法,其目的是使用简单的hash 函数来提高hash table的利用率,同时保证O(1)的查询时间 基本思想是使用2个hash函数来处理碰撞,从而每个key都对应到2个位置。 插入操作如下: 1. 对key值hash,生成两个hash ke 阅读全文
posted @ 2017-02-17 14:32 bonelee 阅读(9601) 评论(0) 推荐(0) 编辑
摘要: Merkle 树 图 1.5.6.1 - Merkle 树示例 默克尔树(又叫哈希树)是一种二叉树,由一个根节点、一组中间节点和一组叶节点组成。最下面的叶节点包含存储数据或其哈希值,每个中间节点是它的两个孩子节点内容的哈希值,根节点也是由它的两个子节点内容的哈希值组成。 进一步的,默克尔树可以推广到 阅读全文
posted @ 2017-02-17 12:12 bonelee 阅读(2501) 评论(0) 推荐(0) 编辑
摘要: Skip List的提出已有二十多年[Pugh, W. (1990)],却依旧应用广泛(Redis、LevelDB等)。作为平衡树(AVL、红黑树、伸展树、树堆)的替代方案,虽然它性能不如平衡树稳定,但是在实现难度上却很有优势。它的查询、插入、删除等主要操作时间复杂度也都是Θ(lgn),空间复杂度是 阅读全文
posted @ 2017-02-17 11:41 bonelee 阅读(1095) 评论(0) 推荐(0) 编辑
摘要: The Sorted String Table (SSTable) is one of the most popular outputs for storing, processing, and exchanging datasets. An SSTable is a simple abstract 阅读全文
posted @ 2017-02-17 10:42 bonelee 阅读(530) 评论(0) 推荐(0) 编辑
摘要: 最近发现很多数据库都使用了 LSM Tree 的存储模型,包括 LevelDB,HBase,Google BigTable,Cassandra,InfluxDB 等。之前还没有留意这么设计的原因,最近调研时间序列数据库的时候才发现这样设计的优势所在,所以重新又复习了一遍 LSM Tree 的原理。 阅读全文
posted @ 2017-02-17 10:21 bonelee 阅读(1102) 评论(0) 推荐(0) 编辑
摘要: 转自:http://www.cnblogs.com/mindwind/p/5231986.html Raft 协议的易理解性描述 虽然 Raft 的论文比 Paxos 简单版论文还容易读了,但论文依然发散的比较多,相对冗长。读完后掩卷沉思觉得还是整理一下才会更牢靠,变成真正属于自己的。这里我就借助前 阅读全文
posted @ 2017-02-17 09:14 bonelee 阅读(2702) 评论(1) 推荐(0) 编辑
摘要: 一致性问题 一致性算法是用来解决一致性问题的,那么什么是一致性问题呢? 在分布式系统中,一致性问题(consensus problem)是指对于一组服务器,给定一组操作,我们需要一个协议使得最后它们的结果达成一致. 更详细的解释就是,当其中某个服务器收到客户端的一组指令时,它必须与其它服务器交流以保 阅读全文
posted @ 2017-02-17 08:53 bonelee 阅读(1419) 评论(0) 推荐(0) 编辑
摘要: 过去, Paxos一直是分布式协议的标准,但是Paxos难于理解,更难以实现,Google的分布式锁系统Chubby作为Paxos实现曾经遭遇到很多坑。 来自Stanford的新的分布式协议研究称为Raft,它是一个为真实世界应用建立的协议,主要注重协议的落地性和可理解性。 在了解Raft之前,我们 阅读全文
posted @ 2017-02-17 08:46 bonelee 阅读(794) 评论(0) 推荐(0) 编辑