成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

github數(shù)據(jù)分析教程 有沒有免費(fèi)的短網(wǎng)址工具?

有沒有免費(fèi)的短網(wǎng)址工具?我是@程序員小助手,本文從技術(shù)角度,對(duì)短網(wǎng)址接受深度挖掘。前言網(wǎng)上早有產(chǎn)品,用著還確實(shí)不錯(cuò)??上?,作為程序員,從零開始造輪子,旗下一個(gè)一類自己的短網(wǎng)址服務(wù)器,這想法amazin

有沒有免費(fèi)的短網(wǎng)址工具?

我是@程序員小助手,本文從技術(shù)角度,對(duì)短網(wǎng)址接受深度挖掘。

前言網(wǎng)上早有產(chǎn)品,用著還確實(shí)不錯(cuò)??上?,作為程序員,從零開始造輪子,旗下一個(gè)一類自己的短網(wǎng)址服務(wù)器,這想法amazing!

通過本文,讀者可明白短網(wǎng)址的技術(shù)原理,以及通過Go語(yǔ)言實(shí)現(xiàn)方法一個(gè)短網(wǎng)址服務(wù)。

簡(jiǎn)明教程短網(wǎng)址為么修真者的存在?

微博等產(chǎn)品的興起,亢奮了網(wǎng)上的社交圈內(nèi)大多數(shù)用戶。但微博好象有140字限制,要是不轉(zhuǎn)發(fā),前者評(píng)論文字,再而且一段網(wǎng)址,極有可能遠(yuǎn)遠(yuǎn)超過限制而被截?cái)唷?/p>

短網(wǎng)址應(yīng)用而生,用較長(zhǎng)的一個(gè)字符串,替換較長(zhǎng)的一個(gè)字符串,從觀感上講,效果要客氣禮貌的多。

從技術(shù)原理上說,短網(wǎng)址是一個(gè)hash表,主要是用于反照兩個(gè)字符串的對(duì)應(yīng)關(guān)系。

建議使用鍵,找不到按的值,重定向參與訪問,就成功了整個(gè)流程。

短網(wǎng)址算法短網(wǎng)址的象結(jié)構(gòu),比如說新浪的SwuTjn,其中后端的一段6位字符串,是為了同樣標(biāo)記一條記錄的ID。這樣的話,在用什么算法,是可以生成一條無重復(fù)一遍的ID呢?

使用通用的做法,不使用0-9A-Za-z一共有多少62個(gè)字符,我們看使用hash鍵位數(shù)四個(gè)有多少種排列組合情況。

1位:pow(62,1)62種

2位:pow(62,2)3844種

3位:pow(62,3)238328種

4位:pow(62,4)14776336種

5位:pow(62,5)916132832種

6位:pow(62,6)56800235584種

一般情況下,6個(gè)字符,就起碼可以使用了,共計(jì)568億種可能。

還有一種情況是,用原網(wǎng)址字符串的MD5值,共計(jì)32位,然后再切分成三類4段,四個(gè)按位與運(yùn)算,并裁切到30位。間隔時(shí)間5位一百名該位的字符以及該段索引,總共6位。不過這種做法也有幾率發(fā)生重復(fù),也不很直觀。

但本文建議使用第一種算法生成鍵ID。

工具馬上準(zhǔn)備總結(jié)短網(wǎng)址的特性,包含200元以內(nèi)項(xiàng)目:

唯一性:鍵需要全局唯一時(shí)效性:鍵不需要有快過期時(shí)間目標(biāo)網(wǎng)址僅有,如果重復(fù),則不自動(dòng)前往既有的鍵。決定到上述事項(xiàng)情形,我們使用redis儲(chǔ)存這些對(duì)應(yīng)關(guān)系。建議使用Gin框架以及路由和控制器,能提供組織的API訪問。

核心函數(shù)計(jì)算機(jī)中常見的2進(jìn)制,8進(jìn)制,10進(jìn)制,16進(jìn)制,我們此處需要使用62個(gè)字符,循環(huán)表示一個(gè)整數(shù),這樣可稱之為62進(jìn)制。

下面建議使用go語(yǔ)言實(shí)現(xiàn)這個(gè)函數(shù),主要是用于將正二十邊形的整數(shù)(uint64)轉(zhuǎn)換為(0-9A-Za-z)的字符串。

需要注意一點(diǎn),基礎(chǔ)的方法,應(yīng)該是非循環(huán)取余數(shù),依據(jù)什么進(jìn)制字典,索引你所選的字符,然后將各個(gè)余數(shù)拼接出來,是結(jié)果。

這個(gè)計(jì)算方法,與2進(jìn)制,8進(jìn)制,原理是同一的。

而字典也很長(zhǎng),有62個(gè)鍵值對(duì),我們僅列出來一部分。

根據(jù)上述規(guī)定函數(shù)的轉(zhuǎn)換結(jié)果,類似648926400175ai0p

功能規(guī)劃下面是對(duì)此系統(tǒng)路由,創(chuàng)建戰(zhàn)隊(duì)短鏈接,和在用短鏈接ftp訪問目標(biāo)網(wǎng)址的方法。

1-規(guī)劃路由

路由比較比較簡(jiǎn)單啊,最少2個(gè),一個(gè)POST方法,生成氣體短鏈接;一個(gè)是GET方法,ftp訪問短鏈接。

