在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位上。
分享到:
相关推荐
Hash函数集合,包含主流的hash函数: nginx_hash算法,OpenSSL_hash算法,RSHash,JSHash,PJWHash,ELFHash,BKDRHash,DJBHash,DEKHash,APHash等等!
本文将深入探讨ELF文件动态解析符号的过程,重点关注elf_hash算法以及动态解析中的关键步骤。 首先,让我们理解ELF文件结构。ELF文件包含头信息、程序头表和段表,这些部分定义了程序的结构和运行时行为。其中,...
4. RS算法hash、PJW算法、ELF算法、BKDR算法、SDBM算法、DJB算法、DEK算法、AP算法 这些算法是早期的哈希函数,它们各有特点,但通常不被现代哈希表实现所采用。例如,RS算法使用了移位和异或操作,而DJB算法...
Hash算法是一种将任意长度的输入(也叫做预映射)通过一个特定的函数转换成固定长度输出的算法。这个输出通常称为哈希值或散列值。哈希算法在计算机科学中有广泛的应用,如数据存储、查找表、密码学、数字签名等。...
`ELFHash`函数通过左移4位、与字符相加,然后对高4位进行异或和位移操作,以此来混合哈希值。这个算法在处理英文字符时效果较好,但对于其他语言可能表现一般。 5. **BKDR哈希(Bernstein哈希)** BKDR哈希是由D. ...
在信息技术领域,哈希(Hash)是通过特定算法将任意长度的数据转化为固定长度输出的过程。这个过程通常不可逆,即从哈希值无法还原原始数据,因此哈希值常用于存储密码、文件校验、数据完整性检查等多个场景。 哈希...
对于各种哈希算法的模拟 SDBMHash; RSHash; JSHash; P. J. Weinberger Hash Function; ELF Hash Function ; BKDR Hash Function ; DJB Hash Function ; AP Hash Function;
在计算机科学中,哈希(Hash)函数是一种用于将任意长度的数据映射为固定长度输出的算法。这种输出通常称为哈希值,它在数据结构(如哈希表)、密码学、数字签名等领域有着广泛的应用。本文将对几种常见的字符串哈希...
本文将基于“hash函数 c语言”的主题,深入探讨几种常见的哈希算法及其C语言实现,包括RSHash、JSHash、P.J.Weinberger Hash(PJWHash)、SDBMHash、ELFHash、BKDRHash、DJBHash以及APHash,这些函数旨在将任意长度...
python 实现hash 哈希算法 课程设计 . 包括实现 Adler32 Chaos Machine Djb2 Elf Enigma Machine Hamming Code Luhn Md5 Sdbm Sha1 Sha256 阿德勒32 混沌机器 DJB2 小精灵 谜机 海明码 卢恩 MD...
1.程序设计(Programming)是给出解决特定问题程序的过程,是软件构造活动... static unsigned int ELFHash(char *str); /* ELF Hash Function */ static unsigned int BKDRHash(char *str); /* BKDR Hash Function */
关于hash-encrypt 本项目只是把几个常见的c++ hash算法转成js。这几个hash算法是: RSHash JSHash ELFHash BKDRHash SDBMHash DJBHash APHash 可以拿对应的js即可
接下来我们将介绍几种典型的哈希函数构造方法,包括SDBMHash、RSHash、JSHash、PJWHash、ELFHash、BKDRHash、DJBHash和APHash等。这些函数都具有良好的性能特点,可以作为学习和实践的参考。 ##### 1. SDBMHash ``...
而PJWHash和ELFHash得分最低,它们的算法结构相似,因此在处理相同数据时表现出类似的效果,冲突率较高。 在实际应用中,选择合适的哈希函数不仅要看其性能,还要考虑实现的复杂度和可维护性。对于编程竞赛或快速...
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
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是一种散列函数,常用于生成散列值,其特点是计算简单且散列分布较为均匀。 - **如果中英文混编,那么读入时该如何区分呢?**:对于中英文混合的数据,可以通过正则...