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

如何查看一个网站做的外链站长工具网站测速

如何查看一个网站做的外链,站长工具网站测速,网站维护升级访问,网站宣传海报图片为了生成一个符合要求的分布式全局ID,我们可以使用 StringRedisTemplate 来实现。这个ID由三部分组成: 符号位(1 bit):始终为0,表示正数。时间戳(31 bit):表示从某个起始…

为了生成一个符合要求的分布式全局ID,我们可以使用 StringRedisTemplate 来实现。这个ID由三部分组成:

  1. 符号位(1 bit):始终为0,表示正数。
  2. 时间戳(31 bit):表示从某个起始时间点(例如2023-01-01 00:00:00)到现在的秒数。
  3. 序列号(32 bit):用于在同一秒内生成不同的ID。

实现步骤

  1. 计算时间戳:从某个起始时间点到现在的秒数。
  2. 生成序列号:使用Redis的原子递增操作来生成序列号。
  3. 组合ID:将时间戳和序列号组合成一个64位的长整型数字。

代码实现

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.concurrent.TimeUnit;@Service
public class DistributedIdGenerator {@Autowiredprivate StringRedisTemplate stringRedisTemplate;// 起始时间点,例如2023-01-01 00:00:00private static final long EPOCH = ZonedDateTime.of(2023, 1, 1, 0, 0, 0, 0, ZoneId.systemDefault()).toInstant().toEpochMilli() / 1000;// 序列号的Redis键前缀private static final String SEQUENCE_KEY_PREFIX = "sequence:";/*** 生成分布式全局ID** @return 分布式全局ID*/public long generateId() {// 获取当前时间戳(从起始时间点到现在的秒数)long currentTimeSec = Instant.now().getEpochSecond() - EPOCH;// 生成序列号String sequenceKey = SEQUENCE_KEY_PREFIX + currentTimeSec;long sequence = stringRedisTemplate.opsForValue().increment(sequenceKey, 1);if (sequence >= (1L << 32)) { // 序列号溢出,重置为0stringRedisTemplate.expire(sequenceKey, 1, TimeUnit.SECONDS); // 设置1秒后过期sequence = 0;}// 组合IDlong id = (currentTimeSec << 32) | sequence;return id;}
}

代码解释

  1. EPOCH:起始时间点,例如2023-01-01 00:00:00,转换为秒数。
  2. SEQUENCE_KEY_PREFIX:Redis中存储序列号的键前缀。
  3. generateId 方法
    • currentTimeSec:从起始时间点到现在的秒数。
    • sequenceKey:根据当前时间戳生成的Redis键。
    • sequence:使用 opsForValue().increment 方法生成序列号,确保在同一秒内生成不同的ID。
    • 序列号溢出处理:如果序列号达到最大值(2^32 - 1),则重置为0,并设置键在1秒后过期。
    • 组合ID:将时间戳左移32位,然后与序列号进行按位或操作,生成最终的64位ID。

测试代码

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class IdController {@Autowiredprivate DistributedIdGenerator idGenerator;@GetMapping("/generate-id")public long generateId() {return idGenerator.generateId();}
}

http://www.ysxn.cn/news/715.html

相关文章:

  • 收集链接 做网站最新互联网项目平台网站
  • 长沙网站网站建设seo搜索引擎优化是通过优化答案
  • 松溪网站建设微信营销模式有哪些
  • 网站空间租赁合同西安百度网站排名优化
  • 盐城网站建设案例移动广告平台
  • 做网站 0元代理手机网站
  • 提高政府的门户网站建设8大营销工具指的是哪些
  • 深圳教育网站建设互联网营销师课程
  • 海阳做网站网络销售怎么干
  • 手机网页在线如何获取网站的seo
  • 海口cms建站系统汉中seo培训
  • 第三方网站下载素材是怎么做爱站网seo培训
  • 大朗网站建设培训西安百度网站快速排名
  • 猪八戒网做网站如何付款百度提交入口网址是什么
  • 网站搭建思路优化深圳seo
  • 临河可以做网站的公司网页制作教程
  • 网站建设方案及预算长沙优化网站推广
  • 校园官方网站建设厦门网络推广哪家强
  • 网站官网建设市场调研的内容
  • 广州网站建设 滚屏同城推广有什么平台
  • 网站开发中使用框架吗友链大全
  • 网站建设需求确定陕西企业网站建设
  • 滨州北京网站建设价格低宣传平台有哪些
  • 手机网站建设的重点步骤百度seo点击器
  • 做网站租用数据库搜索网站的软件
  • 网站做的app有哪些网络营销师报考条件
  • 网站更改模板 seo宁波seo推广费用
  • 展示型网站都包括什么模块网站流量来源
  • 西安网站建设公河南省干部任免最新公示
  • 网站网页设计在哪找怎么样在百度上推广自己的产品