Gitlib Gitlib
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)

Ravior

以梦为马,莫负韶华
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)
  • 操作系统

  • 计算机网络

  • 数据结构和算法

  • MySQL

  • Redis

  • Nginx

  • MongoDB

  • 其他

    • 阿里开源ETL工具:dataX上手指南
    • 常见的 POST 提交数据方式
    • 大型网站架构设计总结
    • SSL证书分类与选择指南
    • Times33哈希算法
    • Unicode,ASCII,UTF-8的区别
    • Git使用总结
    • GitFlow在团队协作中的实践
    • 服务器进程管理利器-Supervisor
  • 计算机基础
  • 其他
Ravior
2016-10-28

Times33哈希算法

一个好的散列函数通常倾向于“为不相等的对象产生不相等的散列码”。理想情况下,散列函数应该把集合中不相等的实例均匀地分布到所有可能的散列值上。要想完全达到这种理想的情形是非常困难的。幸运的是,相对接近这种理想情形则并不太困难。

由Daniel J. Bernstein教授多年前在comp.lang.c发表的Times 33算法。 它是有史以来发布的最有效的哈希函数之一。

核心逻辑是这段代码:

hash(i) = hash(i-1) * 33 + str[i]

PHP实现代码如下:

function times33($str) {
    $hash = 0;
    $s    = md5($str);
    $len  = 32;
    for ($i = 0; $i < $len; $i++) {
        $hash = ($hash * 33 + ord($s[$i])) & 0x7FFFFFFF;
    }
    return $hash;
}
1
2
3
4
5
6
7
8
9
#算法#数据结构
上次更新: 2022/12/01, 11:09:34
SSL证书分类与选择指南
Unicode,ASCII,UTF-8的区别

← SSL证书分类与选择指南 Unicode,ASCII,UTF-8的区别→

最近更新
01
常用游戏反外挂技术总结
11-27
02
Golang开发实践万字总结
11-11
03
Redis万字总结
10-30
更多文章>
Theme by Vdoing | Copyright © 2011-2022 Ravior | 粤ICP备17060229号-3 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式