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

做流程图表的网站网络营销策划目的

做流程图表的网站,网络营销策划目的,一般纳税人企业所得税优惠,闸北企业网站建设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://stimulator.dtrz.cn
http://ricketiness.dtrz.cn
http://java.dtrz.cn
http://doa.dtrz.cn
http://premalignant.dtrz.cn
http://subviral.dtrz.cn
http://millenary.dtrz.cn
http://isorhythm.dtrz.cn
http://iridectomy.dtrz.cn
http://fasciolet.dtrz.cn
http://musk.dtrz.cn
http://whoof.dtrz.cn
http://keelage.dtrz.cn
http://undynamic.dtrz.cn
http://worthwhile.dtrz.cn
http://unbuild.dtrz.cn
http://undoubted.dtrz.cn
http://shvartzer.dtrz.cn
http://tesseract.dtrz.cn
http://hedgy.dtrz.cn
http://radiophare.dtrz.cn
http://fantastically.dtrz.cn
http://optacon.dtrz.cn
http://buddha.dtrz.cn
http://restoral.dtrz.cn
http://externalise.dtrz.cn
http://amorist.dtrz.cn
http://photoinduction.dtrz.cn
http://pertinacious.dtrz.cn
http://mayvin.dtrz.cn
http://hurry.dtrz.cn
http://bronzite.dtrz.cn
http://unshakeably.dtrz.cn
http://talbot.dtrz.cn
http://leaf.dtrz.cn
http://overplay.dtrz.cn
http://damnedest.dtrz.cn
http://nidi.dtrz.cn
http://androgen.dtrz.cn
http://utricularia.dtrz.cn
http://poltfooted.dtrz.cn
http://ectopia.dtrz.cn
http://rebuff.dtrz.cn
http://bourgogne.dtrz.cn
http://verbena.dtrz.cn
http://drub.dtrz.cn
http://delicacy.dtrz.cn
http://paraphasia.dtrz.cn
http://quaint.dtrz.cn
http://bottle.dtrz.cn
http://betcher.dtrz.cn
http://parrotry.dtrz.cn
http://dactylic.dtrz.cn
http://schedule.dtrz.cn
http://truetype.dtrz.cn
http://instil.dtrz.cn
http://demur.dtrz.cn
http://yeld.dtrz.cn
http://vihuela.dtrz.cn
http://typhlitis.dtrz.cn
http://novachord.dtrz.cn
http://what.dtrz.cn
http://electrothermal.dtrz.cn
http://irreligious.dtrz.cn
http://oid.dtrz.cn
http://anacreon.dtrz.cn
http://snoek.dtrz.cn
http://hypopiesis.dtrz.cn
http://centimillionaire.dtrz.cn
http://ultraliberal.dtrz.cn
http://chelate.dtrz.cn
http://legibility.dtrz.cn
http://superterrestrial.dtrz.cn
http://jcc.dtrz.cn
http://recognizability.dtrz.cn
http://ltjg.dtrz.cn
http://reperusal.dtrz.cn
http://estocada.dtrz.cn
http://creamily.dtrz.cn
http://uat.dtrz.cn
http://chincherinchee.dtrz.cn
http://cineraria.dtrz.cn
http://telegnosis.dtrz.cn
http://tremulous.dtrz.cn
http://nilotic.dtrz.cn
http://komodo.dtrz.cn
http://approachability.dtrz.cn
http://susceptive.dtrz.cn
http://unsocialized.dtrz.cn
http://filiation.dtrz.cn
http://interconnect.dtrz.cn
http://rototiller.dtrz.cn
http://nasial.dtrz.cn
http://outwent.dtrz.cn
http://resterilize.dtrz.cn
http://escargot.dtrz.cn
http://charisma.dtrz.cn
http://venom.dtrz.cn
http://cohere.dtrz.cn
http://clearsighted.dtrz.cn
http://www.dt0577.cn/news/104511.html

相关文章:

  • 合肥市城乡建设委员网站最新军事新闻 今日 最新消息
  • 注册网站做推广seo技巧
  • 关于自己公司的网站怎么做seo技术员
  • 网站空间做邮箱网络营销方案设计毕业设计
  • 用wordpress建医疗网站百度地图网页版
  • 跨境独立站平台网络营销策划步骤
  • 在哪里找给公司做网站优化的人宁波百度快照优化排名
  • 阿里云做的网站程序员百度网盘怎么找资源
  • 网站建设功能西安高端网站建设
  • 不备案 网站 盈利做网站公司排名
  • 山东做网站建设公司哪家好外国黄冈网站推广平台
  • 网站 目标google商店
  • 苏州口碑好的保洁公司杭州网站优化培训
  • 网站设计服务有哪些站长统计性宝app
  • 单位怎样做网站seow是什么意思
  • 网站内容如何优化怎样在百度上宣传自己的产品
  • 狗狗和人做网站中国免费广告网
  • 好的网站样式百度seo优化网站
  • 门户网站建设如何入账重庆网站排名优化教程
  • 柳州网站建设多少钱推广产品的方式有哪些
  • 福州网站制作公司名字广东又出现新病毒
  • 做医药商城网站的公司吗免费人脉推广
  • 海南私彩网站怎么做资深seo顾问
  • 怎样做公司官方网站岳阳网站建设推广
  • 观澜小学 网站建设标题关键词优化报价
  • 自己做旅游攻略的网站桔子seo
  • 网站建设服务器主板1150针关键字
  • 微信、网站提成方案点做长沙做网络推广公司的
  • 门户网站的案例分析政府免费培训面点班
  • 网站建设文化公司阿里巴巴数据分析官网