提高此场景性能的方法

2023-12-15

我有一张地图,其中填充了大量数据(约300,000条记录)

并如下迭代,

    for (Map.Entry<String, List<ClassOBj>> entry : testMap
                    .entrySet()) {
 // send email with map keys as email'id
 // email content is populated from the list
// Perform a sql update to the column with the dyanamic value generated here with the email'id
                                  }

如上所述,我担心在内部执行上述操作会导致性能问题。for loop.

Update:

场景是。我正在迭代一个包含大量数据的地图,

在迭代它时,我得到了用户 ID,并且我必须计算用户 ID。例如,考虑userid+some constants这应该在数据库表中更新。

并且还应该与我的地图中的列表值一起添加到电子邮件内容中

所以我认为批量更新是不可能的,我的理解正确吗?

我应该遵循这种方法吗?或采用任何其他想法


for 循环由于两个原因而花费时间。
1) 个人电子邮件通过减少传输连接来改进它
2)个人承诺通过以下方式改进它

所以理想的方法是同时处理这两个问题,我建议批量处理 1000 个,然后使用数字

Example

int BATCH_SIZE = 1000
conn = DriverManager.getConnection("username","password");
conn.setAutoCommit(false);
Statement stmt = conn.createStatement(
        ResultSet.TYPE_SCROLL_INSENSITIVE,
        ResultSet.CONCUR_UPDATABLE);
int count = 0;

Map<String, String> emails_map = new HashMap(BATCH_SIZE)<String, String>;
for (Map.Entry<String, List<ClassOBj>> entry : testMap
        .entrySet()) {
    String email = get_useremail();
    String const_val = do_magic(); // this is how you are computing some constant
    String body = construct_body();

    count++;
    String SQL = "YOUR UPDATE STATEMENT";
    stmt.executeUpdate(SQL);  
    emails_map.put(email, body); // can create 
    if (count % BATCH_SIZE == 0) {
        //commits all transcations
        conn.commit();
        //bulk send emails sending 
        //http://stackoverflow.com/questions/13287515/how-to-send-bulk-mails-using-javax-mail-api-efficiently-can-we-use-reuse-auth

        bulk_emails_send(emails_map)
    }

}


