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

wordpress 首页模版江门百度seo

wordpress 首页模版,江门百度seo,做卡盟网站赚钱吗,有个可以做图片的网站自定义MyBatis-Plus分布式ID生成器#xff08;解决ID长度超过JavaScript整数安全范围问题#xff09; 版本 MyBatis-Plus 3.4.1 问题 MyBatis-Plus 默认生成的是 64bit 长整型#xff0c;而 JS 的 Number 类型精度最高只有 53bit#xff0c;如果以 Long 类型 ID 和前端…自定义MyBatis-Plus分布式ID生成器解决ID长度超过JavaScript整数安全范围问题 版本 MyBatis-Plus 3.4.1 问题 MyBatis-Plus 默认生成的是 64bit 长整型而 JS 的 Number 类型精度最高只有 53bit如果以 Long 类型 ID 和前端 JS 进行交互会出现精度丢失(最后两位数字变成 00) 而导致最终系统报错。 解决方案 一种方案是在响应前端时将 ID 转换成 String 类型返回但这个方法治标不治本因此最终通过采用截短 ID 长度以避免 ID 超过 JS 整数安全范围。 缩短雪花算法后空间划分可根据实际需求调整 1. 高位 32bit 作为秒级时间戳, 时间戳减去固定值(2024 年时间戳) 2. 5bit 作为机器标识, 最高可部署 32 台机器 3. 最后 16bit 作为自增序列, 单节点最高每秒 2^16 65536 个 ID代码实现 通过实现 MyBatis-Plus IdentifierGenerator 接口以自定义 ID 生成器 import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component;/*** 符合 JavaScript 整数安全范围的自定义ID生成器** author PANDA*/ Slf4j Component public class JsSafeIdGenerator implements IdentifierGenerator {/** 初始偏移时间戳 2024-01-01 */private static final long OFFSET 1704067200L;/** 机器id (0~15 保留 16~31作为备份机器) */private static final long WORKER_ID;/** 机器id所占位数 (5bit, 支持最大机器数 2^5 32)*/private static final long WORKER_ID_BITS 5L;/** 自增序列所占位数 (16bit, 支持最大每秒生成 2^16 ‭65536‬) */private static final long SEQUENCE_ID_BITS 16L;/** 机器id偏移位数 */private static final long WORKER_SHIFT_BITS SEQUENCE_ID_BITS;/** 自增序列偏移位数 */private static final long OFFSET_SHIFT_BITS SEQUENCE_ID_BITS WORKER_ID_BITS;/** 机器标识最大值 (2^5 / 2 - 1 15) */private static final long WORKER_ID_MAX ((1 WORKER_ID_BITS) - 1) 1;/** 备份机器ID开始位置 (2^5 / 2 16) */private static final long BACK_WORKER_ID_BEGIN (1 WORKER_ID_BITS) 1;/** 自增序列最大值 (2^16 - 1 ‭65535) */private static final long SEQUENCE_MAX (1 SEQUENCE_ID_BITS) - 1;/** 发生时间回拨时容忍的最大回拨时间 (秒) */private static final long BACK_TIME_MAX 1L;/** 上次生成ID的时间戳 (秒) */private static long lastTimestamp 0L;/** 当前秒内序列 (2^16)*/private static long sequence 0L;/** 备份机器上次生成ID的时间戳 (秒) */private static long lastTimestampBak 0L;/** 备份机器当前秒内序列 (2^16)*/private static long sequenceBak 0L;static {// 初始化机器ID 可配置文件获取long workerId 1;if (workerId 0 || workerId WORKER_ID_MAX) {throw new IllegalArgumentException(String.format(worker-id [%d] 越界, 有效范围: 0 ~ %d , workerId, WORKER_ID_MAX));}WORKER_ID workerId;}Overridepublic synchronized Number nextId(Object entity) {return nextId(SystemClock.now() / 1000);}/*** 主机器自增序列* param timestamp 当前Unix时间戳* return long*/private static synchronized long nextId(long timestamp) {if (timestamp lastTimestamp) {log.warn(时钟回拨, 启用备份机器ID: now: [{}] last: [{}], timestamp, lastTimestamp);return nextIdBackup(timestamp);}if (timestamp ! lastTimestamp) {lastTimestamp timestamp;sequence 0L;}if (0L (sequence SEQUENCE_MAX)) {sequence--;return nextIdBackup(Math.max(timestamp, lastTimestampBak));}return ((timestamp - OFFSET) OFFSET_SHIFT_BITS) | (WORKER_ID WORKER_SHIFT_BITS) | sequence;}/*** 备份机器自增序列* param timestamp 当前Unix时间戳* return long*/private static long nextIdBackup(long timestamp) {if (timestamp lastTimestampBak) {if (lastTimestampBak - (SystemClock.now() / 1000) BACK_TIME_MAX) {timestamp lastTimestampBak;} else {throw new RuntimeException(String.format(时钟回拨: now: [%d] last: [%d], timestamp, lastTimestampBak));}}if (timestamp ! lastTimestampBak) {lastTimestampBak timestamp;sequenceBak 0L;}if (0L (sequenceBak SEQUENCE_MAX)) {return nextIdBackup(timestamp 1);}return ((timestamp - OFFSET) OFFSET_SHIFT_BITS) | ((WORKER_ID ^ BACK_WORKER_ID_BEGIN) WORKER_SHIFT_BITS) | sequenceBak;}}import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong;/*** 缓存时间戳解决System.currentTimeMillis()高并发下性能问题** author PANDA**/ public class SystemClock {private final long period;private final AtomicLong now;private SystemClock(long period) {this.period period;this.now new AtomicLong(System.currentTimeMillis());scheduleClockUpdating();}/*** 尝试下枚举单例法*/private enum SystemClockEnum {SYSTEM_CLOCK;private SystemClock systemClock;SystemClockEnum() {systemClock new SystemClock(1);}public SystemClock getInstance() {return systemClock;}}/*** 获取单例对象* return com.cmallshop.module.core.commons.util.sequence.SystemClock*/private static SystemClock getInstance() {return SystemClockEnum.SYSTEM_CLOCK.getInstance();}/*** 获取当前毫秒时间戳* return long*/public static long now() {return getInstance().now.get();}/*** 起一个线程定时刷新时间戳*/private void scheduleClockUpdating() {ScheduledThreadPoolExecutor scheduler new ScheduledThreadPoolExecutor(1, runnable - {Thread thread new Thread(runnable, System Clock);thread.setDaemon(true);return thread;});scheduler.scheduleAtFixedRate(() - now.set(System.currentTimeMillis()), period, period, TimeUnit.MILLISECONDS);}}SpringBoot 项目中如何引用 import com.baomidou.mybatisplus.core.config.GlobalConfig; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration RequiredArgsConstructor public class MybatisPlusConfiguration {Beanpublic GlobalConfig globalConfig() {GlobalConfig globalConfig new GlobalConfig();globalConfig.setIdentifierGenerator(new JsSafeIdGenerator());return globalConfig;}}ID 映射字段添加 TableId(type IdType.ASSIGN_ID) 注解 import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable;Data NoArgsConstructor AllArgsConstructor public class Base implements Serializable {TableId(type IdType.ASSIGN_ID)private Long id;}
http://www.dnsts.com.cn/news/279804.html

