高并发请求批量提交

2023-10-31

 作用:将数据库操作请求,放入队列中,待定时任务执行时,批量执行数据库操作,以减轻数据库压力

package com.zy.data.sync.common.scheduled;

import com.zy.data.sync.moudles.mapper.ToMapper;
import lombok.SneakyThrows;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.LinkedList;
import java.util.Queue;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

/**
 * @author javachen
 * @description executeQueueConstant
 */
@Component
public class ExecuteScheduled
{
    @Autowired
    private SqlSessionFactory sqlSessionFactory;

    public static Queue<String> queue = new LinkedList<String>();

    @PostConstruct
    public void init() throws InterruptedException {

        //监听数据
        //一秒提交一次
        ScheduledExecutorService pool = Executors.newScheduledThreadPool(1);
        pool.scheduleAtFixedRate(new Runnable(){

            @SneakyThrows
            @Override
            public void run() {

                // 关闭session的自动提交
                SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
                try {
                    ToMapper toMapper = sqlSession.getMapper(ToMapper.class);

                    for (int i = 0; i < queue.size(); i++) {
                        String poll = queue.poll();
                        if(poll.startsWith("insert")){
                            toMapper.insert(queue.poll());
                        }
                        if(poll.startsWith("delete")){
                            toMapper.executeDel(queue.poll());
                        }
                    }
                    // 提交数据
                    sqlSession.commit();
                    sqlSession.rollback();
                } catch (Exception e) {
                    sqlSession.rollback();
                } finally {
                    sqlSession.close();
                }

            }

        },0,1, TimeUnit.SECONDS);

    }

    public static  void offer(String data){
        queue.offer(data);
    }

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高并发请求批量提交 的相关文章

  • 为什么 Hashtable 不允许空键或空值?

    正如 JDK 文档中所指定的 Hashtable 不允许空键或空值 HashMap 允许一个空键和任意数量的空值 为什么是这样 Hashtable 是较旧的类 通常不鼓励使用它 也许他们看到了对 null 键的需要 更重要的是 null 值
  • 从txt文件中读取数据而不下载它?

    我想从提供的文本文件中解析信息 有没有一种方法可以在应用程序中执行此操作 而无需先下载文件 以某种方式传输文本内容 打开到 URL 的 Http 连接 使用内置 HttpURLConnection 或使用 commons httpclien
  • openFileOutput 在单例类中无法正常工作 - 想法/解决方法?

    作为一名 Android 开发新手 我遇到了一些奇怪的问题 我想创建一个类 它方法其他类 活动 任何可以用于以某种特殊方式处理文件的类 假设为了简单起见 我们将记录一些内容 如果我在活动中执行以下操作 例如在 OnClick 侦听器中 则一
  • Java:为什么.class文件中的方法类型包含返回类型,而不仅仅是签名?

    class 文件的常量池中有一个 NameAndType 结构 它用于动态绑定 该类可以 导出 的所有方法都被描述为 签名 返回类型 喜欢 getVector Ljava util Vector 当某些 jar 中方法的返回类型发生更改时
  • 使用 Spring MVC 在 jar 文件中显示 jsp 页面

    我正在使用 Spring MVC 3 2 2 在 java 中开发一个 Web 应用程序 我在从 jar 文件中加载 jsp 页面时遇到问题 Spring MVC Web应用程序具有以下结构 META INF WEB INF spring
  • 无法在 Intellij 中运行主类[重复]

