成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java實現短網址服務的原理是什么?

開發
針對于有些用戶擔心短網址會不會重復的問題,現將縮鏈平臺短網址服務的原理進行了詳細介紹,以便用戶對短網址有更深的理解,消除其擔心。

針對于有些用戶擔心短網址會不會重復的問題,現將縮鏈(https://suolink.cn)平臺短網址服務的原理進行了詳細介紹,以便用戶對短網址有更深的理解,消除其擔心。

Q:那么小的長度應該有一定概率會重復的吧?是不是一定時間后就不可用了?

A:短網址(Short URL),顧名思義就是在形式上比較短的網址。通常用的是asp或者php轉向,在Web 2.0的今天,不得不說,這是一個潮流。目前已經有許多類似服務,借助短網址您可以用簡短的網址替代原來冗長的網址,讓使用者可以更容易的分享鏈接。

短網址服務,可能很多朋友都已經不再陌生,現在大部分微博、手機郵件提醒等地方已經有很多應用模式了,并占據了一定的市場。估計很多朋友現在也正在使用。

看過新浪的短連接服務,發現后面主要有6個字符串組成,于是第一個想到的就是原來公司寫的一個游戲激活碼規則,也就是下面的算法2,

26個大寫字母 26小寫字母,10個數字,隨機生成6個然后插入數據庫對應一個id,短連接跳轉的時候,根據字符串查詢到對應id,即可實現相應的跳轉!不過2的62次方,不知道有沒有重復的,小概率可以,但是對應不是很大的網站應該足夠了

自從twitter推出短網址(shorturl),繼之國內各大微博跟風,google公開goo.gl使用API,短網址之風愈演愈烈.不得不說這是一個新興又一大熱門web2.0服務.現整理一下,包括完整短網址網站,短網址生成原理,算法舉例,以及優劣比較。

短鏈接的好處:

  • 內容需要;
  • 用戶友好;
  • 便于管理。

為什么要這樣做的,原因我想有這樣幾點:

微博限制字數為140字一條,那么如果我們需要發一些連接上去,但是這個連接非常的長,以至于將近要占用我們內容的一半篇幅,這肯定是不能被允許的,所以短網址應運而生了。

短網址可以在我們項目里可以很好的對開放級URL進行管理。有一部分網址可以會涵蓋暴力,廣告等信息,這樣我們可以通過用戶的舉報,完全管理這個連接將不出現在我們的應用中,應為同樣的URL通過加密算法之后,得到的地址是一樣的。

我們可以對一系列的網址進行流量,點擊等統計,挖掘出大多數用戶的關注點,這樣有利于我們對項目的后續工作更好的作出決策。

算法原理

算法一

1)將長網址md5生成32位簽名串,分為4段, 每段8個字節;

2)對這四段循環處理, 取8個字節, 將他看成16進制串與0x3fffffff(30位1)與操作, 即超過30位的忽略處理;

3)這30位分成6段, 每5位的數字作為字母表的索引取得特定字符, 依次進行獲得6位字符串;

4)總的md5串可以獲得4個6位串; 取里面的任意一個就可作為這個長url的短url地址;

這種算法,雖然會生成4個,但是仍然存在重復幾率,下面的算法一和三,就是這種的實現.

算法二

a-zA-Z0-9 這64位取6位組合,可產生500多億個組合數量.把數字和字符組合做一定的映射,就可以產生唯一的字符串,如第62個組合就是aaaaa9,第63個組合就是aaaaba,再利用洗牌算法,把原字符串打亂后保存,那么對應位置的組合字符串就會是無序的組合。

把長網址存入數據庫,取返回的id,找出對應的字符串,例如返回ID為1,那么對應上面的字符串組合就是bbb,同理 ID為2時,字符串組合為bba,依次類推,直至到達64種組合后才會出現重復的可能,所以如果用上面的62個字符,任意取6個字符組合成字符串的話,你的數據存量達到500多億后才會出現重復的可能。

具體參看這里徹底完善新浪微博接口和超短URL算法,算法四可以算作是此算法的一種實現,此算法一般不會重復,但是如果是統計的話,就有很大問題,特別是對域名相關的統計,就抓瞎了。

JAVA 實現代碼:

