Redis内部数据结构详解(7)——intset


本文是《Redis内部数据结构详解》系列的第七篇。在本文中,我们围绕一个Redis的内部数据结构——intset展开讨论。

Redis里面使用intset是为了实现集合(set)这种对外的数据结构。set结构类似于数学上的集合的概念,它包含的元素无序,且不能重复。Redis里的set结构还实现了基础的集合并、交、差的操作。与Redis对外暴露的其它数据结构类似,set的底层实现,随着元素类型是否是整型以及添加的元素的数目多少,而有所变化。概括来讲,当set中添加的元素都是整型且元素数目较少时,set使用intset作为底层数据结构,否则,set使用dict作为底层数据结构。

阅读全文 »


光棍节发生的故事:生日谜题


今天周末,给大家讲个小故事。

微爱公司有一项传统:每个月要选择一天,给当月所有过生日的同学一起庆祝生日。一般来说,当月有几个过生日的同学,公司行政就准备几个蛋糕。

今年11月份的生日庆祝,就选择在了光棍节(11月11号)下午。结果大家发现,这个月竟然只有一位同学过生日。这大概是一个小概率事件,但概率到底是多少呢?于是,Vito(CEO)突发奇想,给大家出了一道概率题,答对的同学呢,有4位数以上的奖金哦。

阅读全文 »


互联网风雨十年,我所经历的技术变迁


美国当地时间2016年10月4日,谷歌在一个新品发布会上首次提出了AI-First(人工智能优先)战略[1]。在过去的十年,谷歌一直秉承的是Mobile-First的发展思路,而未来的十年,则会迎来一场新的革命。这将是比移动互联网规模更为宏大的一场技术革命,如今,我们正站在历史的分界点上。

阅读全文 »


小白的数据进阶之路(上)——从Shell脚本到MapReduce


那一年,小白刚从学校毕业,学的是计算机专业。最开始他也不清楚自己想要一份怎样的工作,只知道自己先找个互联网公司干干技术再说。

有一天,小白来到一家刚成立不久的小创业公司参见面试。公司虽小,但团队却是华丽丽的。两位创始人都是MIT的MBA,Co-CEO。他们号称,公司的运营、财务、市场以及销售人员,都是从大公司高薪挖过来的。此外,他们还告诉小白,公司另有一位政府背景深厚但不愿透露姓名的神秘股东加盟。

阅读全文 »


【科幻】象牙少女


粉丝们又在尖叫!

韩星坐在看台上,冷眼扫视着周围疯狂的人们。

柳冰岚,我当然也是你的粉丝,但绝不是普通的一个。我对你的了解,远胜过现场几万人的总和。

阅读全文 »


Redis内部数据结构详解(6)——skiplist


本文是《Redis内部数据结构详解》系列的第六篇。在本文中,我们围绕一个Redis的内部数据结构——skiplist展开讨论。

Redis里面使用skiplist是为了实现sorted set这种对外的数据结构。sorted set提供的操作非常丰富,可以满足非常多的应用场景。这也意味着,sorted set相对来说实现比较复杂。同时,skiplist这种数据结构对于很多人来说都比较陌生,因为大部分学校里的算法课都没有对这种数据结构进行过详细的介绍。因此,为了介绍得足够清楚,本文会比这个系列的其它几篇花费更多的篇幅。

我们将大体分成三个部分进行介绍:

  1. 介绍经典的skiplist数据结构,并进行简单的算法分析。这一部分的介绍,与Redis没有直接关系。我会尝试尽量使用通俗易懂的语言进行描述。
  2. 讨论Redis里的skiplist的具体实现。为了支持sorted set本身的一些要求,在经典的skiplist基础上,Redis里的相应实现做了若干改动。
  3. 讨论sorted set是如何在skiplist, dict和ziplist基础上构建起来的。

阅读全文 »


你需要了解深度学习和神经网络这项技术吗?


有一次,我和Vito(我的合伙人)聊起了当下热门的几种技术趋势。当谈及它们在未来可能的发展前景的时候,Vito说了下面的一段话:

人工智能是个信息革命到蒸汽机规模之间的机会,相比之下虚拟现实应该是移动互联网级别的,而用户个性化服务应该是伴生规模的。

阅读全文 »


论人生之转折


上周末去参加表妹的婚宴,又一次见证了一对新人携手步入婚姻的殿堂,开启了人生的新篇章。毫无疑问,结婚是人生的一大转折,意味着两个人彻底告别单身贵族的生活,从此名正言顺地出双入对了。

人生之转折,有时像潮水一样来势汹涌,而有时又像春夜的细雨一样悄无声息。

阅读全文 »