I'm using Rails 3.1 with PostgreSQL 8.4. Let's assume I want/need to use GUID primary keys. One potential drawback is index fragmentation. In MS SQL, a recommended solution for that is to use special sequential GUIDs. One approach to sequential GUIDs is the COMBination GUID that substitutes a 6-byte timestamp for the MAC address portion at the end of the GUID. This has some mainstream adoption: COMBs are available natively in NHibernate (NHibernate/Id/GuidCombGenerator.cs).
I think I've figured out …
我们想根据一些随机字符串生成一个 Guid。目标是使给定字符串的 Guid 始终相同。
需要说明的是,我的字符串没有格式化为 guid,它可能是“Toto”,即“asdfblkajsdflknasldknalkvkndlskfj”。
我知道这会生成一些与我的输入字符串一样独特的 Guid,但这不是这里的问题。
编辑:添加插件配置更清晰
我uuid在汇总项目中使用包。起初,我收到了外部依赖加密的警告。所以我在我的汇总配置中添加了external和output.globals:
export default [{
input: '/path/to/input.js',
external: ['crypto'],
output: {
file: '/path/to/output.esm.js',
format: 'esm',
...
globals: {
crypto: 'crypto'
}
},
plugins: [
resolve({
customResolveOptions: {
moduleDirectory: 'node_modules'
},
preferBuiltins: true
}),
commonjs({
namedExports: {
uuid: ['v4']
}
})
]
}];
Run Code Online (Sandbox Code Playgroud)
警告消失了,但现在我的输出文件中有一个导入语句:
输出.esm.js
import crypto from 'crypto';
...
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我包含output.esm.js在浏览器中,这会起作用吗?
<script type="module" src="/path/to/output.esm.js"></script>
Run Code Online (Sandbox Code Playgroud) 我有一个正在访问 API 的应用程序。因此,它对对象中的所有 ID 进行查询,然后必须对每个 ID 一次查询一个项目。我在 Parallel.For 循环中执行此操作并将每个项目数据添加到数据表中的一行。然后我使用 sqlbulkcopy 将数据表发送到 SQL 服务器表。
如果我在不使用 Parallel.For 的情况下执行此操作,则效果很好。但是,对于 Parallel.For,这一行:
workrow["id"] = Guid.NewGuid();
Run Code Online (Sandbox Code Playgroud)
正在生成重复的 Guid。它经常这样做并导致数据无法加载到 SQL 服务器表中,因为 SQL 中的 id 行是主键并且不允许重复。我尝试锁定:
lock (lockobject)
{
workrow["id"] = Guid.NewGuid();
}
Run Code Online (Sandbox Code Playgroud)
这没有帮助。
我尝试不为该字段分配一个 id,希望 SQL 会生成它(它在该字段上确实有 newid())。说它不能插入空值失败了。我似乎不能只是从数据表中删除 id 字段,因为当我执行 sqlbulkcopy 时,列不会对齐。
有人可以在这里帮助我吗?我要么需要弄清楚如何让 Guid.NewGuid() 停止生成重复项,要么我需要找出一种不传入 id(始终是数据表中的第一个字段)的方法,以便 SQL 生成 id。
这是我用来生成表之一的代码:
public static DataTable MakeWorkflowTable()
{
DataTable Workflow = new DataTable("Workflow");
DataColumn id = new DataColumn("id", System.Type.GetType("System.Guid"));
Workflow.Columns.Add(id);
DataColumn OrgInfoID = new DataColumn("OrgInfoID", System.Type.GetType("System.Guid"));
Workflow.Columns.Add(OrgInfoID);
DataColumn Name = …Run Code Online (Sandbox Code Playgroud) 我有一个创建空Guid的Guid.NewGuid()调用.
什么会导致这样的问题,我该如何解决?
编辑:代码:
<WebMethod()> _
Public Function CreateRow(rowValue As String) as String
Dim rowPointer As Guid = System.Guid.NewGuid()
Dim rowPointerValue As String = rowPointer.ToString()
Try
Dim result as Integer = SqlHelper.ExecuteNonQuery(ConnectionString, "Sproc_Name", rowValue, rowPointer)
Return result
Catch ex as Exception
Throw ex
End Try
End Function
Run Code Online (Sandbox Code Playgroud)
编辑:结果是rowPointer最初被传递给SqlHelper而不是rowPointerValue - 这当然是作为空传递的,如答案中所指出的那样.将其更改为rowPointerValue/rowPointer.ToString()修复了该问题.
所以我有这个
public class Foo
{
public int UniqueIdentifier;
public Foo()
{
UniqueIdentifier = ????
}
}
Run Code Online (Sandbox Code Playgroud)
如何获得完全唯一的号码?
谢谢!
我们有一个.NET应用程序需要检查可能包含COM库(DLL和OCX)的文件夹.当我们遇到COM库时,我们需要完成的一件事是从COM DLL或OCX中提取GUID.
在没有使用第三方库的情况下,有没有直接的方法来使用.NET?
手动更改生成的GUID并使用它有多糟糕?碰撞的可能性是否仍然微不足道,或者GUID的操纵是否危险?
有时我们只是更改以前生成的GUID的一些字母并使用它.我们应该停止这样做吗?
我想在.resx文件中使用某种唯一标识符,但它不允许键以数字开头.在我得到以字母开头的GUID之前,我不想循环访问GUID,而是想知道是否存在替代UID类型,该类型不包含数字或者否则将满足此要求.
有什么想法吗?
鉴于GUID's(或多或少)唯一,如果我们用一些代码缩短它:
它基本上只是将GUID转换为base64字符串并稍微缩短它.它需要像这样的标准GUID:
c9a646d3-9c61-4cb7-BFCD-ee2522c8f633
并将其转换为这个较小的字符串:
00amyWGct0y_ze4lIsj2Mw
我现在可以假设缩短的guid与之前(正常)形式一样独特吗?
guid ×10
c# ×5
.net ×2
uuid ×2
vb.net ×2
activerecord ×1
asp.net ×1
class-design ×1
com ×1
cryptojs ×1
dependencies ×1
rollup ×1
sql-server ×1
sqlbulkcopy ×1
tlbinf32 ×1
uid ×1