`
qzxfl008
  • 浏览: 78803 次
  • 性别: Icon_minigender_1
  • 来自: 浙江
社区版块
存档分类
最新评论

ELF hash算法 java版

阅读更多
在Heritrix的 Queue-assignment-policy的设置中。
当我们设置了在特定的域名下爬行的时候,经常会碰到永远只有一个线程在运行的情况,导致爬行十分缓慢。这是因为Heritrix默认使用HostnameQueueAssignmentPolicy来产生key值,从这个策略的名字,我们也可以很容易的看出,key跟hostname是有关系的。而事实上,这个策略正是用hostname作为key值的。因此一个域名下的所有链接都会放到同一个线程中去。
在开发自己的搜索引起的书中提到ELF hash算法,但没有实现的例子,在网上找了下,贴代码,备份以后用
import java.util.logging.Logger;

import org.archive.crawler.datamodel.CandidateURI;
import org.archive.crawler.framework.CrawlController;
import org.archive.crawler.frontier.QueueAssignmentPolicy;

public class ELFHashQueueAssignmentPolicy extends QueueAssignmentPolicy {

	private static Logger logger = Logger.getLogger(ELFHashQueueAssignmentPolicy.class.getName());
	@Override
	public String getClassKey(CrawlController controller, CandidateURI cauri) {

		String uri = cauri.getUURI().toString();	
		long hash = ELFHash(uri);
		String a=Long.toString(hash%100);
		return a;
	}
	public long ELFHash(String strUri) {
		long hash = 0;
		long x=0;
		for(int i=0;i<strUri.length();i++)
		{
			hash = (hash<<4)+strUri.charAt(i);
			if((x=hash & 0xF0000000L) != 0)
			{
				hash^=(x>>24);
				hash &=~x;
			}
		}
		return (hash & 0x7FFFFFFF);
	}

}




不断左移位与当前字符相加,当移到高4位有值时循环回来,把高8位异或到低8位上。
分享到:
评论

相关推荐

    20多个常用的Hash算法C++ 实现

    Hash函数集合,包含主流的hash函数: nginx_hash算法,OpenSSL_hash算法,RSHash,JSHash,PJWHash,ELFHash,BKDRHash,DJBHash,DEKHash,APHash等等!

    ELF动态解析符号过程.rar_elf_hash_动态解析_符号

    本文将深入探讨ELF文件动态解析符号的过程,重点关注elf_hash算法以及动态解析中的关键步骤。 首先,让我们理解ELF文件结构。ELF文件包含头信息、程序头表和段表,这些部分定义了程序的结构和运行时行为。其中,...

    Java常用HASH算法总结【经典实例】

    4. RS算法hash、PJW算法、ELF算法、BKDR算法、SDBM算法、DJB算法、DEK算法、AP算法 这些算法是早期的哈希函数,它们各有特点,但通常不被现代哈希表实现所采用。例如,RS算法使用了移位和异或操作,而DJB算法...

    常用Hash算法(C语言的简单实现)

    Hash算法是一种将任意长度的输入(也叫做预映射)通过一个特定的函数转换成固定长度输出的算法。这个输出通常称为哈希值或散列值。哈希算法在计算机科学中有广泛的应用,如数据存储、查找表、密码学、数字签名等。...

    经典hash算法

    `ELFHash`函数通过左移4位、与字符相加,然后对高4位进行异或和位移操作,以此来混合哈希值。这个算法在处理英文字符时效果较好,但对于其他语言可能表现一般。 5. **BKDR哈希(Bernstein哈希)** BKDR哈希是由D. ...

    Hash Caculator 哈希值计算工具

    在信息技术领域,哈希(Hash)是通过特定算法将任意长度的数据转化为固定长度输出的过程。这个过程通常不可逆,即从哈希值无法还原原始数据,因此哈希值常用于存储密码、文件校验、数据完整性检查等多个场景。 哈希...

    哈希算法模拟

    对于各种哈希算法的模拟 SDBMHash; RSHash; JSHash; P. J. Weinberger Hash Function; ELF Hash Function ; BKDR Hash Function ; DJB Hash Function ; AP Hash Function;

    hash字符串函数总结

    在计算机科学中,哈希(Hash)函数是一种用于将任意长度的数据映射为固定长度输出的算法。这种输出通常称为哈希值,它在数据结构(如哈希表)、密码学、数字签名等领域有着广泛的应用。本文将对几种常见的字符串哈希...

    hash函数 c语言

    本文将基于“hash函数 c语言”的主题,深入探讨几种常见的哈希算法及其C语言实现,包括RSHash、JSHash、P.J.Weinberger Hash(PJWHash)、SDBMHash、ELFHash、BKDRHash、DJBHash以及APHash,这些函数旨在将任意长度...

    python 实现hash 哈希算法 课程设计

    python 实现hash 哈希算法 课程设计 . 包括实现 Adler32 Chaos Machine Djb2 Elf Enigma Machine Hamming Code Luhn Md5 Sdbm Sha1 Sha256 阿德勒32 混沌机器 DJB2 小精灵 谜机 海明码 卢恩 MD...

    查找和排序算法大全_c程序

    1.程序设计(Programming)是给出解决特定问题程序的过程,是软件构造活动... static unsigned int ELFHash(char *str); /* ELF Hash Function */ static unsigned int BKDRHash(char *str); /* BKDR Hash Function */

    hash-encrypt:将几个常见的几个c++ hash加密算法改写成javascript

    关于hash-encrypt 本项目只是把几个常见的c++ hash算法转成js。这几个hash算法是: RSHash JSHash ELFHash BKDRHash SDBMHash DJBHash APHash 可以拿对应的js即可

    hashmap中hash函数的构造问题

    接下来我们将介绍几种典型的哈希函数构造方法,包括SDBMHash、RSHash、JSHash、PJWHash、ELFHash、BKDRHash、DJBHash和APHash等。这些函数都具有良好的性能特点,可以作为学习和实践的参考。 ##### 1. SDBMHash ``...

    各种字符串Hash函数比较1

    而PJWHash和ELFHash得分最低,它们的算法结构相似,因此在处理相同数据时表现出类似的效果,冲突率较高。 在实际应用中,选择合适的哈希函数不仅要看其性能,还要考虑实现的复杂度和可维护性。对于编程竞赛或快速...

    python源代码计算hash值(MD5,SHA1,SHA256,LUHN等等)

    python实现计算hash哈希值通用算法的实现源代码 adler32.py chaos_machine.py djb2.py elf.py enigma_machine.py hamming_code.py luhn.py md5.py sdbm.pys ha1.py sha256.py

    字符串哈希成数字的C实现的代码(含测试)

    unsigned int ELFHash (char* str, unsigned int len); unsigned int BKDRHash(char* str, unsigned int len); unsigned int SDBMHash(char* str, unsigned int len); unsigned int DJBHash (char* str, unsigned ...

    数据结构与算法常见问题解答

    - **ELFhash是什么意思,我看不懂**:ELFhash是一种散列函数,常用于生成散列值,其特点是计算简单且散列分布较为均匀。 - **如果中英文混编,那么读入时该如何区分呢?**:对于中英文混合的数据,可以通过正则...

Global site tag (gtag.js) - Google Analytics