雪花演算法(03)生成時間

2022-05-19 12:26:59 字數 734 閱讀 1289

前面的理論基礎和位運算都了解了,下面我們來生成雪花演算法的第一部分,也就是時間部分。時間部分的邏輯起始很簡單,就是規定乙個起始時間戳,然後用當前時間戳減去起始時間戳,這兩個數的差就是我們要的結果。簡單看一下**邏輯:

!( 我們規定的起始時間是 2015-01-01 00:00:00 ,然後獲取當前時間,用當前時間減去起始時間,就是我們要的時間部分的數值。這個時候就有乙個問題了,如果我們系統的時鐘錯了會不會有問題?會!所以要做判斷!而且系統的時鐘錯誤也是雪花演算法的乙個致命問題,所以要一定要保證伺服器的系統時間正確。來看一下對時間戳的判斷:

定義了乙個變數last_time_stamp記為上次id的生成時間,每次生成都標記一下,所以這個時間一定是遞增的,如果系統時鐘除了問題,那麼直接報異常。這是對系統時間錯誤的乙個判斷和處理。

就這樣時間部分就生成了,現在看看還是很簡單的。現在我們再來看雪花演算法的時間範圍,由於時間共占有41位,所以時間的數字範圍是有乙個最大值的,寫成2進製就是41個1,比如我們的起始時間是2015-01-01 00:00:00,時間戳是1420041600000l,把41個1轉換成long型別數字,再加上這個時間戳數字,就是乙個雪花演算法最終的時間戳,轉換成時間就是2084-09-06 15:47:35,也就是這個41位時間的雪花演算法最長使用69年9個月6天零15小時47分35秒,不過對於乙個專案來說,這樣的限制不算限制,足足的夠用了。

03 生成微博授權URL介面

python 2.2 新增子路由 oauth urls.py from django.urls import path from import views urlpatterns 2.3 在syl settings.py中新增應用 2.4 在syl urls.py主路由中新增 urlpatterns...

22 生成括號

n n組括號,括號字串長度為2n2n 字串中的每個字元有兩種選擇可能,或 故有22n 2 22 n種可能。分析 1 我們定義兩個變數left和right分別表示剩餘左右括號的個數,如果在某次遞迴時,左括號的個數大於右括號的個數,說明此時生成的字串中右括號的個數大於左括號的個數,即會出現 或者 這樣的...

數學 3 生成函式

生成函式是乙個比較複雜且廣泛的數學知識點,應當重點學習 首先給出一些運算公式,方便以後學習使用 texttt begin alpha f z beta g z sum alpha f n beta g n z n z mg z sum ng z n m geq0 fracz sum g z n m ...