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

vip网站怎么做百度搜索风云榜手机版

vip网站怎么做,百度搜索风云榜手机版,郑州轻工业大学教务网络管理系统,中国建设银行信用卡网站文章目录 #x1f354;生成全局唯一ID#x1f339;为什么要生成全局唯一id#x1f33a;生成全局id的方法✨代码实现 #x1f354;生成全局唯一ID 是一种在分布式系统下用来生成全局唯一id的工具 在项目中生成全局唯一ID有很多好处#xff0c;其中包括#xff1a; 数据… 文章目录 生成全局唯一ID为什么要生成全局唯一id生成全局id的方法✨代码实现 生成全局唯一ID 是一种在分布式系统下用来生成全局唯一id的工具 在项目中生成全局唯一ID有很多好处其中包括 数据库主键在数据库中唯一ID可以作为主键确保每条记录的唯一性便于快速检索和更新数据。分布式系统在分布式系统中生成全局唯一ID可以避免不同节点生成相同的ID确保整个系统的数据一致性。日志追踪在日志系统中给每条日志分配唯一ID可以方便进行日志的追踪和分析。安全性某些场景下需要对数据进行加密或者数据权限控制唯一ID可以作为安全机制的一部分。缓存键值在缓存系统中使用唯一ID作为键值可以避免不同数据之间的冲突。数据分片在分布式存储系统中唯一ID可以作为数据分片的标识便于数据的存储和查询。 总之生成全局唯一ID有助于提高系统的可用性、数据的完整性和安全性同时也方便数据的管理和分析。因此在许多项目中都会需要生成全局唯一ID来满足系统的需求。 为什么要生成全局唯一id 生成全局唯一ID的主要目的是确保系统中的实体如对象、记录、消息等具有唯一性标识。以下是一些常见的原因 数据唯一性全局唯一ID可以确保在系统中每个实体都有一个独一无二的标识符避免数据冲突和重复。数据库索引全局唯一ID通常用作数据库表的主键或索引以提高数据查询和检索的效率。分布式系统在分布式系统中各个节点可能同时生成ID为了避免ID的冲突需要使用全局唯一ID算法确保整个系统中的ID唯一性。数据跟踪与关联通过给实体分配唯一ID可以轻松追踪和关联数据例如日志记录、事务管理、审计等。安全性和权限控制全局唯一ID可以用于确保数据的安全性和权限控制限制对特定实体的访问和操作。缓存与缓存失效在缓存系统中使用全局唯一ID作为缓存键可以确保不同实体之间的键不会冲突并且在缓存失效时能够正确地重新加载数据。 总结来说生成全局唯一ID有助于确保数据的唯一性、提高系统的可用性和性能并支持数据跟踪、安全性和权限控制等功能。这在许多系统和应用中都是一个重要的需求。 生成全局id的方法 ✨代码实现 ID生成器的算法如下 我们要先生成时间戳在生成序列号然后进行拼接 package com.hmdp.utils;import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component;import java.time.LocalDateTime; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter;Component public class RedisIdWorker {/*** 开始时间戳*/private static final long BEGIN_TIMESTAMP 1640995200L;/*** 序列号的位数*/private static final int COUNT_BITS 32;private StringRedisTemplate stringRedisTemplate;public RedisIdWorker(StringRedisTemplate stringRedisTemplate) {this.stringRedisTemplate stringRedisTemplate;}public long nextId(String keyPrefix) {// 1.生成时间戳LocalDateTime now LocalDateTime.now();long nowSecond now.toEpochSecond(ZoneOffset.UTC);long timestamp nowSecond - BEGIN_TIMESTAMP;// 2.生成序列号// 2.1.获取当前日期精确到天String date now.format(DateTimeFormatter.ofPattern(yyyy:MM:dd));// 2.2.自增长long count stringRedisTemplate.opsForValue().increment(icr: keyPrefix : date);// 3.拼接并返回return timestamp COUNT_BITS | count;} } 这段代码的 timestamp COUNT_BITS | count;是怎么算出序列号的 在这段代码中timestamp COUNT_BITS | count 是通过位运算来生成最终的ID值。 首先timestamp 是时间戳代表了从开始时间戳到当前时间的秒数差。COUNT_BITS 是序列号的位数这里是32位。 位运算符 是左移操作符将 timestamp 的二进制表示向左移动 COUNT_BITS 位就是将时间戳占据高位。这样做是为了给序列号腾出足够的空间。 然后使用位运算符 | 进行按位或操作将左移后的时间戳与序列号 count 进行按位或操作合并它们的二进制表示。 最终得到的结果就是一个64位的ID其中高位是时间戳部分低位是序列号部分。 编写代码进行测试 package com.hmdp;import com.hmdp.entity.Shop; import com.hmdp.service.impl.ShopServiceImpl; import com.hmdp.utils.CacheClient; import com.hmdp.utils.RedisIdWorker; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.geo.Point; import org.springframework.data.redis.connection.RedisGeoCommands; import org.springframework.data.redis.core.StringRedisTemplate;import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors;import static com.hmdp.utils.RedisConstants.CACHE_SHOP_KEY; import static com.hmdp.utils.RedisConstants.SHOP_GEO_KEY;SpringBootTest class HmDianPingApplicationTests {Resourceprivate CacheClient cacheClient;Resourceprivate ShopServiceImpl shopService;Resourceprivate RedisIdWorker redisIdWorker;private ExecutorService es Executors.newFixedThreadPool(500);Testvoid testIdWorker() throws InterruptedException {CountDownLatch latch new CountDownLatch(300);Runnable task () - {for (int i 0; i 100; i) {long id redisIdWorker.nextId(order);System.out.println(id id);}latch.countDown();};long begin System.currentTimeMillis();for (int i 0; i 300; i) {es.submit(task);}latch.await(); //等待上面的结束long end System.currentTimeMillis();System.out.println(time (end - begin));}Testvoid testSaveShop() throws InterruptedException {Shop shop shopService.getById(1L);cacheClient.setWithLogicalExpire(CACHE_SHOP_KEY 1L, shop, 10L, TimeUnit.SECONDS);} }在技术的道路上我们不断探索、不断前行不断面对挑战、不断突破自我。科技的发展改变着世界而我们作为技术人员也在这个过程中书写着自己的篇章。让我们携手并进共同努力开创美好的未来愿我们在科技的征途上不断奋进创造出更加美好、更加智能的明天
http://www.ho-use.cn/article/10819551.html

