生成订单号的好算法

2023-12-21

尽管我喜欢使用 GUID 作为系统中的唯一标识符,但对于订单号等字段来说,它并不是很用户友好,客户可能必须向客户服务代表重复该字段。

有什么好的算法可以用来生成订单号,以便它是:

  • Unique
  • 非连续(纯粹用于光学)
  • 仅数字值(因此可以通过电话轻松读取到 CSR 或键入)
  • 可以在中间层生成,无需往返数据库。

更新(12/05/2009) 在仔细审查了发布的每个答案后,我们决定在中间层随机分配一个 9 位数字来保存在数据库中。如果发生碰撞,我们将重新生成一个新号码。


如果中间层无法检查数据库中已存在哪些“订单号”,那么它最多只能生成一个随机数。然而,如果您生成一个限制为小于 10 亿的随机数,您应该开始担心大约 10 亿的意外碰撞sqrt(1 billion),也就是说,在以这种方式生成了数万个条目之后,冲突的风险就很大了。如果订单号是连续的,但以一种伪装的方式,即某个大素数模 10 亿的下一个倍数,会怎么样?这会满足您的要求吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

生成订单号的好算法 的相关文章

  • 修改排列算法以防止重复打印输出的策略

    我一直在审查实践算法 目前正在研究一种我非常喜欢的排列算法 void permute char set int begin int end int range end begin if range 1 cout lt lt set lt l
  • 在 O(n) 时间内运行的指数乘法算法?

    我正在读一本算法教科书 我被这个问题难住了 假设我们要计算值 x y 其中 x 和 y 为正数 分别具有 m 和 n 位的整数 解决该问题的一种方法是执行 y 1 乘以 x 你能给出一个仅使用 O n 乘法步骤的更有效的算法吗 这会是一个分
  • 如何找到最长的回文子序列(不是它的长度)

    我想找出字符串中最长的回文子序列 我到处都找到了找出子序列长度的算法 并声明该算法也可以扩展以返回子序列 但我没有找到如何实现的 有人能解释一下我怎样才能得到序列吗 既然你提到了链接最长回文子序列 http www geeksforgeek
  • 四舍五入到 25、50、75、100

    我不是一个数学爱好者 所以我很难想出一个将小数四舍五入到 25 50 75 和 100 的计算方法 这不会是典型的四舍五入 因为小数不会减少但只增加了 Example 如果 11 12 则舍入为 11 25 如果为 11 34 则舍入为 1
  • 我想优化这个短循环

    我想优化这个简单的循环 unsigned int i while j 0 j is an unsigned int with a start value of about N 36 000 000 float sub 0 i 1 unsig
  • Java中如何对整数除法进行四舍五入并得到int结果? [复制]

    这个问题在这里已经有答案了 我刚刚写了一个小方法来计算手机短信的页数 我没有选择使用Math ceil 老实说 它看起来很丑陋 这是我的代码 public class Main param args the command line arg
  • Bellman-Ford 算法检测什么?负重还是负循环?

    如果给定一个图 现在我们要从源头计算最短路径 现在 如果一条边具有负权重 但在到达目的地时有边到后边返回到该边 我的意思是如果没有循环 那么我们就没有负循环 但是here http en wikipedia org wiki Bellman
  • 稀疏矩阵中的最大和子矩形

    求一个子矩形中的最大和NxN矩阵可以完成O n 3 正如其他帖子中指出的 使用 2 d kadane 算法的时间 然而 如果矩阵是稀疏的 具体来说O n 非零条目 可以O n 3 时间被打败了吗 如果有帮助的话 对于我感兴趣的当前应用程序
  • 如何设置K-means openCV c++的初始中心

    我正在尝试使用 OpenCv 和 Kmeans 对图像进行分割 我刚刚实现的代码如下 include opencv2 objdetect objdetect hpp include opencv2 highgui highgui hpp i
  • 两个非嵌套循环的大 O 表示法

    对于两个非嵌套的 for 循环 大 O 表示法是什么 Example for int i 0 i
  • Python 小数.InvalidOperation 错误

    当我运行这样的东西时 我总是收到此错误 from decimal import getcontext prec 30 b 2 3 Decimal b Error Traceback most recent call last File Te
  • 小数除以小数并得到零

    为什么当我这样做时 select CAST 1 AS DECIMAL 38 28 CAST 1625625 AS DECIMAL 38 28 我得到 0 吗 但是当我得到 0 时 select CAST 1 AS DECIMAL 20 10
  • Java:如何实现3和?

    我正在研究 3 Sum 来自己实现它 并遇到了以下规则的实现 给定一个由 n 个整数组成的数组 S S 中是否存在满足 a b c 0 的元素 a b c 查找数组中所有总和为零的唯一三元组 注意 三元组 a b c 中的元素必须按非降序排
  • 用 Java 创建迷宫求解算法

    我被分配了用 Java 创建迷宫求解器的任务 这是任务 Write an application that finds a path through a maze The maze should be read from a file A
  • 具有非常大的数字的除法

    我只是想知道在处理大数字时有哪些不同的除法策略 我所说的大数字是指 50 位数字 例如 9237639100273856744937827364095876289200667937278 82637448262718273966299344
  • Python 给定 k 个分区的整数分区

    我正在尝试寻找或开发Python 的整数分区代码 仅供参考 整数分区将给定整数 n 表示为小于 n 的整数之和 例如 整数5可以表示为4 1 3 2 3 1 1 2 2 1 2 1 1 1 1 1 1 1 1 我为此找到了许多解决方案 ht
  • 如何查找给定字符串中仅出现一次的第一个字符[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用C标准数学库精确计算标准正态分布的CDF

    标准 C 数学库不提供计算标准正态分布 CDF 的函数 normcdf 然而 它确实提供了密切相关的函数 误差函数 erf 和互补误差函数 erfc 计算 CDF 的最快方法通常是通过误差函数 使用预定义常量 M SQRT1 2 来表示 d
  • 如何高效地在屏幕上精确绘制N个点?

    这听起来是一个简单的问题 但我发现要获得良好的性能是非常棘手的 我提出的第一个算法是随机绘制点 从一组中检查是否已绘制 否则绘制 如果我们只绘制几个点 那么这种方法效果很好 但当我们接近填满屏幕时 速度会灾难性地减慢 我想出的最好的方法是构
  • 快速求解子集和

    考虑这种解决子集和问题的方法 def subset summing to zero activities subsets 0 for activity cost in activities iteritems old subsets sub

随机推荐

  • 未捕获的 FirebaseError:使用无效数据调用函数 DocumentReference.set()。不支持的字段值:未定义

    我正在使用 Vue 和 Firebase 创建电子商务 尝试添加当前登录用户的一些购物车信息 奇怪的是 第一次信息保存得很好 当我尝试再次添加一些时 那不起作用并显示此错误 未捕获的 FirebaseError 使用无效数据调用函数 Doc
  • 如何从开发工具控制台使用 ES6 模块

    据我了解 如果我创建一个 ES6 模块 我只能从本身就是一个模块的代码中导入它 这意味着非模块代码 即内联 Javascript 或 Chrome 开发工具控制台永远无法访问模块中的代码 真的吗 有什么办法可以解决这个问题 因为这似乎是一个
  • 使用 subprocess.popen 登录后如何保持 ssh 会话打开?

    我是Python新手 我正在尝试通过 SSH 连接到服务器来执行一些操作 但是 在执行操作之前 我需要加载配置文件 这需要 60 90 秒 加载配置文件后 有没有办法保持 SSH 会话打开 以便我稍后可以执行操作 p subprocess
  • 不支持 PostgreSQL 身份验证方法 10

    我正在尝试遵循使用 PostgreSQL 的diesel rs 教程 https diesel rs guides getting started 当我进入 Diesel 设置步骤时 收到 不支持身份验证方法 10 错误 我该如何解决 您必
  • StructureMap:如何为其所有接口注册相同的实例

    StructureMap新手问题 public class SomeClass IInterface1 IInterface2 我希望通过以下测试 Assert AreSameInstance container GetInstance
  • WPF MVVM - 将 UserControls 上的属性绑定到容器的 ViewModel

    我有一个窗口 MainWindow xaml 其中有一个ViewModel MainWindowViewModel cs 我还有一个名为 MyUserControl xaml 的 UserControl 它也有一个相应的 ViewModel
  • PHP MYSQL $行[$变量]

    我正在尝试解决动态表创建和数据获取问题 我正在尝试使用以下代码获取数据 myQuery SELECT col name FROM tabname WHERE sampleid sid result mysql query myQuery r
  • VB.Net 中的空合并运算符(8)

    恐怕这是一个愚蠢的问题 但我必须假设我已经编写 VB Net 太长时间了 现在不知道如何转换它C 空合并运算符 http msdn microsoft com en US library ms173224 28v vs 80 29进入VB
  • Android Java - Joda Date 速度慢

    在 Android 上使用 Joda 1 6 2 以下代码挂起大约 15 秒 DateTime dt new DateTime 最初发布此帖子Android Java Joda Date 在 Eclipse 模拟器中运行缓慢 https s
  • 长按后启用 ScrollView 中元素的拖动

    我已经用 panResponder 和 ScrollView 实现了拖放列表 我希望即使在触摸该项目时也能够滚动列表 问题是当我做滚动手势时该项目会移动 当然 我也希望能够移动该项目 但现在它具有与滚动相同的手势 我想通过仅在长按 1 5秒
  • 如何循环非默认构造类的 boost MPL 列表?

    我有以下示例 include
  • Sqlite从多个表中选择*

    我真的需要一些有关 sqlite 的帮助 我有一个数据库 有两个表 我们称它们为 table1 和 table2 这两个表基本相同 列名相同 列数相同 第一列是文本 其余列是双列 这适用于两个表 我不想将它们合并到一张表中 如果出现通常应该
  • 限制 Prolog 中的搜索 - Magic Square

    我想用 Prolog 程序求解最完美幻方 维基页面 https en wikipedia org wiki Most perfect magic square https en wikipedia org wiki Most perfect
  • 将文本垂直对齐到框的底部?

    我制作了盒子并设置了行高 文本自动垂直居中 有没有一种方法或任何技巧可以将文本设置在框的底部 div width 100px height 100px background eee color 333 text align center l
  • 在 CQRS 的写入端从数据库读取数据

    背景 Diagrams explaining CQRS usually will have clear separation of read and write paths and one way data flow like in thi
  • 如何使用 style.xml 文件中的样式(以及所有其他样式)创建无边框按钮

    我正在尝试创建一个无边框按钮 但我的按钮还有许多其他样式 并且我想通过将代码嵌入到 style xml 文件中来设计无边框按钮 我发现的一种方法是 通过在我的布局文件中使用 style android attr borderlessButt
  • “此安装不支持该项目类型”错误

    我在 W2k3 操作系统上安装了 VS 2008 SP1 在我安装 ASP NET MVC beta 并尝试创建 ASP NET MVC 类型项目后 出现以下错误 此安装不支持该项目类型 如果您已解决此问题 请告诉我 我尝试了这里发布的一些
  • 将 DataGrid 视图转换为 DataSet/DataTable 的最佳方法

    DataSet DataTable and LINQ表达式是常见的DataSource的值DataGridView 现在反过来 是否可以传递 绑定DataGridView记录到DataSet or DataTable Thanks 你可以这
  • 将 RDS 数据导出到 S3/Glacier

    我想将数据从 Oracle RDS 导出到 S3 然后将其移动到 Glacier 我的最终目标是将 RDS 中存储的数据备份到 S3 和 Glacier 以满足合规性要求 任何人都可以建议实现它的最佳方法 RDS 快照存储在 s3 中 但您
  • 生成订单号的好算法

    尽管我喜欢使用 GUID 作为系统中的唯一标识符 但对于订单号等字段来说 它并不是很用户友好 客户可能必须向客户服务代表重复该字段 有什么好的算法可以用来生成订单号 以便它是 Unique 非连续 纯粹用于光学 仅数字值 因此可以通过电话轻