当前位置: 首页 > wzjs >正文

自己做网站内容读取太慢公司宣传片如何制作

自己做网站内容读取太慢,公司宣传片如何制作,企信网官网登录入口北京,网站如何做谷歌推广雪花ID是一个依赖时间戳根据算法生成的一个Int64的数字ID,一般用来做主键或者订单号等。以下是一个用C#写的雪花ID的简单实现方法 using System; using System.Collections.Concurrent; using System.Diagnostics;public class SnowflakeIdGenerator {// 配置常量p…

雪花ID是一个依赖时间戳根据算法生成的一个Int64的数字ID,一般用来做主键或者订单号等。以下是一个用C#写的雪花ID的简单实现方法

using System;
using System.Collections.Concurrent;
using System.Diagnostics;public class SnowflakeIdGenerator
{// 配置常量private const int SignBits = 1;// 符号位private const int TimestampBits = 41;// 时间戳位,最大值2^41-1=2,147,483,647ms,69年private const int DataCenterIdBits = 4;// 数据中心ID位,最大值2^4-1=15private const int MachineIdBits = 6;// 机器ID位,最大值2^6-1=63private const int DefaultSequenceBits = 12;// 自增序号位,最大值2^12-1=4095private const int ProcessIdBits = 4;// 进程ID位,最大值2^4-1=15private const int SequenceBitsWithProcess = 8;//如果使用进程ID,则为8位,否则为12位,最大值2^8-1=255// 位移计算常量private const int TimestampShift = 64 - SignBits - TimestampBits;private const int DataCenterShift = TimestampShift - DataCenterIdBits;private const int MachineShift = DataCenterShift - MachineIdBits;private const int ProcessShift = SequenceBitsWithProcess;// 基准时间private static readonly DateTime Epoch = new(2025, 3, 1, 0, 0, 0, DateTimeKind.Utc);private const long MaxTimestamp = (1L << TimestampBits) - 1;// 单例存储private static readonly ConcurrentDictionary<string, SnowflakeIdGenerator> _instances = new();// 各ID最大值private readonly long _maxDataCenterId = (1 << DataCenterIdBits) - 1;private readonly long _maxMachineId = (1 << MachineIdBits) - 1;private readonly long _maxProcessId = (1 << ProcessIdBits) - 1;private readonly long _maxSequence;// 状态控制private readonly object _lock = new object();private long _lastTimestamp = -1L;private int _sequence = 0;// 节点信息public int DataCenterId { get; }// 数据中心IDpublic int MachineId { get; }// 机器IDpublic int ProcessId { get; }// 进程IDpublic bool UseProcessId { get; }// 是否使用进程IDprivate SnowflakeIdGenerator(int dataCenterId, int machineId, int processId){// 参数校验逻辑ValidateId(dataCenterId, (1 << DataCenterIdBits) - 1, nameof(dataCenterId));ValidateId(machineId, (1 << MachineIdBits) - 1, nameof(machineId));UseProcessId = processId != 0;if (UseProcessId){ValidateId(processId, (1 << ProcessIdBits) - 1, nameof(processId));}DataCenterId = dataCenterId;MachineId = machineId;ProcessId = processId;}public static SnowflakeIdGenerator GetInstance(int dataCenterId, int machineId, int processId = 0){var key = $"{dataCenterId}-{machineId}-{processId}";return _instances.GetOrAdd(key, _ => new SnowflakeIdGenerator(dataCenterId, machineId, processId));}/// <summary>/// 产生下一个ID/// </summary>/// <returns></returns>public long NextId(){lock (_lock){var timestamp = GetValidTimestamp();if (timestamp == _lastTimestamp){_sequence++;if (_sequence > MaxSequence){timestamp = WaitNextMillis(timestamp);_sequence = 0;}}else{_sequence = 0;}_lastTimestamp = timestamp;return BuildId(timestamp);}}/// <summary>/// 获取最大序号/// </summary>private int MaxSequence => UseProcessId ?(1 << SequenceBitsWithProcess) - 1 :(1 << DefaultSequenceBits) - 1;/// <summary>/// 拼接生成ID/// </summary>/// <param name="timestamp"></param>/// <returns></returns>private long BuildId(long timestamp){var id = (timestamp << TimestampShift)| ((long)DataCenterId << DataCenterShift)| ((long)MachineId << MachineShift);if (UseProcessId){return id | ((long)ProcessId << ProcessShift) | (uint)_sequence;}return id | (uint)_sequence;}/// <summary>/// 获取有效的时间戳,防止时间回拨或系统时钟溢出/// </summary>/// <returns></returns>/// <exception cref="InvalidOperationException"></exception>private long GetValidTimestamp(){var timestamp = (DateTimeOffset.UtcNow.Ticks - Epoch.Ticks) / TimeSpan.TicksPerMillisecond;if (timestamp < _lastTimestamp){throw new InvalidOperationException($"Clock moved backwards. Refusing to generate ID for {_lastTimestamp - timestamp}ms");}if (timestamp > MaxTimestamp){throw new InvalidOperationException($"System clock overflow. Timestamp exceeds {TimestampBits} bits.");}return timestamp;}// 等待下一毫秒,产生新的时间戳private static long WaitNextMillis(long currentTimestamp){long timestamp;var spinWait = new SpinWait();do{spinWait.SpinOnce();timestamp = (DateTimeOffset.UtcNow.Ticks - Epoch.Ticks) / TimeSpan.TicksPerMillisecond;} while (timestamp <= currentTimestamp);return timestamp;}// 校验ID,必须在0到最大值之间private static void ValidateId(int value, long maxValue, string paramName){if (value < 0 || value > maxValue){throw new ArgumentOutOfRangeException(paramName,$"Value must be between 0 and {maxValue}");}}
}

