IT科技

手把手教你写网络爬虫(7):URL去重

时间:2010-12-5 17:23:32  作者:应用开发   来源:人工智能  查看:  评论:0
内容摘要:本系列:《手把手教你写网络爬虫1):网易云音乐歌单》 《手把手教你写网络爬虫2):迷你爬虫架构》 《手把手教你写网络爬虫3):开源爬虫框架对比》 《手把手教你

本系列:

《手把手教你写网络爬虫(1):网易云音乐歌单》 《手把手教你写网络爬虫(2):迷你爬虫架构》 《手把手教你写网络爬虫(3):开源爬虫框架对比》 《手把手教你写网络爬虫(4):Scrapy入门》 《手把手教你写网络爬虫(5):PhantomJS实战》 《手把手教你写网络爬虫(6):分布式爬虫》

IPv6编码地址数:2^128(约3.4×10^38)

IPv6是手把手教IETF设计的用于替代现行版本IP协议(IPv4)的下一代IP协议,号称可以为全世界的写网每一粒沙子编上一个网址。

 

public <T> boolean put(T object,络爬 Funnel<? super T> funnel, int numHashFunctions, BitArray bits) {       long bitSize = bits.bitSize();      long hash64 = Hashing.murmur3_128().hashObject(object, funnel).asLong();      int hash1 = (int) hash64;      int hash2 = (int) (hash64 >>> 32);       boolean bitsChanged = false;      for (int i = 1; i <= numHashFunctions; i++) {           int combinedHash = hash1 + (i * hash2);          // Flip all the bits if its negative (guaranteed positive number)          if (combinedHash < 0) {               combinedHash = ~combinedHash;          }          bitsChanged |= bits.set(combinedHash % bitSize);      }      return bitsChanged;  }  

 

boolean set(long index) {        if (!get(index)) {            data[(int) (index >>> 6)] |= (1L << index);           bitCount++;           return true;       }       return false;   }     boolean get(long index) {        return (data[(int) (index >>> 6)] & (1L << index)) != 0;   }   

02 先get()一下,看看是源码库去重不是已经置为1。 

03 index右移6位就是手把手教除以64,说明data是写网long型的数组,站群服务器除以64就定位到了bit所在的络爬数组下标。1L左移index位,去重定位到了bit在long中的手把手教位置。 

写网
copyright © 2025 powered by 益强资讯全景  滇ICP备2023006006号-31sitemap