Java实现产生随机字符串主键的UUID工具类

本文实例讲述了Java实现产生随机字符串主键的UUID工具类。分享给大家供大家参考,具体如下:

package com.gcloud.common;
import java.net.InetAddress;
import java.util.UUID;
/**
 * uuid工具类
 * Created by charlin on 2017/9/9.
 */
public class UUIDUtil {
  private String sep = "";
  private static int IP = 0;
  private static short counter = (short) 0;
  private static int JVM = (int) (System.currentTimeMillis() >>> 8);
  static {
    try {
      IP = toInt(InetAddress.getLocalHost().getAddress());
    } catch (Exception e) {
    }
  }
  private static UUIDUtil instance = new UUIDUtil();
  public static UUIDUtil getInstance() {
    return instance;
  }
  /**
   * byte转int
   *
   * @param bytes
   * @return
   */
  public static int toInt(byte[] bytes) {
    int result = 0;
    for (int i = 0; i < 4; i++) {
      result = (result << 8) - Byte.MIN_VALUE + (int) bytes[i];
    }
    return result;
  }
  protected String format(int intval) {
    String formatted = Integer.toHexString(intval);
    StringBuffer buf = new StringBuffer("00000000");
    buf.replace(8 - formatted.length(), 8, formatted);
    return buf.toString();
  }
  protected String format(short shortval) {
    String formatted = Integer.toHexString(shortval);
    StringBuffer buf = new StringBuffer("0000");
    buf.replace(4 - formatted.length(), 4, formatted);
    return buf.toString();
  }
  protected int getJVM() {
    return JVM;
  }
  protected synchronized short getCount() {
    if (counter < 0) {
      counter = 0;
    }
    return counter++;
  }
  protected int getIP() {
    return IP;
  }
  protected short getHiTime() {
    return (short) (System.currentTimeMillis() >>> 32);
  }
  protected int getLoTime() {
    return (int) System.currentTimeMillis();
  }
  public String generate() {
    return new StringBuffer(36).append(format(getIP())).append(sep).append(
        format(getJVM())).append(sep).append(format(getHiTime()))
        .append(sep).append(format(getLoTime())).append(sep).append(
            format(getCount())).toString();
  }
  // 得到一个序号
  public static String getUUID() {
    String s = UUID.randomUUID().toString();
    return s.substring(0, 8) + s.substring(9, 13) + s.substring(14, 18) + s.substring(19, 23) + s.substring(24);
  }
  /**
   * 一次得到多个序号
   *
   * @param number int 需要获得的序号数量
   * @return String[] 序号数组
   */
  public static String[] getUUID(int number) {
    if (number < 1) {
      return null;
    }
    String[] ss = new String[number];
    for (int i = 0; i < ss.length; i++) {
      ss[i] = getUUID();
    }
    return ss;
  }
  public static void main(String[] str) {
    System.out.println("我们测试结果:");
    // 得到一个序号
    System.out.println(getUUID());
    System.out.println("----------------------------");
    // 一次得到多个序号
    String[] UUID_s = getUUID(10);
    for (int i = 0; i < UUID_s.length; i++) {
      System.out.println(UUID_s[i]);
    }
  }
}

运行结果:

PS:这里再为大家提供几款功能类似的在线工具供大家参考:

在线随机数字/字符串生成工具:
http://tools.jb51.net/aideddesign/suijishu

在线随机字符/随机密码生成工具:
http://tools.jb51.net/aideddesign/rnd_password

高强度密码生成器:
http://tools.jb51.net/password/CreateStrongPassword

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java字符与字符串操作技巧总结》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

(0)

