• Java算法-hash算法


    Hash ,一般翻译做“ 散列” ,也有直接音译为“ 哈希” 的,就是把任意长度的输入(又叫做预映射, pre-image ),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不 同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

    HASH 主要用于信息安全领域中加密算法,它把一些不同长度的信息转化成杂乱的128 位的编码, 这些编码值叫做HASH 值. 也可以说,hash 就是找到一种数据内容和数据存放地址之间的映射关系

    例如字符串 hello 的哈希算法

    char* value = "hello"; int key = (((((((27* (int)'h'+27)* (int)'e') + 27)  * (int)'l') + 27) * (int)'l' +27) * 27 ) + (int)'o' ; 。

      数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。那么我们能不能综合两者的特性,做出一种寻址容易,插入删除也容易 的数据结构?答案是肯定的,这就是我们要提起的哈希表,哈希表有多种不同的实现方法,我接下来解释的是最常用的一种方法—— 拉链法,我们可以理解为“ 链表 的数组”

  • 相关阅读:
    lua中获取nginx变量
    nginx与Lua执行顺序
    lua 发送消息到 Rabbitmq
    SpringCloudGetaway 允许跨域设置
    CentOS7 查看当前打开文件数
    lua 通过 stomp协议发送消息到 rabbitmq
    获取公网IPV4/IPV6的API
    SpringBoot 拦截器 统一日志 记录用户请求返回日志
    断点续传(上传)Java版
    Sprintboot 项目启动、停止脚本
  • 原文地址:https://www.cnblogs.com/hwaggLee/p/4437696.html
Copyright © 2020-2023  润新知