文档章节

生成唯一标识的元素

secondriver
 secondriver
发布于 2015/09/17 09:23
字数 679
阅读 19
收藏 0

  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.     } 

 

本文出自 “野马红尘” 博客,谢绝转载!

© 著作权归作者所有

共有 人打赏支持
secondriver
粉丝 10
博文 229
码字总数 233821
作品 0
广州
程序员
私信 提问
Hibernate的generator属性的意义

本文讲述Hibernate的generator属性的意义。Generator属性有7种class,本文简略描述了这7种class的意义和用法。 Hibernate的Generator属性有7种class,本文简略描述了这7种class的意义和用法。...

黄梦巍
2013/06/26
0
0
Hibernate学习3--Hibernte的映射关系(基础概念篇)

前两节我们分别从Hibernate的demo和Hibernate的概念上熟悉了Hibernate的使用,这一节我们来了解Hibernate中的映射关系 首先我们了解下Hibernate映射文件中的各种标签的用法 1<hibernate-mapp...

王小明123
2014/04/14
0
0
Android之PreferenceActivity

看到很多书中都没有对PreferenceActivity做介绍,而我在看Android Samples时无意中看见了,所以就稍微总结一下,也方便日后查找。 PerferenceActivity是什么,看下面的截图: 好了,我们看到...

晨曦之光
2012/03/05
356
0
Hibernate的generator属性之意义【转】

Hibernate的generator属性之意义 本文讲述Hibernate的generator属性的意义。Generator属性有7种class,本文简略描述了这7种class的意义和用法。 Hibernate的Generator属性有7种class,本文简...

houyiwujing
2012/02/28
0
0
mybatis核心组件详解——MapperAnnotationBuilder

MapperAnnotationBuilder(org.apache.ibatis.builder.annotation.MapperAnnotationBuilder),mapper注解构建器。 它的职责很简单,就是解析指定的mapper接口对应的Class对象中,包含的所有...

拉风小野驴
2016/02/29
472
2

没有更多内容

加载失败,请刷新页面

加载更多

大数据剖析热点新闻:996、巴黎圣母院、奔驰维权为什么成为本周热搜

智能大数据专家表示:每一段重要的时期都会有一串隐秘的数字密码,请往下看: 本周共有50条新闻,作为嗅嗅的样本进行数据分析,得出以下统计图: 1.新闻热词折线统计图 在新闻标题及正文中,...

forespider
58分钟前
1
0
Coding and Paper Letter(六十四)

资源整理。 1 Coding: 1.交互式瓦片编辑器。 tile playground 2.R语言包autokeras,autokeras的R接口。autokeras是一个开源的自动机器学习的软件。 autokeras 3.斯坦福网络分析平台,用于网络...

胖胖雕
今天
1
0
最简单的cd命令是个大坑!

BASH Shell 是大多 Linux 发行版的默认 shell,BASH 有一些自己的内置命令,cd 就是其中的一个。 在centos6里面,系统中不存在 cd 的二进制文件。但是你仍然可以运行该命令,这是因为 cd 是 ...

gaolongquan
今天
1
0
spring获取bean的几种方式

使用jdk:1.8、maven:3.3.3 spring获取Bean的方式 pom.xml文件内容: <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="......

Vincent-Duan
今天
3
0
一段话系列-Linux中IO的同步、异步、阻塞、非阻塞

首先我们框定一下背景,我们探讨的是Linux系统下的IO模型。 同步和异步是针对内核操作数据而言的,同步是指内核串行顺序操作数据,异步是指内核并行(或并发)操作数据,然后通过回调的方式通...

EasyProgramming
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部