電商項目-秒殺系統(四)秒殺異步下單防止重復秒殺

一、 防止惡意刷單解決

在生產場景下,可能會有一些人會惡意訪問當前網站,來進行惡意的刷單。這樣會造成當前系統出現一些業務上的業務混亂,出現臟數據,或者造成后端訪問壓力大等問題。

一般要解決這個問題的話,前端可以進行控制,如點一次立即搶購后,置灰立即搶購按鈕。同時對于后端來說也需要進行控制。后端實現可以通過Redis incrde 原子性遞增來進行解決。

實現思路:
獲取登錄人名稱和商品ID,自定義RedisKey,用戶第一次訪問放行,并對當前Key設置一個5分鐘的有效期,用戶在 5分鐘內不能重復訪問。

步驟一: 更新秒殺服務下單方法
更新秒殺服務下單方法,防止惡意刷單。

步驟二: 防重方法實現

//防止重復提交
private String preventRepeatCommit(String username,Long id) {
?String redisKey = "seckill_user_" + username+"_id_"+id;long count = redisTemplate.opsForValue().increment(redisKey, 1);if (count == 1){//設置有效期五分鐘redisTemplate.expire(redisKey, 5, TimeUnit.MINUTES);return "success";}
?if (count>1){return "fail";}
?return "fail";
?
}

二、 防止相同商品重復秒殺

防止同一個人,對于相同商品的重復秒殺。項目的需求是:同一個人對于相同的商品只能買一次。并且每次只能買一個。

實現思路:

當用戶購買完商品之后,會在秒殺訂單表中產生一條記錄,這條記錄里包含當前購買的商品ID,以及當前的用戶名稱。現在明確了每一個
訂單中都有這兩個信息的話,我們需要完成防止同一個人對于同一個商品的重復秒殺。只需要根據秒殺ID和秒殺商品ID來查詢秒殺訂單表
,如果里面有相關數據的話,代表用戶下過單,就不讓用戶下單了,如果沒有的話再來完成下單流程。

步驟一: 修改下單業務層實現
判斷用戶是否已經購買過該商品。

步驟二: dao層新增查詢方法

public interface SeckillOrderMapper extends Mapper<SeckillOrder> {
?/*** 查詢秒殺訂單信息* @param username* @param id* @return*/@Select("select * from tb_seckill_order where user_id=#{username} and seckill_id=#{id}")SeckillOrder getSecKillOrderByUserNameAndGoodsId(String username, Long id);
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72710.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72710.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72710.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

原生android 打包.aar到uniapp使用

1.原生安卓里面引入uniapp官方提供的包文件&#xff1a; uniapp-v8-release.aar 2.提供uniapp調用的接口&#xff0c;新建類文件繼承UniModule&#xff0c; package com.dermandar.panoramal;import com.scjt.lib.certlib;import io.dcloud.feature.uniapp.annotation.UniJSM…

Android 多用戶相關

Android 多用戶相關 本文主要記錄下android 多用戶相關的adb 命令操作. 1: 獲取用戶列表 命令: adb shell pm list users 輸出如下: Users:UserInfo{0:機主:c13} running默認只有一個用戶, id為0 &#xff0c;用戶狀態為運行 2: 創建新用戶 命令&#xff1a; adb shell …

基于Spring Boot的高校就業招聘系統的設計與實現(LW+源碼+講解)

專注于大學生項目實戰開發,講解,畢業答疑輔導&#xff0c;歡迎高校老師/同行前輩交流合作?。 技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;…

前端安全面試題匯總及參考答案

目錄 簡述 XSS 攻擊的原理及三種常見類型(存儲型、反射型、DOM 型) 如何在前端防御 XSS 攻擊?列舉編碼、過濾、CSP 策略的具體實現方式 富文本編輯器場景下如何安全處理用戶輸入的 HTML 內容? 如何通過 HttpOnly 屬性增強 Cookie 安全性?它與 XSS 防御的關系是什么? …

Linux驅動開發(1.基礎創建)

序言&#xff1a;從高層邏輯到底層硬件的回歸 在當今的軟件開發中&#xff0c;我們習慣于用高級語言構建抽象層——通過框架、庫和云服務快速實現功能。這種“軟邏輯”的便利性讓開發效率倍增&#xff0c;卻也逐漸模糊了我們對計算機本質的認知&#xff1a;一切代碼終將落地為…

Gradle本地配置文件分享

Gradle本地配置文件分享 allprojects {repositories {mavenLocal()maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }maven { name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/" }ma…

deepseek 本地部署

deepseek 本地部署 純新手教學&#xff0c;手把手5分鐘帶你在本地部署一個私有的deepseek&#xff0c;再也不用受網絡影響。流暢使用deepseek&#xff01;&#xff01;&#xff01; 如果不想看文章&#xff0c;指路&#xff1a;Deep seek R1本地部署 小白超詳細教程 &#xff0…

HTML學習筆記(全)

基本結構 <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title></title> </head> <body></body> </html> 基本標簽元素 標題&#xff08;heading&#xff09; <h1>一級標題</h1> &…

騰訊云對象存儲服務(COS)

騰訊云對象存儲服務&#xff08;COS&#xff09; 安全、可擴展、低成本的云存儲解決方案 騰訊云 對象存儲服務&#xff08;COS&#xff0c;Cloud Object Storage&#xff09; 是一種高可靠、高性能、可擴展的云存儲服務&#xff0c;專為海量非結構化數據&#xff08;如圖片、…

從ETL到數倉分層:大數據處理的“金字塔”構建之道

在當今數據驅動的時代&#xff0c;大數據處理已成為企業決策和業務優化的核心。而ETL&#xff08;Extract, Transform, Load&#xff09;作為數據處理的基石&#xff0c;其背后的數倉分層理念更是決定了數據處理的效率與質量。本文將深入探討ETL工作中的數倉分層理念&#xff0…

數字孿生對于新基建的價值淺析,算是拋磚引玉。

數字孿生&#xff08;Digital Twin&#xff09;作為一項融合物理世界與數字世界的關鍵技術&#xff0c;在新基建中扮演著虛實協同、智能決策、全生命周期管理的核心角色&#xff0c;其價值貫穿于基礎設施的設計、建設、運維到優化全流程。 一、核心價值&#xff1a;虛實映射與智…

從零開始實現大語言模型(十三):預訓練大語言模型GPTModel

1. 前言 使用梯度下降算法通過下一個token預測任務預訓練大語言模型GPTModel&#xff0c;前向傳播流程每次會輸入一個batch的長度均為context_len的訓練樣本&#xff0c;執行 batch_size context_len \text{batch\_size}\times\text{context\_len} batch_sizecontext_len次下…

QWQ大模型評測榜單

評測榜單說明 在數學推理基準AIME24上&#xff0c;QwQ-32B達到了79.5分&#xff0c;幾乎與DeepSeek-R1-617B的79.8分持平&#xff0c;遠超OpenAI o1-mini的63.6分&#xff0c;及相同尺寸的R1蒸餾模型。 在編程能力方面&#xff0c;QwQ-32B 在LiveCodeBench上獲得了63.4分&…

bash: uwsgi: 未找到命令

針對你提出的“bash: uwsgi: command not found”問題&#xff0c;以下是一些可能的解決方案&#xff0c;請按照步驟逐一排查&#xff1a; ?1、檢查uwsgi命令是否正確?&#xff1a; 確保你輸入的命令是uwsgi&#xff0c;而不是uWSGI或其他變體。 ?2、確認uwsgi是否已安裝?&…

超圖(Hypergraph)

超圖&#xff08;Hypergraph&#xff09;是圖結構學習&#xff08;Graph Learning&#xff09;中的一種擴展形式&#xff0c;它比傳統圖&#xff08;Graph&#xff09;更具表達能力&#xff0c;適用于建模復雜的多元關系。 超圖是一種由 超節點&#xff08;Hypernodes&#xff…

PyTorch中的線性變換:nn.Parameter VS nn.Linear

self.weight nn.Parameter(torch.randn(in_channels, out_channels)) 和 self.linear nn.Linear(in_channels, out_channels) 并不完全一致&#xff0c;盡管它們都可以用于實現線性變換&#xff08;即全連接層&#xff09;&#xff0c;但它們的使用方式和內部實現有所不同。 …

鴻蒙生態日日新,夸克、順豐速運、駕校一點通等多款應用功能更新

3月5日鴻蒙生態日日新PLOG&#xff1a;吉事辦、健康甘肅等政務服務App上架原生鴻蒙應用市場&#xff1b;夸克、順豐速運、駕校一點通等多款應用功能更新。

基于SpringBoot的智慧停車場小程序(源碼+論文+部署教程)

運行環境 ? 前端&#xff1a;小程序 Vue ? 后端&#xff1a;Java ? IDE工具&#xff1a;IDEA&#xff08;可自行選擇&#xff09; HBuilderX 微信開發者工具 ? 技術棧&#xff1a;小程序 SpringBoot Vue MySQL 主要功能 智慧停車場微信小程序主要包含小程序端和…

致同報告:香港財政赤字加劇,擴大稅基與增收迫在眉睫

2月26日香港政府2025-26年度財政預算案&#xff0c;&#xff08;以下簡稱“預算案”&#xff09;發布&#xff0c;香港財政司司長陳茂波提出一系列旨在減少開支并振興香港經濟的措施&#xff0c;以應對日益增長的財政赤字。主要提案包括對所有公務員實施凍薪、針對性稅務寬減措…

在Spring Boot項目中分層架構

常見的分層架構包括以下幾層: 1. Domain 層(領域層) 作用:領域層是業務邏輯的核心,包含與業務相關的實體類、枚舉、值對象等。它是對業務領域的抽象,通常與數據庫表結構直接映射。 主要組件: 實體類(Entity):與數據庫表對應的Java類,通常使用JPA或MyBatis等ORM框架…