卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

go語(yǔ)言數(shù)據(jù)庫(kù)查詢結(jié)果 有沒(méi)有免費(fèi)的短網(wǎng)址工具?

有沒(méi)有免費(fèi)的短網(wǎng)址工具?我是@程序員小助手,本文從技術(shù)角度,對(duì)短網(wǎng)址并且深度挖掘。前言網(wǎng)上早有產(chǎn)品,用著還比較好。不過(guò),另外程序員,從零做起造輪子,變更土地性質(zhì)一個(gè)都屬于自己的短網(wǎng)址服務(wù)器,這想法am

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

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

前言網(wǎng)上早有產(chǎn)品,用著還比較好。不過(guò),另外程序員,從零做起造輪子,變更土地性質(zhì)一個(gè)都屬于自己的短網(wǎng)址服務(wù)器,這想法amazing!

本文,讀者可明白了短網(wǎng)址的技術(shù)原理,和通過(guò)Go語(yǔ)言基于一個(gè)短網(wǎng)址服務(wù)。

簡(jiǎn)明教程短網(wǎng)址為么未知?

微博等產(chǎn)品的興起,重新活躍了網(wǎng)上的社交圈內(nèi)大多數(shù)用戶??墒俏⒉┖孟笥?40字限制,假如不轉(zhuǎn)發(fā)消息,單單評(píng)論文字,再而且一段網(wǎng)址,極有可能超過(guò)限制而被截?cái)唷?/p>

短網(wǎng)址應(yīng)運(yùn)而生,用較短的一個(gè)字符串,替換較長(zhǎng)的一個(gè)字符串,從觀感上講,效果要表示友好的多。

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

使用鍵,能找到隨機(jī)的值,重定向通過(guò)訪問(wèn),就成功了整個(gè)流程。

短網(wǎng)址算法短網(wǎng)址的一般結(jié)構(gòu),例如新浪的SwuTjn,其中后端的一段6位字符串,那是單獨(dú)任何標(biāo)記一條記錄的ID。這樣的話,建議使用什么算法,這個(gè)可以生成一條無(wú)重復(fù)一遍的ID呢?

建議使用通用的做法,不使用0-9A-Za-z總共62個(gè)字符,我們看在用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個(gè)字符,就足夠在用了,總共568億種可能。

還有一個(gè)一種情況是,用原網(wǎng)址字符串的MD5值,一共32位,接著切分成三類4段,共有按位與運(yùn)算,并裁剪到30位。不要超過(guò)5位選出該位的字符作為該段索引,共有6位。但這種做法也有幾率突然發(fā)生重復(fù),也不非常直觀。

因此本文不使用第一種算法生成鍵ID。

工具準(zhǔn)備分析什么短網(wǎng)址的特性,真包含以上項(xiàng)目:

唯一性:鍵需要全局僅有時(shí)效性:鍵必須有沒(méi)過(guò)期時(shí)間目標(biāo)網(wǎng)址同樣,如果重復(fù),則自動(dòng)趕往既有的鍵??紤]到上列情形,我們可以使用redis存儲(chǔ)這些對(duì)應(yīng)關(guān)系。不使用Gin框架以及路由和控制器,提供對(duì)外的API訪問(wèn)。

核心函數(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)的字符串。

要特別注意,基礎(chǔ)的方法,那就是非循環(huán)取余數(shù),依據(jù)進(jìn)制字典,索引或者的字符,后再將各個(gè)余數(shù)拼接出去,是結(jié)果。

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

的原因字典比較長(zhǎng),有62個(gè)鍵值對(duì),我們僅列一一部分。

上述事項(xiàng)函數(shù)的轉(zhuǎn)換結(jié)果,傳說(shuō)中的648926400175ai0p

功能規(guī)劃下面是相對(duì)于系統(tǒng)路由,修改短鏈接,和可以使用短鏈接不能訪問(wèn)目標(biāo)網(wǎng)址的方法。

