C#流水号生成汇总(三)

本文转载:http://www.cnblogs.com/heyuquan/archive/2013/08/16/global-guid-identity-maxId.html

  GUID TO Int64

对于GUID的可读性,有园友给出如下方案:

/// <summary>

/// 根据GUID获取19位的唯一数字序列

/// </summary>

public static long GuidToLongID()

{

    byte[] buffer = Guid.NewGuid().ToByteArray();

    return BitConverter.ToInt64(buffer, 0);

}

即将GUID转为了19位数字,数字反馈给客户可以一定程度上缓解友好性问题。EG:

GUID: cfdab168-211d-41e6-8634-ef5ba6502a22    (不友好)

Int64: 5717212979449746068                              (友好性还行)

不过我的小伙伴说ToInt64后就不唯一了。因此我专门写了个并发测试程序,后文将给出测试结果截图及代码简单说明。

(唯一性、业务适合性是可以权衡的,这个唯一性肯定比不过GUID的,一般程序上都会安排错误处理机制,比如异常后执行一次重插的方案……)

结论:适合大型应用,生成相对友好的Id(纯数字)------因简单和业务友好性而推荐。

 

 

你可能感兴趣的:(C#)