我的数据库中有各种由 unique 标识的对象System.Guid's。当我展示它们时,我希望它们每个都有基于它们的指导的独特颜色。
所以我想要这样的东西:
public Color ColorFromGuid(Guid guid) { /* ?? */ }
Run Code Online (Sandbox Code Playgroud)
在哪里
ColorFromGuid(databaseObject1.Guid) == ColorFromGuid(databaseObject1.Guid)
ColorFromGuid(databaseObject2.Guid) == ColorFromGuid(databaseObject2.Guid)
ColorFromGuid(databaseObject1.Guid) != ColorFromGuid(databaseObject2.Guid)
Run Code Online (Sandbox Code Playgroud)
最好的方法是什么?
编辑显然,有比颜色更独特的指导,所以每个指导不可能都有自己独特的颜色。我只是在寻找一个好的品种。
我有一个 32 位 COM 对象,我想与 64 位 PHP 一起使用。
我正在尝试按照此处的教程进行操作:
http://www.gfi.com/blog/32bit-object-64bit-environment/
但是我被困在“定位您的 COM 对象 GUID”上,因为我不知道在哪里可以找到这些信息。
有谁知道如何找到 COM 对象的 GUID?
我需要创建一个包含简短指南的专栏。所以我发现了这样的事情:
alter table [dbo].[Table]
add InC UNIQUEIDENTIFIER not null default LEFT(NEWID(),6)
Run Code Online (Sandbox Code Playgroud)
但我收到错误:
从字符串转换为 uniqueidentifier 时,转换失败。
我一直在努力
LEFT(CONVERT(varchar(36),NEWID()),6)
Run Code Online (Sandbox Code Playgroud)
和
CONVERT(UNIQUEIDENTIFIER,LEFT(CONVERT(varchar(36),NEWID()),6))
Run Code Online (Sandbox Code Playgroud)
但我仍然遇到同样的错误。
所以我完全理解创建两个具有相同数字的GUID值的数学可能性。但是,假设它们是独一无二的,这种做法是否可以接受?
例如,我正在使用一个处理医疗文件的系统。当我开始布局数据库结构时,经理(技术知识不是很丰富,但喜欢认为他是并且委托的事情最好留给更有技术头脑的人来决定)说他想使用 GUID 来分隔不同的医疗记录INT 因为它“更独特”。我解释了 INT 如何总是独一无二的,因为它是连续的。我建议我们使用 BigINT,如果它能让他感觉更舒服,因为有更多的数字,那么如果地球上的人口增加到人们只能在地球上彼此并排站立的地步,但他坚持使用GUID。
我的感觉是,虽然几乎不可能发生混淆,但在处理病历时,为什么要冒险呢?在这种情况下使用 GUID 与 INT 的优势是什么?
在 C# 立即窗口中输入以下代码时,会产生一些不寻常的结果,我只能假设这是因为在内部System.Guid翻转了某些字节:
使用从 0 到 15 的有序字节数组时
new Guid(new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15})
[03020100-0504-0706-0809-0a0b0c0d0e0f]
Run Code Online (Sandbox Code Playgroud)
使用值为 0 到 15 的无序字节数组时
new Guid(new byte[] {3, 2, 1, 0, 5, 4, 7, 6, 8, 9, 10, 11, 12, 13, 14, 15})
[00010203-0405-0607-0809-0a0b0c0d0e0f]
Run Code Online (Sandbox Code Playgroud)
为什么前 3 组翻转了?
有人可以帮我删除连字符并将所有字符转换为大写(来自邮递员$guid)吗?
没找到有用的。
谢谢
我正在寻找一种方法来从一个连续的用户 ID 中为用户生成一个随机的、唯一的 9 位朋友代码。这背后的想法是,人们无法通过一一搜索好友代码来枚举用户。如果有 1000 个可能的代码和 100 个注册用户,搜索随机代码应该有 10% 的机会找到用户。
一种可能的方法是随机生成一个代码,检查该代码是否已被使用,如果是,则再试一次。我正在寻找一种方法(主要是出于好奇),其中朋友代码是通过算法生成的,并且第一次尝试时保证该用户 ID 是唯一的。
具体来说,给定一个数字范围(1 到 999,999,999),在这个数字上运行该函数应该返回同一范围内的另一个数字,该数字与输入数字成对且唯一。只有当范围发生变化和/或随机性的输入种子发生变化时,这种配对才会有所不同。
理想情况下,个人不应该在不知道种子和算法的情况下(或者拥有非常大的样本池和大量时间 - 这不需要加密安全)轻松地从朋友 ID 逆向工程用户 ID,所以简单地从最大范围中减去用户 ID 不是一个有效的解决方案。
下面是一些 C# 代码,它通过生成整个数字范围、打乱列表,然后通过将用户 ID 视为列表索引来检索朋友 ID 来完成我所追求的目标:
int start = 1; // Starting number (inclusive)
int end = 999999999; // End number (inclusive)
Random random = new Random(23094823); // Random with a given seed
var friendCodeList = new List<int>();
friendCodeList.AddRange(Enumerable.Range(start, end + 1)); // Populate list
int n = friendCodeList.Count;
// Shuffle the list, this …Run Code Online (Sandbox Code Playgroud) 我正在使用 WMI 来获取所有磁盘信息,如驱动器、驱动器号等,但我还没有找到如何获取每个分区的 UUID/GUID。
如何使用Python生成long类型的UUID(64位 - 由java程序使用)?
我读到了 UUID模块.所以我玩了一下:
>>> import uuid
>>> uuid.uuid1().int
315596929882403038588122750660996915734L
Run Code Online (Sandbox Code Playgroud)
为什么uuid.uuid1().int生成的整数末尾有一个" L "?如果它是一个整数,它不应该由纯数组成吗?
另外根据文档uuid.uuid1().int将生成一个128位整数.我需要一个long类型的整数(对于java程序),这意味着它需要是64位.是否可以生成64位而不是128位的UUID?
另一个问题是,根据Python文档,Python int是32位,而Python long具有" 无限精度"." 无限精度 "是什么意思?我需要一个64位长的int - 这将是什么类型的Python?
编辑: 感谢大家的回复.看起来UUID的定义是128位.在那种情况下,我可能不应该使用术语UUID.我想要做的是生成一个长(64位)类型的唯一ID.我以为UUID会做这个工作,但看起来不行.
我需要该ID作为Solr搜索引擎的文档ID.我正在使用实时索引Solr插件Zoie.根据文档," Zoie假设每个要编入索引的记录必须具有唯一的密钥和类型为long的记录. "
所以鉴于这就是我需要的,你知道我能做些什么来生成long类型的唯一ID吗?
谢谢!
所有!我正在使用OData v4构建REST服务.我的表有一个GUID主键.
我的GET和POST请求工作正常.但是PUT,PATCH和DELETE请求失败了404.
我不确定网址应该是什么样的.我在Fiddler尝试了这些,都得到了404.我用Google搜索了这一点,没有运气.
http://localhost/ershubrest/AppVersions/guid'00000000-e90f-4938-b8f6-000000000000'
http://localhost/ershubrest/AppVersions/'00000000-e90f-4938-b8f6-000000000000'
http://localhost/ershubrest/AppVersions/00000000-e90f-4938-b8f6-000000000000
Run Code Online (Sandbox Code Playgroud)
这是我的控制器的代码......
using ERSHubRest.Models;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.OData;
using System.Web.OData.Query;
using System.Web.OData.Routing;
namespace ERSHubRest.controllers
{
[ODataRoutePrefix("AppVersions")]
public class AppVersionsController : ODataController
{
HubModel db = new HubModel();
private bool AppVersionsExists(System.Guid key)
{
return db.AppVersions.Any(p => p.AppVersionId == key);
}
// http GET for select queries
[ODataRoute]
[EnableQuery]
public IQueryable<AppVersions> Get()
{
return db.AppVersions;
}
[ODataRoute("({key})")]
[EnableQuery]
public IHttpActionResult Get([FromODataUri] System.Guid key)
{
IQueryable<AppVersions> result …Run Code Online (Sandbox Code Playgroud)