1
誰可以解釋代碼,它是twitter雪花的核心。想到twitter雪花中的位移IdWorker
long nextId = ((timestamp - twepoch) << this.timestampLeftShift)
| (this.workerId << this.workerIdShift) | (this.sequence);
我想知道,該算法的思考,爲什麼它會實現?
誰可以解釋代碼,它是twitter雪花的核心。想到twitter雪花中的位移IdWorker
long nextId = ((timestamp - twepoch) << this.timestampLeftShift)
| (this.workerId << this.workerIdShift) | (this.sequence);
我想知道,該算法的思考,爲什麼它會實現?
Twitter的雪花服務在分佈式環境中創建獨特的ID。許多工作進程都可以分配唯一的ID。 ID由三部分組成:時間,工作人員ID和序列號。您顯示的代碼行簡單地移動了這三個組件,以便它們在64位結果中不重疊,或者將它們組合在一起以創建單個64位結果。
喜奈德巴徹爾德,這意味着我自己可以如代碼的下改變它的算法: 長nextId =((時間戳 - twepoch)<< 2) | (this.workerId << 3)| (this.sequence << 5); 這是作爲你的答案嗎? – snageyang
即時通過併發測試上面的代碼10 thread:long nextId =((timestamp - twepoch)<< 2)| (this.workerId << 3)| (this.sequence << 5),id的結果可以重複,代碼如何。 – snageyang
我沒有說你可以改變代碼,它會繼續工作。移位量取決於三個組件的大小。它們不重疊很重要。 –