博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
生成唯一标识的元素
阅读量:6235 次
发布时间:2019-06-22

本文共 1764 字,大约阅读时间需要 5 分钟。

  1  开发过程中时间作为一个死循环,经常使用到,适时实地的使用时间这个变量可以解决很多问题。

    比如:使用时间作为版本控制的一个顺序主线

          在Web开发过程中为了验证Ajax的局部刷新技术,我曾经在页面上通过显示访问页面时留下的时间信息来判断页面是否整体刷新

          数据库设计中某些问题时间也可以作为主键来使用

          计算机系统中的一些log文件等等都是以时间作为参照来进行管理计算机。

  为了能够使文件的文件名达到唯一表示时间作为常见的特殊的变量自然能够为生成标识起到很多的作用。

 


  2  MAC(Media Access Control)地址,或称为 MAC位址、硬件位址,用来定义网络设备的位置。MAC具有全球唯一性,所以也可以作为生成唯一标识的元素

 


 3  随机数可以作为不确定性的标识的生成元素,而且随机数的生成方式相当丰富,可以根据需要,采用不同的算法,不同的随机数的种子标识就可以产生大量的可用来标识的数据。

 


  4 如果是通信设备等方面的表示,可以用到卫星的定位系统,使用经纬度来作为唯一标识的元素。

 


  5 上面都是计算机中常使用的标识元素。生物界这样的标识是相当的多。DNA,指纹等等。人们还可以采用约定的方式来进行标识,不同的标识元素进行相应的组合最终产生唯一标识的信息。

下面是一个使用IP+时间+随机数产生标识。

 

 
  1. /** 
  2. 实现IP + 时间 + 随机数 生成标识 
  3. **/ 
  4. import java.text.SimpleDateFormat ; 
  5. import java.util.Date ; 
  6. import java.util.Random ; 
  7. public class IPTimeStamp { 
  8.     private SimpleDateFormat sdf = null ; 
  9.     private String ip = null ; 
  10.      
  11.     public IPTimeStamp(){ 
  12.      
  13.     } 
  14.      
  15.     //设置Ip 
  16.     public IPTimeStamp(String ip){ 
  17.         this.ip = ip ; 
  18.     } 
  19.      
  20.     //获取生成的标识的字符串 
  21.     public String getIPTimeRand(){ 
  22.         StringBuffer buf = new StringBuffer() ; 
  23.         if(this.ip != null){ 
  24.             String s[] = this.ip.split("\\.") ; 
  25.             for(int i=0;i<s.length;i++){ 
  26.                 buf.append(this.addZero(s[i],3)) ; 
  27.             } 
  28.         } 
  29.         buf.append(this.getTimeStamp()) ; 
  30.         Random r = new Random() ; 
  31.         for(int i=0;i<3;i++){ 
  32.             buf.append(r.nextInt(10)) ; 
  33.         } 
  34.         return buf.toString() ; 
  35.     } 
  36.      
  37.     //指定格式的时间转换为字符串 
  38.     public String getDate(){ 
  39.         this.sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS") ; 
  40.         return this.sdf.format(new Date()) ; 
  41.     } 
  42.      
  43.     //生成标识的中时间形式的字符串 
  44.     public String getTimeStamp(){ 
  45.         this.sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS") ; 
  46.         return this.sdf.format(new Date()) ; 
  47.     } 
  48.      
  49.     //对Ip地址三位数字补零操作 
  50.     private String addZero(String str,int len){ 
  51.         StringBuffer s = new StringBuffer() ; 
  52.         s.append(str) ; 
  53.         while(s.length() < len){ 
  54.             s.insert(0,"0") ; 
  55.         } 
  56.         return s.toString() ; 
  57.     } 
  58.      
  59.     public static void main(String args[]){ 
  60.         System.out.println(new IPTimeStamp("192.168.1.1").getIPTimeRand()) ; 
  61.     } 

 

转载地址:http://cowia.baihongyu.com/

你可能感兴趣的文章
Android与iOS支持的音频格式
查看>>
深入理解软件构造系统:原理与最佳实践
查看>>
MySQL5.7: sql script demo
查看>>
VC助手失效解决办法
查看>>
一起谈.NET技术,模拟IIS向Silverlight输出策略文件
查看>>
Asp.Net知识锦分享,徐汇区网站设计
查看>>
如果编程语言是一条船
查看>>
J2EE 全面简介
查看>>
网站长期被挂马 访问者屡遭木马侵害
查看>>
Google推反恶意广告网站 防护恶意软件威胁
查看>>
跟我学AngularJs:AngularJs入门及第一个实例
查看>>
翻译处女作欢迎批评指正-tornado的模板系统文档
查看>>
什么时候该用MVC,什么时候该用Webform?
查看>>
windows下安装和设置Git客户端
查看>>
Shell调试篇
查看>>
Android 如何导入已有的外部数据库
查看>>
webpy猫腻之web.database with SQLite
查看>>
关于用netsh.exe配置系统防火墙
查看>>
基本控件使用-使用列表框控件ListBox
查看>>
linux常用命令大全[转]
查看>>