如何通過乙個 int 陣列生成唯一的 int 型別 id?且陣列元素固的話生成的 id 也固定?

時間 2021-05-30 22:37:07

1樓:陳森

不可能是唯一的。

其實問題可以轉化為乙個簡單的排列組合問題:1000個不同元素裡每次取出0個,1個,2個,…,1000個不同元素,那麼它產生的所有可能共有 : 2^" eeimg="1"/>

顯然是不可能一一對映的。

2樓:zpan

如果你知道這個陣列的 int 的組合是有限的話,那可以排序後插入乙個 set,並且插入的同時記錄乙個最大 id,每次增 1。

3樓:xlzd

不可能實現。

int 陣列是乙個無限集,int 型別是乙個有限集(43 億不到),把乙個無限集對映到乙個有限集上,一定會發生衝突(比如各種雜湊演算法)。

以有窮求無窮,必殆矣。

4樓:PegasusWang

import hashlib

def md5(string):

return hashlib.md5(string).hexdigest()

l1 = [1,2,3]

l2 = [2,1,3]

md5(str(sorted(l139;49a5a960c5714c2e29dd1a7e7b950741'

md5(str(sorted(l239;49a5a960c5714c2e29dd1a7e7b950741'

不是完全不可能,只是一定場景我們是可以實現的。(比如資料量不大,限定了陣列長度等),拋棄使用場景談設計是沒意義的。

如果能通過資料庫儲存這個 md5,查詢沒有 md5 的就自增 id,否則直接查詢出其 id。這樣就實現了針對每個元素相同的無序陣列都保證了只有乙個 id。(看場景)

如果是關聯式資料庫,可以這麼設計, (id, md5, list)。如果是記憶體資料庫就直接用個 set 來記錄是否有 md5(沒有資料庫直接存個 set 比如 python set),然後對於 set 沒有的 md5 自增 id 就行。

請問如何生成乙個短小的唯一的編碼

zane zhou 雪花演算法生成ID 是為了解決分布式ID的問題。特點是高效能,低延遲,按時間有序,一般不會造成ID碰撞。你需要結合你系統的實際情況來決定怎麼處理ID生成問題。非分布式系統 如果你的系統壓根不是分布式,生成ID就是個很簡單的事情。你可以用乙個自定義結構 流水號,在記憶體中自增來解決...

鍊錶有三個成員乙個int,和char 陣列,以及指向本結構指標,為什麼注釋掉char陣列就報錯?

在你while迴圈的地方有錯誤,首先先用意義臨時的結構體指標接收要被你free的節點,然後再讓你的context指向next 最後再free 你想要free的那個儲存臨時節點的臨時結構體指標 free完之後要將臨時物件置空,建議而已 樹狀 補充說說為什麼有asdf不會報錯。堆的管理,通常會在一塊空閒...

Mysql我通過程式來生成乙個UUID,做主鍵可行嗎?

水巷先生 問題一分為二 Q1 MySQL我通過程式來生成乙個UUID,做主鍵可行嗎?當然,完全沒有任何問題,你完全可以這麼幹!這裡需要注意的別的問題,比如 要通過程式約束,保證唯一性。不過程式幹的事情多了,效能損耗多少都是會有的。Q2 是否有必要設定乙個無實際意義的自增ID做主鍵?當然,完全是有必要...