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

EasyExcel处理表头的缓存设置

在学习EasyExcel 时会发现针对使用类模型配置表头相关属性时,EasyExcel 会使用到缓存技术以提升表头的解析速度如下代码:
在这里插入图片描述
这些参数再何时设置的哪?
在这里插入图片描述

easyExcel 基础参数设置中会有这个参数filedCacheLocation 。默认采用的使用线程级别的缓存。
在这里插入图片描述
默认支持3种方式:

  • THREAD_LOCAL:数据缓存在线程级别,当前线程使用完成时清除数据
  • MEMORY :数据缓存在内存级别,只有当程序停止时才会清除数据
  • NONE :不适应缓存

场景分析:

  1. 前向同一个excel和同一个sheet中重复写入数据时,并且写入属性非常多时:
    如下有个用户信息:
@NoArgsConstructor
@AllArgsConstructor
@Data
public class User {@ExcelProperty("用户名")private String username;@ExcelProperty("年龄")private String age;@ExcelProperty("attribute01")private String attribute01;@ExcelProperty("attribute02")private String attribute02;@ExcelProperty("attribute03")private String attribute03;@ExcelProperty("attribute04")private String attribute04;@ExcelProperty("attribute05")private String attribute05;@ExcelProperty("attribute06")private String attribute06;@ExcelProperty("attribute07")private String attribute07;@ExcelProperty("attribute08")private String attribute08;@ExcelProperty("attribute09")private String attribute09;@ExcelProperty("attribute10")private String attribute10;@ExcelProperty("attribute11")private String attribute11;@ExcelProperty("attribute12")private String attribute12;@ExcelProperty("attribute13")private String attribute13;@ExcelProperty("attribute14")private String attribute14;@ExcelProperty("attribute15")private String attribute15;@ExcelProperty("attribute16")private String attribute16;@ExcelProperty("attribute17")private String attribute17;@ExcelProperty("attribute18")private String attribute18;@ExcelProperty("attribute19")private String attribute19;
}

