30、布隆过滤器:如何解决Redis缓存穿透问题

你好,我是微扰君。 上一讲我们学习了如何基于bitmap,使用少量内存,对大量密集数据高效地去重和排序,本质就是通过一个长长的二进制01序列,来维护每个元素是否出现过这样的二值状态,这个数据结构非常重要,日常工作中有很多应用,比如我们今天要学习的布隆...

业务开发算法50讲

31、跳表:Redis是如何存储有序集合的

你好,我是微扰君。 上一讲我们一起学习了布隆过滤器,它可以帮助我们用更低的存储成本、更高效地判断某个元素是否在一个集合中出现,当然代价是一定的误判率。总的来说,布隆过滤器特别适合用来解决Redis中缓存穿透的问题。 今天,我们同样来讨论一个在Redi...

业务开发算法50讲

32、时间轮:Kafka是如何实现定时任务的

你好,我是微扰君。 今天我们来聊一聊日常开发中非常常见的技术需求:延时队列。 之前在学Kafka二分搜索的时候,我们已经学过了消息队列,它是一个用于传递消息的组件,大部分场景下,我们都希望消息尽快送达,并且消息之间要严格遵循先进先出的约束。但在有一些...

业务开发算法50讲

33、限流算法:如何防止系统过载

你好,我是微扰君。 上一讲我们学习了业务场景中频繁会使用到的延时队列,能帮助处理很多业务上的定时任务问题,因为这个组件的功能和具体业务往往没有关系,我们通常会利用各种中间件来实现延时队列的能力。 今天我们来探讨另外一个算法的原理和实现,它也和业务本身...

业务开发算法50讲

34、前缀树:Web框架中如何实现路由匹配

你好,我是微扰君。 不知不觉,已经到工程实战篇的最后一讲了,在这个章节中,我们一起学习了很多工程中常用的算法,如果你从事后端开发,应该或多或少有些接触,比如在Redis、Kafka、ZooKeeper等常用中间件里就经常出现,理解它们的核心思想,能给...

业务开发算法50讲

35、洗牌算法:随机的哲学,如何用程序来洗一副牌

你好,我是微扰君。 专栏正文已经结束了,在过去一段时间里我们一起学的知识,不知道你掌握得怎么样了呢?如果还意犹未尽的话,从今天开始我们会陆陆续续聊一些其他话题,作为特别番外,希望你可以和我一起继续享受其中的思维乐趣。 今天就先从一个颇有趣味的“洗牌算...

业务开发算法50讲
14567