比特币论文研读:论文原文分析
本文将浅析论文原文,对论文中一笔带过的重要逻辑,或者难以理解的地方进行详述,有助于定性地理解论文描述的模型。
本文将浅析论文原文,对论文中一笔带过的重要逻辑,或者难以理解的地方进行详述,有助于定性地理解论文描述的模型。
本文根据阿里开源的JetCache和大佬同事用kotlin写的MutilCacheManager两个框架,来分析二级缓存应该如何设计。
我们一般的缓存有2种用法:
二级缓存通常是指:为了获取查询耗时较长的数据,以本地缓存+远程统一存储缓存,构建的两个层级的缓存。
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 0.10(以下简称M10)的订阅树实现在moquette-0.10/broker/src/main/java/io/moquette/spi/impl/subscriptions,包括:
查看源码的时候应该从SubscriptionsDirectory开始阅读。
百度IoT的Broker设计我特别想参考的但是技术能力和时间不够去实现……网上只有一篇百度工程师的总结《共享行业的分布式MQTT设计》,这里将围绕这篇文章去讲解。
单机版MQTT Broker有连接数量和并发处理能力的限制,因此分布式必不可少。百度IoT采用的Akka Cluster来做集群管理,每个节点对等,不存在像Mosquitto这种用一台机器“桥接”做分布式产生的单点故障隐患。每个节点监听MemberUp、MemberDown、MemberUnreachable、ClusterMemberState等事件来感知其他节点的上下线,用Akka Actor实现节点间的消息通信。
一致性Hash是分布式架构最重要最基础的东西,这里以分布式图片缓存服务器为例进行讲述。
原始问题:假设我们需要对一堆图片做缓存,缓存的图片放在了2台服务器上,当到来一个请求,应该如何知道请求的图片在哪台上面呢?
暴力遍历就不要去想了,否则缓存就没有意义了。一个自然的想法就是根据图片的名字做一个映射(Hash),将图片名字映射到0,1两个数字上面,例如有这样的映射函数:
$$ f(图片名称) = md5(图片名称) \% 2 $$
局部二值模式(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次。
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特征的来源。