前言: mqtt 的主题一个层级的概念. 我们订阅多个主题就需要用到这个技术点
功能是在主题中引入层次。层次又分主题层级分隔符,多层通配符和单层通配符
需要注意的一点是: 这些层级不能用在发布消息的 Publish 接口中
-
主题层级分隔符: /
-
多层通配符: #
-
单层通配符: +
主题层级分隔符
"/" 被用来分割主题树的每一层,并给主题空间提供分等级的结构。当两个通配符在一个主题中出现的时候,主题层次分隔符的使用是很重要的。
// 主题Topic1: 分了三层
/test/child/aaa
// 主题Topic2: 分了四层
/test/child/aaa2/bbb2
多层通配符
多层通配符"#"是一个匹配主题中任意层次数的通配符。我们用案例说明
案例1
订阅主题: /test/child/#
我们将收到这些主题发送来的消息:
/test/child
/test/child/aaa
/test/child/ccc
/test/child/aaa/bbb
/test/child/aaa/bbb/ddd
多层通配符可以理解为大于等于0的层次。
多层通配符只可以确定当前层或者下一层
常见错误 和正确表示案例
# // Success, 会接收到不以 / 开头的所有主题
/# // Success
/test/#/child // Error, #必须是最后一个字符
/test/# // Success
/test/child# //Error 无效的通配符
/test/child/# // Success
单层通配符
单层通配符 "+" 只匹配主题的一层
案例1
订阅主题: /test/child/+
我们将收到这些主题发送来的消息:
注意:接收不到 /test/child 主题发送的消息
/test/child/aaa
/test/child/bbb
/test/child/ccc
常见错误 和正确表示案例
+ //Success
/+ // Success
/test/+/child // Success,
/test/+ // Success
/test/child+ //Error 无效的通配符
/test/child/+ // Success
主题语法和用法
当你建立一个应用,设计主题树的时候应该考虑以下的主题名字的语法和语义:
- 主题至少有一个字符长。
- 主题名字是大小写敏感的。比如说,ACCOUNTS和Accounts是两个不同的主题。
- 主题名字可以包含空格。比如,Accounts payable是一个有效的主题。
- 以/开头会产生一个不同的主题。比如说,/finnace与finance不同。/finance匹配"+/+"和/+,但不匹配+
- 不要在任何主题中包含null(Unicode \x0000)字符。
以下的原则应用于主题树的建造和内容
- 在主题树中,长度被限制于64k内但是在这以内没有限制层级的数目 。
- 可以有任意数目的根节点;也就是说,可以有任意数目的主题树
博客中所涉及到的图片都有版权,请谨慎使用
python super使用 python中的super有什么用
Python中对象方法的定义很怪异,第一个参数一般都命名为self(相当于其它语言的this),用于传递对象本身,而在调用的时候则不必显式传递,系统会自动传递。今天我们介绍的主角是super(), 在类的继承里面super()非常常用, 它解决了子类调用父类方法的一些问题, 父类多次被调用时只执行一次, 优化了执行逻辑,下面我们就来详细## 看一下。举一个例子:class Foo:
def ba
python 获取不到游戏的鼠标坐标 python中pygame的鼠标指令
鼠标绘图文章交代:绘图功能——学习如何用鼠标实时绘图。推荐人群:初级入门、机器学习小白、技术爱好者0 1目标
捕获鼠标事件OpenCV函数:cv2.setMouseCallback()02知道鼠标在哪儿 OpenCV中,我们需要创建一个鼠标的回调函数来获取鼠标当前的位置、当前的事件如左键按下/左键释放或是右键单击等等,然后执行相应的功能。使用cv2.setMouseCallback(