什么是在不依赖平台特定工具的情况下以编程方式在C ++中生成GUID或UUID的最佳方式? 我正在尝试为仿真中的对象创build唯一的标识符,但不能依赖微软的实现,因为项目是跨平台的。 笔记: 由于这是一个模拟器,我不需要密码随机性。 这是最好的,如果这是一个32位数字。
我不明白什么是蓝牙UUID表示。 UUID是否表示协议(例如RFCOMM )? 如果是这样,为什么createRfcommSocketToServiceRecord()方法需要UUID,当他们的名字中指定rfcomm? 为什么BluetoothChat示例代码有一个看似任意的硬编码的UUID? 我的问题出现是因为,根据这个问题 ,当运行4.0.4的设备尝试使用reflection连接(到外部的非Android设备)时,我得到空指针exception。 但是,这个问题的解决scheme不适合我。 UUID muuid = device.getUuids()[0].getUuid(); 引发了一个例外。 编辑 :我解决了这个问题,硬编码的串口服务的UUID按照这个答案 (使用UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"); )。 为什么我需要提供一个UUID来使用createInsecureRfcommSocketToServiceRecord(),创build一个不安全的rfcomm套接字createInsecureRfcommSocketToServiceRecord(),但是却没有使用reflection方法createInsecureRfcommSocketToServiceRecord(),我感到更加困惑。 任何人都可以理顺我吗?
我正在使用我的uuid如下: @Id @GeneratedValue(generator = "uuid") @GenericGenerator(name = "uuid", strategy = "uuid") @Column(name = "uuid", unique = true) private String uuid; 但我得到一个聪明的hibernate警告: 使用org.hibernate.id.UUIDHexGenerator,它不生成符合IETF RFC 4122标准的UUID值; 请考虑使用org.hibernate.id.UUIDGenerator 所以我想切换到org.hibernate.id.UUIDGenerator ,现在我的问题是如何告诉它到Hibernate的生成器。 我看到一些人用它作为“hibernate-uuid” – 所以这就是我所尝试的,但有负面的结果: @Id @GeneratedValue(generator = "hibernate-uuid") @GenericGenerator(name = "hibernate-uuid", strategy = "hibernate-uuid") @Column(name = "uuid", unique = true) private String uuid;
我使用的Rails 3.0.20和ruby1.8.7(2011-06-30 patchlevel 352) 请build议我最好的插件来产生guid。
我正在开发一个iOS应用程序,该应用程序调用Web服务进行login,并且当时我将login凭证与供应商标识符(identifierForVendor)一起发送到Web服务器,以唯一地标识这些凭证的设备。因此,用户只能拥有一个设备和一个凭证。 我得到了identifierForVendor NSString *uuid = [[UIDevice currentDevice] identifierForVendor].UUIDString 这个标识符将存储在networking服务器的数据库中,也存储在设备数据库中。下次用户打开应用程序并尝试从networking服务器下载数据时,首先将用户设备上的本地标识符ForVendor与存储在networking服务器上的标识符进行比较。 用户卸载应用程序并重新安装时发生问题,我发现identifierForVendor已更改。 所以用户不能进一步进行。 我读了苹果文档UIDevice文档 如上所述,如果来自同一供应商的所有应用程序都从设备上卸载,那么在从该供应商新安装任何应用程序时将采用新的标识符ForVendor。 那么在我的情况下如何处理呢?
出于多种原因^,我想在我的一些Django模型中使用UUID作为主键。 如果我这样做,我仍然可以使用外部应用程序,如“contrib.comments”,“Django-voting”或“Django-tagging”,通过ContentType使用generics关系? 以“django-voting”为例,Vote模型如下所示: class Vote(models.Model): user = models.ForeignKey(User) content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField() object = generic.GenericForeignKey('content_type', 'object_id') vote = models.SmallIntegerField(choices=SCORES) 这个应用程序似乎假设被投票的模型的主键是一个整数。 内置的评论应用程序似乎能够处理非整数PK,但: class BaseCommentAbstractModel(models.Model): content_type = models.ForeignKey(ContentType, verbose_name=_('content type'), related_name="content_type_set_for_%(class)s") object_pk = models.TextField(_('object ID')) content_object = generic.GenericForeignKey(ct_field="content_type", fk_field="object_pk") 这是“整数PK假设”的问题是第三方应用程序的常见情况,这将使使用UUID痛苦? 或者,我可能会误读这种情况吗? 有没有办法在Django中使用UUID作为主键而不会造成太大麻烦? ^一些原因:隐藏对象计数,防止url“ID爬行”,使用多个服务器创build非冲突的对象,…
我一直在尝试使用UUID作为数据库密钥。 我想占用尽可能less的字节数,同时仍然保持UUID表示人类可读。 我认为我已经得到它使用base64 22字节,并删除一些似乎是不必要的尾随“==”为我的目的存储。 这种方法有什么缺陷吗? 基本上我的testing代码做了一堆转换,把UUID降到22字节的string,然后把它转换回UUID。 import java.io.IOException; import java.util.UUID; public class UUIDTest { public static void main(String[] args){ UUID uuid = UUID.randomUUID(); System.out.println("UUID String: " + uuid.toString()); System.out.println("Number of Bytes: " + uuid.toString().getBytes().length); System.out.println(); byte[] uuidArr = asByteArray(uuid); System.out.print("UUID Byte Array: "); for(byte b: uuidArr){ System.out.print(b +" "); } System.out.println(); System.out.println("Number of Bytes: " […]
我有这样的代码: u := make([]byte, 16) _, err := rand.Read(u) if err != nil { return } u[8] = (u[8] | 0x80) & 0xBF // what does this do? u[6] = (u[6] | 0x40) & 0x4F // what does this do? return hex.EncodeToString(u) 它返回一个长度为32的string,但我不认为它是一个有效的UUID。 如果它是一个真正的UUID,为什么它是一个UUID,代码的目的是修改u[8]和u[6] 。 有没有更好的方式来生成UUID?
我们正在考虑使用UUID值作为MySQL数据库的主键。 插入的数据是从数十,数百或甚至数千个远程计算机中生成的,并且以每秒100至40,000个插入的速率插入,我们将不会做任何更新。 在我们开始剔除数据之前,数据库本身通常会达到大约5千万条logging,所以不是一个庞大的数据库,但也不是很小。 我们也计划在InnoDB上运行,尽pipe如果我们正在做的事情有一个更好的引擎,我们可以改变。 我们已经准备好使用Java的Type 4 UUID了,但在testing中已经看到了一些奇怪的行为。 首先,我们将存储为varchar(36),现在我们意识到使用二进制(16)会更好 – 尽pipe我不确定多less更好。 更大的问题是:当我们有50M的logging时,这个随机数据有多糟糕? 如果我们使用例如最左边的比特是时间戳的types1UUID,我们会更好吗? 或者,也许我们应该完全抛弃UUID并考虑auto_increment主键? 我正在寻找关于不同types的UUID的性能的一般想法/技巧,当他们被存储为一个索引/主键在MySQL中。 谢谢!
为了简单和(假设)速度,我一直倾向于使用长整数作为数据库中的主键。 但是当为对象实例使用REST或类似Rails的URLscheme时,我最终会得到如下的URL: http://example.com/user/783 假设有782,781,…,2和1的用户。假设有问题的Web应用程序足够安全,以防止人们input其他号码未经授权查看其他用户,简单的按顺序分配的代理键也“泄漏”了实例的总数(比这个更旧),在这种情况下,用户可能是特权信息。 (例如,我是用户#726在计算器。) UUID / GUID是更好的解决scheme吗? 然后我可以设置这样的url: http://example.com/user/035a46e0-6550-11dd-ad8b-0800200c9a66 不完全简洁,但显示的用户隐含的信息较less。 当然,它带有“安全通过默默无闻”,它不能替代适当的安全,但似乎至less有一点安全。 这种益处是否值得实现可寻址Web对象实例的UUID的成本和复杂性? 我认为我仍然希望使用整数列作为数据库PK来加速连接。 还有UUID的数据库内表示的问题。 我知道MySQL将它们存储为36个字符的string。 Postgres似乎有一个更有效的内部表示(128位?),但我没有尝试过自己。 有人对此有经验吗? 更新:对于那些询问在URL中使用用户名的人(例如, http : //example.com/user/yukondude ),对于具有唯一名称的对象实例工作正常,但是万维网应用程序对象,只能用数字来标识吗? 订单,交易,发票,重复的图像名称,stackoverflow的问题,…