有效的沟通,如忍者的最后一击!


《神经漫游者》——在这部同时获得“雨果奖”、“星云奖”和“菲利普·狄克奖”三大奖项的科幻作品之中,威廉·吉布森塑造了一位冷酷而性感的刀锋女战士——莫利。她出手迅捷,装备精良,几乎无所畏惧。然而,令她真正有所忌惮的,却是周身散发着冷静气息的忍者杀手。

阅读全文 »


技术的成长曲线


小李毕业后在一家公司做软件工程师,转眼间,一年多的时间已经过去了。

回想刚毕业那会,他是怀着无比忐忑的心情进入了这家公司的技术部门。各种新奇的开发工具,叫不上名字的众多软件框架,庞大的代码库,井然有序的工作流程,都是小李以前在学校里不曾遇到过的,这让他感到了前所未有的压力。于是,在开始的那半年,小李就像一株久旱的禾苗遇到了雨水,拼命地吸收着工作中遇到的每一点知识。他学习新的编程语言,学习新的开发工具,学习调试和解bug的技巧,也学习处理各种棘手的业务逻辑。虽然每天工作很累,但每天都是满满的收获。

阅读全文 »


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基础上构建起来的。

阅读全文 »