搜索引擎中缓存(cache)用到的哈希(hash)算法

博客探讨了在搜索引擎中如何使用哈希算法对6w数据进行缓存处理。作者修改了原有的算法以适应需求,虽然过程中可能涉及版权问题。在测试中,使用5倍内存创建的最长链表达到180项,作者分享了代码雏形并邀请读者讨论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前一段查看了关于哈希的各种算法,发现流传最广的还算伟大的暴雪(dota爱好者)工程师得到的一种算法,有很多博客中都有对其的介绍,我在此就不多废话了。

虽说是借鉴,也只是一小部分的抄袭。不知道是否冒犯了暴雪的版权。

我修改成了我需要的功能,我的目标是对6w数据进行哈希计算然后暂存到内存中,当做缓存使用。这是搜索引擎中必须要做的一步,当然,代码是公司机密,我只是把我写的代码雏形拿出来,看看有没有值得批评指正的地方。

小弟不才,在这6w的测试数据中,使用5倍的内存,得到最长的一串链表长达180.(不知道大家知道不知道我说的是什么意思)。沟通的机会来了。。。。。

欢迎到之类来沟通交流:

http://lee-sven.com/wordpress/?p=330


还是看看代码:

#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>

//#define DEBUG	
#define NUM 10240	//缓存的最大数据量
typedef struct hash{
	char flag;
	char hz[64];
	char *art;
	int time;
	int n;
	struct hash *next;
}HASH;
HASH *hashtable1=NULL,*hashtable2=NULL,*hashtable3=NULL,*hashtable4=NULL,*hashtable5=NULL;
unsigned long cryptTable[0x500]; 

/******************************************************
*	函数功能:申请哈希表所用的内存;
*	函数参数:void;
*	函数输出:成功:1;失败:-1;
******************************************************/
int getMalloc(){
	hashtable1 = (HASH *)malloc((NUM)*sizeof(HASH));
	hashtable2 = (HASH *)malloc(NUM*sizeof(HASH));
	hashtable3 = (HASH *)malloc(NUM*sizeof(HASH));
	hashtable4 = (HASH *)malloc(NUM*sizeof(HASH));
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值