EasyExcel追加写入数据,分批查询多次写入场景下,注意使用方式【OOM警告】

使用.withTemplate(file) 将临时数据文件和真实数据文件合并的方式,在生产环境大批量数据下,完全不可取,有很高的内存溢出风险

伪代码

    public static void writeAppend(String fileName) {String filePath = "tempDir".concat(File.separator).concat(fileName);File file = new File(filePath);File tempFile = new File(filePath.concat(".tmp"));if (file.exists()){// 第二次按照原有格式,不需要表头,追加写入EasyExcel.write(file, TestData.class).needHead(false)// 这里有重大问题(拿中转的数据去做模板).withTemplate(file) .file(tempFile).sheet().doWrite(getDataList());} else {if (!file.getParentFile().exists()) {file.getParentFile().mkdirs();}// 第一次写入需要表头EasyExcel.write(file,TestData.class).sheet().doWrite(getDataList());}if (tempFile.exists()){file.delete();tempFile.renameTo(file);}}

开发过程验证时,产生内存溢出
在这里插入图片描述

内存正常的用法

EasyExcel重复多次写入

		// 方法1 如果写到同一个sheetString fileName = TestFileUtil.getPath() + "repeatedWrite" + System.currentTimeMillis() + ".xlsx";// 这里 需要指定写用哪个class去写ExcelWriter excelWriter = EasyExcel.write(fileName, DemoData.class).build();// 这里注意 如果同一个sheet只要创建一次WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();// 去调用写入,这里我调用了五次,实际使用时根据数据库分页的总的页数来for (int i = 0; i < 5; i++) {// 分页去数据库或者其他服务查询数据,推荐主键范围加limit查询List<DemoData> dataList = getDataList();excelWriter.write(data, writeSheet);dataList = null;}// 千万别忘记finish 会帮忙关闭流excelWriter.finish();

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

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

相关文章

【Jupyter notebook】安装-换源-报错问题收集及实测解决法

Jupyter 在一个名为 kernel 的单独进程中运行用户的代码。kernel 可以是不同的 Python 安装在不同的 conda 环境或虚拟环境,甚至可以是不同语言(例如 Julia 或 R)的解释器。 1, 如何查询当前环境下的python 版本 运行 import sys print(sys.executable) %pwd import sy…

Docker操作容器打包(commit),压缩(save),挂载(load)

文章目录 前言一、容器打包二、将镜像压缩成tar包三、将tar包挂载为镜像结束 前言 将容器打包成镜像时&#xff0c;你正在将应用程序及其所有依赖项、文件和配置文件捆绑到一个可移植的、独立的单元中。这样做可以确保您的应用程序在不同环境中具有一致的运行方式&#xff0c;…

python-基础(3)-字符串操作

python字符串 python专栏地址 上一篇: python-基础(2)-数值运算 下一篇&#xff1a;python-基础(4)-list 本节学习python字符串的基本用法 字符串初识字符串基本操作函数字符串高级操作 一、字符串初始 定义字符串字符串的 与 *(加与乘)字符串长度求解函数len(str) 1.1 定义…

密码学 | 椭圆曲线密码学 ECC 入门(三)

目录 7 这一切意味着什么&#xff1f; 8 椭圆曲线密码学的应用 9 椭圆曲线密码学的缺点 10 展望未来 ⚠️ 原文地址&#xff1a;A (Relatively Easy To Understand) Primer on Elliptic Curve Cryptography ⚠️ 写在前面&#xff1a;本文属搬运博客&#xff0c;自己留…

C语言——结构体详解

今天我们就一起来了解一下C语言中结构体有关的知识吧&#xff01; 结构是什么&#xff1f; 结构是一些值的集合&#xff0c;这些值被称为成员变量&#xff0c;结构的每个成员可以是不同类型的变量。 我们之前也学习过数组&#xff0c;这里我们来区分一下结构体和数组的…

安卓手机APP开发__媒体开发部分__媒体项

安卓手机APP开发__媒体开发部分__媒体项 目录 概述 简单媒体项 处理非标准的文件扩展名 受保护的内容 边播边加载的字幕轨道 剪切一个媒体流 加广告 概述 基于媒体项的实例的播放列表API&#xff0c;能够很方便地使用MediaItem.Builder 来构建。 在播放器内部&#xf…

C语言贪吃蛇(可在头文件中添加食物,选择撞墙是否会死)

1. 项目目标 项目为控制台程序&#xff0c;在控制台上实现。 1. 实现游戏开始界面&#xff0c;让用户选择模式&#xff08;撞墙/循环&#xff09;等&#xff1b; 2. 实现地图的绘制&#xff1b; 3. 实现贪吃蛇&#xff0c;并使其根据用户的命令移动&#xff1b; 4. 实现食物的…

ELK+Kafka+Zookeeper日志收集系统

环境准备 节点IP节点规划主机名192.168.112.3Elasticsearch Kibana Logstash Zookeeper Kafka Nginxelk-node1192.168.112.3Elasticsearch Logstash Zookeeper Kafkaelk-node2192.168.112.3Elasticsearch Logstash Zookeeper Kafka Nginxelk-node3 基础环境 sys…

存储过程的使用(一)

目录 不带参数的存储过程 创建一个存储过程&#xff0c;向数据表 dept 中插入一条记录 带 IN 参数的存储过程 在存储过程中接受来自外部的数值&#xff0c;在存储过程中判断该数值是否大于零并显示 输入一个编号&#xff0c;查询数据表emp中是否有这个编号&#xff0c;如果…

Ubuntu日常配置

目录 修改网络配置 xshell连不上怎么办 解析域名失败 永久修改DNS方法 临时修改DNS方法 修改网络配置 1、先ifconfig确认本机IP地址&#xff08;刚装的机子没有ifconfig&#xff0c;先apt install net-tools&#xff09; 2、22.04版本的ubuntu网络配置在netplan目录下&…

全面讲解基于大型语言模型的智能Agent:发展历程、架构与基于Langchain的实现demo

在大型语言模型&#xff08;LLM&#xff09;的时代&#xff0c;基于大型语言模型的智能Agen在过去一年中取得了显著进展。 本文主要介绍基于大型语言模型的智能Agent&#xff0c;目录如下&#xff1a; Agent技术的起源。人工智能Agent技术的发展历程。基于LLM的Agent架构。基…

重构国内游戏账号登录系统的思考和实践

本期作者 背景 账号登录系统&#xff0c;作为游戏发行平台最重要的应用之一&#xff0c;在当前的发行平台的应用架构中&#xff0c;主要承载的是用户的账号注册、登录、实名、防沉迷、隐私合规、风控等职责。合规作为企业经营的生命线&#xff0c;同时&#xff0c;账号登录作为…

python爬虫之爬取携程景点评价(5)

一、景点部分评价爬取 【携程攻略】携程旅游攻略,自助游,自驾游,出游,自由行攻略指南 (ctrip.com) import requests from bs4 import BeautifulSoupif __name__ __main__:url https://m.ctrip.com/webapp/you/commentWeb/commentList?seo0&businessId22176&busines…

使用Python免费自制线稿生成工具

图片转线稿代码 这是一个Python脚本&#xff0c;它使用PIL库&#xff08;Python Imaging Library&#xff0c;也被称为Pillow&#xff09;和NumPy库将图片转换为线稿效果。以下是代码的具体内容&#xff1a; # 文件名&#xff1a;ImgProcess.pyfrom PIL import Image import …

nginx根据二级目录转发服务以及带/和不带/的区别

在nginx中配置proxy_pass代理转发时&#xff0c;如果在proxy_pass后面的url加/&#xff0c;表示绝对根路径&#xff1b;如果没有/&#xff0c;表示相对路径&#xff0c;把匹配的路径部分也给代理走。具体实例如下 1.配置文件location带/且proxy_pass带/ server {listen 80;se…

视觉slam14讲-大纲-持续更新

视觉slam入门太难 数学理论编程知识计算机视觉知识 缺一不可&#xff0c;大家一起加油

【RAG 论文】面向知识库检索进行大模型增强的框架 —— KnowledGPT

论文&#xff1a;KnowledGPT: Enhancing Large Language Models with Retrieval and Storage Access on Knowledge Bases ⭐⭐⭐⭐ 复旦肖仰华团队工作 论文速读 KnowledGPT 提出了一个通过检索知识库来增强大模型生成的 RAG 框架。 在知识库中&#xff0c;存储着三类形式的知…

跟TED演讲学英文:How AI could empower any business by Andrew Ng

How AI could empower any business Link: https://www.ted.com/talks/andrew_ng_how_ai_could_empower_any_business Speaker: Andrew Ng Date: April 2022 文章目录 How AI could empower any businessIntroductionVocabularyTranscriptSummary后记 Introduction Expensiv…

ROS 2边学边练(29)-- 使用替换机制

前言 启动文件用于启动节点、服务和执行流程。这组操作可能有影响其行为的参数。替换机制可以在参数中使用&#xff0c;以便在描述可重复使用的启动文件时提供更大的灵活性。替换是仅在执行启动描述期间评估的变量&#xff0c;可用于获取特定信息&#xff0c;如启动配置、环境变…

抖音视频评论自动回复与主动回复的实现

随着抖音平台的迅猛发展&#xff0c;视频内容创作者面临着日益增长的互动需求。用户评论作为互动的重要渠道之一&#xff0c;其管理与回复工作显得尤为重要。为了提高效率和互动质量&#xff0c;引入在线客服系统成为众多创作者和企业的选择。本文将详细介绍基于抖音开放平台接…