【问题标题】:Generating unique ID in a Java class [duplicate]在 Java 类中生成唯一 ID [重复]
【发布时间】:2018-07-27 02:54:10
【问题描述】:

我对前端不太熟悉,只是后端的初学者。我正在使用 servlet 创建一个网页,该网页从数据库中读取一个人的数据并以列表的形式显示在页面上。列表的每一行都包含一个用于联系的按钮。单击该按钮时,会向已选择其数据的人发送一条消息。我的问题是 - 我们如何通过单击按钮创建一个唯一 id 以在数据库的消息表中生成一个消息 id 等待所选人员的响应?

【问题讨论】:

  • 这通常是时间戳的工作。如果您有大量用户,则可能将某种 user_id 与时间戳连接以使其更加独特。
  • 时间戳并不是 100% 确定是唯一的,即使使用前缀也是如此。我会认为它们是一种解决方法。

标签: java unique-id


【解决方案1】:

所有体面的数据库都提供了一种生成唯一 ID 的方法。一种常见的方法是使用 sequences,但它甚至可以更简单,例如 PostgreSQL 提供了 SERIAL 和 BIGSERIAL 类型,它们会为每个插入的行自动创建一个新的 id。

长话短说:如果您只需要为每一行设置不同的 id,请使用数据库提供的等效 SERIAL,如果您需要更大的控制权,请直接使用 SEQUENCE(或其等效项)。

【讨论】:

    【解决方案2】:

    使用 UUID 生成器

    从 Java 5 开始,UUID 类提供了一种生成唯一 ID 的简单方法。 UUID 生成的标识符实际上是普遍唯一的标识符。 示例

    import java.util.UUID;
    
    public class GenerateUUID {
    
      public static final void main(String... aArgs){
        //generate random UUIDs
        UUID idOne = UUID.randomUUID();
        UUID idTwo = UUID.randomUUID();
        log("UUID One: " + idOne);
        log("UUID Two: " + idTwo);
      }
    
      private static void log(Object aObject){
        System.out.println( String.valueOf(aObject) );
      }
    } 
    
    Example run:
    >java -cp . GenerateUUID
    UUID One: 067e6162-3b6f-4ae2-a171-2470b63dff00 
    UUID Two: 54947df8-0e9e-4471-a2f9-9af509fb5889
    

    请参考:http://www.javapractices.com/topic/TopicAction.do?Id=56

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 2015-01-21
      • 1970-01-01
      • 2012-06-23
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      相关资源
      最近更新 更多