亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

go內(nèi)存緩存BigCache之Entry封裝源碼閱讀

 更新時間:2023年09月05日 14:05:39   作者:海生  
這篇文章主要介紹了go內(nèi)存緩存BigCache之Entry封裝源碼閱讀

介紹

在bigcache存儲中,數(shù)據(jù)值存儲的形式為[]byte。

我們通過一個,存儲的時候,同時會把 hash值,key值,時間戳,entry同時存起來。

我們可以簡稱為 header + entry

header的存儲大小為 18字節(jié) [18]byte

通過wrapEntry()函數(shù)封裝

const (
    timestampSizeInBytes = 8                                                       // Number of bytes used for timestamp
    hashSizeInBytes      = 8                                                       // Number of bytes used for hash
    keySizeInBytes       = 2                                                       // Number of bytes used for size of entry key
    headersSizeInBytes   = timestampSizeInBytes + hashSizeInBytes + keySizeInBytes // Number of bytes used for all headers
)
func wrapEntry(timestamp uint64, hash uint64, key string, entry []byte, buffer *[]byte) []byte {
    keyLength := len(key)
    blobLength := len(entry) + headersSizeInBytes + keyLength
    if blobLength > len(*buffer) {
        *buffer = make([]byte, blobLength)
    }
    blob := *buffer
    binary.LittleEndian.PutUint64(blob, timestamp)
    binary.LittleEndian.PutUint64(blob[timestampSizeInBytes:], hash)
    binary.LittleEndian.PutUint16(blob[timestampSizeInBytes+hashSizeInBytes:], uint16(keyLength))
    copy(blob[headersSizeInBytes:], key)
    copy(blob[headersSizeInBytes+keyLength:], entry)
    return blob[:blobLength]
}

以上就是go內(nèi)存緩存BigCache之Entry封裝源碼閱讀的詳細(xì)內(nèi)容,更多關(guān)于go內(nèi)存緩存BigCache Entry的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • golang flag簡單用法

    golang flag簡單用法

    本篇文章介紹了golang flag包的一個簡單的用法,希望通過一個簡單的實(shí)例,能讓大家了解它的用法,從中獲得啟發(fā)
    2018-09-09
  • 深入理解Golang的反射reflect示例

    深入理解Golang的反射reflect示例

    本文主要介紹了Golang的反射reflect示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 一文詳解Go語言中Mutex互斥鎖

    一文詳解Go語言中Mutex互斥鎖

    Golang中的Mutex互斥鎖是一種常用的并發(fā)控制機(jī)制,用于保護(hù)共享資源的訪問,在本文中,我們將深入探討Mutex互斥鎖的原理、日常使用、鎖結(jié)構(gòu)以及運(yùn)行機(jī)制,需要的朋友可以參考下
    2023-12-12
  • go單例實(shí)現(xiàn)雙重檢測是否安全的示例代碼

    go單例實(shí)現(xiàn)雙重檢測是否安全的示例代碼

    這篇文章主要介紹了go單例實(shí)現(xiàn)雙重檢測是否安全,本文給大家分享雙重檢驗(yàn)示例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • 詳解Go中如何進(jìn)行進(jìn)行內(nèi)存優(yōu)化和垃圾收集器管理

    詳解Go中如何進(jìn)行進(jìn)行內(nèi)存優(yōu)化和垃圾收集器管理

    這篇文章主要為大家詳細(xì)介紹了Go中如何進(jìn)行進(jìn)行內(nèi)存優(yōu)化和垃圾收集器管理,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以了解下
    2023-11-11
  • golang context接口類型方法介紹

    golang context接口類型方法介紹

    這篇文章主要為大家介紹了golang context接口類型方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • GoLang語法之標(biāo)準(zhǔn)庫fmt.Printf的使用

    GoLang語法之標(biāo)準(zhǔn)庫fmt.Printf的使用

    fmt包實(shí)現(xiàn)了類似C語言printf和scanf的格式化I/O,主要分為向外輸出內(nèi)容和獲取輸入內(nèi)容兩大部分,本文就來介紹一下GoLang語法之標(biāo)準(zhǔn)庫fmt.Printf的使用,感興趣的可以了解下
    2023-10-10
  • Golang中下劃線(_)的不錯用法分享

    Golang中下劃線(_)的不錯用法分享

    golang中的下劃線表示忽略變量的意思,也沒有產(chǎn)生新的變量,但是后面的表達(dá)式依然會被執(zhí)行,本文為大家整理了golang中下劃線的一些不錯的用法,需要的可以參考下
    2023-05-05
  • 一文帶你深入探究Go語言中的sync.Map

    一文帶你深入探究Go語言中的sync.Map

    在?Go?語言中,有一個非常實(shí)用的并發(fā)安全的?Map?實(shí)現(xiàn):sync.Map,它是在?Go?1.9?版本中引入的。本文我們將深入探討?sync.Map?的基本原理,幫助讀者更好地理解并使用這個并發(fā)安全的?Map
    2023-04-04
  • Golang中Channel實(shí)戰(zhàn)技巧與一些說明

    Golang中Channel實(shí)戰(zhàn)技巧與一些說明

    channel是Go語言內(nèi)建的first-class類型,也是Go語言與眾不同的特性之一,下面這篇文章主要給大家介紹了關(guān)于Golang中Channel實(shí)戰(zhàn)技巧與一些說明的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11

最新評論