wow-hash文件说明

2024-04-26 18:28
文章标签 说明 hash wow

本文主要是介绍wow-hash文件说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

wow-hash文件说明

  • 项目地址:https://gitee.com/wow-iot/wow-iot7
  • 本文件的的功能实现hash计算,包括整形与数组.

hash的应用场景

  • 布隆过滤器:用于快速检查元素是否存在于集合中。
  • 哈希索引:用于在数据库表中快速查找数据。
  • 用于安全地存储密码和其他敏感数据。
  • 用于生成伪随机数。
  • 数据完整性:用于验证数据的完整性,例如在文件传输或存储时。
  • 负载均衡:用于将请求或任务分配到不同的服务器。
  • 缓存:用于生成缓存键,以快速查找缓存中的数据。
  • 游戏:用于生成随机地图或关卡。
  • 图像处理:用于比较图像的相似性或检测重复的图像。
  • 网络安全:用于检测恶意软件或网络攻击。

hash整形的实现

static size_t hash_data_func_int_bj(uint32_t value)
{// Bob Jenkins' 32 bit integer hash functionvalue = (value + 0x7ed55d16) + (value << 12); value = (value ^ 0xc761c23c) ^ (value >> 19); value = (value + 0x165667b1) + (value << 5); value = (value + 0xd3a2646c) ^ (value << 9); value = (value + 0xfd7046c5) + (value << 3);value = (value ^ 0xb55a4f09) ^ (value >> 16);return value;
}static size_t hash_data_func_int_bit(uint32_t value)
{value = ~value + (value << 15);value = value ^ (value >> 12); value = value + (value << 2); value = value ^ (value >> 4); value = value * 2057;value = value ^ (value >> 16); return value;
}

hash数组的实现

static size_t hash_data_func_bkdr(uint8_t const* data, size_t size)
{size_t value = 0;CHECK_RET_VAL(data && size, 0);while (size--){value = (value * 131313) + (*data++); }  return value;
}static size_t hash_data_func_rs (const uint8_t *data, size_t size) {/* hash function from Robert Sedgwicks 'Algorithms in C' book */size_t b    = 378551;size_t a    = 63689;size_t retval = 0;CHECK_RET_VAL(data && size, 0);while (size--) {retval = retval * a + (*data++);a *= b;}return retval;
}

这篇关于wow-hash文件说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/938328

相关文章

mybatis-plus QueryWrapper中or,and的使用及说明

《mybatis-plusQueryWrapper中or,and的使用及说明》使用MyBatisPlusQueryWrapper时,因同时添加角色权限固定条件和多字段模糊查询导致数据异常展示,排查发... 目录QueryWrapper中or,and使用列表中还要同时模糊查询多个字段经过排查这就导致只要whe

SpringBoot改造MCP服务器的详细说明(StreamableHTTP 类型)

《SpringBoot改造MCP服务器的详细说明(StreamableHTTP类型)》本文介绍了SpringBoot如何实现MCPStreamableHTTP服务器,并且使用CherryStudio... 目录SpringBoot改造MCP服务器(StreamableHTTP)1 项目说明2 使用说明2.1

JAVA覆盖和重写的区别及说明

《JAVA覆盖和重写的区别及说明》非静态方法的覆盖即重写,具有多态性;静态方法无法被覆盖,但可被重写(仅通过类名调用),二者区别在于绑定时机与引用类型关联性... 目录Java覆盖和重写的区别经常听到两种话认真读完上面两份代码JAVA覆盖和重写的区别经常听到两种话1.覆盖=重写。2.静态方法可andro

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

java中新生代和老生代的关系说明

《java中新生代和老生代的关系说明》:本文主要介绍java中新生代和老生代的关系说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、内存区域划分新生代老年代二、对象生命周期与晋升流程三、新生代与老年代的协作机制1. 跨代引用处理2. 动态年龄判定3. 空间分

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

python中Hash使用场景分析

《python中Hash使用场景分析》Python的hash()函数用于获取对象哈希值,常用于字典和集合,不可变类型可哈希,可变类型不可,常见算法包括除法、乘法、平方取中和随机数哈希,各有优缺点,需根... 目录python中的 Hash除法哈希算法乘法哈希算法平方取中法随机数哈希算法小结在Python中,

Maven中的profiles使用及说明

《Maven中的profiles使用及说明》:本文主要介绍Maven中的profiles使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录主要用途定义 Profiles示例:多环境配置激活 Profiles示例:资源过滤示例:依赖管理总结Maven 中的