mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-12-26 01:45:49 +08:00
源代码改用vs默认格式化
This commit is contained in:
@@ -6,29 +6,31 @@ using System.Diagnostics;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
public static class FreeUtil {
|
||||
public static class FreeUtil
|
||||
{
|
||||
|
||||
private static DateTime dt1970 = new DateTime(1970, 1, 1);
|
||||
private static ThreadLocal<Random> rnd = new ThreadLocal<Random>(() => new Random());
|
||||
private static readonly int __staticMachine = ((0x00ffffff & Environment.MachineName.GetHashCode()) +
|
||||
private static DateTime dt1970 = new DateTime(1970, 1, 1);
|
||||
private static ThreadLocal<Random> rnd = new ThreadLocal<Random>(() => new Random());
|
||||
private static readonly int __staticMachine = ((0x00ffffff & Environment.MachineName.GetHashCode()) +
|
||||
#if NETSTANDARD1_5 || NETSTANDARD1_6
|
||||
1
|
||||
#else
|
||||
AppDomain.CurrentDomain.Id
|
||||
AppDomain.CurrentDomain.Id
|
||||
#endif
|
||||
) & 0x00ffffff;
|
||||
private static readonly int __staticPid = Process.GetCurrentProcess().Id;
|
||||
private static int __staticIncrement = rnd.Value.Next();
|
||||
/// <summary>
|
||||
/// 生成类似Mongodb的ObjectId有序、不重复Guid
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static Guid NewMongodbId() {
|
||||
var now = DateTime.Now;
|
||||
var uninxtime = (int)now.Subtract(dt1970).TotalSeconds;
|
||||
int increment = Interlocked.Increment(ref __staticIncrement) & 0x00ffffff;
|
||||
var rand = rnd.Value.Next(0, int.MaxValue);
|
||||
var guid = $"{uninxtime.ToString("x8").PadLeft(8, '0')}{__staticMachine.ToString("x8").PadLeft(8, '0').Substring(2, 6)}{__staticPid.ToString("x8").PadLeft(8, '0').Substring(6, 2)}{increment.ToString("x8").PadLeft(8, '0')}{rand.ToString("x8").PadLeft(8, '0')}";
|
||||
return Guid.Parse(guid);
|
||||
}
|
||||
) & 0x00ffffff;
|
||||
private static readonly int __staticPid = Process.GetCurrentProcess().Id;
|
||||
private static int __staticIncrement = rnd.Value.Next();
|
||||
/// <summary>
|
||||
/// 生成类似Mongodb的ObjectId有序、不重复Guid
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static Guid NewMongodbId()
|
||||
{
|
||||
var now = DateTime.Now;
|
||||
var uninxtime = (int)now.Subtract(dt1970).TotalSeconds;
|
||||
int increment = Interlocked.Increment(ref __staticIncrement) & 0x00ffffff;
|
||||
var rand = rnd.Value.Next(0, int.MaxValue);
|
||||
var guid = $"{uninxtime.ToString("x8").PadLeft(8, '0')}{__staticMachine.ToString("x8").PadLeft(8, '0').Substring(2, 6)}{__staticPid.ToString("x8").PadLeft(8, '0').Substring(6, 2)}{increment.ToString("x8").PadLeft(8, '0')}{rand.ToString("x8").PadLeft(8, '0')}";
|
||||
return Guid.Parse(guid);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user