我們有32位全局id字符串,用於識別我們系統中的對象以及唯一標識我們手機客戶端的移動id字符串。目前手機號碼是手機號碼,但可能會生成任何內容。需要雙向縮小散列算法
爲了節省網絡流量,將這兩個字符串組合成另一個更小的字符串(我們稱之爲本地ID),並將該ID傳送到手機而不是全局ID對我們很有用。當電話將本地ID傳回給我們時,我們將本地ID轉換回全局ID並處理它。本地ID必須是手機唯一的,但不是全球唯一的。移動ID已經在客戶端和服務器之間共享,所以不需要傳輸它。
我們的第一個想法是在服務器上有一個巨大的表格陣列,每個表格都將全局ID映射到給定移動ID的本地ID。然而,如果有一個簡單的算法存在,我們可以做
algorithm(mobileid, globalid) = localid -----> server sends localid to client
client sends localid back to server
algorithm(mobileid, localid) = globalid
這甚至可能嗎?如果是,最好的方法是什麼? 請和謝謝。
爲什麼客戶端不使用全局ID? – erickson
因爲這樣做的關鍵是通過讓localid小於globalid來節省網絡流量。 – Ring
鴿子的原理很快證明在一般情況下不存在這樣的算法。服務器上的某種動態查找表真的有問題嗎? –