国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java 縮短UUID為22位

Michael_Ding / 1443人閱讀

摘要:參考這里面的回答,就是利用無符號右移,每位轉換為制字符這位仁兄也參考了別人的就不列舉了思路為位,取高低位分別處理,轉為制字符,我沒有按照的字符表來,隨著自己的性子慣了,也沒有字節轉為字節,參考別人直接位每低位轉為對應一個制字符數組這樣其實最

參考

http://stackoverflow.com/ques... 這里面rharari的回答,就是利用無符號右移,每6位轉換為64制字符

http://blog.csdn.net/sskicgah... 這位仁兄也參考了別人的就不列舉了

思路

UUID為128位,取高低64位分別處理,轉為64制字符,我沒有按照Base64的字符表來,隨著自己的性子慣了,也沒有3字節轉為4字節,參考別人直接64位每低6位轉為int對應一個64制字符數組(這樣其實最后一組只有4位轉為64制字符)

public class GenerateShortUUID {
    private final static char[] DIGITS64 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_".toCharArray();
    
    public static String next() {
        UUID u = UUID.randomUUID();
//        return u.toString();
        return toIDString(u.getMostSignificantBits()) + toIDString(u.getLeastSignificantBits());
    }

    private static String toIDString(long l) {
        char[] buf = "00000000000".toCharArray(); // 限定11位長度
        int length = 11;
        long least = 63L; // 0x0000003FL
        do {
            buf[--length] = DIGITS64[(int) (l & least)]; // l & least取低6位
            /* 無符號的移位只有右移,沒有左移
             * 使用“>>>”進行移位
             */
            l >>>= 6;
        } while (l != 0);
        return new String(buf);
    }

    public static void main(String[] args) {
        long time = System.currentTimeMillis();
        for (int i=0; i<1000000L; i++) {
            next();
        }
        System.out.println(System.currentTimeMillis() - time);
    }
}

效率之前有測試過忘記了,應該還可以,你們測試過的話可以告訴我。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/74137.html

相關文章

  • 關于UUID的二三事

    摘要:規范定義來自于發布的一個規范。其中的字母是進制表示,大小寫無關。在里面的使用的例子其中,最后的個字符就是我電腦網卡的地址版本安全的安全的和基于時間的算法相同,但會把時間戳的前位置換為的或。 一、簡介 UUID,是Universally Unique Identifier的縮寫,UUID出現的目的,是為了讓分布式系統可以不借助中心節點,就可以生成UUID來標識一些唯一的信息; GUID,...

    2json 評論0 收藏0
  • 分布式id生成方案概述

    摘要:序本文主要來聊聊分布式的生成方案。分布式的生成,以為代表的,系列算法采用的就是劃分命名空間并行生成的思路。 序 本文主要來聊聊分布式id的生成方案。 目標 業務系統需要什么樣的ID生成器中提出了幾點目標: 唯一性 時間相關 粗略有序 可反解 可制造 主要思路 對于每個標識,都需要有一個命名空間(namespace),來保證其相對唯一性。分布式的ID生成,以Twitter Snowf...

    Terry_Tai 評論0 收藏0
  • 分布式ID系列(2)——UUID適合做分布式ID嗎

    摘要:用戶指定一個名字空間和一個字符串,通過散列,生成。字符串本身需要是唯一的。。雖然是基于隨機數,但是重復的可能性可以忽略不計,因此該版本也是被經常使用的版本。。當前正在使用的。。 UUID的生成策略: UUID的方式能生成一串唯一隨機32位長度數據,它是無序的一串數據,按照開放軟件基金會(OSF)制定的標準計算,UUID的生成用到了以太網卡地址、納秒級時間、芯片ID碼和許多可能的數字。U...

    wayneli 評論0 收藏0
  • 邀請好友注冊,模擬百度網盤(java語言)

    摘要:我的思路大體是用網絡范圍內唯一的字符串為標識去邀請好友,邀請者給個狀態位代表邀請者,并給他綁定個唯一。本人建立個群作為去轉盤網的官方群,人數現在也不多,如果有興趣的話來逛逛吧,多個粉絲去轉盤多一份熱鬧,群號 花了一年時間做了個網盤下載站點,有興趣的朋友可以看看站名:去轉盤網其中有個需求是想模擬百度網盤的邀請好友注冊功能,想了很久果然皇天不負有心人,終于整理出個思路,并且附上代碼,希望各...

    learn_shifeng 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<