国产不卡一区二区电影网,欧美一级做a爱高清免费观看,精品天堂成人Av在线播放,99国产精品尤物视频在线99,国产无遮挡18禁无码麻豆

国产不卡一区二区电影网,欧美一级做a爱高清免费观看,精品天堂成人Av在线播放,99国产精品尤物视频在线99,国产无遮挡18禁无码麻豆

合肥做網(wǎng)站,選擇瘋狗科技,專(zhuān)業(yè)、敬業(yè)的合肥網(wǎng)絡(luò )公司
首頁(yè) > 網(wǎng)站技術(shù) > 詳情

短網(wǎng)址(short URL)系統的原理及其實(shí)現

2017-11-22 16:20:59   來(lái)源:segmentfault   瀏覽:  次
提供一個(gè)短址服務(wù)你有沒(méi)有發(fā)現,我們的任務(wù)中出現長(cháng) URL 就會(huì )比較麻煩?如果有一個(gè)短址生成器就好了。雖然市面上有很多,但是我們可以重復發(fā)明一個(gè)輪子,利用這個(gè)機會(huì )嘗試一下簡(jiǎn)單的 Web 全棧開(kāi)發(fā)。任務(wù)做一個(gè)短鏈接生成器

提供一個(gè)短址服務(wù)

你有沒(méi)有發(fā)現,我們的任務(wù)中出現長(cháng) URL 就會(huì )比較麻煩?如果有一個(gè)短址生成器就好了。雖然市面上有很多,但是我們可以重復發(fā)明一個(gè)輪子,利用這個(gè)機會(huì )嘗試一下簡(jiǎn)單的 Web 全棧開(kāi)發(fā)。

任務(wù)

做一個(gè)短鏈接生成器,可以將一個(gè)長(cháng)鏈接縮短成一個(gè)短鏈接。

要發(fā)車(chē)了 :bus:

發(fā)車(chē)前,和大家說(shuō)一下

如果不想重復的造輪子,想開(kāi)箱即用,可以使用基于 PHP 的開(kāi)源軟件 YOURLS 。 YOURLS 還可以和 WordPress 整合到一起,功能強大,可擴展性高。

本文記錄了開(kāi)發(fā)短網(wǎng)址系統的整個(gè)過(guò)程,包括初期的算法調研、模塊設計、數據庫設計、功能擴展等。

什么是短鏈接 :link:

就是把普通網(wǎng)址,轉換成比較短的網(wǎng)址。比如: http://t.cn/RlB2PdD 這種,在微博這些限制字數的應用里。好處不言而喻。短、字符少、美觀(guān)、便于發(fā)布、傳播。

百度短網(wǎng)址 http://dwz.cn/

谷歌短網(wǎng)址服務(wù) https://goo.gl/ (需科學(xué)上網(wǎng))號稱(chēng)是最快的 :rocket:

原理解析

當我們在瀏覽器里輸入 http://t.cn/RlB2PdD 時(shí)

DNS首先解析獲得 http://t.cn 的 IP 地址

當 DNS 獲得 IP 地址以后(比如:74.125.225.72),會(huì )向這個(gè)地址發(fā)送 HTTP GET 請求,查詢(xún)短碼 RlB2PdD

http://t.cn 服務(wù)器會(huì )通過(guò)短碼 RlB2PdD 獲取對應的長(cháng) URL

請求通過(guò) HTTP 301 轉到對應的長(cháng) URL https://m.helijia.com 。

這里有個(gè)小的知識點(diǎn),為什么要用 301 跳轉而不是 302 吶?

301 是永久重定向,302 是臨時(shí)重定向。短地址一經(jīng)生成就不會(huì )變化,所以用 301 是符合 http 語(yǔ)義的。同時(shí)對服務(wù)器壓力也會(huì )有一定減少。

但是如果使用了 301 ,我們就無(wú)法統計到短地址被點(diǎn)擊的次數了。而這個(gè)點(diǎn)擊次數是一個(gè)非常有意思的大數據分析數據源。能夠分析出的東西非常非常多。所以選擇302雖然會(huì )增加服務(wù)器壓力,但是我想是一個(gè)更好的選擇。

來(lái)自知乎 iammutex 的 答案

算法實(shí)現

網(wǎng)上比較流行的算法有兩種 自增序列算法、 摘要算法

