思考(五十一) 登入流程(四)

2021-09-20 10:18:29 字數 495 閱讀 1952

使用 golang 寫閘道器時,通常每個 socket (玩家) 都是併發處理邏輯的

閘道器的第一條訊息,玩家賬號令牌驗證大概率存在併發錯誤,而程式設計師往往無法察覺

本人也是昨天剛剛在壓力測試中發現的,這裡記錄一二

(這裡假設 gateway 具備會話保持的特性)

常見的邏輯基本如下(偽**):

func onmsglogin(...)
以上**同一賬號同時併發登入存在問題

通常會想當然的認為,同賬號 2 次登入,資料庫 token 已經變掉了,所以同賬號 2 次登入,只會有 1 個驗證成功

真實併發時,會存在,資料庫 token 被覆蓋前,上個賬號已經完成 token 驗證

那麼同賬號 2 次登入,在 token 驗證 環節都會成功!

即 1 操作僅為驗證連線的合法性功能,無法保證 onmsglogin 函式被重入

踢出舊賬號,常見的僅為關閉上個 socke

題解五十一

給你一根長度為 n 的繩子,請把繩子剪成整數長度的 m 段 m n都是整數,n 1並且m 1 每段繩子的長度記為 k 0 k 1 k m 1 請問 k 0 k 1 k m 1 可能的最大乘積是多少?例如,當繩子的長度是8時,我們把它剪成長度分別為2 3 3的三段,此時得到的最大乘積是18。示例 1 ...

CUDA學習(五十一)

動態全域性記憶體分配和操作 動態全域性記憶體分配和操作僅受計算能力2.x和更高的裝置支援 void malloc size t size void free void ptr 從全域性記憶體中的固定大小的堆中動態分配和釋放記憶體 void memcpy void dest,const void sr...

LeetCode第五十一題 N皇后

問題簡介 給定乙個n n的棋盤,求解如何將n個皇后放置在棋盤上,保證其之間不互相攻擊,即給定乙個整數 n,返回所有不同的解決方案,用 q 和 分別代表了皇后和空位 注 例如下圖為n 8 時的乙個解 舉例 輸入 4 輸出 q solution 1 q q q.q.solution 2 q q q 解法...