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

如何免費(fèi)建立一個(gè)網(wǎng)站 有沒有免費(fèi)的短網(wǎng)址工具?

有沒有免費(fèi)的短網(wǎng)址工具?我是@程序員的小助手。本文從技術(shù)的角度,對短網(wǎng)址進(jìn)行了深度挖掘。前言網(wǎng)上已經(jīng)有產(chǎn)品了,用起來還不錯(cuò)。但是,作為一個(gè)程序員,從零開始造輪子,開發(fā)一個(gè)屬于自己的短URL服務(wù)器,是很

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

我是@程序員的小助手。本文從技術(shù)的角度,對短網(wǎng)址進(jìn)行了深度挖掘。

前言網(wǎng)上已經(jīng)有產(chǎn)品了,用起來還不錯(cuò)。但是,作為一個(gè)程序員,從零開始造輪子,開發(fā)一個(gè)屬于自己的短URL服務(wù)器,是很了不起的!

通過本文,讀者可以了解短URL的技術(shù)原理,并通過Go語言實(shí)現(xiàn)一個(gè)短URL服務(wù)。

簡明教程的短URL為什么會(huì)存在?

微博等產(chǎn)品的興起,活躍了網(wǎng)絡(luò)社交圈的大部分用戶。但是微博一般有140字的限制。如果你不 t轉(zhuǎn)發(fā),單純評論文字,加上網(wǎng)站的一段,極有可能超限被截。

短URL應(yīng)運(yùn)而生,用一個(gè)更短的字符串代替一個(gè)更長的字符串,從觀感上來說要友好很多。

從技術(shù)上講,短URL是一個(gè)哈希表,用來映射兩個(gè)字符串之間的對應(yīng)關(guān)系。

使用鍵,找到對應(yīng)的值,重定向到access,完成整個(gè)過程。

短URL算法(Short URL algorithm)短URL的一般結(jié)構(gòu),如新浪的SwuTjn,后端的一個(gè)6位字符串是用來唯一標(biāo)記一條記錄的ID。那么,用什么算法可以生成一個(gè)不重復(fù)的ID呢?

使用通用方法,使用0-9 A-Z a-z,共62個(gè)字符,let 讓我們看看使用散列密鑰數(shù)字有多少排列和組合。

一個(gè)位置:62種冪(62,1)

2位數(shù):pow(62,2) 3844種

3位數(shù):pow(62,3) 238328種。

4位數(shù):pow(62,4) 14776336種。

5位數(shù):pow(62,5) 916132832種。

6位數(shù):pow(62,6) 56800235584種。

一般來說,六個(gè)字符就夠了,有568億種可能。

還有一種情況,原始URL字符串的MD5值一共32位,然后分成4段,分別按位與,截成30位。每隔5位選取該位的字符作為本段的索引,共6位。但這種做法也有重復(fù)的可能,并不直觀。

因此,本文采用第一種算法來生成密鑰ID。

該工具可以分析短URL的特征,包括以下項(xiàng)目:

惟一性:密鑰需要是全局惟一的和時(shí)間敏感的:密鑰需要有一個(gè)截止日期,并且目標(biāo)URL是惟一的。如果它們是重復(fù)的,現(xiàn)有的密鑰將自動(dòng)返回??紤]到以上情況,我們使用redis來存儲這些對應(yīng)關(guān)系。Gin框架被用作路由器和控制器來提供外部API訪問。

核心函數(shù)計(jì)算機(jī)中常見的二進(jìn)制、八進(jìn)制、十進(jìn)制和十六進(jìn)制,我們這里需要用62個(gè)字符循環(huán)表示一個(gè)整數(shù),所以可以稱之為62。

讓 s用go語言實(shí)現(xiàn)這個(gè)函數(shù),用來把任意整數(shù)(uint64)轉(zhuǎn)換成(0-9A-Za-z)的字符串。

需要注意,紀(jì)基本方法是循環(huán)取余數(shù),根據(jù)十進(jìn)制字典索引對應(yīng)的字符,然后將余數(shù)拼接在一起,就是結(jié)果。

這個(gè)計(jì)算方法和二進(jìn)制、八進(jìn)制是一樣的。

因?yàn)樽值浜荛L,有62個(gè)鍵值對,所以我們只列出其中的一部分。

上述函數(shù)的轉(zhuǎn)換結(jié)果類似于6489264001 75ai0p。

