java項目防止用戶重復(fù)登錄 Java的項目經(jīng)驗要怎么積累呢?
Java的項目經(jīng)驗要怎么積累呢?多看開源項目源代碼,或者自己嘗試做一些項目。比較有幫助,最后推薦一個項目集,可以試著做一下,一共10個項目,還有配套資料,源代碼都可以獲得!(答案轉(zhuǎn)載自音樂字節(jié))嗶哩嗶
Java的項目經(jīng)驗要怎么積累呢?
多看開源項目源代碼,或者自己嘗試做一些項目。比較有幫助,最后推薦一個項目集,可以試著做一下,一共10個項目,還有配套資料,源代碼都可以獲得!(答案轉(zhuǎn)載自音樂字節(jié))
嗶哩嗶哩搜索BV1f64y117vk
后臺怎么防止因網(wǎng)絡(luò)延遲,用戶連續(xù)點擊導(dǎo)致后臺重復(fù)執(zhí)行一條數(shù)據(jù),這樣的狀況發(fā)生?
這是典型的防止重復(fù)提交的問題!在實際場景中,比如有重復(fù)扣費,重復(fù)購買!
如何設(shè)計才能防止重復(fù)提交?我們主要有以下操作:
①前端:點擊提交按鈕,點擊后會變灰,一段時間內(nèi)不允許重復(fù)提交!
優(yōu)點:最便捷的提高并發(fā)的方法!
缺點:頁面刷新時js失敗,前端容易被篡改!
②后端:
1.鎖定:鎖定提交的id,同一id在一定時間范圍內(nèi)只能通過一次!
如果是分布式服務(wù),需要借助redis添加分布式鎖,否則多個服務(wù)中的鎖不能互斥!
2.冪等性:保證接口是冪等的,先查詢,記錄不存在就添加,存在就返回查詢結(jié)果!
缺點:高并發(fā)環(huán)境不能保證冪等性!
③數(shù)據(jù)庫:如果是新增加的,可以增加唯一字段。保存時,如果唯一字段重復(fù),將引發(fā)異常。使用insert ignore語句進(jìn)行判斷!
如果修改了,可以使用樂觀鎖sql確保版本version符合要求后再執(zhí)行sql!以下示例是樂觀鎖定機制:
更新table_test set namename1,versionversion 1其中idid1和version2
我在實際工作中使用以上方法。如果有更合適有效的方法,請補充。。筆者一直在持續(xù)分享JAVA開發(fā)技術(shù),其中不乏好文章,有需要的朋友可以關(guān)注一下。。