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

乔括云智能建站做竞拍网站合法吗

乔括云智能建站,做竞拍网站合法吗,如何做网站策划案,网站建设运营规划方案snowflake(雪花算法)是一个开源的分布式 ID 生成算法,结果是一个 long 型的 ID。snowflake 算法将 64bit 划分为多段,分开来标识机器、时间等信息,具体组成结构如下图所示: snowflake 算法的核心思想是使用 41bit 作为毫秒数&…

snowflake(雪花算法)是一个开源的分布式 ID 生成算法,结果是一个 long 型的 ID。snowflake 算法将 64bit 划分为多段,分开来标识机器、时间等信息,具体组成结构如下图所示:
在这里插入图片描述
snowflake 算法的核心思想是使用 41bit 作为毫秒数,10bit 作为机器的 ID(比如其中 5 个 bit 可作为数据中心,5 个 bit 作为机器 ID),12bit 作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是 0。snowflake 算法可以根据自身业务的需求进行一定的调整。比如估算未来的数据中心个数,每个数据中心内的机器数,以及统一毫秒内的并发数来调整在算法中所需要的 bit 数。snowflake 算法的优势是稳定性高,不依赖于数据库等第三方系统;使用灵活方便,可以根据业务需求的特性来调整算法中的 bit 位;单机上 ID 单调自增,毫秒数在高位,自增序列在低位,整个 ID 是趋势递增的。而其也存在一定的缺陷,包括强依赖机器时钟,如果机器上时钟回拨,会导致发号重复或者服务处于不可用状态;ID 可能不是全局递增,虽然 ID 在单机上是递增的,但是由于涉及到分布式环境下的每个机器节点上的时钟,可能会出现不是全局递增的场景。

#pragma once#include <chrono>
#include <mutex>
#include <stdexcept>class Snowflake
{public:Snowflake(uint64_t datacenter_id, uint64_t machine_id) : datacenter_id_(datacenter_id), machine_id_(machine_id){if (datacenter_id > kMaxDatacenterId || machine_id > kMaxMachineId){throw std::invalid_argument("Datacenter ID or Machine ID exceeds maximum value");}}uint64_t Generate(){std::lock_guard<std::mutex> lock(mutex_);uint64_t current_timestamp = GetCurrentTimestamp();if (current_timestamp < last_timestamp_){throw std::runtime_error("Clock moved backwards. Refusing to generate ID.");}if (current_timestamp == last_timestamp_){sequence_ = (sequence_ + 1) & kMaxSequence;if (sequence_ == 0){current_timestamp = WaitNextMillis(current_timestamp);}}else{sequence_ = 0;}last_timestamp_ = current_timestamp;return ((current_timestamp - kEpoch) << kTimestampShift) | (datacenter_id_ << kDatacenterIdShift) |(machine_id_ << kMachineIdShift) | sequence_;}private:uint64_t GetCurrentTimestamp() const{return std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count();}uint64_t WaitNextMillis(uint64_t last_timestamp) const{uint64_t timestamp = GetCurrentTimestamp();while (timestamp <= last_timestamp){timestamp = GetCurrentTimestamp();}return timestamp;}private:uint64_t datacenter_id_;       // 数据中心IDuint64_t machine_id_;          // 机器IDuint64_t sequence_ = 0;        // 序列号uint64_t last_timestamp_ = 0;  // 上次生成ID的时间戳// 配置参数static constexpr uint64_t kSequenceBits = 12;     // 序列号占用位数static constexpr uint64_t kMachineIdBits = 5;     // 机器ID占用位数static constexpr uint64_t kDatacenterIdBits = 5;  // 数据中心ID占用位数// 最大值计算static constexpr uint64_t kMaxSequence = (1ULL << kSequenceBits) - 1;static constexpr uint64_t kMaxMachineId = (1ULL << kMachineIdBits) - 1;static constexpr uint64_t kMaxDatacenterId = (1ULL << kDatacenterIdBits) - 1;// 位移量static constexpr uint64_t kMachineIdShift = kSequenceBits;                      // 机器ID左移位数static constexpr uint64_t kDatacenterIdShift = kSequenceBits + kMachineIdBits;  // 数据中心ID左移位数static constexpr uint64_t kTimestampShift = kSequenceBits + kMachineIdBits + kDatacenterIdBits;  // 时间戳左移位数// 起始时间(2020-01-01 00:00:0 UTC)static constexpr uint64_t kEpoch = 1577836800000ULL;std::mutex mutex_;
};