算法一

自增序列算法也叫永不重復算法

設置 id 自增,一個(gè) 10進(jìn)制 id 對應一個(gè) 62進(jìn)制的數值,1對1,也就不會(huì )出現重復的情況。這個(gè)利用的就是低進(jìn)制轉化為高進(jìn)制時(shí),字符數會(huì )減少的特性。

短址的長(cháng)度一般設為 6 位,而每一位是由 [a - z, A - Z, 0 - 9] 總共 62 個(gè)字母組成的,所以 6 位的話(huà),總共會(huì )有 62^6 ~= 568億種組合,基本上夠用了。

哈哈,這里附上一個(gè)進(jìn)制轉換工具 http://tool.lu/hexconvert/ 上圖的數據就是用這個(gè)工具生成的。

具體的算法實(shí)現,自行谷歌。

算法二

將長(cháng)網(wǎng)址 md5 生成 32 位簽名串,分為 4 段, 每段 8 個(gè)字節

對這四段循環(huán)處理, 取 8 個(gè)字節, 將他看成 16 進(jìn)制串與 0x3fffffff(30位1) 與操作, 即超過(guò) 30 位的忽略處理

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

總的 md5 串可以獲得 4 個(gè) 6 位串,取里面的任意一個(gè)就可作為這個(gè)長(cháng) url 的短 url 地址

這種算法,雖然會(huì )生成4個(gè),但是仍然存在重復幾率

兩種算法對比

第一種算法的好處就是簡(jiǎn)單好理解,永不重復。但是短碼的長(cháng)度不固定,隨著(zhù) id 變大從一位長(cháng)度開(kāi)始遞增。如果非要讓短碼長(cháng)度固定也可以就是讓 id 從指定的數字開(kāi)始遞增就可以了。百度短網(wǎng)址用的這種算法。上文說(shuō)的開(kāi)源短網(wǎng)址項目 YOURLS 也是采用了這種算法。 源碼學(xué)習

第二種算法,存在碰撞(重復)的可能性,雖然幾率很小。短碼位數是比較固定的。不會(huì )從一位長(cháng)度遞增到多位的。據說(shuō)微博使用的這種算法。

我使用的算法一。有一個(gè)不太好的地方就是出現的短碼是有序的,可能會(huì )不安全。我的處理方式是構造 62進(jìn)制的字母不要按順序排列。因為想實(shí)現自定義短碼的功能,我又對算法一進(jìn)行了優(yōu)化,下文會(huì )介紹。

流程圖

自增序列算法流程圖

st=>start: 開(kāi)始

e=>end: 結束

io1=>inputoutput: 輸入網(wǎng)址

io2=>inputoutput: 返回短網(wǎng)址

op1=>operation: 返回對應的短碼

op2=>operation: 保存輸入的網(wǎng)址到數據庫

op3=>operation: 根據id計算對應的短碼

op4=>operation: 更新短碼到數據庫

cond1=>condition: 查詢(xún)數據庫

是否存在對

應的短碼

st->io1->cond1

cond1(no,bottom)->op2->op3->op4->op1->io2->e

cond1(yes)->op1->io2->e

自增序列算法 + 用戶(hù)自定義短碼 流程圖

st=>start: 開(kāi)始

e=>end: 結束

io1=>inputoutput: 輸入網(wǎng)址

io2=>inputoutput: 返回短網(wǎng)址

io3=>inputoutput: 提示用戶(hù)

該短碼已存在

io4=>inputoutput: 提示用戶(hù)

不能輸入短鏈接

op1=>operation: 返回短碼

op2=>operation: 保存輸入的網(wǎng)址到數據庫

op3=>operation: 根據id計算對應的短碼

op4=>operation: 查詢(xún)數據庫

獲得一條

自定義短碼的url

對應的id記錄

op5=>operation: 更新短碼到數據庫

cond1=>condition: 查詢(xún)數據庫

是否存在該URL

cond2=>condition: 用戶(hù)選擇

自定義短碼

cond3=>condition: 生成的短碼

是否存在

cond4=>condition: 短碼是否存在

cond5=>condition: 短碼是否存在

cond6=>condition: 自定義的短碼

是否存在

cond7=>condition: 用戶(hù)輸入的是短鏈接

st->io1->cond7

