Android --- 订单编号怎样不重复?一秒钟如果有n个人同时下单怎么解决?凌晨12点限量抢购1000件商品,直到抢完为止订单编号怎么处理?
生活随笔
收集整理的這篇文章主要介紹了
Android --- 订单编号怎样不重复?一秒钟如果有n个人同时下单怎么解决?凌晨12点限量抢购1000件商品,直到抢完为止订单编号怎么处理?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天在做項目的時候發現了這個問題,在我下單的時候,我是采用獲取年月日時分秒的方式來生成訂單編號,但是這種方式行不通,如果一秒鐘有多個人下單的話,直接就會爆掉,比如:淘寶雙十一,凌晨12點限量搶購1000件商品,直到搶完為止,那么就可定不可避免一秒鐘下多個訂單,所以我的解決辦法是:
在你生成訂單編號的工具類中定義一個靜態變量
private static int autoInt = 1;在你生成訂單編號的位置將 autoInt 加 1 再拼接到訂單編號的末尾 ,這樣的話,你每調用一次生成訂單編號,就會加 1
// 生成不重復的訂單編號public static String getOrder() {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmSS");Date date = new Date();autoInt++;String s = simpleDateFormat.format(date) + autoInt;System.out.println("訂單編號為:"+s);return s;}比如我本來的訂單編號是:20211119180797
調用了這個方法后就變成了 202111191807972
再次調用就變成了 202111191807973,以此類推
以上方法是我想到的不用去對數據庫進行操作的方法,本人使用 mysql 數據庫,你也可以使用其他方法如**主鍵自增序列**,這個對于 mysql 比較難弄,對于 oracle 比較容易。
這里再說一下, java 靜態變量,在服務器重新啟動的時候就會恢復默認值,這個不用擔心,因為,我們的時間戳是不斷變化的,所以即使恢復到 1 也不會重復
總結
以上是生活随笔為你收集整理的Android --- 订单编号怎样不重复?一秒钟如果有n个人同时下单怎么解决?凌晨12点限量抢购1000件商品,直到抢完为止订单编号怎么处理?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android --- 按钮控件设置与不
- 下一篇: Java 洛谷 P1150 Peter的