1-規(guī)劃路由

路由比較很簡(jiǎn)單,一共有多少2個(gè),一個(gè)POST方法,生成沉淀短鏈接;一個(gè)是GET方法,ftp訪問(wèn)短鏈接。

代碼::

2-核心中redis并初始化

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

下面是全局的

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

那樣的話做的好處是,我們?nèi)侄伎梢圆徊皇褂米兞縭db內(nèi)部函數(shù)方法操作redis鍵值。

3-基于POST路由方法:assign

本函數(shù)用于接收f(shuō)orm表單數(shù)據(jù),能生成一個(gè)全局同樣的hash,另外鍵,存入redis,設(shè)置中值和過(guò)期時(shí)間。

代碼追加:

本段我們?cè)谟昧艘粋€(gè)getCounter函數(shù),這是可以設(shè)置在redis內(nèi)的鍵,將其你每次請(qǐng)求修改的時(shí)候,自增1,可絕對(duì)的保證無(wú)重復(fù)。依據(jù)這個(gè)計(jì)數(shù)器,我們動(dòng)態(tài)創(chuàng)建helper的DecToAny方法,將其轉(zhuǎn)化成為62進(jìn)制的字符串,作為全局唯一的hash值。

下圖是getCounter的定義:

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

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

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

代碼萬(wàn)分感謝:

對(duì)于不存在的短鏈接,的或redis獲取失敗,趕往錯(cuò)誤`信息。

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

測(cè)試我們不使用curl工具,測(cè)試出來(lái)本案所涉兩個(gè)接口。

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

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

本案所涉方法,我們遞交了兩個(gè)參數(shù),物理命中路由之后,會(huì)訪問(wèn)上一節(jié)第3條的add方法,并能生成一個(gè)短鏈接網(wǎng)址。直接返回JSON格式數(shù)據(jù)如下:

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

其中,short_url應(yīng)該是短網(wǎng)址。

接著,我們?cè)诓皇褂胏url不能訪問(wèn)這個(gè)鏈接,看是否是不可能發(fā)生重定向。截圖不勝感激:

可以找到,先執(zhí)行了301重定向,并能提供了目標(biāo)網(wǎng)址,與我們上列表單想修改的地址不對(duì)。

后來(lái),故障測(cè)試。ftp連接一個(gè)不存在地的hash,看是否是排除腎炎極其信息。截圖萬(wàn)分感謝:

可以清晰的看到,執(zhí)行了錯(cuò)誤前往信息。

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

以內(nèi)代碼在本地測(cè)試實(shí)際,也可布署到線上服務(wù)器聯(lián)合開(kāi)發(fā)端口,提供服務(wù),效果是一般的。

如果能是從這個(gè)流程,使大家這對(duì)短網(wǎng)址的知識(shí),有一些了解,并能據(jù)自身的編程能力,獨(dú)立創(chuàng)作出好是用短網(wǎng)址服務(wù)。

beautifulcoding:-)

【本文由@程序員小助手先發(fā)布,堅(jiān)持了分享編程與程序員生命成長(zhǎng)相關(guān)的內(nèi)容,感謝關(guān)注】

sqlserver怎么獲取表列名的描述?

--按照不勝感激語(yǔ)句能夠得到當(dāng)前Sql server中所有的數(shù)據(jù)的名稱:usemasterselect[name]around[sysdatabases]order by[name]run--網(wǎng)站查詢數(shù)據(jù)庫(kù)中的所有用戶表use[DBname]select[id],[name]around[sysobjects]where[type]#39u#39order by[name]--是從上面的查詢的id,這個(gè)可以查出這個(gè)表中所有的字段,.例如我們?nèi)ゲ樵傿aseData表中所有的字段,就可以實(shí)際下面的語(yǔ)句好查:

select[name]around[syscolumns]where[id]2087000699order by[colid]you你所說(shuō)的問(wèn)題的語(yǔ)句是:

select[name],*outside[syscolumns]order by[id]