相关推荐

  • Java实现的DES加密解密工具类实例

    本文实例讲述了Java实现的DES加密解密工具类.分享给大家供大家参考,具体如下: 一个工具类,很常用,不做深入研究了,那来可直接用 DesUtil.java package lsy; import java.security.Key; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; imp

  • Java 随机取字符串的工具类

    一.Java随机数的产生方式 在Java中,随机数的概念从广义上将,有三种. 1.通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字. 2.通过Math.random()返回一个0到1之间的double值. 3.通过Random类来产生一个随机数,这个是专业的Random工具类,功能强大. 二.Random类API说明 1.Java API说明 Random类的实例用于生成伪随机数流.此类使用 48 位的种子,使用线性同余公式对其进行修改(请参阅 D

  • java常用工具类之DES和Base64加密解密类

    一.DES加密和解密 package com.itjh.javaUtil; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.security.spec.InvalidKeySpecExc

  • Java中判断字符串是中文或者英文的工具类分享

    直接上代码: 复制代码 代码如下: import java.util.regex.Matcher; import java.util.regex.Pattern; /**  *  * <p>  * ClassName ShowChineseInUnicodeBlock  * </p>  * <p>  * Description 提供判断字符串是中文或者是英文的一种思路  * </p>  *  * @author wangxu wangx89@126.com

  • 一个Java配置文件加密解密工具类分享

    常见的如: 数据库用户密码,短信平台用户密码,系统间校验的固定密码等.本工具类参考了 <Spring.3.x企业应用开发实战>一书 5.3节的实现.完整代码与注释信息如下: 复制代码 代码如下: package com.cncounter.util.comm; import java.security.Key;import java.security.SecureRandom; import javax.crypto.Cipher;import javax.crypto.KeyGenerato

  • Java实现的文本字符串操作工具类实例【数据替换,加密解密操作】

    本文实例讲述了Java实现的文本字符串操作工具类.分享给大家供大家参考,具体如下: package com.gcloud.common; import org.apache.commons.lang.StringUtils; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.BreakIterator; import java.util.Array

  • Java常用字符串工具类 字符串智能截取(3)

    前两篇博文简单分享了一下数字工具类,现在说说字符串工具类. 相信大家都自己封装过或者用过guava封装的Strings,但是有没有可以智能截取,比如说"截取整数第二个到倒数第二个"的字符串.你是否还需要自己写str.substring(1,str.length()-2).如果是的话,请继续往下看吧.暂时还未见过可以反向截取字符串的.一般都是substring(str, start, end)或者substring(str, len);而这里的参数都必须是正数,否则就会报错.所以为了改善

  • java中常用工具类之字符串操作类和MD5加密解密类

    java中常用的工具类之String和MD5加密解密类 我们java程序员在开发项目的是常常会用到一些工具类.今天我分享一下我的两个工具类,大家可以在项目中使用. 一.String工具类 package com.itjh.javaUtil; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import

  • Java实现的3des加密解密工具类示例

    本文实例讲述了Java实现的3des加密解密工具类.分享给大家供大家参考,具体如下: package com.gcloud.common; import org.apache.poi.poifs.property.Child; import org.bouncycastle.jce.provider.BouncyCastleProvider; import javax.crypto.*; import javax.crypto.spec.IvParameterSpec; import javax

  • Java实现产生随机字符串主键的UUID工具类

    本文实例讲述了Java实现产生随机字符串主键的UUID工具类.分享给大家供大家参考,具体如下: package com.gcloud.common; import java.net.InetAddress; import java.util.UUID; /** * uuid工具类 * Created by charlin on 2017/9/9. */ public class UUIDUtil { private String sep = ""; private static int

  • Java实现中文字符串与unicode互转工具类

    本文实例为大家分享了Java实现中文字符串与unicode互转的具体代码,供大家参考,具体内容如下 原理利用了java实现js的escape以及unescape函数. /** * 中文字符串和unicode互转工具类 <br> * * @author hkb <br> */ public class UnicodeConvertUtils { /** * 实现js的escape函数 * * @param input * 待传入字符串 * @return */ public stat

  • 浅谈常用字符串与集合类转换的工具类

    在项目中,我们经常需要把接收到的字符串转换成对应的集合类保存,或者把集合类转换成字符串以方便传输,这个工具类中封装了几个常用的方法,对于这种转换需求十分方便. import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Properties; import java.u

  • Java实现将数字日期翻译成英文单词的工具类实例

    本文实例讲述了Java实现将数字日期翻译成英文单词的工具类.分享给大家供大家参考,具体如下: package com.sunyard.etp.ag.util; import java.math.BigDecimal; import java.util.Arrays; public class DateEngUtil { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated meth

  • Java实现的获取和判断文件头信息工具类用法示例

    本文实例讲述了Java实现的获取和判断文件头信息工具类用法.分享给大家供大家参考,具体如下: package test; import java.io.FileInputStream; import java.io.IOException; import java.util.HashMap; /** * 获取和判断文件头信息 * * @author Sud * */ public class GetTypeByHead { // 缓存文件头信息-文件头信息 public static final

  • java连接数据库增、删、改、查工具类

    java连接数据库增.删.改.查工具类 数据库操作工具类,因为各厂家数据库的分页条件不同,目前支持Mysql.Oracle.Postgresql的分页查询在Postgresql环境测试过了,其他数据库未测试.sql语句需要使用预编译形式的 复制代码 代码如下: package db; import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.R

  • 详解Java MyBatis 插入数据库返回主键

    最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User(); user.setUserName("chenzhou"); user.setPassword("xxxx"); user.setComment("测试插入数据返回主键功能"); System.out.println("插入前主键为:

  • java字符串与日期类型转换的工具类

    常用的字符串转date,和日期转字符串的方法,具体内容如下 package com.cq2022.zago.base.util; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.GregorianCalendar; import javax.xml.datatype.Dat

  • Java 如何读取Excel格式xls、xlsx数据工具类

    目录 Java 读取Excel格式xls.xlsx数据工具类 需要POI的jar包支持 调用方式 使用poi读取xlsx格式的Excel总结 今天遇到的坑 我使用的是springmvc,首先是controller部分 然后是读取Excel文件部分,也就是service部分 spring-servlet.xml 配置如下 最初的maven是这么配置的 Java 读取Excel格式xls.xlsx数据工具类 需要POI的jar包支持 调用方式 ReadExcelTest excelTest = ne

  • 使用java基础类实现zip压缩和zip解压工具类分享

    使用java基础类写的一个简单的zip压缩解压工具类 复制代码 代码如下: package sun.net.helper; import java.io.*;import java.util.logging.Logger;import java.util.zip.*; public class ZipUtil {    private final static Logger logger = Logger.getLogger(ZipUtil.class.getName());    privat

随机推荐