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

wordpress侧边栏折叠上海seo服务

wordpress侧边栏折叠,上海seo服务,如何做团购网站,网站建设捌金手指花总二七hello,大家好,我是灰小猿! 在做分布式项目开发进行数据表结构设计时,有时候为了提高查询性能,在进行数据库表设计时,会使用自增ID来代替UUID作为数据的主键ID,但是这样就会有一个问题&#xff…

hello,大家好,我是灰小猿!

在做分布式项目开发进行数据表结构设计时,有时候为了提高查询性能,在进行数据库表设计时,会使用自增ID来代替UUID作为数据的主键ID,但是这样就会有一个问题,数据的自增ID应该如何获取到下一个ID并且插入到库中呢?

如果你使用的是mybatisPlus,可以使用自带的自增注解加在id字段上即可,这样在数据入库时就可以自动给数据赋值自增的主键ID,

但是对于不是使用mybatisPlus或者在数据插入之前就需要获取到对象的主键ID的情况,这种方式就变得不是那么友好,所以今天给大家分享一个使用雪花算法的方式提前获取对象的自增主键ID的方法。

下面是一个实际的使用示例,演示如何在分布式项目中使用雪花算法提前获取对象主键ID。

步骤 1: 添加依赖

首先,你需要在项目中添加雪花算法的依赖。如果你使用的是 Maven,可以在 pom.xml 中添加以下内容:

<dependency><groupId>com.github.f4b6a3</groupId><artifactId>snowflake-id-worker</artifactId><version>1.0.0</version>
</dependency>

步骤 2: 创建雪花算法ID生成器

创建一个 IdGenerator 类来生成雪花算法的ID:

import com.github.f4b6a3.snowflake.Snowflake; 
public class IdGenerator {private static final Snowflake snowflake = new Snowflake(1, 1); // 自定义机器ID和数据中心ID public static Long generateId() {return snowflake.nextId(); } 
}

步骤 3: 在实体类中使用ID生成器

在你的实体类中,使用 IdGenerator 生成ID:

import com.baomidou.mybatisplus.annotation.IdType; 
import com.baomidou.mybatisplus.annotation.TableId; 
import com.baomidou.mybatisplus.annotation.TableName; @TableName("my_entity") 
public class MyEntity { // 让MyBatis-Plus使用自定义ID @TableId(type = IdType.INPUT) private Long id;private String name; // 其他字段的getter和setter public MyEntity() { // 使用雪花算法生成ID this.id = IdGenerator.generateId(); }
}

步骤 4: 使用实体类

以在Service层调用为例,在你的服务层或控制器中创建 MyEntity 实例:

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Service; @Service 
public class MyEntityService {// MyBatis-Plus的Mapper接口 @Autowiredprivate MyEntityMapper myEntityMapper; public void createEntity(String name) {MyEntity entity = new MyEntity(); entity.setName(name); // 插入到数据库 myEntityMapper.insert(entity); } 
}

步骤 5: 配置MyBatis-Plus

确保你的 MyBatis-Plus 配置在 application.ymlapplication.properties 中正确设置:

mybatis-plus:global-config:db-config:id-type: auto

这样,当你创建 MyEntity 实例时,IdGenerator 会使用雪花算法生成唯一的主键ID。然后,你可以将实体对象插入到数据库中,主键ID将在对象创建时就被设置好。

下面我们介绍一下雪花算法使用的原理:

雪花算法原理

雪花算法生成唯一自增ID的原理主要依赖于以下几个方面:

  1. 时间戳:雪花算法的ID包含一个时间戳部分,表示当前时间。这个时间戳部分是自定义的,从一个固定的时间点开始计数(通常是系统启动时间或某个纪元),可以精确到毫秒级别。这使得ID在同一毫秒内生成的多个ID不会重复。

  2. 机器ID:雪花算法还包括机器ID(数据中心ID和工作机器ID)。这保证了在分布式系统中,不同的机器生成的ID不会冲突。通过将机器ID嵌入到生成的ID中,每台机器生成的ID都具有唯一性。

  3. 序列号:在同一毫秒内生成多个ID时,雪花算法会使用序列号来区分这些ID。序列号是自增的,可以在同一毫秒内生成多个唯一的ID。

  4. 位移:生成的ID是一个长整型值(64位),其中不同的位被分配给时间戳、机器ID和序列号。例如,时间戳占用高位,机器ID占用中间位,序列号占用低位。这样可以保证在时间和机器维度上的唯一性。

雪花算法的ID结构示例

假设一个64位的ID结构:

  • 1位: 符号位,始终为0。

  • 41位: 时间戳部分,表示自定义纪元以来的毫秒数。

  • 10位: 机器ID,分为数据中心ID和机器ID。

  • 12位: 序列号,用于同一毫秒内的不同ID。

这种设计允许在高并发环境中生成大量的唯一ID,且保证在不同机器上生成的ID是唯一的。通过将时间戳、机器ID和序列号结合,雪花算法能够有效地避免ID冲突。

以上就是在分布式项目中使用雪花算法提前获取对象主键ID的方法,

除此之外还有利用Redis分别获取每一个对象自增ID的方式,感兴趣的也可以了解一下。

我是灰小猿,我们下期见!

http://www.mmbaike.com/news/41949.html

相关文章:

  • 响应式网站费用百度seo优化网站
  • python可以做的网站论文如何创建一个自己的网站
  • 芜湖尚格网络科技有限公司山西seo推广
  • 做网站设计的公司手机百度下载免费
  • 做网站的职员称呼什么宁波企业seo服务
  • 网站设计的开发工具和环境win7优化大师官方网站
  • wordpress建站环境搭建拼多多标题关键词优化方法
  • 做抽纸行业网站百度联盟推广
  • 北京造价信息网宁波谷歌seo推广公司
  • 如何检查网站是否被挂木马如何进行网站宣传推广
  • 台山网站建设seo课程多少钱
  • 网站域名攻击广告平台网站有哪些
  • 网站建设业绩百度竞价广告收费标准
  • 做网站专业杭州seo渠道排名
  • python版wordpress重庆关键词优化服务
  • 烟台高端网站建设公司企业营销型网站建设
  • c语言可以做网站吗如何制作一个属于自己的网站
  • 许昌 网站建设百度app免费下载安装最新版
  • 用几个域名做网站好网络营销推广方法有哪些
  • 芒市网站建设百度文库首页官网
  • 武汉做网站便宜免费视频网站推广软件
  • 万网归一厦门网站综合优化贵吗
  • 广东企业网站建设公司价格网络营销课程
  • 美食网站建设页面要求西安网站seo排名优化
  • 咸阳万企网站建设百度网站大全首页
  • 农家乐怎么做网站找回原来的百度
  • wordpress欣赏抖音关键词优化
  • wordpress 农历小工具石家庄seo外包公司
  • 网站建设开发五行属性上海发布最新情况
  • wordpress源码学习黑帽seo技术培训