您好,登錄后才能下訂單哦!
短網址應用已經在全國各大微博上開始流行了起來。例如QQ微博的url.cn,新郎的sinaurl.cn等。
我們在QQ微博上發布網址的時候,微博會自動判別網址,并將其轉換,例如:http://url.cn/2hytQx
為什么要這樣做的,原因我想有這樣幾點:
其實以上三點純屬個人觀點,因為在我接下來的部分項目中會應用到,所以就了解了一下,下面先來看看短網址映射算法的理論(網上找到的資料):
很簡單的理論,我們并不一定說得到的URL是唯一的,但是我們能夠取出4組URL,這樣幾乎不會出現太大的重復。
下面來看看程序部分:
public static string[] ShortUrl(string url) { //可以自定義生成MD5加密字符傳前的混合KEY string key = "Leejor"; //要使用生成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 hex = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(key + url, "md5"); string[] resUrl = new string[4]; for (int i = 0; i < 4; i++) { //把加密字符按照8位一組16進制與0x3FFFFFFF進行位與運算 int hexint = 0x3FFFFFFF & Convert.ToInt32("0x" + hex.Substring(i * 8, 8), 16); string outChars = string.Empty; for (int j = 0; j < 6; j++) { //把得到的值與0x0000003D進行位與運算,取得字符數組chars索引 int index = 0x0000003D & hexint; //把取得的字符相加 outChars += chars[index]; //每次循環按位右移5位 hexint = hexint >> 5; } //把字符串存入對應索引的輸出數組 resUrl[i] = outChars; } return resUrl; }
現在可以直接使用該方法,可以等到下面四組值:
ShortUrl(http://www.me3.cn)[0]; //得到值fAVfui ShortUrl(http://www.me3.cn)[1]; //得到值3ayQry ShortUrl(http://www.me3.cn)[2]; //得到值UZzyUr ShortUrl(http://www.me3.cn)[3]; //得到值36rQZn
在存放這個URL的數據方面,我個人推薦TTServer,有的朋友可以沒有聽說過,下面是這個數據庫的介紹:
Tokyo Cabinet 是日本人 Mikio Hirabayashi(平林幹雄)のページ 開發的一款DBM數據庫(注:大名鼎鼎的DBM數據庫qdbm就是他開發的),該數據庫讀寫非常快。insert:0.4sec/1000000 recordes(2500000qps),寫入100萬數據只需要0.4秒。search:0.33sec/1000000 recordes (3000000 qps),讀取100萬數據只需要0.33秒。
可以看到對于字典類型的數據Key/Value的查詢,這個數據庫可以說是我目前見過效率非常高的,況且他如此的小巧,用來對short url/long url的配對再好不過。
該系統使用6個短碼字符來表示任何長度的網址。 有效的字符代碼是ASCII 'A'到'Z'和'0'的'5',其中每個字符包含2 ^ 5(32)狀態。 6短碼字符可用于繪制32 ^ 6(1073741824)的網址
首先,你需要一個數據庫表來存儲和檢索你映射的網址。
CREATE TABLE mappedURL (的CREATE TABLE mappedURL( shortCode char(6) not null, lognURL text not null, PRIMARY KEY shortCodeInd (shortCode), );
其次,你需要定義一個算法將長的URL映射到短的URL。 算法上面已經介紹過了。
第三,你需要創建一個網頁,從數據庫的短網址的映射找到原始的URL,并重定向之。
總結
到此這篇關于短網址的原理與生成方法的文章就介紹到這了,更多相關短網址的原理與生成內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。