Golang的heap和源码分析
之前用Go实现延时队列,我使用了Go标准库中的container/heap
接口来构建一个优先队列。为什么Go的container/heap
接口可以实现一个优先队列呢?
这是因为Go的container/heap
定义了一套完整的方法,使得任何实现了这些方法的数据结构都能够作为堆来使用。优先队列是堆的一种应用,它允许快速访问最高(或最低)优先级的元素。
之前用Go实现延时队列,我使用了Go标准库中的container/heap
接口来构建一个优先队列。为什么Go的container/heap
接口可以实现一个优先队列呢?
这是因为Go的container/heap
定义了一套完整的方法,使得任何实现了这些方法的数据结构都能够作为堆来使用。优先队列是堆的一种应用,它允许快速访问最高(或最低)优先级的元素。
在Go语言中,defer
定义为关键字, 在开发过程中使用非常高频,本文通过常见案例来学习defer
的执行机制。
在学习观察者模式的时候,看到观察者模式的实现方式之一有弱引用,所以专门学习了一下这个知识点。
观察者模式是一种行为型设计模式,它定义了对象间的一种一对多的依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象都会得到通知并自动更新。这种模式也被称为发布-订阅模式、模型-视图模式、源-监听器模式。
我们的系统连接着车辆和用户两端,车辆的个性化配置数据上报到云端,又或者用户登录后的账户信息下发给车端,车辆与云端之间的数据传输都是通过MQTT网关来实现的。
工厂模式(Factory Pattern)是一种创建型设计模式,用于处理对象的创建。在工厂模式中,创建对象的任务被推迟到子类中,这些子类被称为工厂方法。这种模式的主要目的是将对象的创建和使用分离,使得在不知道具体类的情况下也能创建对象。
RabbitMQ
是通过插件的形式支持MQTT
协议的,使用时,需要在RabbitMQ集群上启用rabbitmq_mqtt
插件。