相关文章:

  • 网站备案几天服务商类型是什么意思
  • 网站前台数据库微信高端网站建设
  • 公司做网站都需要什么南昌集团网站建设公司
  • 换网站了吗vps网站访问不了
  • 网站备案服务号电邮注册网站
  • 长沙电子商务网站建设清华大学网站建设方案
  • 厦门本地网站虚拟机做网站有用吗
  • 云南网站新备案制做淘宝必备网站
  • 做预售的网站网站建设背景怎么设置成
  • 口碑好网站建设哪家好手机建站服务
  • 企业建设网站的空间有哪些有必要花钱学视频剪辑吗
  • icp备案网站名称是什么意思营销网站建设服务
  • 吴江区经济开发区建设工程网站宝塔面板
  • 建网站公司是如何赚钱深鑫辉网站建设
  • 网站建设那些公司比较好招聘网站做专题的目的
  • 四川网站营销seo费用汽车网站建设页面
  • 中企动力科技股份有限公司网站erp系统是干嘛的
  • 软件公司网站源码电子商务门户网站的研究与实现
  • 网站域名在哪里注册科技公司的网站建设费入什么科目
  • 手机网站优化 工具装饰网站建设的方案
  • 深圳企业网站建设专业广告设计网站都有哪些
  • 做刀模线网站唐山做网站公司费用
  • 网站设计与制作包括代做网站毕业设计
  • 青岛网站建设方案维护中小企业网站建设如何
  • 网站开发的调研沈阳做网站哪家最便宜
  • 网站建设的总体需求是什么保定做网站百度推广
  • 网站开发公司tahmwlkj虹口专业网站建设
  • 网站域名变更怎么查wordpress添加分享
  • 网站服务器++免费做优化排名会不会影响网站速度
  • 邹城网站制作网站开发 ip6