cond7(no,bottom)->cond1

cond7(yes)->io4->e

cond1(no,bottom)->cond2

cond1(yes)->op1->io2->e

cond2(no,bottom)->op3->cond4

cond2(yes)->cond5

cond4(no, bottom)->op5->op1->io2->e

cond4(yes)->op4->op3->cond4

cond5(no,bottom)->op5

cond5(yes)->io3->e

百度短網(wǎng)址還允許用戶(hù)自定義短碼,算法二 摘要算法,不和 id 綁定,好像挺好實(shí)現這個(gè)功能的。

但是自增序列算法是和 id 綁定的,如果允許自定義短碼就會(huì )占用之后的短碼,之后的 id 要生成短碼的時(shí)候就發(fā)現短碼已經(jīng)被用了,那么 id 自增一對一不沖突的優(yōu)勢就體現不出來(lái)了。

那么怎么實(shí)現自定義短碼吶?

我是這樣處理的:

數據庫增加一個(gè)類(lèi)型 type 字段,用來(lái)標記短碼是用戶(hù)自定義生成的,還是系統自動(dòng)生成的。

如果有用戶(hù)自定義過(guò)短碼,把它的類(lèi)型標記自定義。每次根據 id 計算短碼的時(shí)候,如果發(fā)現對應的短碼被占用了,就從類(lèi)型為自定義的記錄里選取一條記錄,用它的 id 去計算短碼。

這樣既可以區分哪些長(cháng)連接是用戶(hù)自己定義還是系統自動(dòng)生成的,還可以不浪費被自定義短碼占用的 id

我保留了 1 到 2 位的 短碼,從三位的短碼開(kāi)始生成的。就像域名的保留域名一樣,好的要自己預留 :smirk:

