- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻找一种生成一系列促销代码的方法。如果不满足这两个要求,那将是微不足道的。它需要是一个范围(不是将每个促销代码保存在数据库中)以使其快速,并且它是不可猜测的,因此它不能生成像这样的代码 000-000-001, 000-000-002, 000- 000-003...等等。
有没有算法可以解决这个问题?我可以尝试通过某种哈希来解决它,但尝试自己解决这个安全问题可能会让服务遭受我没有想到的攻击。</p>
最佳答案
我认为您的第一个要求(不将每个促销代码保存在数据库中)是有问题的。
问题是,同一个促销代码可以多次兑换吗?
如果这是不允许的,那么您无论如何都必须将已经兑换的代码存储在某个持久数据存储中,那么为什么不从一开始就将生成的代码存储在持久数据存储中,以及指示它是否已兑换的标志还是不?
<小时/>如果您不想存储所有代码/无法存储所有代码,您仍然可以使用带有当前广告系列独有种子的Random
:
long seed = 20190921065347L; // identifies your current campaign
Random r = new Random(seed);
for (int i = 0; i < numCodes; i++) {
System.out.println(r.nextLong());
}
或
long seed = 20190921065347L; // identifies your current campaign
Random r = new Random(seed);
r.longs(numCodes, 100_000_000_000_000L, 1_000_000_000_000_000L)
.forEach(System.out::println);
要确定代码是否有效,您可以再次生成相同的代码:
long seed = 20190921065347L; // identifies your current campaign
Random r = new Random(seed);
System.out.println(
r.longs(numCodes, 100_000_000_000_000L, 1_000_000_000_000_000L)
.anyMatch(l -> l == 350160558695557L));
关于java - 生成一系列不可猜测的促销代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58033330/
我有一个 rails/spree 商店应用程序,它使用 spree's "User" rule 进行长期促销.问题是,在促销事件期间,为商店中促销不适用的每个订单创建了不合格的调整。这在数据库中增加了
我想创建一个列来标记员工,只要他们得到晋升(等级变化),如下例所示: +-----------+------------+------------+-------+------+ | PERSON_I
我无法使用 App Store 促销 推广我的应用内购买,因为二进制文件不包含 SKPaymentTransactionObserver 方法,如下所示: These in-app purchases
我是一名优秀的程序员,十分优秀!