de-vraag
  • 疑问
  • 标签
  • 用户
通知
奖励
注册
一旦您注册,您将会收到对您的问题的回复和评论。
登录
如果您已经有一个账户,请登录查看新的通知。
增加的问题、答案和评论会有奖励。
更多
资料来源
编辑
Chris Dutrow
Chris Dutrow
问题

在Java中创建一个GUID

在Java中创建GUID的最佳方式有哪些?

356 2010-06-06T01:12:27+00:00 6
Valeriu
Valeriu 50848
已编辑的问题 5日 十月 2021 в 8:39
 Boann
Boann
已编辑的问题 18日 十一月 2015 в 5:55
编程
java
guid
热门视频
IntelliJ IDEA開發你的第一個Java web項目(Servlet+JSP實現系統登錄)| Java web教程
IntelliJ IDEA開發你的第一個Java web項目(Servlet+JSP實現系統登錄)| Java web教程
1年前
这个名为 Axelor 的 Java 框架能让你开发效率提升10倍,不懂前端技术也能独立接单
这个名为 Axelor 的 Java 框架能让你开发效率提升10倍,不懂前端技术也能独立接单
2年前
UUID Generators using Java
UUID Generators using Java
2年前
Java要学到什么程度?掌握什么技术。学完Java以后再学什么?
Java要学到什么程度?掌握什么技术。学完Java以后再学什么?
2年前
Java物件導向 重觀念迅速教學 3 Polymorphism 什麼是繼承? 什麼是多型?為何多型以及如何設計多型?
Java物件導向 重觀念迅速教學 3 Polymorphism 什麼是繼承? 什麼是多型?為何多型以及如何設計多型?
4年前
10、自动创建Servlet&小技巧:使生成的servlet更清新一些
10、自动创建Servlet&小技巧:使生成的servlet更清新一些
5年前
UUID (Vale a pena utilizar esse negócio?)
UUID (Vale a pena utilizar esse negócio?)
2年前
甲骨文云创建实例+PUTTY远程连接 - 永久免费服务器
甲骨文云创建实例+PUTTY远程连接 - 永久免费服务器
4个月前
7小时掌握Java (2020年最新教程)
7小时掌握Java (2020年最新教程)
2年前
Universally Unique Identifiers (UUID/GUID) // Game Engine series
Universally Unique Identifiers (UUID/GUID) // Game Engine series
8个月前
Java web开发要不要学习JSP, SSM,直接上spring boot行吗?
Java web开发要不要学习JSP, SSM,直接上spring boot行吗?
1年前
10 尚硅谷 在Idea中使用Maven 创建Java工程
10 尚硅谷 在Idea中使用Maven 创建Java工程
1年前
如何高效地在网上找开源项目做!在职程序员实际演示一波视频教程操作
如何高效地在网上找开源项目做!在职程序员实际演示一波视频教程操作
2年前
學校老師沒教你 OOP 物件導向的秘密 Why is Java NOT an OOP Language? 【電腦說人話】(CC字幕)
學校老師沒教你 OOP 物件導向的秘密 Why is Java NOT an OOP Language? 【電腦說人話】(CC字幕)
7个月前
java 141601 【掌握】UUID类
java 141601 【掌握】UUID类
1年前
« 前进
下一步 »
Kaleb Brasee
Kaleb Brasee
6日 六月 2010 в 1:16
2010-06-06T01:16:03+00:00
更多
资料来源
编辑
#10553135

java.util.UUID.randomUID();。

399
0
解决方案/答案
Mark Byers
Mark Byers
6日 六月 2010 в 1:14
2010-06-06T01:14:45+00:00
更多
资料来源
编辑
#10553134

看看Java 5及以后版本捆绑的[UUID类][1]。

例如: * 如果你想要一个随机的UUID,你可以使用[randomUUID][2]方法。

  • 如果你想要一个随机的UUID,你可以使用[randomUID][2]方法。
  • 如果你想要一个UUID初始化为一个特定的值,你可以使用[UUID构造函数][3]或[fromString][4]方法。

[1]: http://docs.oracle.com/javase/8/docs/api/java/util/UUID.html [2]: http://docs.oracle.com/javase/8/docs/api/java/util/UUID.html#randomUUID() [3]: http://docs.oracle.com/javase/8/docs/api/java/util/UUID.html#UUID(long,%20long) [4]: http://docs.oracle.com/javase/8/docs/api/java/util/UUID.html#fromString(java.lang.String)

