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

南京网站推广费用网站宣传文案有哪些

南京网站推广费用,网站宣传文案有哪些,中国建筑中心官网,网站新闻前置备案业务需求:创建一个流水号, 功能说明: 1,格式:orgCode yyyyMMdd 4位序号, 2,每天重新从 0001 开始 3,使用 Redisson 保证并发下分布式唯一, 4,Redis 存储当天序列号 示例代码 M…

业务需求:创建一个流水号,

功能说明:

1,格式:orgCode + yyyyMMdd + 4位序号,
2,每天重新从 0001 开始
3,使用 Redisson 保证并发下分布式唯一,
4,Redis 存储当天序列号

示例代码

  1. Maven 依赖(如果还没加 Redisson):
<dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.17.7</version>
</dependency>
  1. 配置 RedissonClient(示例单节点):
@Configuration
public class RedissonConfig {@Beanpublic RedissonClient redissonClient() {Config config = new Config();config.useSingleServer().setAddress("redis://127.0.0.1:6379") // 修改为你自己的 Redis 地址.setDatabase(0);return Redisson.create(config);}
}
  1. 流水号工具类:
@Component
public class SerialNumberGenerator {@Autowiredprivate RedissonClient redissonClient;private static final String SERIAL_KEY_PREFIX = "serial:";public String generateSerialNumber(String orgCode) {String currentDate = new SimpleDateFormat("yyyyMMdd").format(new Date());String key = SERIAL_KEY_PREFIX + currentDate;String lockKey = "lock:serial:" + currentDate;RLock lock = redissonClient.getLock(lockKey);try {// 获取锁,最多等待5秒,锁自动释放时间为10秒if (lock.tryLock(5, 10, TimeUnit.SECONDS)) {RAtomicLong counter = redissonClient.getAtomicLong(key);// 如果是新的一天,重置为0if (!counter.isExists()) {counter.set(0);// 设置过期时间为2天,避免key一直存在counter.expire(2, TimeUnit.DAYS);}long serial = counter.incrementAndGet();String formattedSerial = String.format("%04d", serial);return orgCode + currentDate + formattedSerial;} else {throw new RuntimeException("生成流水号失败:获取锁超时");}} catch (InterruptedException e) {throw new RuntimeException("生成流水号失败:线程中断", e);} finally {if (lock.isHeldByCurrentThread()) {lock.unlock();}}}
}

为什么需要 Redis 分布式锁?
不加锁的问题
Redis 是高并发环境下的共享存储,多个实例并发 get + set 操作有可能导致并发写丢失或重复编号。
加锁保证:每次生成编号时只有一个线程在操作该 key 的值,从而保证原子性和唯一性
在这里插入图片描述

http://www.dtcms.com/a/577727.html

相关文章:

  • 安防监控领域中常用设备AI枪机摄像机
  • matlab 命令pdist, pdist2
  • 有效的括号详解 | C语言用动态数组实现栈解决
  • 2024年上半年试题一:论大数据lambda架构
  • 北斗GNSS位移监测是什么?主要有哪几种应用?
  • 【芯片设计中的时序约束:Multicycle Path与False Path深度解析】
  • 学院网站建设需求分析调研表wordpress做dropping
  • centos7利docker compose 快速部署 Elasticsearch + Kibana
  • 网站流量建设设计广告设计
  • 个体工商户可以搞网站建设免费人脉推广
  • 谷歌浏览器Google Chrome离线安装包
  • Profinet IO从站数据 转IEC104项目案例
  • 嵌入式学习笔记 - SH79F6441芯片之8051的寻址空间,位寻址与字节地址寻址
  • 项目推荐:BettaFish (微舆) - 当多智能体遇上“论坛”协作机制
  • 跑通Visual-RFT报错解决记录
  • 学习网站二次开发如何自己设置网站
  • 自定义配置打印参数,进行打印功能
  • 免费看电视的网站有哪些深圳响应式网站价格
  • 如何给网站划分栏目利用html5 监控网站性能
  • MySQL原生账号权限管理
  • C#中关于ContextMenuStrip批量添加Item的问题
  • 从线程基础到线程池
  • Android selinux policy单独编译与调试
  • XML介绍
  • 营销推广运营 网站wordpress关闭主循环
  • Linux MTD系统深度解析:从原理到实践
  • css第二天
  • Spring Boot 3.2 高性能架构实战:虚拟线程、原生镜像与响应式编程全解析
  • [vulhub靶机通关]DC-5(文件包含_sreen提权_)
  • 网站建设数据收集方法网站没建好可以备案吗