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程序设计有所帮助。

时间: 2017-10-23

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

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

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配置文件加密解密工具类分享

常见的如: 数据库用户密码,短信平台用户密码,系统间校验的固定密码等.本工具类参考了 <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实现的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常用字符串工具类 字符串智能截取(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 随机取字符串的工具类

一.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常用工具类—泛型

一.泛型概述 1.背景 在Java中增加泛型之前,泛型程序设计使用继承来实现的. 坏处: 需要进行强制类型转换 可向集合中添加任意类型的对象,存在风险 2.泛型的使用 List<String> list=new ArrayList<String>(); 3.多态与泛型 class Animal{} class Cat extends Animal{} List<Animal> list=new ArrayList<Cat>(); //这是不允许的,变量声明的

java常用工具类 数字工具类

本文实例为大家分享了java常用工具类,数字工具类的具体代码,供大家参考,具体内容如下 package com.jarvis.base.util; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.Random; public class NumericHelper { /** * 描述:通过一个整数i获取你所要的哪几个(从0开始

java常用工具类 XML工具类、数据验证工具类

本文实例为大家分享了java常用工具类的具体代码,供大家参考,具体内容如下 package com.jarvis.base.util; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import java.net.URL; import java.util.Properties

java常用工具类 IP、File文件工具类

本文实例为大家分享了java常用工具类的具体实现代码,供大家参考,具体内容如下 IP工具类 package com.jarvis.base.util; import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; /** * * * @Title: IpMacUtil.java * @Package com.jarvis.base.util * @Description

Java常用工具类 Random随机数、MD5加密工具类

本文实例为大家分享了java常用工具类的具体代码,供大家参考,具体内容如下 Random随机数工具类 package com.jarvis.base.util; import java.util.Random; /** * * * @Title: RandomHelper.java * @Package com.jarvis.base.util * @Description: 随机数工具类 * @version V1.0 */ public class RandomHelper { /** *

Java常用工具类 UUID、Map工具类

本文实例为大家分享了Java常用工具类 的具体代码,供大家参考,具体内容如下 UUID工具类 package com.jarvis.base.util; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; /** * A class that represents an immutable universally

java常用工具类 Reflect反射工具类、String字符串工具类

本文实例为大家分享了java常用工具类的具体代码,供大家参考,具体内容如下 Reflect反射工具类 package com.jarvis.base.util; /** * * * @Title: ReflectHelper.java * @Package com.jarvis.base.util * @Description: 反射工具类 * @version V1.0 */ public class ReflectHelper { /** * 提指定的类载入以系统中 * * @param n

java常用工具类 Date日期、Mail邮件工具类

本文实例为大家分享了java常用工具类的具体实现代码,供大家参考,具体内容如下 package com.jarvis.base.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * * * @Title: DateHelper.java * @Package com.jarvis.base.u