分享者呼叫短鏈結生成介面傳遞原始鏈結
2. 短鏈結生成伺服器接受請求,生成乙個短鏈結,儲存短鏈結和原始鏈結的對映,最後把短鏈結返回給分享者
3. 分享者將短鏈結分享給使用者
4. 使用者訪問短鏈結
5. 短鏈結伺服器接受請求,根據短鏈結路徑查詢原始鏈結並做重定向
利用mysql主鍵自增屬性,將原始鏈結插入mysql資料表獲得自增id
2. 將自增id轉64進製字串
3. 將短鏈結網域名稱拼接64進製字串即短鏈結的url
例如:原始鏈結插入mysql資料表獲取自增id為1,1轉64進製字串a,若短鏈結網域名稱為則短鏈結的url為
十進位制轉64進製和64進製轉10進製:
var dectob64map = map[int]string
// 64進製轉10進製
func b64todec(b64 string) int
return dec
}// 十進位制轉64進製
func dectob64(dec int) string
return b64
}// map結構鍵值互換
func mapkeyvaluechange(data map[int]string) map[string]int
return newdata
}
var shorthost = "www.s.cn:8082"
// 短鏈結路徑轉長鏈結
func shorttolong(short string) string )
if err != nil
return url
}// 長鏈結轉短鏈結
func longtoshort(long string) string
// 十進位制轉64進製
b64 := dectob64(int(lastinsertid))
// 組合短鏈結網域名稱返回
return fmt.sprintf("%s/%s", shorthost, b64)
}
// 獲取短鏈結服務
// 長鏈結轉短鏈結並返回給客戶端
shorturl := longtoshort(url)
if shorturl == ""
fmt.fprintln(w, shorturl)
}// 跳轉長鏈結服務
// 路徑轉長鏈結並重定向
}
上述完整demo可以戳這裡:demo
上述簡單的介紹了一下短鏈結生成的大概方案,但想要運用於生產環境還遠遠不夠,一方面,可以使用redis快取操作頻繁生成和訪問的鏈結,另一方面,將系統做成集群化來實現可伸縮和高可用。
SQL連線伺服器鏈結失敗
鏈結伺服器 agpsserver 的 ole db 訪問介面 sqlncli10 返回了訊息 登入超時已過期 鏈結伺服器 agpsserver 的 ole db 訪問介面 sqlncli10 返回了訊息 與 sql server 建立連線時發生了與網路相關的或特定於例項的錯誤。找不到或無法訪問伺服器...
SQL鏈結伺服器
由於公司內部涉及到許多的庫之間的操作,相互間有很多是通過鏈結伺服器方式是直接訪問操作,具體增加鏈結伺服器的指令碼如下 被訪問的伺服器別名 declare servername varchar 20 被訪問的伺服器鏈結 declare serverip varchar 20 訪問的賬號 密碼 decl...
SQL鏈結伺服器
建立鏈結伺服器 sp addlinkedserver 引數 server db sql 被訪問的伺服器別名 srvproduct provider sqloledb datasrc server2 要訪問的伺服器 sp addlinkedsrvlogin 引數 db sql 被訪問的伺服器別名 fa...