網(wǎng)站免費(fèi)推廣的方式 有沒有免費(fèi)的短網(wǎng)址工具?
有沒有免費(fèi)的短網(wǎng)址工具?我是@程序員小助手,本文從技術(shù)角度,對短網(wǎng)址參與深度挖掘。前言網(wǎng)上早就有產(chǎn)品,用著還還好。但,作為程序員,從頭學(xué)習(xí)造輪子,開發(fā)一個屬于什么自己的短網(wǎng)址服務(wù)器,這想法amazin
有沒有免費(fèi)的短網(wǎng)址工具?
我是@程序員小助手,本文從技術(shù)角度,對短網(wǎng)址參與深度挖掘。
前言網(wǎng)上早就有產(chǎn)品,用著還還好。但,作為程序員,從頭學(xué)習(xí)造輪子,開發(fā)一個屬于什么自己的短網(wǎng)址服務(wù)器,這想法amazing!
通過本文,讀者可明白短網(wǎng)址的技術(shù)原理,以及實際Go語言實現(xiàn)程序一個短網(wǎng)址服務(wù)。
簡明教程短網(wǎng)址為么未知?
微博等產(chǎn)品的興起,亢奮了網(wǎng)上的社交圈內(nèi)大多數(shù)用戶??墒俏⒉┚拖裼?40字限制,如果不轉(zhuǎn)發(fā)消息,前者評論文字,再加上一段網(wǎng)址,極有可能最多限制而被截斷。
短網(wǎng)址因運(yùn)而生,用長短不同的一個字符串,替換較長的一個字符串,從觀感上講,效果要不友善的多。
從技術(shù)原理上說,短網(wǎng)址是一個hash表,作用于折射兩個字符串的對應(yīng)關(guān)系。
在用鍵,可以找到按的值,重定向參與訪問,就完成了整個流程。
短網(wǎng)址算法短網(wǎng)址的一般結(jié)構(gòu),諸如新浪的SwuTjn,其中后端的一段6位字符串,那就是利用任何標(biāo)記一條記錄的ID。這樣,不使用什么算法,這個可以生成一條無再重復(fù)一遍的ID呢?
建議使用通用的做法,使用0-9A-Za-z一共有多少62個字符,我們看建議使用hash鍵位數(shù)各有多少種排列組合情況。
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個字符,就起碼在用了,約計568億種可能。
有一種情況是,用原網(wǎng)址字符串的MD5值,一共32位,后再按照切兩類4段,四個按位與運(yùn)算,并裁切到30位。不宜超過5位改選該位的字符作為該段索引,總共6位。但是這種做法也有幾率再一次發(fā)生重復(fù),也不非常直觀。
但本文不使用第一種算法生成鍵ID。
工具馬上準(zhǔn)備分析什么短網(wǎng)址的特性,包含200元以內(nèi)項目:
唯一性:鍵要全局唯一時效性:鍵是需要有過期時間目標(biāo)網(wǎng)址真正,假如重復(fù),則不自動回既有的鍵。決定到上述情形,我們使用redis存儲位置這些對應(yīng)關(guān)系。使用Gin框架充當(dāng)路由和控制器,提供對外的API訪問。
核心函數(shù)計算機(jī)中常見的2進(jìn)制,8進(jìn)制,10進(jìn)制,16進(jìn)制,我們此處必須可以使用62個字符,循環(huán)意思是一個整數(shù),那就可稱之為62進(jìn)制。
下面可以使用go語言實現(xiàn)方法這個函數(shù),應(yīng)用于將橫豎斜的整數(shù)(uint64)轉(zhuǎn)換為(0-9A-Za-z)的字符串。
是需要盡量,基礎(chǔ)的方法,應(yīng)該是非循環(huán)取余數(shù),根據(jù)進(jìn)制字典,索引你所選的字符,然后把將各個余數(shù)拼接進(jìn)去,就是結(jié)果。
這個計算方法,與2進(jìn)制,8進(jìn)制,原理是相同的。
由于字典比較好長,有62個鍵值對,我們僅列出一部分。
上述事項函數(shù)的轉(zhuǎn)換結(jié)果,不同于648926400175ai0p
功能規(guī)劃下面是對于系統(tǒng)路由,創(chuàng)建家族短鏈接,包括建議使用短鏈接不能訪問目標(biāo)網(wǎng)址的方法。
1-規(guī)劃路由
路由也很簡單的,最少2個,一個POST方法,生成短鏈接;一個是GET方法,ftp訪問短鏈接。
代碼萬分感謝:
2-化入redis并初始化
目的是更方便演示,我們不使用redis存儲鍵值,并系統(tǒng)設(shè)置expire時間。我們可以使用you-redis需要提供的接口操作redis數(shù)據(jù)庫。
下面是全局的
對象生成氣體,和初始化設(shè)置函數(shù)。
那樣做的好處是,我們?nèi)侄伎梢圆徊皇褂米兞縭db內(nèi)部函數(shù)方法操作redis鍵值。
3-實現(xiàn)POST路由方法:assign
本函數(shù)用于能接收form表單數(shù)據(jù),能生成一個全局真正的hash,才是鍵,卡內(nèi)redis,設(shè)置中值和快到期時間。
代碼萬分感謝:
本段我們建議使用了一個getCounter函數(shù),這是系統(tǒng)設(shè)置在redis內(nèi)的鍵,將其每次來只是請求創(chuàng)建角色的時候,自增1,可能保證無重復(fù)。據(jù)這個計數(shù)器,我們調(diào)用helper的DecToAny方法,將其轉(zhuǎn)化成為62進(jìn)制的字符串,才是全局同樣的hash值。
下圖是getCounter的定義:
尤其注意一點的是,helper包,就是我們在“核心函數(shù)”部分定義的函數(shù)。在主函數(shù)體內(nèi)摘錄。
4-實現(xiàn)程序GET方法:visit
本函數(shù)主要注意主要用于使用上一節(jié)接口生成氣體的短鏈接,并且訪問,并自動重定向到目標(biāo)網(wǎng)址。
代碼萬分感謝:
這對不未知的短鏈接,或是redis資源失敗的可能,回出現(xiàn)了錯誤信息。
如果不是存在,可以使用301StatusMovedPermanently狀態(tài)碼重定向到目標(biāo)地址。
測試我們在用curl工具,測試3根據(jù)上述規(guī)定兩個接口。
簡單,可以使用POST表單遞交數(shù)據(jù):
curl-s-XPOST-dtarget-dexpire600:9090/
本案所涉方法,我們重新提交了兩個參數(shù),命中等級路由之后,會訪問上一節(jié)第3條的add方法,并能生成一個短鏈接網(wǎng)址。前往JSON格式數(shù)據(jù)萬分感謝:
{message:ok,frequent_url::9090/75ai0r,status:1}
其中,short_url就是短網(wǎng)址。
而后,我們在可以使用curl訪問這個鏈接,看如何確定突然發(fā)生重定向。截圖::
看的到,想執(zhí)行了301重定向,并提出了目標(biāo)網(wǎng)址,與我們上列表單是想創(chuàng)建的地址完全不同。
后來,故障測試。訪問網(wǎng)絡(luò)一個不未知的hash,看是否是首先排除無比信息。截圖::
可以清晰的看到,負(fù)責(zé)執(zhí)行了錯誤趕往信息。
結(jié)語以上我們建議使用GO語言框架Gin實現(xiàn)程序了兩個路由,并不使用redis管理短鏈接。核心函數(shù)使用helper包管理,經(jīng)測試出來,實現(xiàn)程序了短網(wǎng)址的功能。
以內(nèi)代碼在本地測試按照,也可重新部署到線上服務(wù)器組織開發(fā)端口,提供服務(wù),效果是差不多的。
我希望按照這個流程,使大家相對于短網(wǎng)址的知識,有一些打聽一下,并能依據(jù)自身的編程能力,獨立創(chuàng)作出好些得用短網(wǎng)址服務(wù)。
beautifulcoding:-)
【本文由@程序員小助手公告,持續(xù)彼此分享編程與程序員成長會相關(guān)的內(nèi)容,請關(guān)注】
請問怎樣才能把自己的產(chǎn)品免費(fèi)推廣出去,讓銷售量大?
免費(fèi)推廣得看是什么產(chǎn)品,有些專業(yè)啊產(chǎn)品,做能免費(fèi)做推廣做的再說也能推廣出好效果。若不是競爭激烈產(chǎn)品,那你哦了!做推廣最有用的那就是分析什么產(chǎn)品的特性,分析競爭狀況,怎么制作最適合自己的方案,后再堅定不移的如樓上老兄問及的某幾種相結(jié)合,以求量變達(dá)到質(zhì)變!