1.关于GUID

下面是一个生成GUID的Java代码:

package com.util;

import java.net.*;

import java.util.*;

import java.security.*;

public class RandomGUID extends Object {

public String valueBeforeMD5 = "";

public String valueAfterMD5 = "";

private static Random myRand;

private static SecureRandom mySecureRand;

private static String s_id;

static {

mySecureRand = new SecureRandom();

long secureInitializer = mySecureRand.nextLong();

myRand = new Random(secureInitializer);

try {

s_id = InetAddress.getLocalHost().toString();

} catch (UnknownHostException e) {

e.printStackTrace();

}

}

public RandomGUID() {

getRandomGUID(false);

}

public RandomGUID(boolean secure) {

getRandomGUID(secure);

}

private void getRandomGUID(boolean secure) {

MessageDigest md5 = null;

StringBuffer sbValueBeforeMD5 = new StringBuffer();

try {

md5 = MessageDigest.getInstance("MD5");

} catch (NoSuchAlgorithmException e) {

System.out.println("Error: " + e);

}

try {

long time = System.currentTimeMillis();

long rand = 0;

if (secure) {

rand = mySecureRand.nextLong();

} else {

rand = myRand.nextLong();

}

sbValueBeforeMD5.append(s_id);

sbValueBeforeMD5.append(":");

sbValueBeforeMD5.append(Long.toString(time));

sbValueBeforeMD5.append(":");

sbValueBeforeMD5.append(Long.toString(rand));

valueBeforeMD5 = sbValueBeforeMD5.toString();

md5.update(valueBeforeMD5.getBytes());

byte[] array = md5.digest();

StringBuffer sb = new StringBuffer();

for (int j = 0; j < array.length; ++j) {

int b = array[j] & 0xFF;

if (b < 0x10) sb.append('0');

sb.append(Integer.toHexString(b));

}

valueAfterMD5 = sb.toString();

} catch (Exception e) {

System.out.println("Error:" + e);

}

}

public String toString() {

String raw = valueAfterMD5.toUpperCase();

StringBuffer sb = new StringBuffer();

sb.append(raw.substring(0, 8));

sb.append("-");

sb.append(raw.substring(8, 12));

sb.append("-");

sb.append(raw.substring(12, 16));

sb.append("-");

sb.append(raw.substring(16, 20));

sb.append("-");

sb.append(raw.substring(20));

return sb.toString();

}

计算机的 id,计算机唯一ID是什么??相关推荐

  1. repositoryitemlookupedit根据每行的id绑定数据_一种根据数据库自增ID生成唯一ID的解决方案...

    在我们的开发过程中,经常会遇到ID生成的问题,那么这里就介绍一种解决方案,注意这里只适合混淆ID规则,也就是说生成的ID没有任何规则,不适用于订单ID. 一般有序自增主键的ID,极易被爬虫抓取数据,作 ...

  2. Redis之String应用场景与SpringCache--存储对象信息、分布式唯一ID、文章阅读量、Lua脚本

    String应用场景 一.存储对象信息 代码 重写Redis序列 解决方式 剖析SpringCache常用注解 @CacheConfig @Cacheable @CachePut @CacheEvic ...

  3. 为什么计算机的网络id,网络ID、主机ID和子网掩码

    网络ID用来表示计算机属于哪一个网络,网络ID相同的计算机不需要通过路由器连接就能够直接通信,我们把网络ID相同的计算机组成一个网络称之为本地网络(网段):网络ID不相同的计算机之间通信必须通过路由器 ...

  4. SnowFlake唯一ID生成器

    写在前面 架构是权衡的结果,架构也是一层层的组件拼接起来的,如果没有好用的组件,架构势必会做阉割,架构的理想态是建立在一堆友好.易用.标准化的组件之上的.在我过去的经验中,有两类组件经常会出现在我的架 ...

  5. 分布式系统的唯一ID

    2019独角兽企业重金招聘Python工程师标准>>> 需求 为什么需要唯一ID 让分布式系统中的需要辨别的元素,都能有唯一的辨识标志. 几乎所有的业务系统,都有生成一个记录标识的需 ...

