Programming Pearls

很喜欢《Programming Pearls》这本书,因此用了这个名字。介绍一些好看好玩的编程paper、slides、video等。

C++ Seasoing:3 Goals for Better Code

🔗: Cpp-Seasoning
📝: 作者在演讲里提出了3 Goals for Better Code,分别关于No Raw Loop、No Raw Synchronization Primitives、No Raw Pointers,在场的听众以及视频的评论里,很多希望作者出一本书,因为作者用真实代码(Chromium)展示了如何把一段代码变的更好,虽然没有完全理解也不完全认同作者的观点,但这篇演讲的确能够带给人很多思考和共鸣,有些你习以为常的代码习惯,例如智能指针,可能也需要不断思考是否是正确的,比如提出这样的问题:Why-Should-I-Not-Use-Smart-Pointers(https://stackoverflow.com/questions/18813679/why-should-i-not-use-smart-pointers), 保持自我思考的能力。


关于 BloomFilter 的几篇论文

🔗: bloom filter
📝: BloomFilter无论是学术还是工程领域,都已经得到了广泛的证明和实践,例如在Chromium, bigtable等,也不断进化出了很多新的类型:Counting Bloom Filter/Partial Bloom Filter/Compressed Bloom Filter…


Skip Lists: A Probabilistic Alternative to Balanced Trees

🔗: skiplist
📝: skiplist 是一种概率数据结构,大概率下拥有和红黑树同样的查找和修改性能,但是实现简单很多,在很多场景都有使用,例如leveldb redis, 论文和c实现可以参考这里 ftp://ftp.cs.umd.edu/pub/skipLists。


In Search of an Understandable Consensus Algorithm

🔗: raft
📝: 鼎鼎大名的raft论文,文章按照Leader Election, Log Replication, Safety介绍了一致性算法,跟paxos做了对比,同时介绍了Cluster membership changes以及Log compaction.


MapReduce: Simplified Data Processing on Large Clusters

🔗: mapreduce
📝: Jeffrey Dean and Sanjay Ghemawat的mr论文,非常详细的介绍了mr模型,包括模型是如何被提出来的,为什么定义了mapper/reducer两个用户接口,以及整体的数据处理流程,数据的准备、任务的分配,中间结果的存储以及容错。个人觉得最优秀的是从google众多的大数据计算里抽象出了mr这个模型。