常用cuid.js 的实现

function pad (num, size) {var s = '000000000' + num;return s.substr(s.length - size);
};var os = require('os'),padding = 2,pid = pad(process.pid.toString(36), padding),hostname = os.hostname(),length = hostname.length,hostId = pad(hostname.split('').reduce(function (prev, char) {return +prev + char.charCodeAt(0);}, +length + 36).toString(36),padding);function fingerprint () {return pid + hostId;
};var lim = Math.pow(2, 32) - 1;function random () {return Math.abs(require('crypto').randomBytes(4).readInt32BE() / lim);
};var c = 0,blockSize = 4,base = 36,discreteValues = Math.pow(base, blockSize);function randomBlock () {return pad((random() *discreteValues << 0).toString(base), blockSize);
}function safeCounter () {c = c < discreteValues ? c : 0;c++; // this is not subliminalreturn c - 1;
}function cuid () {// Starting with a lowercase letter makes// it HTML element ID friendly.var letter = 'c', // hard-coded allows for sequential access// timestamp// warning: this exposes the exact date and time// that the uid was created.timestamp = (new Date().getTime()).toString(base),// Prevent same-machine collisions.counter = pad(safeCounter().toString(base), blockSize),// A few chars to generate distinct ids for different// clients (so different computers are far less// likely to generate the same id)print = fingerprint(),// Grab some more chars from Math.random()random = randomBlock() + randomBlock();return letter + timestamp + counter + print + random;
}cuid.slug = function slug () {var date = new Date().getTime().toString(36),counter = safeCounter().toString(36).slice(-4),print = fingerprint().slice(0, 1) +fingerprint().slice(-1),random = randomBlock().slice(-2);return date.slice(-2) +counter + print + random;
};cuid.isCuid = function isCuid (stringToCheck) {if (typeof stringToCheck !== 'string') return false;if (stringToCheck.startsWith('c')) return true;return false;
};cuid.isSlug = function isSlug (stringToCheck) {if (typeof stringToCheck !== 'string') return false;var stringLength = stringToCheck.length;if (stringLength >= 7 && stringLength <= 10) return true;return false;
};cuid.fingerprint = fingerprint;

Javascript实现cuid唯一标识号相关推荐

  1. Javascript生成全局唯一标识符(GUID,UUID)的方法

    方法一 function guid() {return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {var ...

  2. JavaScript 爆红后,微软为何还要开发 TypeScript?

    开源 TypeScript 在经历过最初微软的内部抵制后,如今终于成长为构建 Web 应用程序的首选语言. 作者 | Liam Tung 译者 | 弯月,责编 | 屠敏 头图 | CSDN 下载自东方 ...

  3. JavaScript权威指南(第六版) 初读笔记

    JavaScript的5种原始类型:undefined.null.布尔值.数字和字符串. JavaScript中两个非常重要的数据类型是对象和数组. 通过方括号定义数组元素和通过花括号定义对象属性名和 ...

  4. 2016年度 JavaScript 展望(下)

    [编者按]本文作者为资深 Web 开发者 TJ VanToll, TJ 专注于移动端 Web 应用及其性能,是<jQuery UI 实践> 一书的作者. 本文系 OneAPM 工程师编译呈 ...

  5. Vue只是JavaScript其中的一个框架

    JavaScript 浏览器里面唯一能运行的语言是JavaScript JavaScript 简写也就是JS EcmaScript EcmaScript(JavaScript交给Ecma组织去监管生产 ...

  6. JavaScript学习笔记 1

    <精通js脚本之jQuery框架> for in var arr = new Array(); arr[0] = 'a'; arr[1] = 'b'; for(var a in arr) ...

  7. python中编完类后到实例编写_Python 和 JavaScript 的区别是什么?

    原标题:Python 和 JavaScript 的区别是什么? JavaScript和Python这两种语言非常流行和强大,但它们在部分语法的使用上却有着一些不同,如果你恰好对这些区别对比感兴趣,那么 ...

  8. 我们与专家讨论了JavaScript –文字记录

    今天上午与专家对话的主题是JavaScript,我们的专家是Ara Pehlivanian,这是我们最新著作< Jump Start JavaScript>的合著者. 这是一个繁忙的会议, ...

  9. JavaScript?静下心来的研究之路

    目录 一. 入门级 二.初级开发: 三.中级开发 四.其他阅读 五. 结语 六.感谢 这是我这些年看的书.还有几本没有上镜,因为被朋友借走了,哈哈. (ps:这些书我也并又没全看完,有一些看的昏昏欲睡 ...

最新文章

  1. 16-Storm-control //GNS3 2.1.5
  2. JavaScript中typeof的用法
  3. Java中使用Jedis连接Redis对SortedSet进行排序操作
  4. 算法题007 计算n的阶乘
  5. 2019年中国教育信息化行业研究报告
  6. YBTOJ:最小数(欧拉函数)
  7. 在javaweb中通过servlet类和普通类读取资源文件
  8. 可编程led灯带原理_SCPSD-250-04-27派克真空压力传感器故障和工作原理
  9. scandall pro找不到扫描仪_想要高清无色差的石材图片就得用扫描仪
  10. Java比较器概述即代码讲解实现
  11. 保存blob为本地文件
  12. 《Python分布式计算》第2章 异步编程 (Distributed Computing with Python)
  13. 揭秘2017双11背后的网络-双11的网络产品和技术概览
  14. Android--布局
  15. 实时记录运动轨迹插件_浅谈 leaflet 地图插件的使用(制作飞机航线图)
  16. 树莓派raspberry pi 4 SSH默认密码无法登录解决办法
  17. Thinksystem ST550安装windows2008R2
  18. 《即兴演讲》学习总结
  19. (数据结构)二叉树中序遍历
  20. 170928 逆向-Reversing.kr(Direct3D_FPS)

热门文章

  1. Java调用百度API实现图像识别
  2. FFMPEG学习【libavcodec】:编解码器:硬件加速器桥:VDPAU解码器和渲染器
  3. 乡镇卫计算机专业岗位职责,计算机室、网络教室管理员岗位职责
  4. owc java_OWC操作excel
  5. [原]OWC做电子表格和图表的试验
  6. python自动化测试教程百度云盘_Python接口自动化测试框架实战视频教程百度云下载...
  7. 计算机有效策略无法连接打印,共享打印提示:Windows无法连接到打印机,拒绝访问...
  8. Apache Skywalking 视频教程
  9. ADSP-21565的开发详解(一)初始状态说明
  10. 入手评测 神舟战神Z8值得买吗