このリポジトリから同時マッピングを使用していますが、newwithcustomshardingfunction
を使用してマッピングを作成するときにキーの種類を選択できます。 。 int64
キーに独自のシャーディング関数を提供する必要があるだけです。これはここで使用しているものです。
また、ジェネリックスを使用できる go
の最新バージョンも使用しているため、独自のシャーディング機能を実装して concurrent-map
を使用することにしました。キーは ## です。 #int64。
リーリー
int64 キーに適しているかどうかを知りたいですか、それともより良いシャーディング関数を使用する必要がありますか?
index out of range エラーやその他の問題が発生する状況は避けたいです。
ハッシュ関数です。この関数は、キーを 32 ビット空間全体に均等に分散する必要があります。
init64 値の下位 4 バイトが均等に分散されている場合、uint32(key) がスライス関数として使用されます。
uint32(key) 間違った選択の例としては、下位バイトが定数値を持つ場合があります。たとえば、キーの値が 0x00010000、0x00020000、... のような場合、
uint32(key) は 0 と評価されます。これは一様な分布ではありません。
リーリー
以上がgolang の int64 キーに対するより優れたシャーディング機能はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。