同步操作将从 飞致云/SQLBot 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
import timeimport threadingclass SnowflakeGenerator:def __init__(self, worker_id=0, datacenter_id=0):self.worker_id = worker_idself.datacenter_id = datacenter_idself.sequence = 0self.last_timestamp = -1self.lock = threading.Lock()self.worker_id_bits = 5self.datacenter_id_bits = 5self.max_worker_id = -1 ^ (-1 << self.worker_id_bits)self.max_datacenter_id = -1 ^ (-1 << self.datacenter_id_bits)self.sequence_bits = 12self.worker_id_shift = self.sequence_bitsself.datacenter_id_shift = self.sequence_bits + self.worker_id_bitsself.timestamp_left_shift = self.sequence_bits + self.worker_id_bits + self.datacenter_id_bitsself.sequence_mask = -1 ^ (-1 << self.sequence_bits)if self.worker_id > self.max_worker_id or self.worker_id < 0:raise ValueError(f"worker ID can't be greater than {self.max_worker_id} or less than 0")if self.datacenter_id > self.max_datacenter_id or self.datacenter_id < 0:raise ValueError(f"datacenter ID can't be greater than {self.max_datacenter_id} or less than 0")def _current_time(self):return int(time.time() * 1000)def _wait_next_millis(self, last_timestamp):timestamp = self._current_time()while timestamp <= last_timestamp:timestamp = self._current_time()return timestampdef generate_id(self):with self.lock:timestamp = self._current_time()if timestamp < self.last_timestamp:raise ValueError("Clock moved backwards. Refusing to generate ID")if timestamp == self.last_timestamp:self.sequence = (self.sequence + 1) & self.sequence_maskif self.sequence == 0:timestamp = self._wait_next_millis(self.last_timestamp)else:self.sequence = 0self.last_timestamp = timestampreturn ((timestamp << self.timestamp_left_shift) |(self.datacenter_id << self.datacenter_id_shift) |(self.worker_id << self.worker_id_shift) |self.sequence)snowflake = SnowflakeGenerator(worker_id=1)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。