public class ShortUrlGenerator {
/**
@param args
*/
public static void main(String[] args) {
String sLongUrl = "QQ空間"; //長鏈接
String[] aResult = shortUrl(sLongUrl);
// 打印出結果
for (int i = 0; i < aResult.length; i++) {
System.out.println("["
ystem.out.println("[" + i + "]:::" + aResult[i]);
}
}
public static String[] shortUrl(String url) {
// 可以自定義生成 MD5 加密字符傳前的混合 KEY
String key = "mengdelong";
// 要使用生成 URL 的字符
String[] chars = new String[]{"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"
};
// 對傳入網址進行 MD5 加密
String sMD5EncryptResult = (new Encrypt()).md5(key
tring sMD5EncryptResult = (new Encrypt()).md5(key + url);
String hex = sMD5EncryptResult;
String[] resUrl = new String[4];
for (int i = 0; i < 4; i++) {
// 把加密字符按照 8 位一組 16 進制與 0x3FFFFFFF 進行位與運算
String sTempSubString = hex.substring(i
tring sTempSubString = hex.substring(i * 8, i * 8 + 8);
// 這里需要使用 long 型來轉換,因為 Inteper .parseInt() 只能處理 31 位 , 首位為符號位 , 如果不用 long ,則會越界
long lHexLong = 0x3FFFFFFF & Long.parseLong(sTempSubString, 16);
String outChars = "";
for (int j = 0; j < 6; j++) {
// 把得到的值與 0x0000003D 進行位與運算,取得字符數組 chars 索引
long index = 0x0000003D & lHexLong;
// 把取得的字符相加
outChars += chars[(int) index];
// 每次循環按位右移 5 位
lHexLong = lHexLong >> 5;
}
// 把字符串存入對應索引的輸出數組
resUrl[i] = outChars;
}
return resUrl;
}
}


責任編輯:未麗燕 來源: 今日頭條
相關推薦

2017-11-22 10:53:22

2017-10-12 15:34:17

2018-10-15 12:42:21

2024-06-06 08:53:13

動態鏈接庫共享庫

2025-03-27 04:00:00

2024-01-11 08:53:58

2023-11-05 10:52:54

DNS服務器瀏覽器

2025-01-15 13:30:48

FeignHTTPJava

2017-05-17 12:33:16

程序員系統二進制

2024-04-19 08:23:06

2021-04-27 18:12:22

WebSocket持久化連接HTTP

2021-09-10 06:50:03

HashMapHash方法

2024-11-25 12:20:00

Hystrix微服務架構

2023-03-17 16:47:23

索引開發大數據

2021-02-02 18:02:09

java對象數據

2021-02-08 21:07:47

JavaCAS機制

2025-01-09 08:32:50

2021-07-29 11:46:27

NAS存儲NAS服務器

2021-09-27 08:02:17

CDN加速網站網絡

2021-05-09 09:30:13

Docker操作系統容器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线成人av | 婷婷国产一区二区三区 | 国产精品自拍视频 | 亚洲免费观看视频 | 视频在线一区二区 | 国产极品粉嫩美女呻吟在线看人 | 在线观看国产精品视频 | 日韩精品一区二区三区视频播放 | 久久9热 | 在线欧美小视频 | 国产一区二区电影 | 91在线视频网址 | 中文字幕一区二区三区在线观看 | 欧美freesex黑人又粗又大 | 欧美成人综合 | 日韩精品一区二区三区中文字幕 | 国产一区欧美 | 精品久久影院 | 欧美日韩电影一区 | 成人精品一区二区 | 国产乱码精品一区二区三区五月婷 | 精品国产1区2区3区 一区二区手机在线 | 91麻豆精品国产91久久久久久 | 欧美日韩精品久久久免费观看 | 欧美激情欧美激情在线五月 | 精品一二区| 亚洲高清视频在线 | 91欧美精品成人综合在线观看 | 91精品国产综合久久精品图片 | 日韩在线中文字幕 | 国产精品成人一区二区三区 | 亚洲免费精品 | 黑人一级片视频 | 国产精品久久久久久久久久久久午夜片 | 国产激情一区二区三区 | 亚洲人成人一区二区在线观看 | 中文字幕 国产精品 | 国产美女精品 | 91精品国产一区二区三区 | 欧美a级成人淫片免费看 | 中文字幕欧美在线观看 |