Basil Bourque
Basil Bourque
编辑本段答案16日 七月 2015 в 9:11
UUID (Java Platform SE 8 )
docs.oracle.com
UUID (Java Platform SE 8 )
docs.oracle.com
330
0
Stephen C
Stephen C
6日 六月 2010 в 3:28
2010-06-06T03:28:17+00:00
更多
资料来源
编辑
#10553136

这取决于你想要什么样的UUID。

  • 标准的Java [UID][2]类可以生成Version 4(随机)UUIDs。 (UPDATE - Version 3(name)UUIDs也可以生成。)它也可以处理其他变体,尽管它不能生成它们。 (在这种情况下,"handle" 意味着从long、byte[]或[String][6]表示法中构造UUID实例,并提供一些适当的访问器)。)

  • Java UUID生成器(JUG)][7]的实现声称支持"所有3个'官方&#39。 [RFC-4122][8]所定义的UUID类型&quot。 ... 尽管RFC实际上定义了4种类型,并提到了第5种类型。

关于UUID类型和变体的更多信息,在[Wikipedia][9]中有一个很好的总结,血淋淋的细节在[RFC 4122][10]和其他规范中。

1:

[2]: http://docs.oracle.com/javase/8/docs/api/java/util/UUID.html 3:

4:

5:

[6]: https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html#fromString-java.lang.String- [7]: http://wiki.fasterxml.com/JugHome [8]: http://tools.ietf.org/html/rfc4122 [9]: http://en.wikipedia.org/wiki/Uuid [10]: https://tools.ietf.org/html/rfc4122

Stephen C
Stephen C
编辑本段答案13日 九月 2017 в 10:56
RFC 4122 - A Universally Unique IDentifier (UUID) URN Namespace
A Universally Unique IDentifier (UUID) URN Namespace (RFC 4122)
tools.ietf.org
UUID (Java Platform SE 8 )
docs.oracle.com
Universally unique identifier - Wikipedia
en.wikipedia.org
Universally unique identifier - Wikipedia
en.wikipedia.org
Universally unique identifier - Wikipedia
en.wikipedia.org
UUID (Java Platform SE 8 )
docs.oracle.com
UUID (Java Platform SE 8 )
docs.oracle.com
31
0
Anton Belev
Anton Belev
10日 十月 2016 в 9:37
2016-10-10T09:37:37+00:00
更多
资料来源
编辑
#10553138

只是用一个例子来扩展Mark Byers'的答案。

import java.util.UUID;

public class RandomStringUUID {
    public static void main(String[] args) {
        UUID uuid = UUID.randomUUID();
        System.out.println("UUID=" + uuid.toString() );
    }
}
Anton Belev
Anton Belev
编辑本段答案18日 七月 2019 в 12:42
21
0
Basil Bourque
Basil Bourque
16日 七月 2015 в 9:38
2015-07-16T21:38:23+00:00
更多
资料来源
编辑
#10553137

其他答案都是正确的,尤其是Stephen C的这个。

Reaching Outside Java

出于安全考虑,在Java内生成UUID][1]值仅限于第4版(随机)。

