网上有关Redis分布式锁的文章可谓多如牛毛了,不信的话你可以拿关键词“Redis 分布式锁”随便到哪个搜索引擎上去搜索一下就知道了。这些文章的思路大体相近,给出的实现算法也看似合乎逻辑,但当我们着手去实现它们的时候,却发现如果你越是仔细推敲,疑虑也就越来越多。
凌雨化身为一条美人鱼。五颜六色的鱼儿围过来,在她身边嬉戏。一缕阳光透进水中,将她周围的海水映照得犹如一块晶莹剔透的蓝色翡翠。她和它们一起游进更大的鱼群,飞舞着,旋转着。
去年最受瞩目的科技词汇莫过于“人工智能”了,而前一段时间神秘旗手Master的连胜事件再一次把“人工智能”这个话题推到了普通大众面前。但是,作为一名技术人员,自然不能和普通人一样只是看个热闹,我和你一样,对于这项技术背后的运作原理深感兴趣。
昨天我去交管大队办理年度验车手续,出乎意料地发现,本应冷冷清清的办事大厅里竟然挤满了人。一问才知道,大家都在排队缴纳过去一年积攒下来的违章罚款。我这才猛然惊觉,2016就这么“忽”地一下要过去了。原来,人们这是在以清算债务的方式向过去的2016告别。
之前我在知乎上受邀回答过一个关于RxJava背压(Backpressure)机制的问题,今天我把它整理出来,希望对更多的人能有帮助。
《神经漫游者》——在这部同时获得“雨果奖”、“星云奖”和“菲利普·狄克奖”三大奖项的科幻作品之中,威廉·吉布森塑造了一位冷酷而性感的刀锋女战士——莫利。她出手迅捷,装备精良,几乎无所畏惧。然而,令她真正有所忌惮的,却是周身散发着冷静气息的忍者杀手。
小李毕业后在一家公司做软件工程师,转眼间,一年多的时间已经过去了。
回想刚毕业那会,他是怀着无比忐忑的心情进入了这家公司的技术部门。各种新奇的开发工具,叫不上名字的众多软件框架,庞大的代码库,井然有序的工作流程,都是小李以前在学校里不曾遇到过的,这让他感到了前所未有的压力。于是,在开始的那半年,小李就像一株久旱的禾苗遇到了雨水,拼命地吸收着工作中遇到的每一点知识。他学习新的编程语言,学习新的开发工具,学习调试和解bug的技巧,也学习处理各种棘手的业务逻辑。虽然每天工作很累,但每天都是满满的收获。
本文是《Redis内部数据结构详解》系列的第七篇。在本文中,我们围绕一个Redis的内部数据结构——intset展开讨论。
Redis里面使用intset是为了实现集合(set)这种对外的数据结构。set结构类似于数学上的集合的概念,它包含的元素无序,且不能重复。Redis里的set结构还实现了基础的集合并、交、差的操作。与Redis对外暴露的其它数据结构类似,set的底层实现,随着元素类型是否是整型以及添加的元素的数目多少,而有所变化。概括来讲,当set中添加的元素都是整型且元素数目较少时,set使用intset作为底层数据结构,否则,set使用dict作为底层数据结构。