精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

短網址(short URL)系統的原理及其實現

移動開發
做一個短鏈接生成器,可以將一個長鏈接縮短成一個短鏈接。本文記錄了開發短網址系統的整個過程,包括初期的算法調研、模塊設計、數據庫設計、功能擴展等。

背景

提供一個短址服務

你有沒有發現,我們的任務中出現長 URL 就會比較麻煩?如果有一個短址生成器就好了。雖然市面上有很多,但是我們可以重復發明一個輪子,利用這個機會嘗試一下簡單的 Web 全棧開發。

[[210840]]

任務

做一個短鏈接生成器,可以將一個長鏈接縮短成一個短鏈接。

要發車了 :bus:

發車前,和大家說一下

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

本文記錄了開發短網址系統的整個過程,包括初期的算法調研、模塊設計、數據庫設計、功能擴展等。

什么是短鏈接 :link:

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

  1. 百度短網址 http://dwz.cn/
  2. 谷歌短網址服務 https://goo.gl/ (需科學上網)號稱是最快的 :rocket:

原理解析

  1. 當我們在瀏覽器里輸入 http://t.cn/RlB2PdD 時
  2. DNS首先解析獲得 http://t.cn 的 IP 地址

當 DNS 獲得 IP 地址以后(比如:74.125.225.72),會向這個地址發送 HTTP GET 請求,查詢短碼 RlB2PdD

  1. http://t.cn 服務器會通過短碼 RlB2PdD 獲取對應的長 URL
  2. 請求通過 HTTP 301 轉到對應的長 URL https://m.helijia.com 。
  3. 這里有個小的知識點,為什么要用 301 跳轉而不是 302 吶?
  4. 301 是永久重定向,302 是臨時重定向。短地址一經生成就不會變化,所以用 301 是符合 http 語義的。同時對服務器壓力也會有一定減少。

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

來自知乎 iammutex 的 答案

算法實現

網上比較流行的算法有兩種 自增序列算法、 摘要算法

算法一

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

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

如下圖:十進制 10000,對應不同進制的字符表示。

短網址(short URL)系統的原理及其實現

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

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

具體的算法實現,自行谷歌。

算法二

  1. 將長網址 md5 生成 32 位簽名串,分為 4 段, 每段 8 個字節
  2. 對這四段循環處理, 取 8 個字節, 將他看成 16 進制串與 0x3fffffff(30位1) 與操作, 即超過 30 位的忽略處理

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

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

這種算法,雖然會生成4個,但是仍然存在重復幾率

兩種算法對比

  • 第一種算法的好處就是簡單好理解,永不重復。但是短碼的長度不固定,隨著 id 變大從一位長度開始遞增。如果非要讓短碼長度固定也可以就是讓 id 從指定的數字開始遞增就可以了。百度短網址用的這種算法。上文說的開源短網址項目 YOURLS 也是采用了這種算法。 源碼學習
  • 第二種算法,存在碰撞(重復)的可能性,雖然幾率很小。短碼位數是比較固定的。不會從一位長度遞增到多位的。據說微博使用的這種算法。

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

流程圖