调用方式

 //获取单例实例var generator = SnowflakeIdGenerator.GetInstance(dataCenterId: 1, machineId: 5);//推荐long id = generator.NextId();//或者,加入进程IDvar generator = SnowflakeIdGenerator.GetInstance(dataCenterId: 1, machineId: 5, processId: 10);long id = generator.NextId();

文章转载自:

http://OkTLRHnX.skwwj.cn
http://p1STzTrt.skwwj.cn
http://N7CfyLKP.skwwj.cn
http://tTHQXdR3.skwwj.cn
http://8ENUAIZX.skwwj.cn
http://5UN7wc6d.skwwj.cn
http://UJg9nimm.skwwj.cn
http://q6qEHT3V.skwwj.cn
http://RNpxIvUX.skwwj.cn
http://hRksutLA.skwwj.cn
http://hhnXumi5.skwwj.cn
http://NJ4E4wai.skwwj.cn
http://T2LNYek4.skwwj.cn
http://jVT4RM1v.skwwj.cn
http://9zNw9Y3s.skwwj.cn
http://TdYvdZPH.skwwj.cn
http://1RchajFL.skwwj.cn
http://37wkMBUj.skwwj.cn
http://JNYZgn7t.skwwj.cn
http://V8bMtP5z.skwwj.cn
http://BSInNplP.skwwj.cn
http://0XNTIWT3.skwwj.cn
http://Uc1vzmKq.skwwj.cn
http://WWeaSjtp.skwwj.cn
http://HToOjuwN.skwwj.cn
http://b7SSIekv.skwwj.cn
http://kziuR35m.skwwj.cn
http://YAMPoSNm.skwwj.cn
http://DgWTFFDi.skwwj.cn
http://rcMQTOwS.skwwj.cn
http://www.dtcms.com/wzjs/690058.html

相关文章:

  • 创新的微商城网站建设项目经理查询系统
  • 做网站销售话术阳泉住房和城乡建设厅网站
  • 国内网站开发的主流技术专网建设是什么
  • 做编程的+网站有哪些内容装饰公司如何拉客户
  • 旅游目的地网站建设的流程正规品牌网站设计地址
  • 网站建设开源代码网络营销推广方法包括哪些
  • 哪个网站做简历免费下载入侵wordpress
  • 杭州网站现场备案新闻株洲最新
  • 机票旅游网站开发网站建设学多长时间
  • 莱州市招聘网站建设黑彩网站
  • 沈阳专业做网站公司拉人头最暴利的app
  • 口碑营销网站iis下安装wordpress
  • 内蒙古城乡建设厅网站资质公告百度验证文件放在wordpress根目录
  • 湛江搜索引擎网站推广网站项目建设方案文档
  • 网站建设的工资商务网站建设理论依据
  • 搭建电商网站wordpress主题静态页面
  • 网站建设地域名如何给wordpress添加关键词描述
  • 上海网站建设 亿速专注手机网站建设
  • 福州最好的网站设计服务公司设计好用的网站
  • 北京开发网站威海网站开发公司电话
  • 网站特殊字体封面型网页网站有哪些内容
  • 网站群 seowordpress 会员付费
  • 开发网站需要怎么做北京做网站的公司哪家好
  • vs做网站怎么做窗体工程建设交易信息网
  • 南阳网站推广方案企业网站建设的总体目标
  • 有哪些网站建设企业做单抗药的看什么网站好
  • 如何优化网站营销网站建设的公司
  • 做HH网站站长工具查询视频
  • 在线解压网站织梦网站备案
  • 做网站百灵鸟深圳网站建设ln12345