第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

字符串的哈希原型對(duì)象作為 redis 數(shù)據(jù)庫(kù)的鍵

字符串的哈希原型對(duì)象作為 redis 數(shù)據(jù)庫(kù)的鍵

Go
HUWWW 2022-09-26 17:38:35
我有某種復(fù)雜的原型對(duì)象。這是發(fā)送到我的 GRPC 終結(jié)點(diǎn)的請(qǐng)求。如果我以前沒(méi)有處理它,我只想處理它。因此,我想將對(duì)象散列為某個(gè)字符串,并將其存儲(chǔ)在我的 Redis 數(shù)據(jù)庫(kù)中。我使用了對(duì)象哈希原型,但是對(duì)于新版本的原始編譯器,我得到了這個(gè)錯(cuò)誤:got an unexpected struct of type 'impl.MessageState' for field {Name:state PkgPath:... Type:impl.MessageState Tag: Offset:0 Index:[0] Anonymous:false}似乎它不支持結(jié)構(gòu),新版本的protobuf編譯器生成包含結(jié)構(gòu)的代碼。我無(wú)法為每個(gè)請(qǐng)求生成某種 ID。ID 實(shí)際上是整個(gè)對(duì)象的哈希值。
查看完整描述

2 回答

?
UYOU

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊

如果你有一個(gè)[1],那么你可以免費(fèi)獲得一個(gè)元帥函數(shù)[2]。因此,在封送消息后,只需將字節(jié)傳遞給 或 所需的任何內(nèi)容:proto.Messagebase64md5


package main


import (

   "encoding/base64"

   "google.golang.org/protobuf/proto"

   "google.golang.org/protobuf/types/known/structpb"

)


func hash(m proto.Message) (string, error) {

   b, err := proto.Marshal(m)

   if err != nil {

      return "", err

   }

   return base64.StdEncoding.EncodeToString(b), nil

}


func main() {

   m, err := structpb.NewStruct(map[string]interface{}{

      "month": 12, "day": 31,

   })

   if err != nil {

      panic(err)

   }

   s, err := hash(m)

   if err != nil {

      panic(err)

   }

   println(s) // ChIKBW1vbnRoEgkRAAAAAAAAKEAKEAoDZGF5EgkRAAAAAAAAP0A=

}

https://godocs.io/google.golang.org/protobuf/proto#Message

https://godocs.io/google.golang.org/protobuf/proto#Marshal


查看完整回答
反對(duì) 回復(fù) 2022-09-26
?
慕蓋茨4494581

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊

Proto 序列化不穩(wěn)定,因此您不能依賴(lài)對(duì)輸出進(jìn)行封送處理和散列來(lái)為同一條消息生成相同的哈希值。

從 https://developers.google.com/protocol-buffers/docs/reference/go/faq#hash

如何使用協(xié)議緩沖區(qū)消息作為哈希鍵?

您需要規(guī)范序列化,其中協(xié)議緩沖區(qū)消息的封送處理輸出保證隨時(shí)間穩(wěn)定。遺憾的是,目前尚不存在規(guī)范序列化規(guī)范。你需要寫(xiě)自己的,或者找到一種方法來(lái)避免需要一個(gè)。

我能找到的最接近的解決方案是Deepmind對(duì)象哈希原型,但在過(guò)去的4年里沒(méi)有貢獻(xiàn),所以我認(rèn)為它可能已經(jīng)過(guò)時(shí)了。


查看完整回答
反對(duì) 回復(fù) 2022-09-26
  • 2 回答
  • 0 關(guān)注
  • 107 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)