自增序列算法流程圖

 

  1. st=>start: 開始 
  2. e=>end: 結束 
  3. io1=>inputoutput: 輸入網址 
  4. io2=>inputoutput: 返回短網址 
  5. op1=>operation: 返回對應的短碼 
  6. op2=>operation: 保存輸入的網址到數據庫 
  7. op3=>operation: 根據id計算對應的短碼 
  8. op4=>operation: 更新短碼到數據庫 
  9. cond1=>condition: 查詢數據庫 
  10. 是否存在對 
  11. 應的短碼 
  12.  
  13. st->io1->cond1 
  14. cond1(no,bottom)->op2->op3->op4->op1->io2->e 
  15. cond1(yes)->op1->io2->e 

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

 

  1. st=>start: 開始 
  2. e=>end: 結束 
  3. io1=>inputoutput: 輸入網址 
  4. io2=>inputoutput: 返回短網址 
  5. io3=>inputoutput: 提示用戶 
  6. 該短碼已存在 
  7. io4=>inputoutput: 提示用戶 
  8. 不能輸入短鏈接 
  9. op1=>operation: 返回短碼 
  10. op2=>operation: 保存輸入的網址到數據庫 
  11. op3=>operation: 根據id計算對應的短碼 
  12. op4=>operation: 查詢數據庫 
  13. 獲得一條 
  14. 自定義短碼的url 
  15. 對應的id記錄 
  16. op5=>operation: 更新短碼到數據庫 
  17. cond1=>condition: 查詢數據庫 
  18. 是否存在該URL 
  19. cond2=>condition: 用戶選擇 
  20. 自定義短碼 
  21. cond3=>condition: 生成的短碼 
  22. 是否存在 
  23. cond4=>condition: 短碼是否存在 
  24. cond5=>condition: 短碼是否存在 
  25. cond6=>condition: 自定義的短碼 
  26. 是否存在 
  27. cond7=>condition: 用戶輸入的是短鏈接 
  28.  
  29. st->io1->cond7 
  30. cond7(no,bottom)->cond1 
  31. cond7(yes)->io4->e 
  32. cond1(no,bottom)->cond2 
  33. cond1(yes)->op1->io2->e 
  34. cond2(no,bottom)->op3->cond4 
  35. cond2(yes)->cond5 
  36. cond4(no, bottom)->op5->op1->io2->e 
  37. cond4(yes)->op4->op3->cond4 
  38. cond5(no,bottom)->op5 
  39. cond5(yes)->io3->e 

百度短網址還允許用戶自定義短碼,算法二 摘要算法,不和 id 綁定,好像挺好實現這個功能的。

但是自增序列算法是和 id 綁定的,如果允許自定義短碼就會占用之后的短碼,之后的 id 要生成短碼的時候就發現短碼已經被用了,那么 id 自增一對一不沖突的優勢就體現不出來了。

那么怎么實現自定義短碼吶?

我是這樣處理的:

  • 數據庫增加一個類型 type 字段,用來標記短碼是用戶自定義生成的,還是系統自動生成的。
  • 如果有用戶自定義過短碼,把它的類型標記自定義。每次根據 id 計算短碼的時候,如果發現對應的短碼被占用了,就從類型為自定義的記錄里選取一條記錄,用它的 id 去計算短碼。
  • 這樣既可以區分哪些長連接是用戶自己定義還是系統自動生成的,還可以不浪費被自定義短碼占用的 id

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

短網址(short URL)系統的原理及其實現

數據表設計

links 表

 

短網址(short URL)系統的原理及其實現

后期功能擴展

  • 統計:點擊量、訪問的 ip 地域、用戶使用的設備
  • 管理后臺:刪除、數據量
  • 登錄:權限管理
  • 設置密碼:輸入密碼才可以繼續訪問
責任編輯:未麗燕 來源: SegmentFault
相關推薦

2022-02-25 14:11:48

短網址Java算法

2017-10-12 15:34:17

2011-03-18 10:26:47

Java對象

2023-10-30 13:31:22

Springboot工具Java

2020-09-25 08:49:42

HashMap

2011-04-22 13:10:46

計算機邏輯門

2012-09-10 10:39:04

IBMdw

2021-10-31 23:57:33

Eslint原理

2018-10-15 12:42:21

2025-10-28 02:11:00

2015-11-03 09:24:12

Java讀寫鎖分析

2009-07-10 14:55:34

2020-10-29 10:47:25

云計算容量管理

2018-05-25 14:51:42

敏捷軟件開發測試

2011-07-08 09:21:01

域控制器主域控制器額外域控制器

2015-01-26 12:31:59

混合云云存儲

2020-08-16 11:37:27

Python開發工具

2024-06-26 00:20:42

2022-09-13 17:45:40

長網址短鏈系統

2024-04-24 08:32:55

.NET對象映射
點贊
收藏

51CTO技術棧公眾號

