问题标签 [unique-id]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何在 C# 中高效地为对象分配唯一 ID
我正在开发一个 C# 库,它将创建大量小对象作为正常操作的一部分(想想编译器中的 AST 节点)。我想以不会影响性能的方式为每个实例分配一个唯一标识符(在程序中是唯一的,而不是全局唯一的)。对象是不可变的,并且可以跨线程共享,因此 id 需要在线程之间是唯一的。
以下是我正在考虑的一些选项:
- 使用静态 int 或 long,并通过调用获取每个新 id
Interlocked.Increment()
- 用于
Guid.NewGuid()
生成 id - 使用带有
[ThreadStatic]
属性的静态 int 或 long 字段,然后从当前线程的ManagedThreadId
属性和线程本地计数器中的下一个值生成字符串 id。
其中一个会比其他的性能更好吗?有一个更好的方法吗?
谢谢!
编辑:
我运行了一个快速基准测试并得到以下结果:
- 0.19 秒(int 与 long 基本相同)
- 1.1 秒
- 3.5 秒
这似乎强烈指向使用Interlocked
. 但是,Interlocked
在多线程场景中是否存在减速的风险?
insert - 按事件时间排序的唯一 ID
我需要按事件时间(每个事件都有一个以毫秒为单位的时间)以有序的方式将大量事件插入数据库,以防止在检索数据时进行排序。事件按无序排列。我的意思是时间为 10000 的事件可以在时间为 900 的事件之前发生,并且可能有多个事件同时发生。
我的想法是创建事件ID作为事件时间(长度13)+从序列生成的ID(长度5)的连接。但是这样一来,在序列将随着时间的推移而发生事件的情况下,可能会出现 id 的重复。
您能否建议如何解决?
jquery - Uncaught TypeError: Object [object Object] has no method 'uniqueId' (jquery upgrade)
我有几个使用 jquery 有效性和 jquery 选项卡的屏幕,并且在 1.7 中运行良好,但现在抛出错误并且未检查验证。
包括<script src="./jquery/jquery.1.9.1/jquery_migrate1.1.1.js"
在标题中我看到了错误
我已经回来并加载了完整的开发包并检查了我能想到但没有成功的所有内容。:-(
我的脚本仍在没有 javascript 菜单栏的管理区域中运行 - 所以这可能是问题,但我不知道如何解决它(由于某些浏览器的问题而不得不升级 jquery)
我在我们的 beta 测试沙盒区域中留下了问题的示例,非常感谢一些解决方案的指针。
http://districtwebmasters.org/
以用户身份登录:jquery,密码:jquery 并查看“个人资料”屏幕(右上角菜单栏)
(标签在加载时停止工作,jquery_migrate
但在不存在时看起来很好)
ajax - MVC Ajax 部分视图未缓存:唯一元素 ID
我有一个局部视图,我通过调用类似于这里描述的函数来动态加载它
如上所述,缓存设置为 false 以保持元素的唯一性。上面的代码是如何实现这一点的?也就是说,分配给元素的新 ID 是什么?如何控制这些 ID?
我有一个局部视图,其中每个我将控件的 id 传递给另一个控件。但是,在动态呈现部分视图后,我不知道如何执行此操作。我需要一些方法来找出分配给每个元素的新 ID。
algorithm - 唯一 ID 的自定义哈希
我想做一些类似于 YouTube 所做的事情。例如,这是一个有效的 YouTube 视频 ID didzxUkrtS0
现在我用整数存储用户的 ID,我想将这些数字转换为 8 个字符的字母数字标识。例如:(FZ3EY1IC
不是十六进制)
我已经知道我可以用 MD5 实现它,然后取前 8 个十六进制数字,但它并没有涵盖整个字母表。
我应该怎么做才能使用整数创建一个独特的模式,永远不要重复?
java - 在不使用 uuid 的私有方法 createaccountID() 中创建唯一 ID
每次创建帐户时,私有createAccountID()
方法都应创建一个新的唯一 ID,即创建的第一个帐户的 ID 为“A1000”。每个新帐户的帐户 ID 将增加 1,即第二个帐户的 ID 为“A1001”等,并且不应有任何重复。
我不太确定如何启动这个方法,除了我创建了一个名为 counter 的静态变量,它设置为 0。我想我必须使用一种.equals()
方法或其他方法来确保第一个不等于新的否则它将打印一个错误消息,如 ("Duplicate")
我也不确定是去public void createAccountID()
还是
public String createAccountID()
这是代码:
任何帮助表示感谢干杯
php - 为创建的 div 分配唯一 ID,然后使用 jquery 引用
我是 php 的新手,也是 jQuery 的初学者。我有一个 php 页面,其中填充了来自 mySQL 表的数据。我想要实现的是为包含“查看作业”的 h3 分配一个唯一的 id,以及打印出作业描述的 div。然后,我想用 jQuery 引用这些,这样如果有人点击查看作业,只会显示该作业的描述。我希望这是有道理的。
我在课堂上试过这个,当然,当点击任何查看工作时,所有的工作描述都会显示出来。
我在这里尝试了解决方案,但最终在我的页面上出现了 36 个“查看作业”链接,并且我需要在创建 h3 和 div 时为其分配唯一 ID。
我愿意接受有关另一种实现我正在寻找的方法的建议 - 基本上是在用户单击每个作业的查看作业时隐藏/折叠每个描述。
这是我的代码:
visio - 使用形状表为 Visio 形状创建唯一 ID
我对 Visio 和编程并不陌生,但我对在 Visio 中进行开发并不陌生。我正在使用 2007 并正在使用形状数据创建自己的自定义形状。我想在绘图的上下文中为我的所有形状创建一个 UniqueID。我创建了一个名为“Shape UniqueID”的形状数据元素。(ShapeSheet Prop.Shape_Unique_ID)我尝试使用下面的公式语法在属性的 ShapeSheet“值”单元格中生成唯一 ID(Shape.UniqueID 属性):
=UniqueID(visGetOrMakeGUID) 和 =UniqueID(1) 但 Visio不认为这是一个有效的公式..
我也尝试使用 DATA1(): =Guard(Data1()) 这给了我一个唯一的值但是如果你复制形状它不会更新。
我已下载 2007 SDK,但找不到用于读取属性的 Shapesheet 函数。
我还看到您可以设置页面,以便 UniqueID 始终位于使用的形状上,但我不知道如何打开它。
我的“偏好”是使用形状数据元素并设置它但是......
任何想法,将不胜感激?谢谢...斯科特
java - 从 java 代码访问 Apache 的 unique_id
我需要访问 mod_unique_id 属性以向我的 apache 服务器发出请求。有没有办法在java代码中做到这一点,比如request.UNIQUE_ID
?我已经阅读了这篇文章,找不到任何东西,我也没有完全理解这篇文章,所以我可能遗漏了一些东西。如果有人能为我解决这个问题,那就太好了!
php - 从 PHP 获取计算机唯一 ID
我已经使用 PHP 创建了一个应用程序,我将把它卖给我的本地市场。我将亲自去他们的位置安装/配置 Apache 和 MySQL 以及安装我自己的代码。
我想要一个安全系统,这样如果有人试图将我的代码复制到未经授权的机器上,它就不会运行。
我知道没有人可以阻止对应用程序进行逆向工程。甚至 .exe(二进制)文件都被破解,而 PHP(源代码)任何人都可以做到。
在我的国家,那些逆向工程师真的很难找到,所以我想提出最低限度的安全选项,例如:
1)创建类(例如,Navigation
),它标识系统信息,如 CPU ID、计算机名称或硬件 ID 的任何组合,以创建一个 UNIQUE_ID 并与我给定的 UNIQUE_ID 匹配(给我向其出售应用程序的个人)。如果有效,则返回导航菜单。否则它会简单地破坏数据库并通过抛出异常来停止执行,可能像:
2)然后在安装过程中,我将在“hash”文件中更改系统UNIQUE_ID,创建一个对象,并将其保存到一个文件(nav.obj)中:
(安装.php)
3) 在 header.php 中(包含在每个文件中):
我知道这种方法不能完全证明,但我很确定大约 60% 的 PHP 开发人员将无法破解它!
现在我只需要获取当前系统的 UNIQUE_ID。