    这个问题在这里已经有答案了 我有以下项目结构 ProjectRoot src Main examples libs My src文件夹被标记为sources在 Intellij 中 现在 当我想运行 Main 类时 出现以下错误 Excep
  • Android 信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR) libwebviewchromium.so

    对于 android 4 4 我多次收到 Native crash at system lib libwebviewchromium so 错误 以下是设备包括 Xperia Z1 SO 01F 16 30 2 Galaxy Tab4 7
  • 如何在正则表达式中编写可选单词?

    我想编写一个识别以下模式的 java 正则表达式 abc def the ghi and abc def ghi 我试过这个 abc def the ghi 但是 它没有识别第二种模式 我哪里出错了 abc def the ghi 删除多余
  • 为休息服务实施 JUnit 测试

    我必须为我的休息服务实现一些 JUnit 测试 例如 这是我的休息服务之一 Path dni fe public class HelloWorld POST Path home Consumes MediaType APPLICATION
  • 如何在 JmsMessagingTemplate.sendAndReceive 上设置等待超时

    我在 MVC 控制器中使用 JmsMessagingTemplate 的 sendAndReceive 但如果没有发送回复消息 它似乎会永远等待回复 该文档指出 返回 回复 如果无法接收消息 例如由于超时 则可能为 null 然而 我只是不
  • 在 Eclipse RCP 应用程序中禁用插件贡献

    我经常遇到这个问题 但尚未找到解决方案 每当我编写一个新的基于 Eclipse RCP 的应用程序并包含来自 Eclipse 平台的插件时 我都会 继承 其中一些插件的 UI 贡献 大多数贡献 菜单项 键盘快捷键 属性页 都很有用 但有时我
  • 如何在 JASPIC 中保存经过身份验证的用户?

    我开发了一个安全认证模块 SAM 并实现了validateRequest方法 我还有一个简单的 Web 应用程序配置为使用此 SAM In my validateRequest方法 我检查 clientSubject 并设置一个Caller
  • 在 Kotlin 中声明静态属性?

    My Java code public class Common public static ModelPengguna currentModelPengguna public class Common companion object v
  • 添加 char 和 int

    据我了解 字符是一个字符 即一个字母 一个digit 标点符号 制表符 空格或类似的东西 因此 当我这样做时 char c 1 System out println c 输出 1 正是我所期望的 那么为什么当我这样做时 int a 1 ch
  • 线程数组?

    所以我在理解如何避免线程的顺序执行时遇到了问题 我试图创建一个线程数组并在单独的循环中执行 start 和 join 函数 这是我现在拥有的代码示例 private static int w static class wThreads im
  • 在 Tensorflow-lite Android 中将位图转换为 ByteBuffer(浮点)

    在用于图像分类的tensorflow lite android演示代码中 图像首先转换为ByteBuffer格式以获得更好的性能 这种从位图到浮点格式的转换以及随后到字节缓冲区的转换似乎是一个昂贵的操作 循环 按位运算符 float mem
  • Spring MVC:通用 DAO 和服务类

    我正在 Spring MVC 中编写网页 我使用 Generic DAO 编写了所有 DAO 现在我想重写我的服务类 我该如何写 通用服务 我的 DAO 如下 DAO package net example com dao import j
  • ebean 映射到 BYTEA 的数据类型是什么?

    我有一个游戏 2 0 2 需要在数据库中存储一些文件的应用程序 我们使用 Ebean 作为 ORM 我相信我的数据库中需要一个 BYTEA 列来存储该文件 但我不确定在我的模型中使用什么数据类型 我应该使用某种Blob 或者只是一个byte
  • 亚马逊 Linux - 安装 openjdk-debuginfo?

    我试图使用jstack在 ec2 实例上amazon linux 所以我安装了openjdk devel包裹 sudo yum install java 1 7 0 openjdk devel x86 64 但是 jstack 引发了异常j
  • Axis2 的 wsdl2java 在 RPC/Encoded 样式 Web 服务上失败

    Axis2 有替代方案吗 或者让它工作的方式 例如不同的数据绑定 Retrieving document at Exception in thread main org apache axis2 wsdl codegen CodeGener

