Javascript实现cuid唯一标识号
常用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唯一标识号相关推荐
- Javascript生成全局唯一标识符(GUID,UUID)的方法
方法一 function guid() {return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {var ...
- JavaScript 爆红后,微软为何还要开发 TypeScript?
开源 TypeScript 在经历过最初微软的内部抵制后,如今终于成长为构建 Web 应用程序的首选语言. 作者 | Liam Tung 译者 | 弯月,责编 | 屠敏 头图 | CSDN 下载自东方 ...
- JavaScript权威指南(第六版) 初读笔记
JavaScript的5种原始类型:undefined.null.布尔值.数字和字符串. JavaScript中两个非常重要的数据类型是对象和数组. 通过方括号定义数组元素和通过花括号定义对象属性名和 ...
- 2016年度 JavaScript 展望(下)
[编者按]本文作者为资深 Web 开发者 TJ VanToll, TJ 专注于移动端 Web 应用及其性能,是<jQuery UI 实践> 一书的作者. 本文系 OneAPM 工程师编译呈 ...
- Vue只是JavaScript其中的一个框架
JavaScript 浏览器里面唯一能运行的语言是JavaScript JavaScript 简写也就是JS EcmaScript EcmaScript(JavaScript交给Ecma组织去监管生产 ...
- JavaScript学习笔记 1
<精通js脚本之jQuery框架> for in var arr = new Array(); arr[0] = 'a'; arr[1] = 'b'; for(var a in arr) ...
- python中编完类后到实例编写_Python 和 JavaScript 的区别是什么?
原标题:Python 和 JavaScript 的区别是什么? JavaScript和Python这两种语言非常流行和强大,但它们在部分语法的使用上却有着一些不同,如果你恰好对这些区别对比感兴趣,那么 ...
- 我们与专家讨论了JavaScript –文字记录
今天上午与专家对话的主题是JavaScript,我们的专家是Ara Pehlivanian,这是我们最新著作< Jump Start JavaScript>的合著者. 这是一个繁忙的会议, ...
- JavaScript?静下心来的研究之路
目录 一. 入门级 二.初级开发: 三.中级开发 四.其他阅读 五. 结语 六.感谢 这是我这些年看的书.还有几本没有上镜,因为被朋友借走了,哈哈. (ps:这些书我也并又没全看完,有一些看的昏昏欲睡 ...
最新文章
- oracle执行长任务,oracle 里面定时执行任务设置
- Nginx URL重写(rewrite)配置及信息详解
- miui通知栏要点两下_「MIUI玩机技巧84」MIUI12状态栏如何切旧版控制中心
- 上班族不知不觉发财的十大秘诀
- 如何使用Apache Drill分析高度动态的数据集
- 数据增量更新定义_TiDB 在 OPPO 准实时数据仓库中的实践
- 【Java】hashCode和identityHashCode的区别
- SCPPO(六):源代码管理工具---Team Foundation Server
- Verdi的使用技巧总结
- 电脑重装系统超详细完整教程图解
- Windows远程桌面如何设置分辨率
- Android 实现计时器功能,Android计时器的三种实现方式(Chronometer、Timer、handler)...
- Unable to find gradle task to build
- 手机ROM,RAM作假显示
- 电脑版微信提示音mp3_短的微信提示音什么好?40首好听的微信提示音试听下载...
- 【plang 1.4.6】Plang高级编程语言(发布)
- 集体名词做主语时下谓语的单复数选择
- Nginx报504 gateway timeout错误的解决方法
- 歌斐资产CEO殷哲谈资产的转型升级
- MCNP学习笔记之命令行与接续运行