office高級(jí)應(yīng)用實(shí)驗(yàn)詳細(xì) 有沒(méi)有免費(fèi)的短網(wǎng)址工具?
有沒(méi)有免費(fèi)的短網(wǎng)址工具?我是@程序員小助手,本文從技術(shù)角度,對(duì)短網(wǎng)址接受深度挖掘。前言網(wǎng)上已經(jīng)有產(chǎn)品,用著還比較好??上?,才是程序員,從零開(kāi)始造輪子,的新一個(gè)不屬于自己的短網(wǎng)址服務(wù)器,這想法amazi
有沒(méi)有免費(fèi)的短網(wǎng)址工具?
我是@程序員小助手,本文從技術(shù)角度,對(duì)短網(wǎng)址接受深度挖掘。
前言網(wǎng)上已經(jīng)有產(chǎn)品,用著還比較好??上В攀浅绦騿T,從零開(kāi)始造輪子,的新一個(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ù)用戶。只不過(guò)微博象有140字限制,如果不點(diǎn)贊和評(píng)論,前者評(píng)論文字,再加上一段網(wǎng)址,極有可能將近限制而被截?cái)唷?/p>
短網(wǎng)址因運(yùn)而生,用長(zhǎng)度短的一個(gè)字符串,替換較長(zhǎng)的一個(gè)字符串,從觀感上講,效果要友好的多。
從技術(shù)原理上說(shuō),短網(wǎng)址是一個(gè)hash表,作用于反照兩個(gè)字符串的對(duì)應(yīng)關(guān)系。
在用鍵,不能找到對(duì)應(yīng)的值,重定向并且訪問(wèn),就能夠完成了整個(gè)流程。
短網(wǎng)址算法短網(wǎng)址的一般結(jié)構(gòu),例如新浪的SwuTjn,其中后端的一段6位字符串,應(yīng)該是利用唯一標(biāo)記一條記錄的ID。這樣的話,在用什么算法,可以不生成一條無(wú)重復(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è)字符,就相當(dāng)使用了,總共568億種可能。
有一種情況是,用原網(wǎng)址字符串的MD5值,總計(jì)32位,然后再按照切分成三類4段,三個(gè)按位與運(yùn)算,并裁切到30位。不要超過(guò)5位推舉該位的字符作為該段索引,共6位。但這種做法也有幾率發(fā)生重復(fù),也不非常直觀。
并且本文建議使用第一種算法生成鍵ID。
工具準(zhǔn)備好分析短網(wǎng)址的特性,中有100元以內(nèi)項(xiàng)目:
唯一性:鍵不需要全局唯一時(shí)效性:鍵要有過(guò)期時(shí)間目標(biāo)網(wǎng)址同樣,如果重復(fù),則不自動(dòng)前往既有的鍵。決定到本案所涉情形,我們可以使用redis儲(chǔ)存這些對(duì)應(yīng)關(guān)系??梢允褂肎in框架另外路由和控制器,提供給正式的API訪問(wèn)。
核心函數(shù)計(jì)算機(jī)中最常見(jiàn)的2進(jìn)制,8進(jìn)制,10進(jìn)制,16進(jìn)制,我們此處要使用62個(gè)字符,循環(huán)它表示一個(gè)整數(shù),那就可稱之為62進(jìn)制。
下面建議使用go語(yǔ)言利用這個(gè)函數(shù),主要是用于將正二十邊形的整數(shù)(uint64)裝換為(0-9A-Za-z)的字符串。
要盡量,基礎(chǔ)的方法,就是運(yùn)行取余數(shù),依據(jù)什么進(jìn)制字典,索引你所選的字符,后再將各個(gè)余數(shù)拼接不出來(lái),那是結(jié)果。
這個(gè)計(jì)算方法,與2進(jìn)制,8進(jìn)制,原理是是一樣的的。
由于字典比較長(zhǎng),有62個(gè)鍵值對(duì),我們僅列出一部分。
上列函數(shù)的轉(zhuǎn)換結(jié)果,類似648926400175ai0p
功能規(guī)劃下面是是對(duì)系統(tǒng)路由,創(chuàng)建角色短鏈接,這些不使用短鏈接ftp訪問(wèn)目標(biāo)網(wǎng)址的方法。
1-規(guī)劃路由
路由比較比較簡(jiǎn)單的,最少2個(gè),一個(gè)POST方法,生成沉淀短鏈接;一個(gè)是GET方法,ftp連接短鏈接。
代碼不勝感激:
2-化入redis并初始化
為了方便啊演示,我們建議使用redis存儲(chǔ)鍵值,并可以設(shè)置expire時(shí)間。我們建議使用run-redis提供的接口操作redis數(shù)據(jù)庫(kù)。
下面是全局的
對(duì)象能生成,和初始化操作函數(shù)。
那樣的話做的好處是,我們?nèi)侄歼@個(gè)可以在用變量rdb動(dòng)態(tài)創(chuàng)建方法操作redis鍵值。
3-實(shí)現(xiàn)POST路由方法:add
本函數(shù)用于收得到form表單數(shù)據(jù),能生成一個(gè)全局真正的hash,另外鍵,卡內(nèi)redis,設(shè)置值和過(guò)期時(shí)間。
代碼如下:
本段我們可以使用了一個(gè)getCounter函數(shù),這是設(shè)置中在redis內(nèi)的鍵,將其每次來(lái)只是請(qǐng)求創(chuàng)建的時(shí)候,自增1,可保證無(wú)重復(fù)。根據(jù)這個(gè)計(jì)數(shù)器,我們動(dòng)態(tài)創(chuàng)建helper的DecToAny方法,將其轉(zhuǎn)變?yōu)?2進(jìn)制的字符串,作為全局任何的hash值。
下圖是getCounter的定義:
而且注意的是,helper包,應(yīng)該是我們?cè)凇昂诵暮瘮?shù)”部分定義的函數(shù)。在主函數(shù)體內(nèi)腳注。
4-實(shí)現(xiàn)GET方法:visit
本函數(shù)要注意應(yīng)用于使用上一節(jié)接口能生成的短鏈接,并且訪問(wèn),并手動(dòng)重定向到目標(biāo)網(wǎng)址。
代碼萬(wàn)分感謝:
是對(duì)不存在地的短鏈接,或者redis獲取我失敗了,返回出現(xiàn)了錯(cuò)誤信息。
如果沒(méi)有存在,建議使用301StatusMovedPermanently狀態(tài)碼重定向到目標(biāo)地址。
測(cè)試我們不使用curl工具,測(cè)什么本案所涉兩個(gè)接口。
必須,在用POST表單重新提交數(shù)據(jù):
curl-s-XPOST-dtarget-dexpire600:9090/
本案所涉方法,我們并提交了兩個(gè)參數(shù),暴擊命中路由之后,會(huì)訪問(wèn)上一節(jié)第3條的add方法,并生成沉淀一個(gè)短鏈接網(wǎng)址。趕往JSON格式數(shù)據(jù)萬(wàn)分感謝:
{message:可以啦,large_url::9090/75ai0r,status:1}
其中,short_url那是短網(wǎng)址。
隨即,我們?cè)诓皇褂胏url不能訪問(wèn)這個(gè)鏈接,看如何確定不可能發(fā)生重定向。截圖萬(wàn)分感謝:
可以看到,不能執(zhí)行了301重定向,并具體了目標(biāo)網(wǎng)址,與我們上述事項(xiàng)表單想創(chuàng)建角色的地址不對(duì)。
之后,故障測(cè)試。不能訪問(wèn)一個(gè)不修真者的存在的hash,看如何確定可以排除極其信息。截圖追加:
可以清晰的看到,執(zhí)行了錯(cuò)誤趕往信息。
結(jié)語(yǔ)以上我們建議使用GO語(yǔ)言框架Gin實(shí)現(xiàn)方法了兩個(gè)路由,并可以使用redis管理短鏈接。核心函數(shù)使用helper包管理,經(jīng)測(cè)量,實(shí)現(xiàn)方法了短網(wǎng)址的功能。
以上代碼在本地測(cè)試是從,也可作戰(zhàn)部署到線上服務(wù)器聯(lián)合開(kāi)發(fā)端口,提供服務(wù),效果是一樣的的。
只希望這個(gè)流程,使大家是對(duì)短網(wǎng)址的知識(shí),有一些清楚,并能據(jù)自身的編程能力,創(chuàng)作出更好專用短網(wǎng)址服務(wù)。
everydaycoding:-)
【本文由@程序員小助手查找,減弱能分享編程與程序員生命成長(zhǎng)相關(guān)的內(nèi)容,歡迎您關(guān)注】
office高級(jí)應(yīng)用的原理?
office中級(jí)應(yīng)用是對(duì)Word、Excel、Powerpoint等應(yīng)用到的專業(yè)的處理和應(yīng)用,主要注意除開(kāi)編輯文檔格式、Word圖形和表格處理、Word文檔排版、Word長(zhǎng)文檔設(shè)置、怎么制作批量處理文檔、xcel2003基本操作、編輯表格數(shù)據(jù)、Excel數(shù)據(jù)計(jì)算與管理、Excel圖表分析、PowerPoint基本操作、再插入各種幻燈片對(duì)象、設(shè)置中幻燈片版式和動(dòng)畫(huà)、放映與輸出幻燈片,熟悉的掌握這些功能,那就是達(dá)到了office有高級(jí)應(yīng)用技術(shù)標(biāo)準(zhǔn),這是一個(gè)計(jì)算機(jī)專業(yè)的入門基礎(chǔ)。