  6. 分布式与微服务——Iaas,Paas和Saas、单体应用和缺点、微服务概念、传统 分布式 SOA 架构与微服务架构的区别、微服务实战、什么是RPC、CAP定理和BASE理论、唯一ID生成、实现分布式

    文章目录 1-什么是Iaas,Paas和Saas 一 IaaS基础设施服务 二 paas平台即服务 三saas软件即服务 四 总结 2-单体应用和缺点 一 单体应用 二 单体应用的缺陷 3-微服务概念 ...

  7. 10.算法进阶之分布式篇——分布式环境下如何生成唯一ID——UUID

    UUID--全局唯一ID--universally unique identifie. 一般来说常用的基于时间进行排序,因为时间是自然递增的.但是全局唯一ID的两个核心要求是: 全局唯一 粗略有序 在 ...

  8. 全局唯一ID发号器的几个思路

    标识(ID / Identifier)是无处不在的,生成标识的主体是人,那么它就是一个命名过程,如果是计算机,那么它就是一个生成过程.如何保证分布式系统下,并行生成标识的唯一与标识的命名空间有着密不可 ...

  9. 【架构】生成全局唯一ID的3个思路,来自一个资深架构师的总结

    标识(ID / Identifier)是无处不在的,生成标识的主体是人,那么它就是一个命名过程,如果是计算机,那么它就是一个生成过程.如何保证分布式系统下,并行生成标识的唯一与标识的命名空间有着密不可 ...

  10. 生成全局唯一ID的3个思路,来自一个资深架构师的总结

    标识(ID / Identifier)是无处不在的,生成标识的主体是人,那么它就是一个命名过程,如果是计算机,那么它就是一个生成过程.如何保证分布式系统下,并行生成标识的唯一与标识的命名空间有着密不可 ...

最新文章

  1. jquery源码分析(七)——事件模块 event(二)
  2. 自动化测试现状趋势解读,附带近年自动化测试常用工具
  3. lucene 索引流程整理笔记
  4. mac 下搭建 php + apache + mysql 服务器(cool)
  5. 下一个游戏新风口已来?小游戏或成2018年最大游戏黑马
  6. jquery特效(1)—点击展示与隐藏全文
  7. tensorflow计算网络占用内存_详细图解神经网络梯度下降法(tensorflow计算梯度)...
  8. Android ActionBar以及menu的代码设置样式
  9. STM32F207和DM9161A的以太网实现方案
  10. Oracle GoldenGate for Oracle 11g(Solaris 10 x86-64) to Oracle 10g(CentOS 4.8) configuration
  11. 还记得最初的九九乘法表吗?
  12. div+css入门知识
  13. i.MX6DL飞思卡尔双核安卓核心板主控
  14. iOS开发-沙盒(sandbox)机制
  15. 用微软Custom Version识别水果:三分钟开发人工智能小应用
  16. Linux就该这么学——Day2
  17. 找回淘宝的“高级搜索”功能
  18. 2016年8月15日 星期一 --出埃及记 Exodus 16:16
  19. 如何成为技术领袖(转载)
  20. 查询所有上级和所有下级

热门文章

  1. MATLAB/Simulink电力系统与仿真,第七章变压器空载合闸时励磁涌流的仿真经验
  2. 使用FFMPEG实现音频播放器
  3. TAT/CKAAKN/T7/TOC/TRP肽修饰四氧化三铁 TAT/CKAAKN/T7/TOC/TRP-Fe3O4研究
  4. Berkeley DB 源代码分析 (6) 缓存模块
  5. 对一个元素 同时添加单击onclick 和 双击ondblclick 触发冲突的解决
  6. linux 127.0.0.1 不通,linux ping 127.0.0.1不通
  7. 华为运营商级路由器配置示例 | 合集
  8. 5G时代下端侧AI势必大火!阿里技术专家在线解读
  9. OCP最成功的项目是什么?许多数据中心硬件从业者都会和它打交道
  10. C/C++ const和指针记忆口诀