JAVA中唯一值的获取方式

废话不多说,直接上代码,比较简单吧,可能只是有点偏,还是会有用的!

package com.zbv.test;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.UUID;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
 * 得到唯一值的获得的多种方法:
 *                     1、nanoTime
 *                     2、UUID
 *                     3、UID
 *                     4、MD5/SHA加密以及sun公司内部使用类库:Base64Encoder
 * */
public class JustATest {

    public static void main(String[] args) throws NoSuchAlgorithmException {
        for(int i=0;i<100;i++){
            /*这个就是UID,可以直接new 或者带个参数 new UID(short num)此带参数的和无参数的不会冲突-----方法三method——three
            System.out.println(new UID());*/
            System.out.println(method_four());
        }
        //BASE64Encoder编码  BASE64Encoder解码
        BASE64Encoder b64e=new BASE64Encoder();
        System.out.println("a".getBytes());//[B@5cad8086
        System.out.println(new String("a".getBytes()));//a
        String result=b64e.encode("a".getBytes());//YQ==
        System.out.println(result);
        BASE64Decoder b64d=new BASE64Decoder();
        try {
            System.out.println(new String(b64d.decodeBuffer(result)).equals("a"));//true
            System.out.println("解码原值为:"+new String(b64d.decodeBuffer(result)));//"a"
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    /*tips:也用于测试代码执行的时间爱你长度,例如:
     *     long startTime=System.nanoTime();
     *     ....
     *     long duration=System.nanoTime()-startTime;
     *     duration就是你执行了代码所需要的时间,单位是毫微妙mus
     *     1秒=1000豪秒 1毫秒=1000微秒 1微秒=1000毫微秒 1毫微秒=1纳秒 1纳秒=10埃秒 
     * */
    public static String method_one(){
        long time=System.nanoTime();
        return time+"";
    }

    public static String method_two(){
        //检索类型 4(伪随机生成的)UUID 的静态工厂。 使用加密的强伪随机数生成器生成该 UUID。
        UUID value=UUID.randomUUID();
        return value.toString();
    }
    //多种唯一的结合重点是使用BASE64Encoder
    public static String method_four(){
        //此 MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。
        try {
            String str=UUID.randomUUID().toString();
            //使用MD5或者SHA都可以的
            MessageDigest md=MessageDigest.getInstance("SHA");
            //需要传入一个byte[]字节数组---注意:如果不传入参数都会是同一个值
            byte[] bytes=md.digest(str.getBytes());
            //注意此类属于sun.misc的类:首先打开工程属性在library下点开Accessrule选择Accessible然后选择所有**即可
            BASE64Encoder b64e=new BASE64Encoder();
            String result=b64e.encode(bytes);
            return result;
        } catch (NoSuchAlgorithmException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return "";
    }
}

简单的介绍一下:
适用于防止用户多次点击按钮操作,用户的唯一认证等情况下。我在学习web中防止用户因为网络差的情况下多次提交请求造成不好效果从而产生这一需求。因此正好分享出来,以飨喜欢或者路过的小伙伴,一起继续加油^__^
如有错误欢迎指正,如有好的建议和方法,恳请留言,感谢赐教!

你可能感兴趣的:(java)