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

广东专业移动网站建设哪家好建工作室网站

广东专业移动网站建设哪家好,建工作室网站,网站建设编辑器,网站开发与运行环境起因 TEAM GARDEN 本来ID是自增的,后面发现自增ID比较麻烦,有问题: 不可控的间隔: 如果你在插入数据时,中途删除了一些行,导致自增的ID出现间隔,那么新插入的行会填充这些间隔,可能…

起因

TEAM GARDEN 本来ID是自增的,后面发现自增ID比较麻烦,有问题:

不可控的间隔: 如果你在插入数据时,中途删除了一些行,导致自增的ID出现间隔,那么新插入的行会填充这些间隔,可能会导致ID序列不连续,不利于数据分析和理解。

不适用于批量插入: 在批量插入数据时,自增主键可能会导致性能问题。因为每次插入都需要锁定表,以获取下一个自增ID。这可能导致大量的表锁等待,从而影响性能。

主键冲突: 在某些情况下,例如数据导入或数据同步,可能会出现主键冲突的情况。如果数据源中的主键与目标数据库中的自增ID冲突,就会导致插入失败。

难以预测的ID值: 自增ID的值通常是由数据库管理的,这意味着你不能预测下一个ID是什么。在某些情况下,你可能需要对生成的ID值进行控制或预测。

不支持外部数据源: 如果需要将外部数据源(例如其他数据库或数据文件)与数据库中的表关联,自增主键可能不太适合。你无法为外部数据源生成有效的自增ID。

所以决定自己写一个ID生成的工具

代码


public class SnowflakeIdGenerator {private static final long START_TIMESTAMP = 1630435200000L; // 2021-09-01 00:00:00private static final long MACHINE_ID_BITS = 5L;private static final long SEQUENCE_BITS = 12L;private static final long MAX_MACHINE_ID = ~(-1L << MACHINE_ID_BITS);private static final long MAX_SEQUENCE = ~(-1L << SEQUENCE_BITS);private long machineId;private long sequence = 0L;private long lastTimestamp = -1L;public SnowflakeIdGenerator(long machineId) {if (machineId < 0 || machineId > MAX_MACHINE_ID) {throw new IllegalArgumentException("Machine ID must be between 0 and " + MAX_MACHINE_ID);}this.machineId = machineId;}public synchronized long generateId() {long currentTimestamp = System.currentTimeMillis();if (currentTimestamp < lastTimestamp) {throw new RuntimeException("Clock moved backwards. Refusing to generate ID.");}if (currentTimestamp == lastTimestamp) {sequence = (sequence + 1) & MAX_SEQUENCE;if (sequence == 0) {currentTimestamp = nextTimestamp(lastTimestamp);}} else {sequence = 0L;}lastTimestamp = currentTimestamp;long id = ((currentTimestamp - START_TIMESTAMP) << (MACHINE_ID_BITS + SEQUENCE_BITS))| (machineId << SEQUENCE_BITS)| sequence;return id;}private long nextTimestamp(long lastTimestamp) {long currentTimestamp = System.currentTimeMillis();while (currentTimestamp <= lastTimestamp) {currentTimestamp = System.currentTimeMillis();}return currentTimestamp;}
}

使用

 resumeEntity.setId(new SnowflakeIdGenerator(1).generateId());

结论

这样生成的ID是有序的、适合大数据量的、简单、可预测且不依赖外部资源的。

http://www.yayakq.cn/news/884744/

相关文章:

  • 手机链接ppt在哪个网站做济南网站免费制作
  • 腾讯云学生怎么做网站的手工制作大全废物利用
  • 响应式网站建设推荐乐云践新wordpress批量上传图片
  • 手机销售网站怎么做的做网站我网站找第三方支付
  • 建设网站的项目策划书中国八冶建设集团网站
  • 网站图片加alt电商网站项目经验介绍ppt模板
  • 陕西省中小学教师培训网站钢管公司网站建设
  • 杨浦做网站tomcat部署wordpress
  • 网站优化与推广wordpress获取分类列表和分页
  • 东莞seo建站推广外贸推广网站哪家
  • 网站开发设计南邮wordpress 显示指定文章标题
  • 东至网站定制景区网站建设的好处
  • 家教网站建设做好门户网站建设
  • 网站建设whjzyh秀屿网站建设
  • 网站设计与网页制作模板wordpress 短代码嵌套
  • 做网站 广州05网全部答案数学
  • vps怎么上传网站程序wordpress修改管理员密码
  • 做请柬网站中国建设银行网站e路
  • 网站的总体方案与功能设计网站索引怎么做
  • 东莞市网站建设分站企业营销自己的网站
  • 网站设计开发工程师wordpress 允许用户上传图片
  • 怎么做繁体字网站建设银行网上营业厅
  • 高端网站制作费用wordpress 只允许
  • js做网站统计广东营销式网站
  • 网站做排名需要多少钱注册安全工程师考试结果查询时间
  • 网站开发程序都有什么搜狐快站建设pc网站
  • 做网站程序怎么写网站建设公司龙华
  • 镇赉县做网站的云栖建站
  • 查询网站是否过期咸阳免费做网站
  • 做简历的网站都有哪些内容服装企业网站策划书