工程师采用服务器集群实现数据缓存:
线性缓存区,key%N选择存放服务器,
缺点,增加或删除节点代价会很高,像数组一样,所有数据需要迁移。
环形缓存区,所有key取值首尾相接,顺时针计算,key存放距离最近的服务器,当插入新节点时,需要迁移的数据很少。
缺点,由于节点摆放位置不同,有可能造成节点负载不均衡。
一致性哈希算法,在环形缓存区上,设置大量虚拟节点,通过提高密度,来减少单一节点之间的差距,然后不同机器平分所有的虚拟节点。
matrix = 1 0 1 1 \n 1 0 1 1 \n 0 0 0 0 \n 1 0 1 0 \n
问有多少个联通的1块?
非并行算法,碰到一个1后,将所有与其联通的1全部变成2,然后继续遍历。
并行算法,将整个矩阵切割成数个小矩阵,每个矩阵分别计算联通块,记为sum,并对边界上的1所在的联通块标记唯一id,当小矩阵计算后,处理边界,当左右两个联通块对上时,将两个id合并(这里采用并查集来加速),并sum–。