主程序:

  public void test01() {List<User> userList = new ArrayList<>();// 写入1000条数据for (int i = 0; i < 1000; i++) {userList.add(new User("lisi" + i, String.valueOf(i), String.valueOf(i), String.valueOf(i), String.valueOf(i),String.valueOf(i), String.valueOf(i), String.valueOf(i), String.valueOf(i), String.valueOf(i),String.valueOf(i), String.valueOf(i), String.valueOf(i), String.valueOf(i), String.valueOf(i),String.valueOf(i), String.valueOf(i), String.valueOf(i), String.valueOf(i), String.valueOf(i),String.valueOf(i)));}ExcelWriterBuilder excelWriterBuilder = new ExcelWriterBuilder();excelWriterBuilder.file("F:\\excel\\a.xls");excelWriterBuilder.filedCacheLocation(CacheLocationEnum.NONE);long startTime01 = System.currentTimeMillis();ExcelWriterSheetBuilder excelWriterSheetBuilder01 = new ExcelWriterSheetBuilder(excelWriterBuilder.build());excelWriterSheetBuilder01.sheetName("test01");excelWriterSheetBuilder01.doWrite(userList);long endTime01 = System.currentTimeMillis();System.out.println("总耗时 = " + (endTime01 - startTime01) + "ms");long startTime02 = System.currentTimeMillis();ExcelWriterSheetBuilder excelWriterSheetBuilder002 = new ExcelWriterSheetBuilder(excelWriterBuilder.build());excelWriterSheetBuilder002.sheetName("test02");excelWriterSheetBuilder002.doWrite(userList);long endTime02 = System.currentTimeMillis();System.out.println("总耗时 = " + (endTime02 - startTime02) + "ms");long startTime03 = System.currentTimeMillis();ExcelWriterSheetBuilder excelWriterSheetBuilder03 = new ExcelWriterSheetBuilder(excelWriterBuilder.build());excelWriterSheetBuilder03.sheetName("test03");excelWriterSheetBuilder03.doWrite(userList);long endTime03 = System.currentTimeMillis();System.out.println("总耗时 = " + (endTime03 - startTime03) + "ms");}

采用NONE时调用3次耗时:

第一次:
总耗时 = 596ms
总耗时 = 83ms
总耗时 = 60ms
第二次:
总耗时 = 580ms
总耗时 = 100ms
总耗时 = 54ms
第三次:
总耗时 = 578ms
总耗时 = 91ms
总耗时 = 53ms

采用MEMORY时调用3次耗时:

第一次:
总耗时 = 490ms
总耗时 = 32ms
总耗时 = 24ms
第二次:
总耗时 = 467ms
总耗时 = 35ms
总耗时 = 22ms
第三次:
总耗时 = 470ms
总耗时 = 34ms
总耗时 = 22ms

采用THREAD_LOCAL时调用3次耗时:

第一次:
总耗时 = 468ms
总耗时 = 38ms
总耗时 = 23ms
第二次:
总耗时 = 460ms
总耗时 = 32ms
总耗时 = 22ms
第三次:
总耗时 = 460ms
总耗时 = 33ms
总耗时 = 24ms

相关文章:

EasyExcel处理表头的缓存设置

在学习EasyExcel 时会发现针对使用类模型配置表头相关属性时&#xff0c;EasyExcel 会使用到缓存技术以提升表头的解析速度如下代码&#xff1a; 这些参数再何时设置的哪&#xff1f; 在easyExcel 基础参数设置中会有这个参数filedCacheLocation 。默认采用的使用线程级别的…...

数据挖掘任务一般流程

数据挖掘是从大量数据中提取有价值信息的过程。它涉及多个步骤&#xff0c;每一步都对整个数据挖掘过程至关重要。以下是数据挖掘任务的一般流程&#xff1a; 业务理解&#xff1a; 确定业务目标。评估当前情况。定义数据挖掘问题。制定一个初步计划来达到这些目标。 数据理…...

人工智能计算机视觉:解析现状与未来趋势

导言 随着人工智能的迅速发展&#xff0c;计算机视觉技术逐渐成为引领创新的关键领域。本文将深入探讨人工智能在计算机视觉方面的最新进展、关键挑战以及未来可能的趋势。 1. 简介 计算机视觉是人工智能的一个重要分支&#xff0c;其目标是使机器具备类似于人类视觉的能力。这…...

5.1 C++11强类型枚举

一、C枚举的缺陷 1.类型冲突 枚举值和类型都是全局可见的&#xff0c; 与正常C的namespace、类等都是格格不入的&#xff0c;并且还容易导致冲突。 enum Type { General, Light, Medium, Heavy }; enum Category { General, Pistol, MachineGun, Cannon }; 如果在相同作用域…...

Android : BottomNavigation底部导航_简单应用

示例图&#xff1a; 1.先创建底部导航需要的图片 res → New → Vector Asset 创建三个矢量图 图片1 baseline_home.xml <vector android:height"24dp" android:tint"#000000"android:viewportHeight"24" android:viewportWidth"24…...

基于ssm培训学校教学管理平台论文

摘 要 社会的进步&#xff0c;教育行业发展迅速&#xff0c;人们对教育越来越重视&#xff0c;在当今网络普及的情况下&#xff0c;教学管理模式也开始逐渐网络化&#xff0c;学校开始网络教学管理模式。 本文研究的培训学校教学管理平台基于SSM框架&#xff0c;采用Java技术和…...

关于嵌入式开发的一些信息汇总:C标准、芯片架构、编译器、MISRA-C

关于嵌入式开发的一些信息汇总&#xff1a;C标准、芯片架构、编译器、MISRA-C 关于C标准芯片架构是什么&#xff1f;架构对芯片有什么作用&#xff1f;arm架构X86架构mips架构小结 编译器LLVM是什么&#xff1f;前端在干什么&#xff1f;后端在干什么&#xff1f; MISRA C的诞生…...

java实现局域网内视频投屏播放(二)爬虫

代码链接 视频播放原理 大多视频网站使用的是m3u8&#xff0c;m3u8其实不是一个真正的视频文件&#xff0c;而是一个视频播放列表&#xff08;playlist&#xff09;。它是一种文本文件&#xff0c;里面记录了一系列的视频片段&#xff08;segment&#xff09;的网络地址。这些…...

a标签的target属性

<a> 标签的 target 属性规定在何处打开链接文档。 最常用的两个值是&#xff1a; _self &#xff1a; 在当前窗口打开被链接文档 _blank&#xff1a;在新窗口打开被链接文档 就是常见浏览网页打开链接的方式...

无mac在线申请hbuilderx打包ios证书的方法

hbuilderx是一个跨平台的开发工具&#xff0c;可以开发android和ios的app应用。打包hbuilderx应用需要hbuilderx打包证书。但是很多使用hbuilderx开发的程序员&#xff0c;并没有mac电脑&#xff0c;而申请ios的证书&#xff0c;hbuilderx官网的教程却是需要mac电脑的&#xff…...

[css] flex wrap 九宫格布局

<div class"box"><ul class"box-inner"><li>九宫格1</li><li>九宫格2</li><li>九宫格3</li><li>九宫格4</li><li>九宫格5</li><li>九宫格6</li><li>九宫格7&l…...

云上丝绸之路| 云轴科技ZStack成功实践精选(西北)

古有“丝绸之路” 今有丝绸之路经济带 丝路焕发新生&#xff0c;数智助力经济 云轴科技ZStack用“云”护航千行百业 沿丝绸之路&#xff0c;领略西北数字化。 古丝绸之路起点-陕西 集历史与现代交融&#xff0c;不仅拥有悠久的历史文化积淀&#xff0c;而且现代化、数字化发…...

Java8 IfPresent 与 forEach 的组合操作

一、需求背景 Java8的Optional接口是我们经常使用的一个接口&#xff0c;尤其是对对象进行判空的时候&#xff0c;需要经常使用到IfPresent()。 但是&#xff0c;如果是对List进行判空、循环的话&#xff0c;就稍显繁杂了&#xff0c;因为几乎每次对List进行操作的时候&a…...

WebGL+Three.js入门与实战——给画布换颜色、绘制一个点、三维坐标系

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…...

SystemServer 进程启动过程

首语 SystemServer进程主要用于启动系统服务&#xff0c;诸如AMS、WMS、PMS都是由它来创建的。在系统的名称为"system_server"&#xff0c;Android核心服务都是它启动&#xff0c;它是非常重要。 Zygote处理SystemServer进程 在 Zygote启动过程 文章中分析我们知道…...

Java EE 多线程之 JUC

文章目录 1. Callable 接口2. ReentrantLock3. 信号量4. CountDownLatch JUC这里就是指&#xff08;java.util.concurrent&#xff09; concurrent 就是并发的意思 这个包里的内容&#xff0c;主要就是一些多线程相关的组件 1. Callable 接口 Callable 也是一种创建线程的方式…...

Unity光照模型实践

光照作为3D渲染中最重要的部分之一&#xff0c;如何去模拟真实环境的光照是重要的研究内容&#xff0c;但是现实环境光照过于复杂&#xff0c;有很多经典好用的光照模型去近似真实光照。 根据基础的Phong模型 最终某个点的结果为 环境光Ambient 漫反射光Diffuse 高光Specula…...

从0创建并部署一个网页到服务器

创建一个页面 1 下载node.js 下载VScode 2 在Windows下找一个路径新建一个文件夹 例如&#xff1a;D:\study_project\PersonalWeb 3 VSCodee中打开文件夹 4 Windows下 管理员身份打开命令提示符&#xff0c;执行npm install -g vue/cli 5 VSCode下打开终端&#xff0c;执…...

Ubuntu 22.04 安装 OCI CLI

Ubuntu 22.04 安装 OCI CLI 安装命令 安装命令 wget https://codeload.github.com/oracle/oci-cli/zip/master -O oci-cli.zip pip install oci-cli.zip完结&#xff01;...

K8S的安装工具

kubectl Kubernetes 命令行工具 kubectl&#xff0c; 让你可以对 Kubernetes 集群运行命令。 你可以使用 kubectl 来部署应用、监测和管理集群资源以及查看日志。 有关更多信息&#xff0c;包括 kubectl 操作的完整列表&#xff0c;请参见 kubectl参考文件。 kubectl 可安装在…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...