使用示例:

#include <iostream>#include "Snowflake.h"int main()
{try{Snowflake snowflake(1, 1);  // 数据中心ID=1,机器ID=1for (int i = 0; i < 10; ++i){std::cout << snowflake.Generate() << std::endl;}}catch (const std::exception& e){std::cerr << "Error: " << e.what() << std::endl;}return 0;
}

文章转载自:

http://Ds3JEVoX.rrpsw.cn
http://wGhnfaYa.rrpsw.cn
http://25IYuQVP.rrpsw.cn
http://s71FNh7m.rrpsw.cn
http://qXMBSZOg.rrpsw.cn
http://PnbFaN3U.rrpsw.cn
http://KSbLf1RS.rrpsw.cn
http://l3sfDOEc.rrpsw.cn
http://K2zTypQY.rrpsw.cn
http://eAqrqmE6.rrpsw.cn
http://Z7upHqP6.rrpsw.cn
http://EDSVQOqi.rrpsw.cn
http://Llp5NI2y.rrpsw.cn
http://ZMitKmfL.rrpsw.cn
http://tQtQUnR6.rrpsw.cn
http://y1ZuF0ri.rrpsw.cn
http://vFmMay3v.rrpsw.cn
http://GNZsAN32.rrpsw.cn
http://QRvDs3NA.rrpsw.cn
http://bq6COeSh.rrpsw.cn
http://5CZuN8OM.rrpsw.cn
http://nDZTTnRv.rrpsw.cn
http://2KiOlw3c.rrpsw.cn
http://IFmkmcWR.rrpsw.cn
http://DxeN0W60.rrpsw.cn
http://EE0JVwUZ.rrpsw.cn
http://w9v7b55v.rrpsw.cn
http://nt5CYxrQ.rrpsw.cn
http://moxlrDkI.rrpsw.cn
http://kMUQ8Ry8.rrpsw.cn
http://www.dtcms.com/wzjs/678443.html

相关文章:

  • 白银做网站的董事做外贸需要做国外的网站吗
  • 网站开发新闻怎么写关键词生成器
  • 响应式网站建设公司‘百度网站怎样做推广
  • 做一个京东网站怎么做的xml网站地图生成器
  • 怎样做销售产品网站网站建设拟采用的技术路线
  • 举报网站怎么做哪里可以免费发广告
  • flash网站cms百度新闻首页
  • 广州 网站建设 020股票软件定制公司
  • 威海外贸网站建设怎么样wordpress 清空缓存
  • 网站建设要做哪些前期准备工作如今做啥网站能致富
  • 阿里云建站费用一般使用的分辨率的显示密度是多少dpi?
  • 做墙报的网站建设网站需要哪些流程
  • 网站建设颊算网络公司主要做哪些
  • 网站建设注意什么国外网站 服务器
  • 中英文双语网站站点如何做好一个企业网站
  • 企业建网站哪家好创一家网站
  • 佛山选择免费网站优化wordpress只显示文本摘要
  • 网站打不开被拦截怎么办网页制作购物网站
  • 做衣服的网站推荐福田欧曼银河报价
  • 手工做衣服网站有哪些广州哪里有外贸网站
  • 怎样建设网站教程使用网站模板侵权吗
  • 学校网站 建设常德网站公司
  • 东平可信的网站建设短链接生成网
  • 自己有网站 做app太仓公司网站建设电话
  • 做网站的要多钱wordpress数据表格
  • 一键生成海报的网站wordpress如何防注入
  • 网页设计与编程福州专业的seo软件
  • wordpress模板怎么安装教程视频做网站优化的
  • 坪山网站建设公司东莞横沥中学
  • 陕西省住建厅网站官网做食品的网站设计要注意