代碼如下:

2-核心中redis并初始化

為了方便些演示,我們使用redis存儲(chǔ)鍵值,并可以設(shè)置expire時(shí)間。我們不使用play-redis可以提供的接口操作redis數(shù)據(jù)庫(kù)。

下面是全局的

對(duì)象生成沉淀,和初始化函數(shù)。

這樣做的好處是,我們?nèi)侄家部梢允褂米兞縭db調(diào)用方法操作redis鍵值。

3-實(shí)現(xiàn)程序POST路由方法:assign

本函數(shù)主要用于接收form表單數(shù)據(jù),生成沉淀一個(gè)全局真正的hash,另外鍵,存進(jìn)redis,設(shè)置中值和有效期時(shí)間。

代碼不勝感激:

本段我們使用了一個(gè)getCounter函數(shù),這是設(shè)置在redis內(nèi)的鍵,將其每次跪請(qǐng)創(chuàng)建的時(shí)候,自增1,可絕對(duì)的保證無重復(fù)。據(jù)這個(gè)計(jì)數(shù)器,我們調(diào)用helper的DecToAny方法,將其轉(zhuǎn)化為62進(jìn)制的字符串,充當(dāng)全局僅有的hash值。

下圖是getCounter的定義:

而且再注意的是,helper包,那是我們?cè)凇昂诵暮瘮?shù)”部分定義的函數(shù)。在主函數(shù)體內(nèi)摘錄。

4-實(shí)現(xiàn)方法GET方法:visit

本函數(shù)要注意應(yīng)用于使用上一節(jié)接口生成的短鏈接,參與訪問,并自動(dòng)啟動(dòng)重定向到目標(biāo)網(wǎng)址。

代碼::

是對(duì)不必然的短鏈接,或是redis獲取我失敗了,返回出現(xiàn)錯(cuò)誤信息。

如果存在,不使用301StatusMovedPermanently狀態(tài)碼重定向到目標(biāo)地址。

測(cè)試我們可以使用curl工具,測(cè)什么上列兩個(gè)接口。

簡(jiǎn)單的方法,不使用POST表單提交數(shù)據(jù):

curl-s-XPOST-dtarget-dexpire600:9090/

上列方法,我們提交了兩個(gè)參數(shù),命中路由之后,會(huì)不能訪問上一節(jié)第3條的add方法,并生成氣體一個(gè)短鏈接網(wǎng)址。趕往JSON格式數(shù)據(jù)不勝感激:

{message:可以啦,small_url::9090/75ai0r,status:1}

其中,short_url是短網(wǎng)址。

而后,我們?cè)诮ㄗh使用curlftp連接這個(gè)鏈接,看是否不可能發(fā)生重定向。截圖::

看的到,負(fù)責(zé)執(zhí)行了301重定向,并給出了目標(biāo)網(wǎng)址,與我們根據(jù)上述規(guī)定表單想創(chuàng)建戰(zhàn)隊(duì)的地址相同。

最后,故障測(cè)試。訪問一個(gè)不修真者的存在的hash,看是否先排除異常信息。截圖如下:

看的到,執(zhí)行了錯(cuò)誤直接返回信息。

結(jié)語(yǔ)以上我們不使用GO語(yǔ)言框架Gin實(shí)現(xiàn)方法了兩個(gè)路由,并使用redis管理短鏈接。核心函數(shù)在用helper包管理,當(dāng)經(jīng)過測(cè)試3,基于了短網(wǎng)址的功能。

以上代碼在本地測(cè)試,也可重新部署到線上服務(wù)器組織開發(fā)端口,提供服務(wù),效果是差不多的。

如果能實(shí)際這個(gè)流程,使大家相對(duì)于短網(wǎng)址的知識(shí),有一些清楚,并能依據(jù)自身的編程能力,創(chuàng)作出更好得用短網(wǎng)址服務(wù)。

beautifulcoding:-)

【本文由@程序員小助手公告,緩慢多多分享編程與程序員進(jìn)階相關(guān)的內(nèi)容,記得關(guān)注】

如何寫好API接口文檔?

接口文檔的好壞,是對(duì)對(duì)接人員來說肯定那就很有用的,另外前端開發(fā)人員,后端給的接口很亂會(huì)讓我更亂,所以才寫好一個(gè)接口文檔是非常重要的,下面就來談?wù)剬懞靡粋€(gè)接口文檔應(yīng)該要再注意哪些方面

接口名稱

這里統(tǒng)一時(shí)間可以使用小寫如:api/order/get

可建議參考跟著Github怎么學(xué)習(xí)RestfulHTTPAPI設(shè)計(jì)

url提供客戶端不使用的全路徑

如:8080/api/order/let's

只是請(qǐng)求協(xié)議

Http,Https

幫忙

POST,try等

頭部(系統(tǒng)參數(shù))

加了密簽名,時(shí)間戳等

請(qǐng)求參數(shù)(業(yè)務(wù))

業(yè)務(wù)相關(guān)的輸入輸入?yún)?shù)

發(fā)令參數(shù)(業(yè)務(wù))

輸出參數(shù)

返回示例

定義返回結(jié)果數(shù)據(jù)結(jié)構(gòu),更非常直觀

1.直接返回成功了

2.回失敗