功能規(guī)劃以下是系統(tǒng)路由、創(chuàng)建短鏈接、使用短鏈接訪問目標(biāo)URL的方法。

1-計(jì)劃工藝路線

路由比較簡單,一共兩個(gè),一個(gè)POST方法,生成短鏈接;一個(gè)是GET方法,它訪問短鏈接。

代碼如下:

2-介紹redis并初始化

為了演示方便,我們使用redis存儲鍵值并設(shè)置過期時(shí)間。我們使用go-redis提供的接口來操作redis數(shù)據(jù)庫。

以下是全局。

對象生成和初始化功能。

這樣做的好處是,我們可以使用變量rdb調(diào)用方法來全局操作redis鍵值。

3-實(shí)施發(fā)布路由方法:添加

這個(gè)函數(shù)用于接收表單數(shù)據(jù),生成一個(gè)全局唯一的散列,作為一個(gè)鍵,存儲在redis中,設(shè)置值和過期時(shí)間。

代碼如下:

在這一段中,我們使用了一個(gè)getCounter函數(shù),它是redis中的一個(gè)鍵集。每次請求創(chuàng)建它時(shí),它都會(huì)增加1,以確保沒有重復(fù)。根據(jù)這個(gè)計(jì)數(shù)器,我們稱之為助手 s DecToAny方法,并將其轉(zhuǎn)換為62位字符串作為全局唯一的哈希值。

下圖是getCounter的定義:

要特別注意助手包,這是我們在 "核心功能和部分。主函數(shù)體中的引用。

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

這個(gè)函數(shù)主要是利用上一節(jié)接口生成的短鏈接來訪問并自動(dòng)重定向到目標(biāo)URL。

代碼如下:

對于不 t exist,或者redis無法獲取,則返回一條錯(cuò)誤消息。

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

測試我們使用curl工具來測試上面兩個(gè)接口。

首先,使用POST表單提交數(shù)據(jù):

curl-s-X POST-d targ: 9090/

在上面的方法中,我們提交了兩個(gè)參數(shù)。命中路由后,我們將訪問上一節(jié)第3條中的add方法,并生成一個(gè)短鏈接URL。以JSON格式返回?cái)?shù)據(jù),如下所示:

{m:ok,short_url:ech O3-@ . comlocalhost: 9090/75 ai0r,status CHO 8-@ . com 1 }

其中short_url是短url。

接下來,我們使用curl來訪問這個(gè)鏈接,看看是否發(fā)生了重定向。截圖如下:

如您所見,執(zhí)行了301重定向并給出了目標(biāo)URL,這與我們在上面的表單中想要?jiǎng)?chuàng)建的地址一致。

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

如您所見,執(zhí)行了一條錯(cuò)誤返回消息。

以上結(jié)論,我們使用GO語言框架Gin實(shí)現(xiàn)兩條路由,使用r:-)

【本文由@程序員 的助手,并繼續(xù)分享與編程和程序員 的成長。歡迎關(guān)注。]

免費(fèi)網(wǎng)站如何賺錢的呢?

首先,你需要讓你的網(wǎng)頁成為一個(gè)有用的網(wǎng)頁,一個(gè)精致的網(wǎng)頁,這樣才會(huì)有很多用戶愛的網(wǎng)頁,而且內(nèi)容會(huì)不斷更新,質(zhì)量很高,也會(huì)愛問你的網(wǎng)頁。然后,你可以通過在廣告平臺投放廣告來獲取利潤。如果你的網(wǎng)頁做得很好,成功吸引了其他公司的注意,那么有些公司就會(huì)聯(lián)系你的站長,要求你在你網(wǎng)站適合添加廣告的免費(fèi)區(qū)域?yàn)樗麄兊漠a(chǎn)品添加廣告。

如果你的網(wǎng)站是一個(gè)分享網(wǎng),一個(gè)資源下載網(wǎng),提供下載服務(wù),你可以把你想分享的資源上傳到一個(gè)盈利的網(wǎng)盤,比如誠通網(wǎng)盤。用戶點(diǎn)擊下載,會(huì)跳轉(zhuǎn)到網(wǎng)盤免費(fèi)下載,但是網(wǎng)盤下載頁面會(huì)有廣告,但是并沒有 不影響用戶只是下載,但你會(huì)很富有。如果你的資源足夠有用,足夠稀有,下載量大,那么你的收入就會(huì)增加。