Tag: uuid

如何在Java中创建用户友好的唯一ID,UUID或其他唯一标识符

我通常使用UUID类生成唯一ID。 如果这些ID仅由技术系统使用,它们可以正常工作,它们不关心它们有多长: System.out.println(UUID.randomUUID().toString()); > 67849f28-c0af-46c7-8421-94f0642e5d4d 有没有一种很好的方法来创建用户友好的唯一ID(比如来自tinyurl的那些)比UUID稍短? 用例:您希望通过邮件向您的客户发送ID,然后客户访问您的网站并将该数字输入表单,如凭证ID。 我假设UUID在UUID的128位范围的整个范围内均等地生成。 那么仅仅使用较低的64位是圣人吗? System.out.println(UUID.randomUUID().getLeastSignificantBits()); 欢迎任何反馈。

将uuid转换为byte,在使用UUID.nameUUIDFromBytes(b)时有效

我正在使用此代码将UUID转换为byte public byte[] getIdAsByte(UUID uuid) { ByteBuffer bb = ByteBuffer.wrap(new byte[16]); bb.putLong(uuid.getMostSignificantBits()); bb.putLong(uuid.getLeastSignificantBits()); return bb.array(); } 但是,如果我尝试使用此function重新创建UUID, public UUID frombyte(byte[] b) { return UUID.nameUUIDFromBytes(b); } 它与UUID不同。 来回转换randomUUID会返回两个不同的。 UUID u = UUID.randomUUID(); System.out.println(u.toString()); System.out.println(frombyte(getIdAsByte(u)).toString()); 打印: 1ae004cf-0f48-469f-8a94-01339afaec41 8b5d1a71-a4a0-3b46-bec3-13ab9ab12e8e

fetchUuidWithSdp总是给出缓存的UUID

我正在编写一个应用程序,我必须在选定的设备上进行服务发现,但每当我在做一个fetchUuid时,它总是在远程设备上给我缓存的UUID。 这是我正在尝试的 public boolean UUIDsearch(BluetoothDevice device){ t=device.fetchUuidsWithSdp(); Log.d(TAG,”Device class = :”+device.getClass()); mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context arg0, Intent intent) { String action = intent.getAction(); //BluetoothDevice deviceExtra = intent.getParcelableExtra(“android.bluetooth.device.extra.DEVICE”); if (BluetoothDevice.ACTION_UUID.equals(action)){ uuidExtra =intent.getParcelableArrayExtra(“android.bluetooth.device.extra.UUID”); } Log.d(TAG,”SDP has no errors: = “+t); // if(found==false){ for(int i=0;i<uuidExtra.length;i++){ Log.d(TAG,"UUID: "+ uuidExtra[i]); if((uuidExtra[i].toString()).equals(MY_UUID.toString())){ found=true; Log.d(TAG,"Match found in […]

使用两个字符串生成唯一标识符

我想知道如何使用两个字符串生成唯一标识符。 我的要求是为特定文档生成唯一标识符。 对于id生成,必须使用文档’name’和’version’。 应该有办法从特定文档的唯一标识符中取回“名称”和“版本”。 有没有办法在java中使用UUID? 或者这样做的最佳方式是什么。 我们可以为此目的使用散列或编码吗?如果是这样,怎么办?

如何对使用Java UUID的代码进行unit testing?

我有一段代码,希望用Java UUID( UUID.randomUUID() )填充响应对象的一个​​属性。 如何从外部对此代码进行unit testing以检查此行为? 我不知道将在其中生成的UUID。 需要测试的示例代码: // To test whether x attribute was set using an UUID // instead of hardcode value in the response class A { String x; String y; } // Method to test public A doSomething() { // Does something A a = new A(); a.setX( UUID.randomUUID()); return a; […]

如何在碧玉报告中解决uuid问题

我有一些jasper报告文件,我在iReport 3.7.5版本中制作它们。 它之前有用,但在我决定使用iReport 5.0.0版本并对其进行了一些更改后,它就出现了问题。 我检查了问题是什么,它说这个Attribute ‘uuid’ is not allowed to appear in element ‘jasperReport’它让我感到困惑,因为我的报告文件中有很多uuid属性。 我猜它是在旧版本转换为新版本时构建的。 我试图在xml设计的报告文件中删除所有uuid组件,但它破坏了它的格式和设计。 那么,我必须采取什么样的解决方案才能解决这个问题? 谢谢你的回复

生成long类型的UUID

请给我示例代码,以便在不使用时间戳的情况下在java中生成long类型的UUID 。 谢谢

将ByteArray转换为UUID java

问题是如何将ByteArray转换为GUID。 以前我将我的guid转换为字节数组,在一些事务之后我需要从字节数组返回guid。 我怎么做。 虽然不相关但从Guid到byte []的转换如下 public static byte[] getByteArrayFromGuid(String str) { UUID uuid = UUID.fromString(str); ByteBuffer bb = ByteBuffer.wrap(new byte[16]); bb.putLong(uuid.getMostSignificantBits()); bb.putLong(uuid.getLeastSignificantBits()); return bb.array(); } 但是如何将其转换回来? 我试过这个方法,但它没有给我相同的价值 public static String getGuidFromByteArray(byte[] bytes) { UUID uuid = UUID.nameUUIDFromBytes(bytes); return uuid.toString(); } 任何帮助将不胜感激。

JDK使用什么命名空间来生成名称为UUIDFromBytes的UUID?

Sun / Oracle JDK公开了一个函数,用于在java.util包中创建类型3(基于名称)的UUID:java.util.UUID.nameUUIDFromBytes(byte [] name)。 我需要能够使用nameUUIDFromBytes在Java中生成类型3 UUID,并在使用另一种语言创建类型3 UUID时获得相同的UUID,假设我提供与源相同的字节。 根据javadocs,此函数创建符合RFC 4122的类型3 UUID。 但是,根据RFC 4122规范,必须在某个名称空间中创建类型3 UUID。 大多数其他语言允许您在创建类型3 UUID时指定命名空间(例如Ruby中的UUIDTools gem )。 所以我的问题是:当我调用nameUUIDFromBytes时,JDK使用了什么命名空间UUID?

如何从Java客户端获取uuid或mac地址?

我正在寻找基于Java的Web应用程序的解决方案来唯一地识别客户端。 服务器与客户端在同一网络中,我认为使用MAC地址将是一个很好的解决方案。 问题是我不能使用cookie,因为它们可以被客户端删除,我不能使用IP,因为他们可以发布新的DHCP租约续订。 所以我想回退到客户端的MAC地址。 我知道没有java内置function来获取MAC地址。 是否有可以处理每个操作系统输出的库? (主Windows和Mac),因为我的Java应用程序在两个平台上运行。 或者是否有任何其他建议来唯一识别网站和HTTP协议中的客户端? (也许HTML5数据存储或其他) 我正在使用Java 1.7顺便说一句。 我不会强迫用户登录或以其他方式识别自己,我不会为客户端智能手机编写本机应用程序。