随机推荐

  • 一个Hierarchical Attention神经网络的实现

    最近我突然有了一些富余的整块时间 于是我实现了一些有意思的论文的idea 其中印象最深的还是 Hierarchical Attention Networks for Document Classification 我把相关代码放到这里了 h
  • 【leetcode】跳跃游戏

    一 题目描述 给定一个非负整数数组 nums 你最初位于数组的 第一个下标 数组中的每个元素代表你在该位置可以跳跃的最大长度 判断你是否能够到达最后一个下标 示例 1 输入 nums 2 3 1 1 4 输出 true 解释 可以先跳 1
  • linux上释放swap内存空间

    linux上释放swap内存空间 在VM中项目编译时会使用到大量的swap内存 使用之后swap内存一直维持在高使用的情况 我们试图手动的释放swap内存 命令 swapon s用来查看swap内存挂在的路径 root localhost
  • 用matlab实现对图像的面积测量_使用Matlab测量图像目标尺寸

    在传统的数字图像处理当中 边缘检测与形态学为两门非常重要的技术 在笔者的第一篇文章中已经重点介绍了各种边缘检测算子 因此这次笔者将结合一些较为简单的形态学算法 使用Matlab为大家介绍一个很有意思的测量目标尺寸的小项目 效果如下 图1 效
  • Python的GUI程序设计

    一 实验目的 1 熟练掌握Frame窗体的使用 2 熟练掌握基本控件的用法 二 实验内容 1 编写代码实现当改变窗体位置和大小时 除在文本框中显示信息外 还需在状态栏动态变化显示 窗体大小 XXX XXX 窗体位置 XXX XXX 当鼠标在
  • MySQL 数据库基础命令

    MySQL 基础命令 一 了解数据库 1 了解数据库 1 数据 data 描述事物的符号记录 包括图像音频等多种形式 数据的含义也就是数据的语义就是所谓的信息 2 数据库 DataBase 长期储存在计算机内 有组织的 可共享的大量数据的集
  • [测试猿课堂]小白怎么学测试?史上最全《软件测试》学习路线

    熬夜3天 联合3位猿计划教育的总监级授课老师 整理了这份 软件测试小白学习路线 全文接近6000字 请大家耐心看完 对于很多想通过自学转行软件测试的同学 痛点并不是学习动力 而是找不到清晰的学习思路 网络上的各路 大佬 给出的方案五花八门
  • linux查看已安装软件

    rpm qa
  • 格式化输出以及运算符

    1 格式化输出 方法一 此方法相对复杂 格式化字符串 将指定的数据按照指定的格式组合成指定的字符串 注意 nf表示保留小数点后n位 n gt 1 四舍五入 注意 nd 当n大于原数字的长度 则最终显示的结果长度为n 不够的在左边补0 一般用
  • 【计算机基础】在0和1的世界里来来回回

    事物的正反两面被哲学家讨论了几千年 计算机里的0和1也照旧玩出了各种花样 二进制数 VS 十进制数本小节讲二进制写法 以及到十进制的转换方法 如果已熟悉这些内容可以直接跳到下一小节 我们生活在一个十进制的世界中 10个一毛就是一块 10个一
  • python——个税计算器

    目前我国个人所得税计算公式如下 应纳个人所得税税额 工资薪金所得 五险一金 个税免征额 适用税率 速算扣除数 个税免征额为5000元 月 2018年10月1日起调整后 也就是2018年实行的7级超额累进个人所得税税率表如下 全月应纳税所得额
  • SquareLine Studio ecplise仿真环境搭建

    SquareLine Studio 是LVGL官方推荐的一款UI设计工具 可直接转成C源码 但只能演示UI效果 暂不支持在SquareLine Studio中源码仿真 它提供了另一种仿真方式 将源码工程导入到ecplise arduino等
  • html的兼容性注释,ie兼容性解决方案”使用html注释判断ie版本

    QUOTE 这里是正常的html代码 这里XXX是一些特定的东东 在此列表几个出来 详细介绍各自的含义 如果浏览器是IE 如果浏览器是IE 5 的版本 如果浏览器是IE 6 的版本 如果浏览器是IE 7 的版本 上面是几个常用的判断IE浏览
  • mapbox 点、线、面绘制工具添加

  • openwrt pptpd客户端

    步骤 opkg update opkg install ppp mod pptp opkg install luci proto ppp 在OpenWRT安裝PPTP Client端 首先用ssh登陆到路由器 安装pptp软件包opkg u
  • Change IP address_Auto log in to Netgear Router to Crawling an available IP w xpath_REG_SZ_WinError5

    Use urllib to login in to the Netgear router import urllib user admin pwd LlQ54951 host 192 168 1 1 url http host passma
  • Vue项目中移动端适配vw,postcss-px-to-viewport插件使用。

    Vue项目中使用vw实现移动端适配 随着viewport单位越来越受到众多浏览器的支持 下面将简单介绍怎么实现vw的兼容问题 用vw代替rem 纯属个人习惯PC端使用rem 移动端使用vw 1 准备工作 我是用vue cli脚手架搭建vue
  • ESP8266 WIFI模块AT指令汇总

    1 AT RST 功能 重启模块 2 AT CWMODE
  • 一致性Hash(Consistent Hashing)原理剖析及Java实现

    目录 一 一致性Hash Consistent Hashing 原理剖析 二 一致性hash算法的Java实现 一 一致性Hash Consistent Hashing 原理剖析 引入 一致性哈希算法是分布式系统中常用的算法 一致性哈希算法
  • 高并发请求批量提交

    作用 将数据库操作请求 放入队列中 待定时任务执行时 批量执行数据库操作 以减轻数据库压力 package com zy data sync common scheduled import com zy data sync moudles