Moquette源码分析(二)v0.12订阅树

Moquette源码分析(二)v0.12订阅树

Moquette 0.12(以下简称M12)的订阅树实现在moquette-0.12/broker/src/main/java/io/moquette/broker/subscriptions,包括:

订阅树版本 M10 M12
订阅树增删改查 SubscriptionDirectory CTrieSubscriptionDirectory
订阅树 - CTrie
片段 Token Token
主题 Topic Topic
订阅信息 Subscription Subscription
普通节点 TreeNode CNode
封装节点 - INode
墓碑节点 - TNode

查看源码的时候应该从CTrie开始阅读。

阅读更多
Moquette源码分析(一)v0.10订阅树

Moquette源码分析(一)v0.10订阅树

一、M10 简介

Moquette 0.10(以下简称M10)的订阅树实现在moquette-0.10/broker/src/main/java/io/moquette/spi/impl/subscriptions,包括:

  • SubscriptionsDirectory:订阅树的增删改查
  • Token:片段,由topicFilter按“/”分割而成的最小字符串单位
  • Topic:主题/主题过滤器,包含一系列方法,比如比较主题和主题过滤器是否匹配
  • Subscription:订阅信息,{clientId, topicFilter,qos,active}
  • TreeNode:树节点

查看源码的时候应该从SubscriptionsDirectory开始阅读。

阅读更多
百度IoT:MQTT_Broker架构设计

百度IoT:MQTT_Broker架构设计

百度IoT的Broker设计我特别想参考的但是技术能力和时间不够去实现……网上只有一篇百度工程师的总结《共享行业的分布式MQTT设计》,这里将围绕这篇文章去讲解。

Broker集群架构

单机版MQTT Broker有连接数量和并发处理能力的限制,因此分布式必不可少。百度IoT采用的Akka Cluster来做集群管理,每个节点对等,不存在像Mosquitto这种用一台机器“桥接”做分布式产生的单点故障隐患。每个节点监听MemberUp、MemberDown、MemberUnreachable、ClusterMemberState等事件来感知其他节点的上下线,用Akka Actor实现节点间的消息通信。

baidu_broker_cluster.jpg

阅读更多
一致性Hash

一致性Hash

一致性Hash是分布式架构最重要最基础的东西,这里以分布式图片缓存服务器为例进行讲述。

原始问题:假设我们需要对一堆图片做缓存,缓存的图片放在了2台服务器上,当到来一个请求,应该如何知道请求的图片在哪台上面呢?

暴力遍历就不要去想了,否则缓存就没有意义了。一个自然的想法就是根据图片的名字做一个映射(Hash),将图片名字映射到0,1两个数字上面,例如有这样的映射函数:

$$ f(图片名称) = md5(图片名称) \% 2 $$

阅读更多
毕业设计整理(六):LBP纹理特征

毕业设计整理(六):LBP纹理特征

局部二值模式(Local Binary Pattern,LBP)是一种用来描述图像局部纹理特征的算法,反映的是图像像素点周围纹理变化情况,具有旋转不变性、灰度不变性(光照变化无影响)、计算复杂度低等优点,1994年首次由Timo Ojala, Matti Pietikainen等人提出,用于纹理特征提取。2002年论文《Multiresolution gray-scale and rotation invariant texture classification with local binary patterns》进行了归纳总结,2018年该论文引用量154次,累计9832次。

LBP特征描述

原始LBP特征

origin_lbp.png

阅读更多
毕业论文整理(五):Haar像素值特征

毕业论文整理(五):Haar像素值特征

Haar特征是我用得最多的一个特征了。Haar特征的鲁棒性并不好,它常常用于颜色或者轮廓较为明显的、波动不大的图像,比如人脸识别中识别眼睛、鼻子的位置。尽管如此,用Haar特征处理一般图像分割已经足够使用了。

Haar特征设计思想

Haar特征(Haar-like Feature)的名称来源于Haar小波(Haar Wavelet)变换,最早由Papageorgiou在论文《A General Framework for Object Detection》中提出。那个时期,用RGB图像像素值来处理特征会产生很大的计算量,Papageorgiou等人就提出了用Haar小波变换来处理特征的想法。在2001年,Viola和Jones在论文《Rapid Object Detection using a Boosted Cascade of Simple Features》中基于这个想法进一步提出Haar特征,产生了很大的影响。他们注意到人的面部是可以用一些矩形特征进行描述的,比如对于浅色皮肤的人来说,鼻梁两侧的颜色比鼻梁的颜色要深一些,眼睛、嘴巴等地方的颜色都比周围面部皮肤的颜色要深。因此,可以用矩形像素变化来表现颜色深浅,这就是Haar特征的来源。

阅读更多
毕业论文整理(四):彩色图像分割的颜色空间

毕业论文整理(四):彩色图像分割的颜色空间

颜色空间概述

入门彩色图像分割首先当然要了解一下颜色空间。

RGB颜色空间

RGB颜色空间的设计初衷是,用红色(Red)、蓝色(Blue)和绿色(Green)作为基础颜色,通过三基色的强弱变化组合成整个颜色空间中的各种颜色。

rgb.png
如上图所示,分别以红色、绿色、蓝色分量为R轴、G轴、B轴建立坐标系,原点(0, 0, 0)代表的颜色为黑色,(1, 0, 0)、(0, 1, 0)、(0, 0, 1)分别表示红色、蓝色、绿色,构成的立方体中体对角线端点(1, 1, 1)代表的颜色为白色,而体对角线上的颜色则是由黑色过渡到白色的灰度。至此,任意一种常见颜色都可以由(R, G, B)的坐标数值表示出来。

阅读更多
毕业论文整理(三):AdaBoost和概率提升树
毕业论文整理(二):用依赖树近似离散概率分布
毕业论文整理(一):CT图像和邻域近似随机森林

毕业论文整理(一):CT图像和邻域近似随机森林

课题要求

使用树模型分割彩色图像中的目标。

主要改进了邻域近似随机森林(Neighbourhood Approximation using Randomized Forests,NAFs),还使用了依赖树(Approximating Discrete Probability Distributions with Dependence Trees,CLT)。

邻域近似随机森林NAFs

NAFs的原论文是用于医学图像分割的,它是一个框架不是一个模型,主要作用是对任意距离定义的近似最近邻检索(approximate nearest neighbour retrieval for arbitrary distances),解决的问题类似于:给定一组带Ground Truth的灰度人体侧面CT图片去训练NAFs,然后对于一幅新的CT图片(out of samples),给出CT图像中各个内脏边缘的3D分割结果。

阅读更多