专栏首页贝塔博客nodejs 生成8位短id

nodejs 生成8位短id

nodejs版:

var uuid = require('uuid');
var shortArray = ["a", "b", "c", "d", "e", "f",
    "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
    "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5",
    "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I",
    "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
    "W", "X", "Y", "Z"]
exports.getShortId = () => {
    var uid = uuid.v4();
    uid = uid.replace(/-/g, "");
    var buffer = [];
    for (var i = 0; i < 8; i++) {
        let start = i  4
        let end = i  4 + 4
        var str = uid.substring(start, end);
        buffer.push(shortArray[parseInt(str, 16) % 62])
    }
    return buffer.join("");
}
console.log(this.getShortId())
this.getShortId();java版:public static String[] chars = new String[] { "a", "b", "c", "d", "e", "f",
            "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
            "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5",
            "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I",
            "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
            "W", "X", "Y", "Z" };
 
 
public static String generateShortUuid() {
    StringBuffer shortBuffer = new StringBuffer();
    String uuid = UUID.randomUUID().toString().replace("-", "");
    for (int i = 0; i < 8; i++) {
        String str = uuid.substring(i  4, i  4 + 4);
        int x = Integer.parseInt(str, 16);
        shortBuffer.append(chars[x % 0x3E]);
    }
    return shortBuffer.toString();
 
}python版:import uuid    
array = ["a", "b", "c", "d", "e", "f",    
"g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",    
"t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5",    
"6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I",    
"J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",    
"W", "X", "Y", "Z"]    
def get_short_id():    
id = str(uuid.uuid4()).replace("-", '')    
buffer = []    
for i in range(0, 8):    
start = i  4    
end = i  4 + 4    
val = int(id[start:end], 16)    
buffer.append(array[val % 62])    
return "".join(buffer)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • img在div中上下左右居中

    小贝壳
  • nginx 配置404 页面转发到应用

    这个是在应用中的,如果是要自定义页面,配置root目录,然后 直接/html/404.html 就可以了

    小贝壳
  • 有刷电机、无刷电机、伺服电机、步进电机、减速电机的区别

    有刷电机是内含电刷装置的将电能转换成机械能(电动机)或将机械能转换成电能(发电机)的旋转电机。有刷电机是所有电机的基础,它具有启动快、制动及时、可在大范围内平滑...

    小贝壳
  • Golang之字符串操作(反转中英文字符串)

    超蛋lhy
  • Android小知识之OkHttp的2种请求方式详解

    OkHttp是目前非常火的网络库,支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接,连接池减少请求延时,透明的GZIP压缩减少响应数据的...

    砸漏
  • 视频 | 斯坦福大学提出自监督人脸模型:250Hz 单眼可重建

    本文为雷锋字幕组编译的 CVPR 2018 Oral 论文解读短视频,论文题目 Self-supervised Face Model Learning for ...

    AI科技评论
  • JSON格式化

    我个人主要是做一些后端的工作,比如php、python、c之类的,c比较少,最主要的是php,不过我非常喜欢js,所以经常会愿意去写一些小玩意自娱自乐。

    江湖安得便相忘
  • Spring源码初探-IOC(5)-ApplicationContext功能扩展及其扩展点

    前面几篇关于Spring的文章简单阐述了使用BeanFactory作为容器时bean的初始化过程。然而在实际使用中,我们并不会直接接触和编码BeanFactor...

    LNAmp
  • 业务解耦-事件监听模式的使用

    事件监听机制有点类似于sub/pub模式,不过这个技术点也仅适用于单体应用的范围,分布式应用还是老老实实使用消息队列来进行吧。

    后端Coder
  • 新疆学子的腾讯后台开发的面经

    4月26日收到了腾讯的offer,终于安心了,很多小伙伴们要我写面经介绍下,其实自己能拿到腾讯的offer 99%是运气~, 这里就介绍下自己的面经跟总结自己的...

    牛客网

扫码关注云+社区

领取腾讯云代金券