11月6号软考的大幕终于落下,通过这次考试发现自己离软考的大纲要求还差不少,在案例部分,因为没搞过嵌入式,所以嵌入式的题目直接忽略,最后一道题牵扯到边缘计算,直接把我搞蒙,所以没得选,做了关于数据库和缓存的题目,期间有两道题记忆特别深刻,在这总结一下。
哈希算法又叫散列算法,是将任意长度的二进制映射为较短的固定长度的二进制,这个小的二进制称为哈希值。简单来说就是把一段信息转换为固定长度的字符串。MD5和SHA-1是应用最广泛的哈希算法。
主要特点如下:
是一种特殊的哈希算法,将hash空间输出为一个环形,环形区域用0-2^32-1表示,沿顺时针由小到大。然后把缓存节点和我们的缓存对象数据hash运算以后分别映射到圆环上。
运算方式
哈希算法是对节点的数量进行取模运算
一致哈希算法是对 2^32 进行取模运算,是一个固定的值
应用场景
哈希算法常用于信息处理、信息安全方面
一致性哈希算法常用于分布式场景、大数据领域
容错性
哈希算法数据迁移数据量大且成本高
一致性哈希算法数据迁移量小(节点附近部分数据)且成本低
节点分布均匀性
哈希算法分布均匀
一致性哈希算法分布不均匀,采用虚拟节点解决这个问题
如果想要判断一个元素是不是在一个集合里,一般是将所有元素保存起来,然后通过比较确定。链表,树等等数据结构都是这种思路。但是随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢。但是散列表(又叫哈希表,Hash table)可以通过一个Hash函数将一个元素映射成一个位阵列(Bit array)中的一个点。我们只要看看这个点是不是1就可以知道集合中有没有它了。这就是布隆过滤器的基本思想。
解决去重问题,比如某APP的推荐内容,推荐同一主题且不同的内容咨询给你。
优点:节省空间,计算速度快
缺点:误判