擷取隨機key

來源:互聯網
上載者:User

標籤:current   ==   vat   --   inter   base   nal   dig   git   

import java.util.Set;import io.netty.util.internal.ConcurrentSet;/** * 擷取key *  * @project common-utils * @fileName GetKey.java * @Description * @author light-zhang * @date 2018-10-12 17:10:33 * @version 1.0.0 */public final class GetKey {    private static final String baseDigits = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_";    private static final int BASE = baseDigits.length();    private static final char[] digitsChar = baseDigits.toCharArray();    private static final int FAST_SIZE = ‘z‘;    private static final int[] digitsIndex = new int[FAST_SIZE + 1];    static {        for (int i = 0; i < FAST_SIZE; i++) {            digitsIndex[i] = -1;        }        for (int i = 0; i < BASE; i++) {            digitsIndex[digitsChar[i]] = i;        }    }    /**     * 參數解碼     *      * @param paramter     * @return     */    public static long decode(String paramter) {        long result = 0L;        synchronized (paramter) {            long multiplier = 1;            for (int pos = paramter.length() - 1; pos >= 0; pos--) {                result += getIndex(paramter, pos) * multiplier;                multiplier *= BASE;            }        }        return result;    }    /**     * 傳入系統納秒,防止重複     *      * @param number     * @return     */    public static String encode(Long number) {        final StringBuilder builder = new StringBuilder();        synchronized (number) {            if (number < 0)                new IllegalArgumentException("Number(Base64) must be positive: ".concat(number.toString()));            if (number == 0)                return "0";            while (number != 0) {                builder.append(digitsChar[(int) (number % BASE)]);                number /= BASE;            }        }        return builder.toString();    }    private static int getIndex(String paramter, int pmindex) {        char c = paramter.charAt(pmindex);        if (c > FAST_SIZE) {            new IllegalArgumentException("Unknow character for Base64: ".concat(paramter));        }        int index = digitsIndex[c];        if (index == -1) {            new IllegalArgumentException("Unknow character for Base64: ".concat(paramter));        }        return index;    }    public static void main(String[] args) {        Set<String> data = new ConcurrentSet<String>();        for (int i = 0; i < 20000000; i++) {            // System.out.println(encode(System.nanoTime()));            data.add(encode(System.nanoTime()));            // System.out.println(decode(UUID.randomUUID().toString()));        }        System.out.println(data.size());        // System.out.println(decode("6c7P6dzh"));    }}

 

擷取隨機key

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.