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

本系列:

创新互联是一家专注于成都做网站、网站制作、成都外贸网站建设雅安移动机房的网络公司,有着丰富的建站经验和案例。

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

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

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

 
 
 
 
  1. public  boolean put(T object, Funnel funnel, int numHashFunctions, BitArray bits) {  
  2.     long bitSize = bits.bitSize();  
  3.     long hash64 = Hashing.murmur3_128().hashObject(object, funnel).asLong();  
  4.     int hash1 = (int) hash64;  
  5.     int hash2 = (int) (hash64 >>> 32);   
  6.  
  7.     boolean bitsChanged = false;  
  8.     for (int i = 1; i <= numHashFunctions; i++) {  
  9.         int combinedHash = hash1 + (i * hash2);  
  10.         // Flip all the bits if it's negative (guaranteed positive number)  
  11.         if (combinedHash < 0) {  
  12.             combinedHash = ~combinedHash;  
  13.         }  
  14.         bitsChanged |= bits.set(combinedHash % bitSize);  
  15.     }  
  16.     return bitsChanged;  
  17. }  

 
 
 
 
  1. boolean set(long index) {   
  2.     if (!get(index)) {   
  3.         data[(int) (index >>> 6)] |= (1L << index);   
  4.         bitCount++;   
  5.         return true;   
  6.     }   
  7.     return false;   
  8. }     
  9.   
  10. boolean get(long index) {   
  11.     return (data[(int) (index >>> 6)] & (1L << index)) != 0;   
  12. }   

02 先get()一下,看看是不是已经置为1。

03 index右移6位就是除以64,说明data是long型的数组,除以64就定位到了bit所在的数组下标。1L左移index位,定位到了bit在long中的位置。

本文标题:手把手教你写网络爬虫(7):URL去重
链接URL:http://www.shufengxianlan.com/qtweb/news15/509215.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联