日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ 下一代标准库 tr1中默认的哈希 FNV hash

發布時間:2023/12/20 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ 下一代标准库 tr1中默认的哈希 FNV hash 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

FNV是 Glenn Fowler, Landon Curt Noll, and Phong Vo 三人的縮寫。

FNV-1 哈希算法的核心思想如下:

hash = offset_basis for each octet_of_data to be hashed
hash = hash * FNV_prime
hash = hash xor octet_of_data
return hash

實現源碼


??? uint32_t fnv_hash(char const *str, int len)
??? {
??????? unsigned long hash = 2166136261; //offset_basis
//FNV prime for 32 bit is 16777619
//#define FNV_OP()? hash = (hash*16777619)^*str++
#define FNV_OP()? hash += (hash<<1) + (hash<<4) + (hash<<7) + (hash<<8) + (hash<<24);\
????????? hash ^=*str++;
??????? for (; len >= 8; len -= 8) {
??????????? FNV_OP(); //1
??????????? FNV_OP(); //2
??????????? FNV_OP(); //3
??????????? FNV_OP(); //4
??????????? FNV_OP(); //5
??????????? FNV_OP(); //6
??????????? FNV_OP(); //7
??????????? FNV_OP(); //8
?????? }
?????? switch (len) {
?????????? case 7: FNV_OP(); /* fallthrough... */
?????????? case 6: FNV_OP(); /* fallthrough... */
?????????? case 5: FNV_OP(); /* fallthrough... */
?????????? case 4: FNV_OP(); /* fallthrough... */
?????????? case 3: FNV_OP(); /* fallthrough... */
?????????? case 2: FNV_OP(); /* fallthrough... */
?????????? case 1: FNV_OP(); break;
?????????? case 0: break;
?????? }
?????? return hash;
?? }

?c++ 0x 標準 tr1中的實現 (gcc代碼)

  

// Dummy generic implementation (for sizeof(size_t) != 4, 8).
? template<std::size_t = sizeof(std::size_t)>
??? struct Fnv_hash
??? {
????? static std::size_t
????? hash(const char* first, std::size_t length)
????? {
??????? std::size_t result = 0;
??????? for (; length > 0; --length)
????????? result = (result * 131) + *first++;
??????? return result;
????? }
??? };

? template<>
??? struct Fnv_hash<4>
??? {
????? static std::size_t
????? hash(const char* first, std::size_t length)
????? {
??????? std::size_t result = static_cast<std::size_t>(2166136261UL);
??????? for (; length > 0; --length)
????????? {
??????????? result ^= (std::size_t)*first++;
??????????? result *= 16777619UL;
????????? }
??????? return result;
????? }
??? };

? template<>
??? struct Fnv_hash<8>
??? {
????? static std::size_t
????? hash(const char* first, std::size_t length)
????? {
??????? std::size_t result = static_cast<std::size_t>(14695981039346656037ULL);
??????? for (; length > 0; --length)
????????? {
??????????? result ^= (std::size_t)*first++;
??????????? result *= 1099511628211ULL;
????????? }
??????? return result;
????? }
??? };

FNV哈希 通用性很好,time33只針對英文文本比較合適。

?

FNV哈希應用于很多地方:

calc
Domain Name Servers
mdbm key/value data lookup functions
Database indexing hashes
major web search / indexing engines
high performance EMail servers
Netnews history file Message-ID lookup functions
Anti-spam filters
NFS implementations (e.g., FreeBSD 4.3, IRIX, Linux (NFS v4))
Cohesia MASS project server collision avoidance
spellchecker programmed in Ada 95
flatassembler's open source x86 assembler - user-defined symbol hashtree
PowerBASIC inline assembly routine
text based referenced resources for video games on the PS2, Gamecube and XBOX
non-cryptographic file fingerprints
FRET - a tool to identify file data structures / helps to understand file formats
used to in the process of computing Unique IDs in DASM (DTN Applications for Symbian Mobile-phones)
Used by Microsoft in their hash_map implementation for VC++ 2005
Used in an implementation of libketama for use in items such as memcache.
Used in the realpath cache in PHP 5.x (php-5.2.3/TSRM/tsrm_virtual_cwd.c).
Used to improve the fragment cache at twitter (see slide 31).

轉載于:https://www.cnblogs.com/napoleon_liu/archive/2010/12/26/1917396.html

總結

以上是生活随笔為你收集整理的C++ 下一代标准库 tr1中默认的哈希 FNV hash的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 人妻无码中文久久久久专区 | 亚洲91视频| 国产三级精品三级在线 | 自拍偷拍校园春色 | 国产一级在线免费观看 | 少妇一边呻吟一边说使劲视频 | 久久人爽| 葵司ssni-879在线播放 | 日韩视频精品一区 | 亚洲色偷精品一区二区三区 | 久久久网站 | 香蕉av一区 | 日韩中文字幕在线视频 | 激情四射综合网 | 秋霞影院一区二区 | 成人免费看视频 | 婷婷色在线观看 | 日韩精品在线免费 | 99免费在线观看 | 在线视频观看一区 | 久久αv | 久久久久久久久久久久久久久久久久久久 | 麻豆最新| 91爱爱爱| 国产三级在线免费观看 | 中文字幕在线不卡视频 | av免费看网站| 中文字幕日韩视频 | 国产成人自拍视频在线 | 免费黄av| 亚洲一在线 | 精品一区二区三区免费视频 | 91麻豆精品国产午夜天堂 | 欧美变态口味重另类 | 中文字幕精品一区久久久久 | 在线尤物 | 欧美视频在线观看视频 | 爆乳2把你榨干哦ova在线观看 | 伊人影院中文字幕 | 日本免费三片在线播放 | 精品无码久久久久久久久成人 | 无码日本精品xxxxxxxxx | 麻豆视频黄色 | 香蕉视频网站在线观看 | 五月丁香综合激情六月久久 | 欧美日韩色视频 | 婷婷综合激情网 | 热热热av | 亚洲一区二区色图 | 国产精品电影一区 | 国产又粗又猛又黄视频 | 最新欧美大片 | 一本久道久久综合 | 极品美女无套呻吟啪啪 | 亚洲奶水xxxx哺乳期 | 理论片琪琪午夜电影 | 久久午夜鲁丝片午夜精品 | 中文字幕精品一区二区三区精品 | 欧美日韩不卡合集视频 | 女人张开双腿让男人捅 | 成人毛片基地 | 永久av免费 | 欧洲黄色片 | 欧美黄色免费网站 | 免费在线观看a级片 | 男女无遮挡网站 | 黄网地址 | 日本三级韩国三级三级a级按摩 | 操亚洲女人 | 97久久精品人人澡人人爽 | 美女国产在线 | 亚洲成肉网 | 五月天堂网 | yy4138理论片动漫理论片 | 亚洲永久精品在线观看 | 神马影院午夜伦理片 | 黄色不卡av | 亚洲国产一区二区三区四区 | 久草精品国产 | 风韵少妇性饥渴推油按摩视频 | 国产人妖在线视频 | 麻豆影视网站 | 99久久婷婷国产综合精品电影 | 久久国产福利 | 久久国产精品久久久 | 欧美性视频网站 | 色xxxx| 婷婷视频在线观看 | 短裙公车被强好爽h吃奶视频 | 国产成人精品免费在线观看 | 国产精品久久精品 | 国产成人一区 | 五月天综合激情网 | av手机天堂 | 老司机在线看片 | 久久久久久久久久久久久久久久久久久久 | 熟妇人妻中文字幕无码老熟妇 | 国产一极毛片 | 亚洲在线激情 |