日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
創(chuàng)新互聯(lián)GoFrame教程:GoFrame唯一數(shù)-guid

?guid?提供了更簡(jiǎn)便更高性能的唯一數(shù)生成功能。

目前成都創(chuàng)新互聯(lián)公司已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁(yè)空間、網(wǎng)站托管運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、海拉爾網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

?guid?模塊的設(shè)計(jì)目的在于提供一種使用更簡(jiǎn)便、性能更高效且能滿(mǎn)足絕大多數(shù)業(yè)務(wù)場(chǎng)景的唯一數(shù)生成。?guid?的設(shè)計(jì)比較簡(jiǎn)單,詳情可參考實(shí)現(xiàn)源碼。

使用方式:

import "github.com/GOgf/gf/v2/util/guid"

接口文檔:

https://pkg.go.dev/github.com/gogf/gf/v2/util/guid

基本介紹

?guid?通過(guò)?S?方法生成32字節(jié)的唯一數(shù),該方法定義如下:

func S(data ...[]byte) string

1、通過(guò)不帶任何參數(shù)的方式使用,該方法生成的唯一數(shù)將會(huì)有以下方式構(gòu)成:

?MAC(7) + PID(4) + TimestampNano(12) + Sequence(3) + RandomString(6) ?

其中:

  • ?MAC?表示當(dāng)前機(jī)器的?MAC?地址哈希值,由7個(gè)字節(jié)構(gòu)成;
  • ?PID?表示當(dāng)前機(jī)器的進(jìn)程?ID?哈希值,由4個(gè)字節(jié)構(gòu)成;
  • ?TimestampNano?表示當(dāng)前的納秒時(shí)間戳哈希值,由12個(gè)字節(jié)構(gòu)成;
  • ?Sequence?表示當(dāng)前進(jìn)程并發(fā)安全的序列號(hào),由3個(gè)字節(jié)構(gòu)成;
  • ?RandomString?表示隨機(jī)數(shù),由6個(gè)字節(jié)構(gòu)成;

2、通過(guò)自定義任何參數(shù)的方式使用,該方法生成的唯一數(shù)將會(huì)有以下方式構(gòu)成:

?Data(7/14) + TimestampNano(12) + Sequence(3) + RandomString(3/10) ?

主要說(shuō)明:

  • ?Data?表示自定義的參數(shù),參數(shù)類(lèi)型為?[]byte?,最多支持2個(gè)參數(shù)輸入,由7或14個(gè)字節(jié)構(gòu)成;
  • 需要注意的是,輸入的自定義參數(shù)需要在業(yè)務(wù)上具有一定的唯一識(shí)別性,使得生成的唯一數(shù)更有價(jià)值;
  • 不管每一個(gè)?[]byte?參數(shù)長(zhǎng)度為多少,最終都將通過(guò)哈希方式生成7個(gè)字節(jié)的哈希值。
  • ?TimestampNano?表示當(dāng)前的納秒時(shí)間戳哈希值,由12個(gè)字節(jié)構(gòu)成;
  • ?Sequence?表示當(dāng)前進(jìn)程并發(fā)安全的序列號(hào),由3個(gè)字節(jié)構(gòu)成;
  • ?RandomString?表示隨機(jī)數(shù),由3或者10個(gè)字節(jié)構(gòu)成,即:
    • 如果給定1個(gè)自定義參數(shù),那么剩余的字節(jié)將會(huì)使用隨機(jī)數(shù)占位,長(zhǎng)度為10個(gè)字節(jié);
    • 如果給定2個(gè)自定義參數(shù),那么剩余的字節(jié)將會(huì)使用隨機(jī)數(shù)占位,長(zhǎng)度為3個(gè)字節(jié);

示例1,基本使用

package main

import (
	"fmt"
	"github.com/gogf/gf/v2/util/guid"
)

func main() {
	fmt.Printf("TraceId: %s", guid.S())
}

執(zhí)行后,輸出結(jié)果為:

TraceId: oa9sdw03dk0c35q9bdwcnz42p00trwfr

示例2,自定義參數(shù)

我們的?SessionId?生成需要具有比較好的唯一性,且需要防止輕易的碰撞,因此可以使用以下方式:

func CreateSessionId(r *ghttp.Request) string {
    var (
        address = request.RemoteAddr
        header  = fmt.Sprintf("%v", request.Header)
    )
    return guid.S([]byte(address), []byte(header))
}

可以看到,?SessionId?需要依靠自定義的兩個(gè)輸入?yún)?shù)?RemoteAddr?, ?Header?來(lái)生成,這兩個(gè)參數(shù)在業(yè)務(wù)上具有一定的唯一識(shí)別性,且通過(guò)?guid.S?方法的設(shè)計(jì)構(gòu)成,生成的唯一數(shù)將會(huì)非常隨機(jī)且唯一,既滿(mǎn)足了業(yè)務(wù)需要也保證了安全。


名稱(chēng)欄目:創(chuàng)新互聯(lián)GoFrame教程:GoFrame唯一數(shù)-guid
URL地址:http://www.dlmjj.cn/article/coeedec.html