首 页 教育新闻课件中心论文中心教学教案试题中心语文专题综合下载技术教程公务员  
设为首页
加入收藏
联系我们
您当前的位置:中国教育资源网 -> 技术教程 -> 网站建设 -> Google排名 -> 技术内容 退出登录 用户管理

C# Google PageRank .net库 (checksum)Google排名教程

论文作者:佚名  论文来源:不详  论文发布时间:2006-6-20 1:21:34  论文发布人:chjchjchj

减小字体 增大字体

  今天看到Google PageRank ChecksumPHP代码才发现上次发布的库写的很烂,我根本没有去理解里面的意思,有很多函数是没有必要的,如<< >>位操作都已经是现成的,我怎么还照着vb代码改写,真是愚蠢。
  为了弥补我的愚蠢,把php代码改编成的.net库,发布出来。

  Google PageRank 链接库下载地址:http://code.knowsky.com/down/2847.html

  演示地址:http://pr.csharphack.org/checkpr.aspx

  使用实例:
  //得到Pagerank值
  Console.WriteLine(PRCrack.PageRank.CheckPR("http://www.google.com"));
  //得到pagerank checksum
  Console.WriteLine(PRCrack.PageRank.OutputCheckSum("http://www.google.com",1));

  包含函数:
  //输出指定网址的pagerank checksum
  //参数m_Version指定1,表示得到新版本checksum,Google Toolbar版本>>=2.0.114
  //参数m_Version指定0,表示得到老版本checksum,Google Toolbar版本<2.0.114
  public static string OutputCheckSum(string m_Url,int m_Version)

  //输出制定网址的pagerank
  public static string CheckPR(string m_Url)
  Checksum 算法源代码请看详细内容