国产亚洲精品久久久久久一区二区| 亚洲成av人在线观看天堂无码| 亚洲品质自拍网站| 亚洲乱码一二三四区手机| 精品国产乱码久久久久久浪潮| 亚洲aV无码久久精品色欲| 日韩爆乳av少妇无码| 中文字幕一区二区精品区| 国产一区二区三区香蕉| 中文字幕按摩做爰| 亚洲精品综合在线| 亚洲精品无码久久久久牙蜜区| 一本到在线DVD国产观看| 丰满女人又爽又紧又丰满| 一本色道久久88精品综合| 亚洲无码日韩一区二区| 国产97精品久久久久999| 国产精品久久久久久久久午夜福利| 亚洲国语自产一区第二页| 亚洲国产美女激情福利影院| 一区二区三区精品视频| 中文国产无码三级| 日韩精品秘在线观看| 伊人情人色综合网站| 成人免费毛片日韩在线| 亚洲欧洲国产综合aV无码久久| 午夜福利电影手机免费观看| 亚洲爆乳巨臀无码专区| 亚洲午夜精品一区| 中文字幕成人影院| 国产亚洲精品免费观看视频| 亚洲图揄拍自拍色综合| 日韩少妇HEYZO视频无码| 亚洲国产精品一区二区成人| 国产精品欧美一区二区| 曰本a级毛片无卡| 国产美女精品久久久久中文字幕| 亚州国产无码高清视频| 色天使综合婷婷国产日韩av| 免费又黄又爽又猛大片午夜| 亚洲欧美日韩偷拍综合一区| 亚洲高清一区二区三区在线观看| 国产福利电影一区二区| 99久久国产综合精品五月天| 亚洲国产av无码精品| 亚洲色无码播放一区二区三区| 亚洲Va中文字幕无码毛片下载| 久久久久国产一级毛片高清版| 天堂视频在线看最新资源| 亚洲高清有码中文字| 久久精品无码一区二区三区不卡| 在线亚洲欧国产精品专区| 中文字幕国产精品一二区| 中文字幕有码无码人妻丝袜| 成人无码精品免费视频在线| 国产偷久久久精品专区| 亚洲AV无码乱码忘忧草亚洲| 在线天堂资源www在线中文| 最新精品视频在线观看| 国产成人无码av在线播放不卡| 国产精品一级无码毛片视频| 亚洲Av永久无码精品| 亚洲中文av中文字幕| 久久99亚洲含羞草影院| 久久女性性开放视频| 亚洲欧洲日本无在线码播放| 亚洲综合国产精品第一页| 日批视频下载最新版V| 亚洲一卡一卡二新区无人区| 亚洲精品国产首次亮相| 久久久久久一区国产精品| 亚洲一区二三区好的精华液| 亚洲小说区图片区另类春色奇幻| 亚洲制服丝袜一区二| 久热爱精品视频在线9| 亚洲精品国产专区第一页| 亚洲97一区二区三区| 中国亚洲日韩a在线欧美| 国产在线视频一区二区| 亚欧乱色束缚一区二区三区| 国产精品女人精品久久久天天| 天天爽夜夜爽夜夜爽精品视频| 亚洲一区在线观看免费| 国产剧情aV麻豆香蕉精品| 亚洲日韩精品A∨片无码不卡| 亚洲精品乱码久久久久久V| 中文国产黄色大片| 无码一区二区三区人妻| 亚洲成人色情av人妻天堂| 亚洲国产私拍精品国模无码在线| 亚洲精品久久久久久一区| 亚洲精品一区二区综合| 一级特一级特色生活片| 亚洲中文字幕无码爆乳av| 久久国产亚洲女同精品| 亚洲欧美色一区二区三区| 一本加勒比HEZYO无码A片| 中文字幕无码中文字幕有码在线| 中国一级黄色美女撒尿| 亚洲中文字幕精品有码在线| 成人精品免费视频在线观看| 亚洲欧美国产日韩制服bt| 亚洲欧美日韩丝袜一区二区| 亚洲成AV人国产毛片| 97精品国产高清自在线看超| 日本中文字幕韩国专区二区| 日韩av无码一区二区不卡毛片| 亚洲另类色区欧美日韩| 综合图区亚洲偷窥白拍撒尿| 亚洲真人无码永久在线观看| 亚洲色无码播放一区二区三区| 无码伦理日韩电影在线午夜宫| 日韩国产一区二区蜜桃| 国产欧美精品在线一区二区三区| 亚洲级αv无码毛片久久精品| 国产一区在线观看不卡| 亚洲精品一区二区三区婷婷月| 亚洲成aV人综合在线观看| 99热这里只有精品在线观看| 日韩黑人一区二区三区| 伊人成年网站综合网| 亚洲中文字幕在线观看| 中文字幕亚洲精品卡通动漫| 欧美乱妇高清无乱码在线观看| 一级毛片视频网站| 天堂av成人在线观看| 永久午夜福利视频一区在线观看| 国产成人精品一区二区在线小狼| 国产女人的高潮国语对白| 欧美国产一区二区三区激情无套| 在线亚洲高清揄拍自拍—品区| 在线日本免费一区二区三区| 亚洲色在线v中文字幕app| 在线观看免费无码视频| 免费乱码中文字幕网站| 亚洲精品人妻在线| 最新国产超碰在线| 亚洲av综合永久无码精品天堂| 亚洲中文字幕日产无码2024| 亚洲中文字幕精品熟女一区| 中国女人美女一级毛片| 国产成人精品久久亚洲高清不| 无码高潮喷水在线国产| 成人在色线视频在线观看免费大全| 亚洲乱码日产精品bd在线看| 欧美乱妇高清视频免欢看关| 国产偷亚洲高清日韩| 欧美激情视频精品一区二区| 国产偷久久久精品专区| 国产无套内射又大又猛又粗又爽| 91久久精品无码一区二区三区| 亚洲av色眯眯一区二区| a看片免费观看视频下载国产成| 亚洲第一视频免费| 亚洲高清在线每日更新| 中文国产日韩欧美视频| 在线免费观看国产www| 国产熟女AA级毛片www| 中文字幕成熟丰满人妻av| 亚洲欧美综合一区| 99久久人妻无码精品系列性欧美| 亚洲欧美日韩国产另类| 亚洲精品中文字幕乱码无线| 久久精品免费一区二区喷潮| 精品福利一区二区三区免费视频| 亚洲狼人精品一区二区三区| 成人在色线视频在线观看免费大全| 曰本胸大巨胸做爰视频| 亚洲av成人无码久久精品| 亚洲精品久久久www| AV中文字幕在线毛片| 在线毛片一区二区不卡视频| 一区二区三区免费在线| 曰本无码不卡高清AV一二| 性xxxxxx中国熟妇mm| 亚洲精品久久久久久久久久久| 在线免费观看毛片| 亚洲视频一区在线| 亚洲精品狼友在线播放| 久久久久成人亚洲精品| 亚洲日韩线精品一区一区一区| 亚洲一区二区三区自拍| 亚洲欧美成人激情片| 亚洲人成人无码网在线观看| 亚洲人成在线网站| 伊人WWW22综合色| 99热在线观看免费| 中国女人一级毛片| 在线免费播放一区日本专区| 三级做爰大爽色情三级七男一女| 曰本黄页在线观看| 国产乱老熟视频乱边老熟女1| 人成电影在线观看天堂色| 亚洲日产av中文字幕无码偷拍| 在线亚洲欧美中文精品| 亚洲日韩黄色网站有哪些| 又硬又粗进去爽A片免费| 亚洲中文字幕乱码电影| 天天澡天天碰天天狠伊人五月| 精品久久久久久a片小说8| 中文在线а√在线8| 在线观看免费日韩毛片| 亚洲精品无码久久久久av麻豆| 亚洲高清免费在线观看| 亚洲色无码中文字幕伊人| 一级日韩免费大片| 亚洲精品在线免费观看| 久久久久亚洲aV无码专区喷水| 亚洲AV无码一区精品无码| 亚洲精品色午夜无码专区日韩| 亚洲性日韩精品一区二区| 欧美成人午夜福利视频在线观看| 一区二区三区在线观看| 国产一级理论免费版| 伊人大杳焦在久久综合网| 精品无码人妻一区二区免费蜜桃| 欧美不卡视频在线观看| 亚洲自拍偷拍专区| 亚洲精品乱码中文字幕影院| 欧美日韩国产在线观看| 亚洲成av人在线观看网址| 亚洲精品午夜aaa级久久久久| 亚洲精品久荜中文字幕| 亚洲国产欧美精品一区二区三区| 国产精品亚洲aV三区| 亚洲综合校园春色| 亚洲视频在线视频| 男人都懂的高清免费影视网| 亚洲AV永久无码精品久久| 亚洲系列无码专区偷窥无码| 99久久综合国产精品| 亚洲最大的黄色网| 最新国产成人精品2024| 亚洲精品视频免费在线| 亚洲AV无码AV在线影院| 亚洲美女精品中文字幕乱码| 亚洲av电影网站一| 久久亚洲精品aB无码播放| 又黄又爽又刺激又色的视频| 又大又长视频一二区| 亚洲日韩精品少妇熟女图片| 亚洲产国偷v产偷v自拍色戒| 97久久久久久久久精品| 亚洲综合校园春色| 免费av片大尺度在线观看| 一级香蕉黄色视频| 亚洲an日韩专区在线| 日韩成AV人网站在线播放| 日韩中字完整版在线观看| 欧美亚洲国产一区二区三区| 一区二区欧美日韩高清免费| 国产亚洲欧美精品久久久| 中文字幕精品日韩一区二区三区| 91亚洲午夜精品久久久久久一区| 亚洲欧美日产综合在线网| 亚洲午夜成人精品无码色欲在线| 亚洲日韩一区二区午夜福利蜜桃| 国产91精品一区二区| 久久久久中精品中文字幕| 狠狠躁天天躁无码中文字幕图| 欧美亚洲日韩国产网| 一区二区三区国产99| 日韩Aⅴ无码精品久久人| 日韩精品一区二区亚洲AV| 少妇激情a∨一区二区三区| 午夜福利视频免费观看| 一本色道久久88精品综合| 国产羞羞事1000部在线| 亚洲精品无码久久不卡| 亚洲精品日韩专区在线观看| 91久久国产口精品久久久久| 中文字幕亚洲综合| 国精品午夜福利免费不卡| 国产av亚洲精品久久久久| 亚洲精品乱码在线观看| 精品久久久久久久一区二区伦理| 中文字幕日韩人妻不卡一区| 日欧137片内射在线视频播放| 中文字幕在线电影观看| 亚洲精品无码鲁网中午电影| 亚洲精品a级无码高清| 亚洲国产日韩欧美久久精品| 亚洲精品成人久久Av中文字幕| 久久精品国产一区二| 最新免费不卡一区二区三区| 无码人妻久久一区二区三区不卡| 在线观看香蕉免费啪在线观看|