0%

之前用Go实现延时队列,我使用了Go标准库中的container/heap接口来构建一个优先队列。为什么Go的container/heap接口可以实现一个优先队列呢?

这是因为Go的container/heap定义了一套完整的方法,使得任何实现了这些方法的数据结构都能够作为堆来使用。优先队列是堆的一种应用,它允许快速访问最高(或最低)优先级的元素。

在Go语言中,defer定义为关键字, 在开发过程中使用非常高频,本文通过常见案例来学习defer的执行机制。

一、什么是延迟队列

延迟队列是一种特殊的队列,其核心特点是队列中的消息或任务会被延迟一定时间后才能被消费或执行。这种队列广泛应用于需要延迟处理的场景,比如订单超时未支付自动取消、用户注册后一段时间未登录发送提醒等。

一、背景

由于业务中引入了小队、队长、导师、服务经理等角色,如何合理地安排和考核几千名司服和上万名队长的工作,就成为了不小的挑战,任务系统应运而生。

任务系统通过接入各类事件,在不同的任务场景下将任务分配给不同的角色——司服、队长、导师等。一旦任务完成,系统通过消息队列(MQ)机制及时通知下游系统。在某些特定场景下,还会推送质检任务,并根据结果发放相应的奖励,以此激励团队成员,提高整体工作效率和质量。

在学习观察者模式的时候,看到观察者模式的实现方式之一有弱引用,所以专门学习了一下这个知识点。

观察者模式是一种行为型设计模式,它定义了对象间的一种一对多的依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象都会得到通知并自动更新。这种模式也被称为发布-订阅模式、模型-视图模式、源-监听器模式。

工厂模式(Factory Pattern)是一种创建型设计模式,用于处理对象的创建。在工厂模式中,创建对象的任务被推迟到子类中,这些子类被称为工厂方法。这种模式的主要目的是将对象的创建和使用分离,使得在不知道具体类的情况下也能创建对象。