1using System;
2
3namespace PRCrack
4{
5 /// <summary>
6 /// Google PageRank的Checksum算法。
7 /// 作者:4111y80y
8 /// 日期:2005年1月22日
9 /// email:sillyboy@china.com
10 /// </summary>
11 class CheckSum
12 {
13  public CheckSum()
14  {
15   //
16   // TODO: 在此处添加构造函数逻辑
17   //
18  }
19
20  uint GOOGLE_MAGIC=0xE6359A60;
21
22  private uint zeroFill(uint a, int b)
23  {
24   checked
25   {
26    uint z = 0x80000000;
27    if (Convert.ToBoolean(z & a))
28    {
29     a = (a>>1);
30     a &= (~z);
31     a = 0x40000000;
32     a = (a>>(b-1));
33    }
34    else
35    {
36     a = (a>>b);
37    }
38   }
39   return a;
40  }
41
42  private uint[] mix(uint a,uint b,uint c)
43  {
44   a -= b;  a -= c; a ^= (uint)(zeroFill(c,13));
45   b -= c; b -= a; b ^= (uint)(a<<8);
46   c -= a; c -= b; c ^= (uint)(zeroFill(b,13));
47   a -= b; a -= c; a ^= (uint)(zeroFill(c,12));
48   b -= c; b -= a; b ^= (uint)(a<<16);
49   c -= a; c -= b; c ^= (uint)(zeroFill(b,5));
50   a -= b; a -= c; a ^= (uint)(zeroFill(c,3)); 
51   b -= c; b -= a; b ^= (uint)(a<<10);
52   c -= a; c -= b; c ^= (uint)(zeroFill(b,15));
53  
54   return new uint[3]{a,b,c};
55  }
56
57  private uint GoogleCH(uint[] url, uint length, uint init)
58  {
59   if(length==0)
60   {
61    length = (uint)url.Length;
62   }
63   uint a ,b;
64   a=b= 0x9E3779B9;
65   uint c = init;
66   int k = 0;
67   uint len = length;
68   uint[] m_mix=new uint[3];
69   while(len >= 12)
70   {
71    a += (uint)(url[k+0] +(url[k+1]<<8) +(url[k+2]<<16) +(url[k+3]<<24));
72    
73    b += (uint)(url[k+4] +(url[k+5]<<8) +(url[k+6]<<16) +(url[k+7]<<24));
74    c += (uint)(url[k+8] +(url[k+9]<<8) +(url[k+10]<<16)+(url[k+11]<<24));
75    m_mix = mix(a,b,c);
76    a = m_mix[0]; b = m_mix[1]; c = m_mix[2];
77 
78    k += 12;
79    len -= 12;
80   }
81
82   c += length;
83
84   switch(len)              /* all the case statements fall through */
85   {
86    case 11:
87    {
88     c+=(uint)(url[k+10]<<24);
89     c+=(uint)(url[k+9]<<16);
90     c+=(uint)(url[k+8]<<8);
91     b+=(uint)(url[k+7]<<24);
92     b+=(uint)(url[k+6]<<16);
93     b+=(uint)(url[k+5]<<8);
94     b+=(uint)(url[k+4]);
95     a+=(uint)(url[k+3]<<24);
96     a+=(uint)(url[k+2]<<16);
97     a+=(uint)(url[k+1]<<8);
98     a+=(uint)(url[k+0]);
99     break;
100    }
101    case 10:
102    {
103     c+=(uint)(url[k+9]<<16);
104     c+=(uint)(url[k+8]<<8);
105     b+=(uint)(url[k+7]<<24);
106     b+=(uint)(url[k+6]<<16);
107     b+=(uint)(url[k+5]<<8);
108     b+=(uint)(url[k+4]);
109     a+=(uint)(url[k+3]<<24);
110     a+=(uint)(url[k+2]<<16);
111     a+=(uint)(url[k+1]<<8);
112     a+=(uint)(url[k+0]);
113     break;
114    }
115    case 9 :
116    {
117     c+=(uint)(url[k+8]<<8);
118     b+=(uint)(url[k+7]<<24);
119     b+=(uint)(url[k+6]<<16);
120     b+=(uint)(url[k+5]<<8);
121     b+=(uint)(url[k+4]);
122     a+=(uint)(url[k+3]<<24);
123     a+=(uint)(url[k+2]<<16);
124     a+=(uint)(url[k+1]<<8);
125     a+=(uint)(url[k+0]);
126     break;
127    }
128     /* the first byte of c is reserved for the length */
129    case 8 :
130    {
131     b+=(uint)(url[k+7]<<24);
132     b+=(uint)(url[k+6]<<16);
133     b+=(uint)(url[k+5]<<8);
134     b+=(uint)(url[k+4]);
135     a+=(uint)(url[k+3]<<24);
136     a+=(uint)(url[k+2]<<16);
137     a+=(uint)(url[k+1]<<8);
138     a+=(uint)(url[k+0]);
139     break;
140    }
141    case 7 :
142    {
143 &nb

[] [返回上一页] [打 印] [收 藏]  
 ∷相关技术评论  (评论内容只代表网友观点,与本站立场无关!) [查看发表评论...]
 
 中国教育资源网免费技术教程下载中心-站内广告 站内广告 中国教育资源网免费技术教程下载中心-站内广告 
 中国教育资源网站内搜索 站内搜索 中国教育资源网站内搜索 
 

   
 中国教育资源网免费技术教程下载中心-栏目导航 栏目导航 中国教育资源网免费技术教程下载中心-栏目导航 
· Dreamweaver · FrontPage
· CSSHTML · DOMJS
· Google排名 · 搜索研究
· 网络赚钱 · Alexa相关
· 建站交流 · 源码精华
· 经验技巧
 
中国教育资源网免费技术教程下载中心-相关教程  相关技术 中国教育资源网免费技术教程下载中心-相关教程
 中国教育资源网免费技术教程下载中心-本月热门教程 本月热门 中国教育资源网免费技术教程下载中心-本月热门教程 
 
 中国教育资源网免费技术教程下载中心-本日热门论文 本日热门 中国教育资源网免费技术教程下载中心-本日热门论文 
 
关于本站 - 网站帮助 - 免费课件 - 美容 - 绿色软件 - 软件下载 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 网站留言
浙ICP备06010405号 Email:cnkjz@163.com 技术支持:名流设计
版权所有 Copyright© 2002-2004 名流