38、倒排索引:搜索引擎是如何做全文检索的

你好,我是微扰君。今天我们来聊一聊倒排索引算法。 倒排索引算法,作为一种经典的索引方式,在工业界中应用非常广泛,比如搜索引擎、推荐系统、广告系统等等。在广告系统中,我们需要根据定向信息去广告库中召回合适的广告;在搜索引擎中,需要根据某个关键字返回若干...

业务开发算法50讲

37、Thrift编码方法:为什么RPC往往不采用JSON作为网络传输格式

你好,我是微扰君。今天我们来聊聊RPC的网络传输编码方式。 如果你有过几年后端服务的开发经验,对RPC,也就是远程过程调用,应该不会陌生。随着互联网应用的发展,我们的服务从早期流行的单体架构模式,逐步演进成了微服务架构的模式,而微服务之间通信,最常见...

业务开发算法50讲

36、分布式事务:如何理解两阶段提交

你好,我是微扰君。 今天我们来聊一个经典问题“分布式事务”,以及它的常见解决方案“两阶段提交”。 关于事务,我们之前在介绍日志型文件系统的时候就已经一起学习过了(戳[这里]复习),主要特点就是需要保证在应用程序中,一系列连续操作要么全部成功执行,要么...

业务开发算法50讲

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

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

业务开发算法50讲

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

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

业务开发算法50讲

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

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

业务开发算法50讲