工具类,包含线程池,excel图片处理

devtools/2025/1/17 6:03:01/

一、线程池

public class ThreadPool {/*** 核心线程*/public static final int CORE_POOL_SIZE = Runtime.getRuntime().availableProcessors() + 1;/*** 线程池最大线程数*/public static final int MAX_POOL_SIZE = CORE_POOL_SIZE * 2;/*** 空闲线程回收时间*/public static final int KEEP_ALIVE_TIME = 30;/*** 队列最大长度*/public static final int QUEUE_CAPACITY = 128;private static final ExecutorService executorService =new ThreadPoolExecutor(CORE_POOL_SIZE,MAX_POOL_SIZE,KEEP_ALIVE_TIME,TimeUnit.SECONDS,new LinkedBlockingQueue<>(QUEUE_CAPACITY),Executors.defaultThreadFactory(),new ThreadPoolExecutor.CallerRunsPolicy());private ThreadPool() {}public static void execute(Runnable task) {executorService.execute(task);}public static void shutdown() {if(!executorService.isShutdown()){executorService.shutdown();}}public static Future submit(Runnable task){return executorService.submit(task);}public static boolean cancel(Future future){if(future != null && !future.isCancelled()){return future.cancel(true);}return false;}
}

二、EasyExcel一列单元格导出多张图片

/**** @param context* @param imageDataList 图片列表* @param imgColIndex 图片列*/private void setImage(CellWriteHandlerContext context, List<ImageData> imageDataList, int imgColIndex) {Sheet sheet = context.getWriteSheetHolder().getSheet();Cell cell = context.getCell();// 图片数量int maxSize = imageDataList.size() > 1 ? imageDataList.size() : 1;// 根据图片数量设置图片列的宽度sheet.setColumnWidth(imgColIndex, (int)(18 * maxSize + 0.72) * 256);// 图片宽度,单位px,自己设置咯int picWidth = Units.pixelToEMU(125);Drawing drawing = sheet.getDrawingPatriarch();if (drawing == null) {drawing = sheet.createDrawingPatriarch();}for (int i = 0; i < imageDataList.size(); i++) {int index = sheet.getWorkbook().addPicture(imageDataList.get(i).getImage(), XSSFWorkbook.PICTURE_TYPE_PNG);// 设置图片坐标和位置 dx1, dy1, dx2, dy2, col1, row1, col2, row2// (dx1, dy1)是起始单元格图片左上角的坐标// (dx2, dy2)是结束单元格图片右下角的坐标// (col1, row1)是起始单元格位置// (col2, row2)是结束单元格位置ClientAnchor anchor = drawing.createAnchor(picWidth, 0, picWidth + picWidth * i,0,cell.getColumnIndex(), cell.getRowIndex(), cell.getColumnIndex(), cell.getRowIndex() + 1);// 设置图片可以随着单元格移动anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_AND_RESIZE);drawing.createPicture(anchor, index);}}


http://www.ppmy.cn/devtools/26448.html

相关文章

多线程模型浅谈

优质博文&#xff1a;IT-BLOG-CN 笔者近期在维护的项目中发现了一些比较随机的问题&#xff0c;时有时无的&#xff0c;排查之后发现是使用多线程导致的&#xff0c;恍然之下研究了下多线程的底层模型相关知识&#xff0c;现不大家简要分享下。 一个程序进程可包含多个线程&am…

(学习日记)2024.05.06:UCOSIII第六十节:User文件夹函数概览(uCOS-III->Source文件夹)第六部分

之前的章节都是针对某个或某些知识点进行的专项讲解,重点在功能和代码解释。 回到最初开始学μC/OS-III系统时,当时就定下了一个目标,不仅要读懂,还要读透,改造成更适合中国宝宝体质的使用方式。在学完野火的教程后,经过几经思考,最后决定自己锦上添花,再续上几章。 这…

C# Onnx YOLOv8_Blackjack

C# Onnx YOLOv8_Blackjack 目录 效果 模型 项目 代码 下载 效果 模型 Model Properties ------------------------- date&#xff1a;2024-04-23T17:17:10.378224 description&#xff1a;Ultralytics YOLOv8_Blackjack model trained on data.yaml author&#xff1a;U…

Milvus Cloud 向量数据库Reranker成本比较和使用场景

成本比较:向量检索 v.s. Cross-encoder Reranker v.s. 大模型生成 虽然 Reranker 的使用成本远高于单纯使用向量检索的成本,但它仍然比使用 LLM 为同等数量文档生成答案的成本要低。在 RAG 架构中,Reranker 可以筛选向量搜索的初步结果,丢弃掉与查询相关性低的文档,从而有…

Windows使用SSH登录本机Linux虚拟机

SSH&#xff08;Secure Shell&#xff09;&#xff0c;一种网络协议&#xff0c;可以在安全外壳下实现数据传输通信&#xff0c;所以主要用于计算机间加密登录&#xff0c;可以简单理解为远程控制。除了计算机间直接互联&#xff0c;在git中也可以看到&#xff0c;常见的协议有…

如何使用dlib库进行目标跟踪

dlib 库本身并不直接提供目标跟踪的功能。目标跟踪是计算机视觉领域的一个独立任务&#xff0c;通常涉及对视频序列中的特定目标&#xff08;如人脸、车辆、行人等&#xff09;进行持续的识别和定位。然而&#xff0c;dlib 库中的某些组件&#xff08;如人脸检测器、HOG特征提取…

交叉调制少样本图像生成用于结直肠组织分类

文章目录 Cross-Modulated Few-Shot Image Generation for Colorectal Tissue Classification摘要方法实验结果 Cross-Modulated Few-Shot Image Generation for Colorectal Tissue Classification 摘要 提出问题&#xff1a; 针对罕见癌症组织的组织病理训练数据稀缺问题&…

BuddyPress 中文汉化包,WordPress插件

汉化包下载地址&#xff1a;BuddyPress 中文汉化包.zip BuddyPress 社区插件 BuddyPress 是一款开源免费有趣灵活的社区、团队社交软件。BuddyPress 可以用来创建属于你的社交网络&#xff0c;帮助您使用 WordPress 构建任何类型的社区网站。 安装方法&#xff1a;下载解压后…