随机生成10位数的字符串ID
简述
项目中,有种业务需要当前表中存个另外一个表中的主键ID字段,如果用数据库自增的话,容易出现重复
比如A表主键ID自增1、2、3.。。。。,B表主键ID自增1、2、3.。。。。,A表中有个字段是B_Id,会出现a_id=3、b_id=3的情况,傻傻分不清楚这边主要分享的是一个随机生成10位永不重复的随机字符串,不啰嗦了,下面上代码
随机数生成工具类
/*** MathUtils.java* com.prereadweb.utils* Copyright (c) 2019, 北京链天下科技有限公司版权所有.*/
package com.prereadweb.utils;/*** @Description: 随机数生成工具类* @author: Yangxf* @date: 2019/4/14 12:38*/
public class MathUtils {private static final String DEFAULT_DIGITS = "0";private static final String FIRST_DEFAULT_DIGITS = "1";/*** @param target 目标数字* @param length 需要补充到的位数, 补充默认数字[0], 第一位默认补充[1]* @return 补充后的结果*/public static String makeUpNewData(String target, int length){return makeUpNewData(target, length, DEFAULT_DIGITS);}/*** @param target 目标数字* @param length 需要补充到的位数* @param add 需要补充的数字, 补充默认数字[0], 第一位默认补充[1]* @return 补充后的结果*/public static String makeUpNewData(String target, int length, String add){if(target.startsWith("-")) target.replace("-", "");if(target.length() >= length) return target.substring(0, length);StringBuffer sb = new StringBuffer(FIRST_DEFAULT_DIGITS);for (int i = 0; i < length - (1 + target.length()); i++) {sb.append(add);}return sb.append(target).toString();}/*** 生产一个随机的指定位数的字符串数字* @param length* @return*/public static String randomDigitNumber(int length){int start = Integer.parseInt(makeUpNewData("", length));//1000+8999=9999int end = Integer.parseInt(makeUpNewData("", length + 1)) - start;//9000return (int)(Math.random() * end) + start + "";}
}
生成ID工具类
/*** IdUtils.java* com.prereadweb.utils* Copyright (c) 2019, 北京链天下科技有限公司版权所有.*/
package com.prereadweb.utils;/*** @Description: 生成ID工具类* @author: Yangxf* @date: 2019/4/14 12:40*/
public class IdUtils {/*** 以毫微秒做基础计数, 返回唯一有序增长ID* <pre>System.nanoTime()</pre>* <pre>* 线程数量: 100* 执行次数: 1000* 平均耗时: 222 ms* 数组长度: 100000* Map Size: 100000* </pre>* @return ID长度32位*/public static String getPrimaryKey(){return MathUtils.makeUpNewData(Thread.currentThread().hashCode()+"", 3)+ MathUtils.randomDigitNumber(7); //随机7位数}
}
效果
随机生成10位数的字符串ID相关推荐
- 随机生成10位数QQ号.c
// 随机生成十位数的QQ号,首位数只能为1,2,3#include <stdio.h> #include <stdlib.h> #include <time.h> ...
- 随机生成10个8位数的密码
题目要求: 随机密码生成.编写程序,在26个字母大小写和9个数字组成的列表中随机生成10个8为的密码. import randomdef random_password():#定义一个空列表list1 ...
- php随机生成三位数,php随机生成数字加字母 PHP随机生成数字+调用,
for ($i = 1; $i PHP生成10位左右,数字.字母混合的字符串且唯一 需要生成一个唯一的字符串要CSS布局HTML小编今天和大家分享大写字母和数字混合,10位为佳,并且不能重复 给你说个 ...
- java随机生成10个不重复的数字,随机生成10个不重复的0-100的数字(实例讲解)
在面试时,面试官问了我一道js题:随机生成一个含有10个元素的数组,且元素为0-100的不重复的整数.当时的第一反应是for循环生成10个数字,但是可能会有重复的情况:进一步思考,需要对生成的数字进行 ...
- 随机生成邀请码、随机生成10位数字、随机生成英文字母+数字
/*** 随机字符串生成* @param int $length 生成字符串长度* @param array $str_content ['number','capital_chars','lower ...
- 随机密码生成。编写程序,接收列表在26个字母大小写和10个数字组成的列表中随机生成10个8位密码。
随机密码生成.编写程序,接收列表在26个字母大小写和10个数字组成的列表中随机生成10个8位密码. 这里我们要用到random函数. 代码如下: import random for i in rang ...
- 随机生成6位数、随机生成不重复的6位数
随机生成一个几位数,这种比较常见的操作今天我们来看一下,例如随机生成6位数,直接来简单明了的吧: int num = (int) ((Math.random() * 9 + 1) * 100000); ...
- Java 随机生成四位数验证码的方法
//生成验证码public static String codeFen(){String str = "0123456789";//将字符串转换为一个新的字符数组.char[] V ...
- python 随机生成不重复的6位数_随机生成6位数、随机生成不重复的6位数
随机生成一个几位数,这种比较常见的操作今天我们来看一下,例如随机生成6位数,直接来简单明了的吧: int num = (int) ((Math.random() * 9 + 1) * 100000); ...
最新文章
- xp与Linux双系统共存
- python写出的程序如何给别人使用-如何用PYTHON代码写出音乐
- 三种流行的数据库查询表记录数【转】
- for+next()实现数组的遍历及while list each 的使用
- java----单例模式
- 计算机组成原理写一个运算器,计算机组成原理运算器的实现实验报告.doc
- 用户自增长机制(一图胜千言)
- [NOI2014] 动物园
- 解决移动端 footer fixd 定位被键盘顶起来的方案
- [记录]Python的master-worker和epoll模式
- SOME/IP不等同于SOA,CommonAPI-RPC通信和vsomeip基于消息通信
- ASP.NET 2.0下实现匿名用户向注册用户的迁移(上) zhuan
- vlfeat工具包的MATLAB安装
- 软件登录账号信息 删除
- 【JSTL】choose标签
- 【ImgtuUtil】路过图床基础 Java 工具类(支持登录、上传、删除图片等操作)
- 如何阅读一本专业书?
- 两种构造最小生成树的算法(普里姆算法,克鲁斯卡尔算法)
- Text to face:寻找黛玉-从语言描述到人脸图像生成
- php获取当前日期所在自然周周一周末以及前后自然周始末