一、背景

由于某业务需要回退某产品数据缓存列表Asset资源,主任务执行后,通过并行执行批量子任务进行数据回退,子任务中会记录缓存列表Asset和缓存列表行AssetLine数据,并行执行过程会出现缓存列表行AssetLine重复插入问题,导致后续业务执行变更资源时候报错。

以前写过一篇也是利用无事务方式解决并发问题,主要是通过获取插入后的自增主键id,防止并发场景,再次查询一次,如果id一致,则代表插入成功,如果id不一致,则代表插入失败,删除这条旧数据。利用无事务方式插入数据库解决并发插入问题,本文通过另一种思路无事务解决并发插入数据库,数据重复问题。

二、方案实现

1.先根据id查询数据库中是否存在该数据,如果存在则代表已经插入过了,直接返回
2.如果不存在此条数据,插入数据库
3.获取插入后的自增主键id,查询SQL倒序desc排序
4.防止并发场景,再次查询一次,
查询出来的数据是按照id倒序,最后1条id最小。
如果id最小的不是当前插入的id,表示当前入库之前已经有数据入库,需要失效当前数据,
然后取id最小的那1条作为有效数据。

伪代码实现

// 当前需要插入的数据
AssetLine needAddAssetLine;
// 根据assetId查询当前数据
Lisst<AssetLine> assetLineList = findByAssetId(assetId);
Optional<AssetLine> minIdVo = assetLineList.stream().min(Comparator.comparing(AssetLine::getId));
if(minIdVo.isPresent()){AssetLine  minIdAssetLine = minIdVo.get();if(needAddAssetLine.getId() != minIdAssetLine.getId()){//失效需要新增的数据 int count = updateByAssetId(needAddAssetLine.getId());if(count != 0){needAddAssetLine.setId(minIdAssetLine.getId());}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93709.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93709.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/93709.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何制作免费的比特币冷钱包

本文主要从技术上讨论冷钱包的操作机制和原理&#xff0c;并不作为投资建议。对于国外的比特币玩家&#xff0c;或者打算长期囤币来对抗通货膨胀的&#xff0c;或者是想短期持有的&#xff0c;那么将比特币存储在哪里是一个Common的问题。一般是两类选择。第一种选择是存储在交…

新手向:Python制作简易音乐播放器

使用Python构建简易音乐播放器音乐播放器是现代数字生活中不可或缺的工具&#xff0c;从智能手机到电脑系统&#xff0c;几乎每个设备都内置了音乐播放功能。对于Python初学者来说&#xff0c;开发一个简易的音乐播放器是一个很好的实践项目&#xff0c;既能学习编程基础&#…

【StarRocks】TabletChecker逻辑

TabletChecker是StarRocks FE里的一个组件,它的主要工作是检查出所有的处于不健康状态的tablets。 注意,它的职责就是check(检查)。 至于tablet修复、均衡等调度工作不是TabletChecker的职责。 相关配置项 // 20秒执行一次check,代码里是执行runAfterCatalogReady()publi…

低空经济展 | 优翼仿真携eVTOL全动飞行模拟器亮相2025深圳eVTOL展

2025深圳eVTOL展将于2025年9月23-25日在深圳坪山燕子湖国际会展中心举行。展会以“低空经济・eVTOL・航空应急救援・商载大型无人运输机”为主题&#xff0c;以 “2天大会3天展览项目考察飞行表演颁奖盛典项目路演”的多元模式&#xff0c;打造覆盖 eVTOL全产业链的专业化合作平…

AI驱动商业革新:开源大模型与零售精准营销引领产业升级

在当今数字化浪潮中&#xff0c;AI 正以迅猛之势渗透至商业的每一处脉络&#xff0c;掀起一场影响深远的变革风暴&#xff0c;从根本上改写着商业运转的底层逻辑&#xff0c;创造出无数崭新的商业契机。基础模型领域&#xff0c;新的突破正在重塑行业格局。Meta 旗下的 LLaMA 3…

【表的操作】

文章目录 一、查看所有表 1、语法 二、创建表 1、语法 2、⽰例 3、表在磁盘上对应的⽂件 4、创建数据加时使⽤校验语句[if not exists] 三、查看表结构 1、语法 2、⽰例 四、修改表 1、语法 2、⽰例 (1)向表中添加⼀列 (2)修改某列的⻓度 (3)重命名某列 (4)删除某个字段…

【Java后端】Spring Boot 全局异常处理最佳实践

Spring Boot 全局异常处理最佳实践 在日常开发中&#xff0c;异常处理几乎是绕不过去的一个话题。尤其在 后端 API 项目 中&#xff0c;如果没有统一的异常处理机制&#xff0c;很容易出现以下问题&#xff1a; Controller 层代码里充斥着 try-catch&#xff0c;显得冗余。前端…

K8S-Configmap资源

目录 一、核心概念​ ​定义​ ​核心价值​ ​与Secret的区别​ ​二、核心特性​ ​数据存储​ ​生命周期​ ​作用域​ 什么是 Configmap&#xff1f; Configmap 能解决哪些问题&#xff1f; ConfigMap 的主要作用 三、命令行直接创建 四、通过文件创建&#xf…

MySQL InnoDB事务acid特性的原理和隔离级别的实现原理

InnoDB存储引擎 InnoDB存储结构表空间 则每张表都会有一个表空间&#xff08;xxx.ibd&#xff09;&#xff0c;一个mysql实例可以对应多个表空间 系统表空间 存储数据字典&#xff08;表结构定义、索引信息等&#xff09;、Change Buffer、Doublewrite Bufferundo log&#xff…

Linux系统之部署nullboard任务管理工具

Linux系统之部署nullboard任务管理工具一、nullboard介绍1.1 nullboard简介1.2 任务看板工具介绍1.3 nullboard使用场景二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍三、安装httpd软件3.1 检查yum仓库3.2 安装httpd软件3.3 启动httpd服务3.4 查看httpd服务状态3.5 防火墙…

Qt设置软件使用期限【新版防修改系统时间】

在工业软件或其他领域中&#xff0c;经常会对软件进行授权&#xff0c;软件需要付费进行有期限的使用。以下是我用Qt设计的设置软件使用期限的两种方案。 主体思想&#xff1a; 1.软件需要绑定机器&#xff0c;让用户无法通过复制在另一台机器上运行。 2.由厂家提供激活码供用户…

【JavaEE】多线程(线程安全问题)

有些代码在单个线程环境下执行正确&#xff0c;如果同样的代码在多个线程下同时执行可能就会出现问题&#xff0c;这个就是线程安全问题&#xff08;或者称线程不安全问题&#xff09;&#xff0c;简而言之就是&#xff1a;线程安全问题是由于多线程出现的问题&#xff0c;原因…

NodeJs 桌面开发学习 electron.js (一)

今天开始学习NodeJs 关于 桌面应用的内容&#xff0c;长期目标是 React electron 实现一个桌面应用。今天先实现一个简单的目标&#xff0c;搭建一个Electron ts 项目架构&#xff0c;并实现主业务线程 和前端渲染线程的交互一、代码结构和配置例子项目结构大致如下&#xff…

diffusion model(1.4) 相关论文阅读清单

以下是阅读清单&#xff1a; 《Deep Unsupervised Learning using Nonequilibrium Thermodynamics》扩散模型&#xff0c;arxiv链接《Denoising Diffusion Probabilistic Models》DDPM论文 arxiv链接

ESP32-C3_SMARTCAR

前言: 前面用stm32f103c8t6 rt-thread 写了个智能小车程序 这章用esp32-c3 重新来遍 1&#xff1a;环境 vscodeidf5.4 esp32-3c 找到一块MIN的底板 凑合用&#xff08;138 cm左右&#xff09; 一个L298N 一个船型开关&#xff0c; 一个665mm 2脚按钮 锂电池 186502 及电池盒&a…

消费者API

目录独立消费者案例&#xff08;订阅主题&#xff09;独立消费者案例&#xff08;订阅分区&#xff09;消费者组案例独立消费者案例&#xff08;订阅主题&#xff09; package com.tsg.kafka.consumer;import org.apache.kafka.clients.consumer.ConsumerConfig; import org.ap…

C# NX二次开发:操作按钮控件Button和标签控件Label详解

大家好&#xff0c;今天介绍ug二次开发过程中的一个叫操作按钮的控件&#xff0c;这个控件在块UI编辑器中可以使用。 ​ Button这个控件的属性和方法如下所示&#xff1a; namespace NXOpen.BlockStyler { public class Label : UIBlock { protected intern…

Vue.prototype 的作用

在 Vue.js 中&#xff0c;Vue.prototype 是用来向所有 Vue 实例添加属性或方法的机制。通过它添加的属性或方法可以在所有 Vue 组件实例中通过 this 访问。主要作用添加全局方法或属性&#xff1a;可以在所有组件中使用的工具方法或常量扩展 Vue 功能&#xff1a;添加 Vue 本身…

Javaee 多线程 --进程和线程之间的区别和联系

文章目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnable(接口)&#xff0c;重写run继承Thread,重写run,但是使用匿名内部类实现Runnable(接口)&#xff0c;重写run&#xff0c;但是使用匿名内部类使用lambda表达式请说明Thread类中run和…

企业如何让内部视频仅限指定域名播放,确保视频不被泄露?

在数字化办公时代&#xff0c;企业内部的培训视频、产品演示或机密会议录像等敏感内容&#xff0c;一旦被非法传播或泄露&#xff0c;可能带来严重的商业风险。如何确保这些视频只能在公司官网或指定域名播放&#xff0c;防止被恶意下载、盗链或二次传播&#xff1f;今天介绍一…