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

資訊專欄INFORMATION COLUMN

Java 縮短UUID為22位

Michael_Ding / 1416人閱讀

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

參考

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

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

思路

UUID為128位,取高低64位分別處理,轉(zhuǎn)為64制字符,我沒有按照Base64的字符表來,隨著自己的性子慣了,也沒有3字節(jié)轉(zhuǎn)為4字節(jié),參考別人直接64位每低6位轉(zhuǎn)為int對應(yīng)一個64制字符數(shù)組(這樣其實(shí)最后一組只有4位轉(zhuǎn)為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位
            /* 無符號的移位只有右移,沒有左移
             * 使用“>>>”進(jìn)行移位
             */
            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);
    }
}

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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/74137.html

相關(guān)文章

  • 關(guān)于UUID的二三事

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

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

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

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

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

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

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

    learn_shifeng 評論0 收藏0

發(fā)表評論

0條評論

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