相关文章:

  • 外语网站开发wordpress去除category
  • 镇海网站建设wordpress 图片cms主题
  • 网站建设用哪个好动漫制作专业软件有哪些
  • 广州网站建设那家好塘厦初级中学
  • 开发区网站建设工作职责有哪些免费做电子名片的网站
  • 以下属于网站的管理 更新 维护软件网站建设的目的
  • 珠海定制网站建设推广沈阳做网站优化
  • 商城网站建设建站系统网站用户体验分析怎么做
  • 金华建站模板中铁建设集团集网登录
  • 贵港网站开发深圳市中心
  • 电子商务网站系统建设实训心得建设培训网站建设
  • 怎么做PayPal网站收款wordpress 谷歌加速
  • 网站建设设计书任务书做网站公司实力排名
  • 网站开发系统规划湘潭做网站口碑好磐石网络
  • 中文wordpress实例东莞网站优化案例
  • 网站改版的方式品古典家具网站模板
  • 高端网站制作模板开源外贸网站
  • php做网站用什么开发工具暂时关闭wordpress插件
  • 网站备案的时候可以做网站吗wordpress字段管理
  • 自己做的网站怎么置顶微信小程序怎么做扫码下单
  • 索菲亚全屋定制官方网站数据分析和网站开发
  • 有网页源码怎么做网站seo综合查询工具下载
  • 企业自建服务器网站建设流程公司网站运营方案策划
  • 杭州建设网站公司哪家好专业网站的特点
  • 深圳专业网站建设公司哪家好erp系统定制
  • 网站素材下载wordpress 装主题
  • 网站设计上海企业文化设计
  • 网站建设的需求是什么seo课程培训要多少钱
  • 织梦网站必须下载如何创建网站教程视频
  • 砀山做网站的公司做企业网站多