短いウェブサイトの原理のアルゴリズム
2735 ワード
短いウェブサイトはずっとマイクロブログに応用されています.例えばテンセント微博の短いウェブサイトurl.cn、新浪のsinaurl.cnなど.彼らはどのように実現しているのか、本稿ではこの技術アルゴリズムを紹介します.
例えば、テンセントの微博でウェブサイトを発表するとき、微博は自動的にウェブサイトを判別し、それを変換します.例えば、http://url.cn/3fVZf1
なぜこんなことをしたのか、理由は以下の点です.
1、テンセント微博の制限字数は140字で、もし私たちがいくつかの接続を送る必要があるならば、しかしこの接続はとても長くて、私たちの内容の半分の幅を占有しなければならなくて、これはきっと許されないので、短いウェブサイトは運に応じて生まれました.
2、短いウェブサイトは私たちのプロジェクトでオープンレベルのURLをよく管理することができます.一部のウェブサイトはseqing、暴力、広告などの情報をカバーすることができ、このように私たちはユーザーの通報を通じて、この接続を完全に管理することができます.私たちのアプリケーションには現れません.同じURLのために暗号化アルゴリズムを通過した後、得られたアドレスは同じです.
3、私たちは一連のウェブサイトに対して流量を行うことができて、クリックなどの統計をクリックして、大多数のユーザーの関心点を掘り起こして、このように私たちがプロジェクトの後続の仕事に対してもっと良い決定を下すのに役立ちます.
実は以上の3点は個人的な観点で、私の次の部分のプロジェクトで応用するので、理解して、次はまず短いウェブサイトのマッピングアルゴリズムの理論(ネット上で見つけた資料)を見てみましょう.
1)長いウェブサイトmd 5を32ビットの署名列を生成し、4セグメントに分け、各セグメント8バイト;
2)この4つのループ処理に対して、8バイトを取って、彼を16進列と0 x 3 fffffffff(30ビット1)と操作、すなわち30ビットを超える無視処理と見なす.
3)この30ビットは6セグメントに分けられ、5ビットの数字ごとにアルファベットのインデックスとして特定文字を取得し、順次6ビット文字列を取得する.
4)全md 5列は4個の6ビット列を得ることができる.中のいずれかを取ると、この長いurlの短いurlアドレスとすることができます.
簡単な理論では、得られたURLが唯一だとは限らないが、4組のURLを取り出すことができ、あまり繰り返されない.
プログラムのセクションを見てみましょう.
phpコード
例えば、テンセントの微博でウェブサイトを発表するとき、微博は自動的にウェブサイトを判別し、それを変換します.例えば、http://url.cn/3fVZf1
なぜこんなことをしたのか、理由は以下の点です.
1、テンセント微博の制限字数は140字で、もし私たちがいくつかの接続を送る必要があるならば、しかしこの接続はとても長くて、私たちの内容の半分の幅を占有しなければならなくて、これはきっと許されないので、短いウェブサイトは運に応じて生まれました.
2、短いウェブサイトは私たちのプロジェクトでオープンレベルのURLをよく管理することができます.一部のウェブサイトはseqing、暴力、広告などの情報をカバーすることができ、このように私たちはユーザーの通報を通じて、この接続を完全に管理することができます.私たちのアプリケーションには現れません.同じURLのために暗号化アルゴリズムを通過した後、得られたアドレスは同じです.
3、私たちは一連のウェブサイトに対して流量を行うことができて、クリックなどの統計をクリックして、大多数のユーザーの関心点を掘り起こして、このように私たちがプロジェクトの後続の仕事に対してもっと良い決定を下すのに役立ちます.
実は以上の3点は個人的な観点で、私の次の部分のプロジェクトで応用するので、理解して、次はまず短いウェブサイトのマッピングアルゴリズムの理論(ネット上で見つけた資料)を見てみましょう.
1)長いウェブサイトmd 5を32ビットの署名列を生成し、4セグメントに分け、各セグメント8バイト;
2)この4つのループ処理に対して、8バイトを取って、彼を16進列と0 x 3 fffffffff(30ビット1)と操作、すなわち30ビットを超える無視処理と見なす.
3)この30ビットは6セグメントに分けられ、5ビットの数字ごとにアルファベットのインデックスとして特定文字を取得し、順次6ビット文字列を取得する.
4)全md 5列は4個の6ビット列を得ることができる.中のいずれかを取ると、この長いurlの短いurlアドレスとすることができます.
簡単な理論では、得られたURLが唯一だとは限らないが、4組のURLを取り出すことができ、あまり繰り返されない.
プログラムのセクションを見てみましょう.
phpコード
function shorturl($url) {
$base_key = '';
$base_str = array(
"a","b","c","d","e","f","g","h", "i","j","k","l","m","n","o","p",
"q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5",
"6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L",
"M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z" );
$hex = md5($base_key.$url);
$hexLen = strlen($hex);
$subHexLen = $hexLen / 8;
$output = array();
for ($i = 0; $i < $subHexLen; $i++) {
$k = $i + 1;
$subHex = substr ($hex, $i * 8, 8*$k);
$int = 0x3FFFFFFF & (1 * ('0x'.$subHex));
$out = '';
for ($j = 0; $j < 6; $j++) {
$val = 0x0000003D & $int;
$out .= $base_str[$val];
$int = $int >> 5;
}
$output[] = $out;
}
return $output;
}