久久电影网电视剧免费观看| 精品久久精品| 欧美性猛交xxxxx免费看| 免费久久一级欧美特大黄| 中文字幕乱码视频| 亚洲精品午夜av福利久久蜜桃| 日韩精品一区二区三区老鸭窝 | 中国av免费看| 久久久国产精品网站| 亚洲一区二区精品视频| 日韩av电影免费播放| 超碰在线观看99| 日韩不卡手机在线v区| 欧美精品做受xxx性少妇| 免费看污黄网站在线观看| 精品一区二区三区四区五区| 欧美视频一二三| 国产又大又长又粗又黄| 日韩av视屏| 国产主播一区二区三区| 日韩av电影院| 久久久精品91| 99精品视频在线| 亚洲美女视频网站| 成人三级做爰av| 涩涩网在线视频| 一区二区三区四区视频精品免费| 任我爽在线视频精品一| 亚洲毛片欧洲毛片国产一品色| 欧美aⅴ一区二区三区视频| 午夜精品三级视频福利| 欧美 日韩 国产 一区二区三区| 国产成人黄色| 精品国产凹凸成av人网站| 三日本三级少妇三级99| 视频精品导航| 一本大道久久a久久精二百 | www欧美xxxx| 亚洲丝袜自拍清纯另类| 日本一区高清在线视频| 亚洲av成人精品日韩在线播放| 国产剧情一区在线| 成人黄色激情网| 国产裸体美女永久免费无遮挡| 一区二区福利| 68精品国产免费久久久久久婷婷| 久久婷婷综合国产| 欧美成人tv| 久久夜色撩人精品| 午夜免费激情视频| 午夜电影亚洲| 欧美乱人伦中文字幕在线| 开心激情五月网| 99久久99久久精品国产片果冰| 国产亚洲一级高清| 少妇愉情理伦三级| 欧美超碰在线| 久久久av亚洲男天堂| 一起操在线播放| 91精品国产91久久久久久密臀| 日韩在线观看免费高清| 亚洲精品一区二区三区在线播放| 欧美独立站高清久久| 在线中文字幕日韩| a级黄色免费视频| 国产精品久久久久久久久久10秀 | 蜜桃久久精品一区二区| 国产精品小说在线| 国产精品久久久久久久久久久久久久久久久久 | 国产精品区在线| 亚洲欧美在线综合| 日韩一区二区免费高清| 国产视频精品视频| 亚洲毛片免费看| 一本色道久久综合亚洲精品小说| 国产精品久久久久久久av| 97人人精品| 久久久久久久国产精品| 日本三级午夜理伦三级三| 国产精品永久| 成人妇女淫片aaaa视频| 北条麻妃一二三区| 91蝌蚪porny| 亚洲欧美国产不卡| 色呦呦久久久| 色噜噜偷拍精品综合在线| 91国产精品视频在线观看| **日韩最新| 亚洲精品电影网站| 日本少妇aaa| 亚洲精品男同| 国产欧美一区二区三区四区| www.97av| 国产欧美精品日韩区二区麻豆天美| 亚洲综合视频一区| 国产网站在线| 欧美日韩国产高清一区二区三区| 欧美性猛交乱大交| 国产欧美一区二区精品久久久| yw.139尤物在线精品视频| 久久午夜免费视频| 激情成人午夜视频| 欧美日韩精品免费看| 91一区二区三区在线| 一本大道久久a久久精二百| 中文字幕1区2区| 狠狠做六月爱婷婷综合aⅴ| 欧美成人免费小视频| 国产一级片免费视频| 国产aⅴ综合色| 午夜午夜精品一区二区三区文| 日本动漫同人动漫在线观看| 在线一区二区三区| 中文字幕人妻一区二区三区| 亚洲精品国产偷自在线观看| 国产精品1234| 亚洲 另类 春色 国产| 亚洲精品第1页| 久久99999| 久久99精品久久久久久园产越南| 欧美大片在线影院| 136福利视频导航| 国产偷v国产偷v亚洲高清| 日韩精品在线观看av| 99精品视频在线免费播放| 亚洲人成网站999久久久综合| 久草免费在线视频观看| 精品系列免费在线观看| 视频一区二区综合| 亚洲第一二三四区| 日韩不卡在线观看| 日韩欧美大片在线观看| 国产凹凸在线观看一区二区| 天天综合五月天| 精品亚洲a∨| 中文综合在线观看| 国产九色91回来了| 国产午夜精品久久| 欧美伦理片在线看| 国产一区二区三区91| 98视频在线噜噜噜国产| 亚洲高清视频网站| 夜夜嗨av一区二区三区网页 | 亚洲国产中文在线二区三区免| 久久精品视频99| 国产乱码一区二区| 亚洲免费观看视频| 亚洲少妇一区二区| 亚洲视频免费| 狠狠久久综合婷婷不卡| 国产美女高潮在线观看| 日韩精品视频在线观看免费| 国产精品男女视频| 久久婷婷久久一区二区三区| 337p粉嫩大胆噜噜噜鲁| 亚洲丝袜啪啪| 国产精品aaaa| 在线播放麻豆| 欧美一激情一区二区三区| 欧美日韩免费一区二区| 国产成人精品影视| 久久久亚洲精品无码| 色老板在线视频一区二区| 奇米4444一区二区三区| 国产乱子伦三级在线播放| 欧美在线观看视频一区二区 | 国产日韩精品电影| 超碰在线caoporn| 精品国一区二区三区| 日韩三级视频在线播放| 91玉足脚交白嫩脚丫在线播放| jizzjizzxxxx| 成人羞羞视频播放网站| 成人综合网网址| 2020国产在线| 中文字幕一区电影| 亚洲国产一二三区| 日本精品一级二级| 日韩精品123区| av不卡一区二区三区| chinese少妇国语对白| 国产精品毛片久久| 国产精品国产一区二区 | 在线精品亚洲一区二区不卡| 少妇高潮惨叫久久久久| 国产99久久久国产精品潘金网站| 91av资源网| 91麻豆国产自产在线观看亚洲| 高清av免费一区中文字幕| 英国三级经典在线观看| 日韩在线一区二区三区免费视频| 性生活视频软件| 91官网在线免费观看| avove在线播放| 久久久精品国产99久久精品芒果| 久久久精品视频国产| 午夜亚洲伦理| 强开小嫩苞一区二区三区网站| 日韩欧美在线精品| 亚洲a一级视频| free欧美| 97se视频在线观看| 中文字幕乱码视频| 亚洲电影在线播放| 四虎国产成人精品免费一女五男| 国产精品资源网| www.四虎成人| 欧美激情第二页| 日韩欧美激情一区二区| 国产精伦一区二区三区| 国产精品夜色7777狼人| 深夜成人在线| 欧美麻豆久久久久久中文 | 亚洲全黄一级网站| 黄色aaa大片| 91精品一区二区三区久久久久久| 欧美videossex极品| 一区二区三区四区五区视频在线观看 | 国产一区二区三区四区视频| 疯狂做受xxxx高潮欧美日本| 日本中文字幕免费在线观看| 欧美经典三级视频一区二区三区| 一本加勒比波多野结衣| 国模一区二区三区白浆| 亚洲视频在线观看一区二区三区| 亚洲美女网站| 免费网站在线观看视频| 91av精品| 在线观看成人av电影| 欧美伦理影院| 欧洲一区二区在线| 西瓜成人精品人成网站| 国产欧美精品一区二区三区| 日韩视频一二区| 5g国产欧美日韩视频| 性欧美video另类hd尤物| 国产成人一区二区三区小说| 中文字幕资源网在线观看免费| 久久免费观看视频| xxxx成人| 91精品国产高清自在线| 91禁在线看| 国自产精品手机在线观看视频| 成人在线高清免费| 欧美极品少妇xxxxⅹ裸体艺术| 日本在线观看大片免费视频| 色综合五月天导航| 青草青在线视频| 欧美激情喷水视频| heyzo高清国产精品| 亚洲18私人小影院| 爱搞国产精品| 5278欧美一区二区三区| 天堂√中文最新版在线| 青青草一区二区| 国产一区二区三区朝在线观看| 国产精品福利小视频| 成人综合网站| 91在线中文字幕| 91蝌蚪精品视频| 国产一区免费在线| 在线亚洲a色| 亚洲欧美日韩综合一区| 我不卡手机影院| 波多野结衣av一区二区全免费观看| 国产精品videosex极品| 免费一级特黄特色毛片久久看| 亚洲一区二区网站| 嫩草影院国产精品| 国产一区二区三区四区在线观看| 无码人妻一区二区三区一| 99久久99久久综合| 在线免费观看视频| 亚洲欧美日韩中文字幕一区二区三区 | 免费在线超碰| 日韩中文字幕亚洲| 激情影院在线| 日韩免费观看av| 亚洲青青一区| 精品欧美国产| 久久综合88| 国产精品12345| 青青草国产精品97视觉盛宴| 中文字幕一区二区三区四| gogo大胆日本视频一区| 免费看的黄色网| 亚洲一区在线观看免费观看电影高清 | 久久久人成影片免费观看| 久久国产精品网| 免费观看成人鲁鲁鲁鲁鲁视频| 不卡的一区二区| 国产亚洲综合av| 久久97人妻无码一区二区三区| 一本大道av一区二区在线播放| 国产成人免费看一级大黄| 精品视频久久久久久久| 国产乱色在线观看| 欧美洲成人男女午夜视频| 久久亚洲精精品中文字幕| 麻豆av一区二区三区| 久久久五月天| 一本大道熟女人妻中文字幕在线 | 国产中文一区二区| 91久久国产| 日韩精品免费播放| 成人高清免费观看| 青青青手机在线视频| 福利微拍一区二区| 亚洲国产一二三区| 久久九九国产精品怡红院 | 在线视频你懂得一区| 人妻精品无码一区二区| 精品精品国产国产自在线| 韩国主播福利视频一区二区三区| 99免费在线观看视频| 欧美成人精品一区二区三区在线看| 青青青在线播放| 99热精品一区二区| 国产一级片网址| 欧美一区二区三区在线看| 国模精品一区二区| 欧美一级在线亚洲天堂| aaa国产精品视频| www.99riav| 国产毛片精品一区| 国产3级在线观看| 精品视频资源站| 国产午夜视频在线观看| 欧美一区二三区| 欧美1区二区| 免费拍拍拍网站| 成人午夜短视频| 欧美精品一级片| 日韩限制级电影在线观看| 成人在线app| 91亚洲国产成人久久精品网站| 日韩综合一区| 亚洲欧美aaa| 亚洲欧美日韩在线播放| 97人妻精品一区二区三区动漫| 色av吧综合网| 天天综合在线观看| 黄色www在线观看| 国产一区二区三区免费看| 欧美性x x x| 日韩小视频在线观看专区| 青春草在线免费视频| 国产精品免费一区二区三区在线观看| 欧美日韩视频| 国产日韩视频一区| 精品国产乱码久久久久久虫虫漫画 | 一区二区三区久久精品| 美国黄色小视频| 色欲综合视频天天天| 免费看男男www网站入口在线 | 性无码专区无码| 亚洲一区二区久久久| 99久久婷婷国产综合精品首页 | 91精品综合久久| 欧美三级不卡| 精品中文字幕在线播放| 大荫蒂欧美视频另类xxxx| 极品白浆推特女神在线观看 | 中文久久乱码一区二区| 一二三四区在线| 欧美另类69精品久久久久9999| 国产精品任我爽爆在线播放| 北条麻妃在线视频观看| 国产视频亚洲色图| 国产精品女人久久久| 久久久亚洲天堂| 精品欧美激情在线观看| 奇米视频7777| 亚洲福利视频三区| 理论在线观看| 91美女福利视频高清| 亚洲国产专区| 丰满的亚洲女人毛茸茸| 欧美一区二区三区在线看| 精精国产xxxx视频在线野外| 欧美一区二区视频在线| 国产精品2024| 免费黄色网址在线| 久久人人爽人人爽爽久久| 久久夜色电影| 日本特黄a级片| 亚洲电影一区二区三区| 91社区在线| 国产精品自拍首页| 免费成人性网站| 国产午夜小视频| 日韩视频精品在线| 欧美电影免费网站| 热久久久久久久久| 欧美视频在线观看 亚洲欧| 精品176二区| 欧美在线一区二区三区四区| 国产精品一区专区| 亚洲精品国产欧美在线观看| 欧美精品久久久久久久|