如果你想要其他版本的UUID,一个途径是让你的Java应用程序到达[JVM][3]之外,通过调用来生成UUID。

  • 命令行实用程序
    几乎每个操作系统都捆绑了<br /&gt。 例如,在Mac OS X、BSD和Linux中找到的[uuidgen][4]。
  • 数据库服务器
    使用[JDBC][5]来检索数据库服务器上生成的UUID.
    例如,[uuid-ossp`][6]扩展经常与[Postgres][7]捆绑在一起。 该扩展可以生成版本1、3、4的值,另外还有一些变化。
  • uuid_generate_v1mc() - 生成版本1的UUID,但使用随机的多播MAC地址代替计算机的真实MAC地址。
  • uuid_generate_v5(namespace uuid, name text) - 生成版本5的UUID,除了使用SHA-1作为散列方法外,它的工作原理与版本3的UUID相同。
  • Web服务
    例如,UUID生成器可以创建版本1& 3以及无值和GUID。

[1]: http://docs.oracle.com/javase/8/docs/api/java/util/UUID.html#randomUUID-- 2:

[3]: https://www.google.com/url?sa=t&rc=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0CCIQFjABahUKEwj1jKa_zuDGAhXEEpIKHYwoAQw&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FJava_virtual_machine&ei=kCSoVfWEDcSlyASM0YRg&usg=AFQjCNE6RcWP8IuAXecy2dIl9NayBO_iBg&sig2=0JkiHdYJ1SDk7s65x8N-vA&bvm=bv.97949915,d.aWw。 [4]: http://www.freebsd.org/cgi/man.cgi?query=uuidgen&sektion=1 [5]: [5]:https://en.wikipedia.org/wiki/Java_Database_Connectivity [6]: http://www.postgresql.org/docs/current/static/uuid-ossp.html [7]: http://www.postgresql.org/ 8:

9:

 Community
Community
编辑本段答案23日 五月 2017 в 12:18
Java Database Connectivity - Wikipedia
en.wikipedia.org
Universally unique identifier - Wikipedia
en.wikipedia.org
Universally unique identifier - Wikipedia
en.wikipedia.org
RFC 4122 - A Universally Unique IDentifier (UUID) URN Namespace
A Universally Unique IDentifier (UUID) URN Namespace (RFC 4122)
tools.ietf.org
7
0
 user2044181
user2044181
27日 十一月 2017 в 3:48
2017-11-27T15:48:12+00:00
更多
资料来源
编辑
#10553139

您可以使用这段代码来生成GUID。

 import java.util.concurrent.TimeUnit;

import org.apache.log4j.Logger;

public class StrictMicroSecondTimeBasedGuid
{
    private final static Logger logger = Logger
            .getLogger(StrictMicroSecondTimeBasedGuid.class);

    private static final long MICRO_IN_MILL = 1000;
    private static final long NANO_IN_MICRO = 1000;

    private static long baseNanoTime;
    private static long baseTimeInMicro;
    private static long lastGuid;

    static
    {
        /*
         * Nanosecond time's reference is not known, therfore following logic is
         * needed to calculate time in micro without knowing refrence point of
         * nano time*
         */
        baseNanoTime = System.nanoTime();
        baseTimeInMicro = System.currentTimeMillis() * MICRO_IN_MILL;
        lastGuid = baseTimeInMicro;
    }

    public static synchronized Long newGuid()
    {
        long newGuid;

        while ((newGuid = calNewTimeInMicro()) <= lastGuid)
        {
            /** we have to check for this log, we don't want to see log. */

            logger.debug("wait of 10-microsecond is introduced to get new guid");

            try
            {
                TimeUnit.MICROSECONDS.sleep(10);
            } catch (InterruptedException e)
            {
                logger.error("Error", e);
            }
        }

        lastGuid = newGuid;
        return newGuid;
    }

    private static long calNewTimeInMicro()
    {
        return baseTimeInMicro
                + ((System.nanoTime() - baseNanoTime) / NANO_IN_MICRO);
    }
}
 user2044181
user2044181
编辑本段答案27日 十一月 2017 в 4:17
-3
0
相关社区 2
公爵🔥java python php搭建渗透派单群
公爵🔥java python php搭建渗透派单群
582个用户
本群禁止发送3行以上的广告!禁止发送招聘类广告,如有发现立马踢出群组! 本群担保交易频道:https://t.me/anwanggo 本群索引群:https://t.me/gongjuesuoyin 本群客服: @kalilinuxdaniu @SouthWindCN @AmandaLOG 本群承接服务器网络安全服务,被攻击找我们
打开 telegram
IT运维交流,php,java,python技术开发
IT运维交流,php,java,python技术开发
565个用户
IT运维交流,php,java,python技术开发
打开 telegram
添加问题
岚,巗峃,。
全部
技术
文化/娱乐
生活/艺术
科学
专业的
业务
用户
全部
新的
热门
1
mohidil qodirova
注册1天前
2
Jasur Fozilov
注册1天前
3
Zuxriddin Muydinov
注册2天前
4
Денис Анненский
注册4天前
5
365
注册1周前
ES
ID
JA
KO
RO
RU
ZH
© de-vraag 2022
资料来源
stackoverflow.com
特许 cc by-sa 3.0 有功