public void bulk_emails_send(Map<String, String> emails_map) {
    // Get the default Session object through your setting
    Session session = Session.getDefaultInstance(properties);
    Transport t = session.getTransport();
    t.connect();
    try {
        for (String email_id in emails_map) {
            Message m = new MimeMessage(session);
            //add to, from , subject, body
            m.saveChanges();
            t.sendMessage(m, m.getAllRecipients());
        }
    } finally {
        t.close();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

提高此场景性能的方法 的相关文章

  • 禁用 Eclipse Java 调试器的热代码替换 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Eclipse 中禁用热代码替换 https stackoverflow com questions 2594408 how do i disable hot code replace in
  • 使用cameltestsupport进行Camel单元测试,模板始终为空

    我正在用 Camel 做一个简单的单元测试 我想做的就是从文件 在资源下 读取 JSON 内容 将其发送到 Java 类进行验证 这是我试图测试的路线 无论我做什么 模板 我用来发送正文 json 始终为空 这是我的代码 public cl
  • 如果在睡眠线程上调用interrupt()会发生什么?

    我有一个线程 然后run I call sleep 如果我中断这个线程会发生什么 MyThread extends Thread public void run try sleep 1000000 catch InterruptedExce
  • 对话框上的 EditText 不返回任何文本

    我太累了 找不到错误 我没有发现任何错误 但我没有从 editText 收到任何文本 请看下面的代码 活动密码 xml
  • Typescript Map 在使用其函数时抛出错误(mapobject.keys() 不是函数)

    我是 typescript 中的新蜜蜂 在我的 angular4 项目中 我收到一个 json 形式的地图对象 所以我声明了一个如下所示的类
  • Spring安全“记住我”cookie在第一个请求中不可用

    我无法在登录请求后检索 Spring 记住我 cookie 但它在对受保护页面的下一个请求中工作正常 谁能告诉我怎样才能立即得到它 我在登录请求中设置了记住我的 cookie 但在 Spring 重定向回原始 受保护的 url 后无法检索它
  • TypeScript 编译速度极慢 > 12 秒

    只是把它放在那里看看其他人是否也遇到这个问题 我已经使用 webpack 作为我的构建工具 使用 typescript 构建了一个 Angular 2 应用程序 一切都运行良好 但是我注意到 typescript 编译超级超级慢 我现在只有
  • eclipse中导入项目文件夹图标

    我在 Eclipse 工作区中新导入的 Maven 项目有J and M项目文件夹顶部的图标 项目和包资源管理器 而其他导入的 Maven 项目只有一个J icon 有人可以解释其中的区别吗 该项目有J装饰器被称为 Java 项目和具有M装
  • 改变字符串颜色

    好的 这是我上一个问题的延续 但我有代码 private void btnTrans Click object sender EventArgs e var abrvStr inputBx Text foreach var kvp in d
  • Firestore - RecycleView - 图像持有者

    我不知道如何编写图像的支架 我已经设置了 2 个文本 但我不知道图像的支架应该是什么样子 你能帮我告诉我图像的文字应该是什么样子才能正确显示吗 holder artistImage setImageResource model getArt
  • 内存一致性 - Java 中的happens-before关系[重复]

    这个问题在这里已经有答案了 在阅读有关内存一致性错误的 Java 文档时 我发现与创建 发生 之前 关系的两个操作相关的点 当语句调用时Thread start 每个具有 与该语句发生之前的关系也有一个 与 new 执行的每个语句之间发生的
  • 更改 R 中 ggplot geom_polygon 的颜色方案

    我正在使用地图库和 ggplot 的 geom polygon 创建地图 我只是想将默认的蓝色 红色 紫色配色方案更改为其他颜色 我对 ggplot 非常陌生 所以如果我没有使用正确的数据类型 请原谅 我使用的数据如下所示 gt head
  • 具有共享依赖项的多模块项目的 Gradle 配置

    使用 gradle 制作第一个项目 所以我研究了 spring gradle hibernate 项目如何组织 gradle 文件 并开始制作自己的项目 但是 找不到错误 为什么我的配置不起作用 子项目无法解决依赖关系 所以项目树 Root
  • 如何获取 WebElement 的父级[重复]

    这个问题在这里已经有答案了 我试过了 private WebElement getParent final WebElement webElement return webElement findElement By xpath 但我得到
  • 将表值参数与 SQL Server JDBC 结合使用

    任何人都可以提供一些有关如何将表值参数 TVP 与 SQL Server JDBC 一起使用的指导吗 我使用的是微软提供的6 0版本的SQL Server驱动程序 我已经查看了官方文档 https msdn microsoft com en
  • RSA OAEP、Golang 加密、Java 解密 -BadPaddingException:解密错误

    我正在尝试解密使用 RSA OAEP 在 Golang 中加密的字符串 但出现 BadPaddingException 解密错误 很难弄清楚我错过了什么 这是Golang加密方法 func encryptString rootPEM io
  • Java 数组的最大维数

    出于好奇 在 Java 中数组可以有多少维 爪哇language不限制维数 但是JavaVM规范将维度数限制为 255 例如 以下代码将无法编译 class Main public static void main String args
  • 获取给定类文件的目录路径

    我遇到的代码尝试从类本身的 class 文件所在的同一目录中读取一些配置文件 File configFiles new File this getClass getResource getPath listFiles new Filenam
  • 计算日期之间的天数差异

    在我的代码中 日期之间的差异是错误的 因为它应该是 38 天而不是 8 天 我该如何修复 package random04diferencadata import java text ParseException import java t
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感

随机推荐

  • msysgit - sh.exe - fork:权限被拒绝 - Vista 64 位

    我在其他 Windows 机器上安装 msysgit 没有任何问题 在这个 Vista 64 位 Ultimate 机器上 我安装了 3 个最新版本的 msysgit 在所有三个安装中 当我在此处执行 git bash 时 我会在命令窗口中
  • ggplot 中 Hmisc 标记对象的问题

    我收到消息 错误 没有适用于 round any 的方法应用于对象 标记 类 当我尝试使用绘制图表时ggplot2和 R 我已经在我的数据框中标记了我的变量Hmisc label我认为这就是问题所在 我该如何解决这个问题 我的标签如下所示
  • 为什么css高度100%不适用于普通div?

    这是我的简单代码 div div CSS高度100 不适用于DIV 我知道一些其他的 css 代码来获取这个 但为什么这段代码不起作用 如何在没有任何脚本的情况下处理高度 100 和宽度 100 For 要工作 您需要设置高度parent
  • 使用 travis-ci 和 wxpython 测试

    我正在尝试添加一些 wxPython 测试以与 travis ci 一起使用 但我不知道如何在构建环境中安装 wxPython 我使用brew在我的计算机上安装了wxPython 但是我无法让brew与travis ci一起使用 在 tra
  • 如何使用 PHP-Parser 获取全局变量名称并更改它

    我想用PHP解析器库来获取全局方法 POST GET REQUEST 获取 PHP 中的值 我在用着PHP解析器我想检查节点名称是否等于 POST GET REQUEST 我还是 PHP Parser 的初学者 不知道如何获取这些全局变量
  • 尽管值在 getPreviewFpsRange 的范围内,但 setPreviewFpsRange 不起作用

    这个简单的代码 Camera Parameters params currentCamera getParameters params setPreviewFpsRange 10000 15000 currentCamera setPara
  • JSPDF - 如何将具有不同页面尺寸(高度和宽度)的多个图像导出到单个 pdf 文件

    我有多个不同尺寸 高度和宽度 的图像 需要使用 jspdf 将其转换为 PDF 但使用时遇到问题addPage 函数来做到这一点 是否可以将不同页面大小的图像导出到单个 pdf 中 我实际上可以使用以下命令添加具有不同图像尺寸的多个页面ad
  • JPanel 上的 MouseEvent - 坐标错误

    我用Java编写了以下微型画笔程序 import java awt BorderLayout import java awt Color import java awt Container import java awt Graphics
  • Clojure 的 :require 和 Instaparse

    我正在尝试使用即时解析我的 Clojure 项目的 lib 我在项目依赖项中使用 leiningen 2 0 和 clojure 1 5 1 我将 instaparse 添加到我的项目依赖项中 如下所示 defproject bachelo
  • 实现 DHCP 客户端

    在使用 C 的 UNIX 上 我的客户端正在以超级用户模式侦听端口 68 发送 DHCP 发现消息后 当我尝试接收时 它会阻塞在 recvfrom 中 这意味着没有收到消息 或者系统是否有一个进程 DHCP 客户端 在同一端口 68 上监听
  • 如何在新项目中重用 Eclipse 启动文件

    我刚刚在 eclipse 中检查了一个 svn 项目作为 java 项目 其中有几个运行启动文件我想重用 但不知道如何指向 运行 来查看这些启动文件或使用它 有什么建议吗 谢谢 通常这些会被项目自动选取并放置在运行菜单中 如果不是 请右键单
  • Google 表单中的 FILE_UPLOAD 项目类型

    谷歌最近在其表单中添加了文件上传功能 但是 我无法找到任何有关如何在谷歌脚本中使用它的文档 如果我在 google 上查看 item types API 它没有列出 https developers google com apps scri
  • iOS 音频操作 - 向后播放本地 .caf 文件

    我想要加载本地 caf 音频文件并反转音频 向后播放 我发现我基本上需要从帖子中翻转一系列缓冲区数据this 但是 我不确定如何从给定的音频文件访问此缓冲区数据 我有一些使用 AVaudioPlayer 和 ObjectAL 一个 obj
  • 对空值使用空检查运算符

    我是新来的Flutter 当我运行我的简单扑动应用程序时 出现此错误 我不明白为什么会发生这个错误 Error Null check operator used on a null value 我在 main dart 中的代码 impor
  • 如何在ASP.NET Core 3.1 MVC中进行RequiredIf客户端和服务器端验证?

    我必须在 ASP NET Core 3 1 中进行客户端和服务器端验证 我浏览了很多博客 但对 ASP NET Core MVC 没有足够的了解 我必须进行必需的验证 什么时候BusinessType is Business the VAT
  • 在多维数组中搜索值并返回新数组

    过去几个小时一直在为此苦苦挣扎 尝试为数组构建一个搜索函数 然后输出一个包含所有具有关键字的数组的新函数 这是我正在使用的函数 不确定这是否朝着正确的方向前进 它返回数组中的数组 这不是我想要的 function search array
  • 在本地主机中运行 laravel 项目

    我已经通过composer create project laravel laravel prefer dist安装了laravel 之后运行 php artisanserve 命令到 laravel 项目目录并得到这个结果 Laravel
  • 如何计算读入此列表的文件数量?

    我有一堆 csv 文件 我正在将它们读入如下列表中 f lt list files pattern 201 d 5 csv 有什么方法可以计算我正在读入的文件数量吗 Yes length f 会给你文件名的数量f
  • Jetty 上的 JSF2 随机给出“zip 文件已关闭”,但在从 Maven jetty 插件运行时有效 (jetty:run)

    我的 JSF Web 应用程序在访问文件 如图像 css js 时随机出现错误 zip 文件已关闭 它部署在 Jetty 7 上 看起来其中一些文件未加载 页面上缺少一些图像 java lang IllegalStateException
  • 提高此场景性能的方法

    我有一张地图 其中填充了大量数据 约300 000条记录 并如下迭代 for Map Entry