百万数据导出Excel工具类,欢迎指正

EasyExcel导出百万级连表查询xlsx数据方法实测102万105秒 先看sql语句:查询全部数据时间14秒 分页查询10万数据时间1秒左右 连接点,分组都加了索引,没加索引可能要10来分钟, sql详情: 对于百万级的数据如果一下查出来是会内存溢出的,所以需要分页查出来,分页放到excel表格中 直接上我写的代码:excel表头类就不沾出来了,每个人的都不一样 /** * 导出excel * */ @RequestMapping("/export") @RequiresPermissions("b2b:contract:export 阅读详情

依赖项

工具类需要一些常用的依赖,dependency如下

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.0.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
    </dependencies>

工具类和使用

具体的工具类如下所示,使用方法参照main方法即可,需要的可以扩展param参数,使得工具更为通用

package xyz.yq56;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.function.Function;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;

import com.sun.istack.internal.NotNull;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.experimental.SuperBuilder;

/**
 * @author yi qiang
 * @date 2022/7/5 23:12
 */
public class BigExcelUtil {

    public static void main(String[] args) throws IOException, InterruptedException {
        long t = System.currentTimeMillis();
        WbParam<User> param = WbParam.<User>builder()
                .func(page -> {
                	//一般来说,这里应该是个servie.pageList方法.这里是模拟这个数据库获取数据的过程
                    List<User> list = new ArrayList<>();
                    for (int i = 0; i < 10000; i++) {
                        list.add(new User("id_" + page + "_" + i, i, i + "", i + "", i + ""));
                    }
                    return list;
                })
                //属性映射,数据需要和表头一一对应
                .mapper(item -> new String[]{
                        item.getName(), Integer.toString(item.getAge()), item.getS1(), item.getS2(), item.getS3()
                })
                //这里一般需要使用service.count方法
                .totalPage(100)
                //表头
                .headerArr(new String[]{"name", "age", "s1", "s2", "s3"})
                .build();

        Workbook wb = createWb(param);
        generateTempWorkbook("G:\\tmp\\test.xlsx", wb);
        System.out.println("耗时: " + (System.currentTimeMillis() - t));
    }


    @Data
    @AllArgsConstructor
    public static class User {
        private String name;
        private Integer age;
        private String s1;
        private String s2;
        private String s3;
    }


    /**
     * 指定目录下生成Workbook
     *
     * @param filePath 目录
     * @param workbook 工作簿
     * @throws IOException 异常抛出
     */
    public static void generateTempWorkbook(String filePath, Workbook workbook) throws IOException {
        if (workbook == null) {
            throw new IllegalArgumentException("Workbook doesn't exist");
        }

        org.apache.commons.io.FileUtils.touch(new File(filePath));
        try (FileOutputStream out = new FileOutputStream(filePath);) {
            //写入文件输出流
            workbook.write(out);
        } finally {
            workbook.close();
            if (workbook instanceof SXSSFWorkbook) {
                ((SXSSFWorkbook) workbook).dispose();
            }
        }
    }

    /**
     * 1048576行数据一下使用此工具类即可实现wb的创建
     * <br> 记得对Workbook进行清理工作
     *
     * @param wbParam 参数,里面属性不可以为空
     * @param <T>     待转化属性
     * @return wb
     */
    @SuppressWarnings("all")
    public static <T> Workbook createWb(WbParam wbParam) {
        Workbook workbook = new SXSSFWorkbook(wbParam.getRowAccessWindowSize());
        Sheet sheet = createSheetWithHeader(workbook, wbParam.getSheetTitle(), wbParam.getHeaderArr());
        int row = 1;
        //映射关系获取一次就行,不用放到循环里面
        Function<T, String[]> mapper = wbParam.getMapper();
        Function<Integer, List<T>> func = wbParam.getFunc();

        for (int i = 1; i <= wbParam.getTotalPage(); i++) {
            for (T t : func.apply(i)) {
                appendRow(sheet, row, t, mapper);
                row++;
            }
        }
        return workbook;
    }

    /**
     * 创建一个带有表头的sheet
     *
     * @param workbook   工作簿,需要提前创建且不能为null
     * @param sheetTitle sheet标题
     * @param headerArr  表头
     * @return 带有表头的sheet
     */
    public static Sheet createSheetWithHeader(Workbook workbook, String sheetTitle, String[] headerArr) {
        Sheet sheet = workbook.createSheet(sheetTitle);

        //创建表头
        Row header = sheet.createRow(0);
        for (int i = 0; i < headerArr.length; i++) {
            Cell cell = header.createCell(i);
            cell.setCellValue(headerArr[i]);
        }
        return sheet;
    }

    /**
     * 追加行数据
     *
     * @param sheet  表单
     * @param row    行数据
     * @param t      对象
     * @param mapper 对象属性与行数据的映射关系
     * @param <T>    待转化的对象
     */
    public static <T> void appendRow(Sheet sheet, int row, T t, Function<T, String[]> mapper) {
        if (sheet == null) {
            throw new IllegalArgumentException("Sheet doesn't exist");
        }
        if (row < 0) {
            throw new IllegalArgumentException("Illegal row: " + row);
        }
        Row contentRow = sheet.createRow(row);
        String[] rowArr = mapper.apply(t);
        if (rowArr != null) {
            for (int i = 0; i < rowArr.length; i++) {
                Cell cell = contentRow.createCell(i);
                cell.setCellValue(rowArr[i]);
            }
        }
    }

    /**
     * 所有参数都必填
     *
     * @param <T> 待转化的对象
     */
    @Data
    @SuperBuilder
    public static class WbParam<T> {
        /**
         * 总页数
         */
        @NotNull
        int totalPage;
        /**
         * 分页获取数据
         */
        @NotNull
        Function<Integer, List<T>> func;
        /**
         * sheet标题
         */
        String sheetTitle;
        /**
         * 头数组
         */
        @NotNull
        String[] headerArr;
        /**
         * 类与String的映射关系
         */
        @NotNull
        Function<T, String[]> mapper;

        /**
         * 多少条之后就刷新到磁盘中(异常值会重置为10000)
         */
        @NotNull
        int rowAccessWindowSize;

        public int getRowAccessWindowSize() {
            return rowAccessWindowSize <= 0 ? 10000 : rowAccessWindowSize;
        }

        public String getSheetTitle() {
            //工具类还是需要减少一点依赖,这里直接写判空
            return (sheetTitle == null || sheetTitle.isEmpty()) ? "sheet_" + UUID.randomUUID() : sheetTitle;
        }
    }
}

效果

生成100w行数据的Excel,大约耗时9.3s(包含生成100w个对象的时间).
在这里插入图片描述
在这里插入图片描述

测试发现,列数越多耗时越长.2列大概是4s,换成5列就需要9s.故,导出时应尽量只导出需要的列

Java实现百万级数据从Excel导入到数据库 在一个后台管理功能中,Excel导入数据是不可缺少,但是当处理大数据量的Excel文件导入时候就可能会带来一些列的问题,本文我们会分析问题产生的原因。并提供解决方案以及完整的实现代码。 阅读详情

相关推荐

java 百万级数据的excel导出优化到关于gc回收的探讨

    最近被分到了一个关于百万级excel导出内存优化问题,然后就去研究了做法。   1, excel导出工具包,找了几个,然后使用了阿里包装的easyExcel,很多博客都说不错 pom: &lt;dependency&gt; &lt;groupId&gt;com.alibaba&lt;/groupId&gt; &lt;artifactId&gt;easyexcel&lt;/...

qq_27764783的博客 2798

Java 近百万数据查询和导出共用时2分钟左右

特别感谢https://www.cnblogs.com/barrywxx/p/10700283.html提供的模板导出的技术和思路 测试环境: 1、jdk1.8 springboot mybatis mysql 2、70万条的数据34个字段,因业务需求是60万左右的数据量我这里只测试了70万的 技术和思路: 查询:采用流式查询,每次查询5万条数据 导出:采用模板的形式。用Ex...

qq_39513256的博客 1123

Java高效导出百万级数据实战指南

在实现百万级数据的导出过程中,我们遇到了以下问题:性能瓶颈:单一的读取和写入操作消耗时间长,存在性能瓶颈。内存溢出:大数据量导致内存使用率激增,存在内存溢出的风险。任务中断:长时间运行的任务容易因各种意外中断,需要解决数据一致性和完整性的问题。针对这些问题,我们采取了以下解决思路:分批处理:对数据进行分批读取和导出,减少单次处理的数据量。异步处理与多线程:使用异步和多线程技术,提高数据处理的效率。断点续传和分片下载。

weixin_33308579的博客 1164

oracle快速导出1t数据,Oracle 快速将数据导出到CSV(Excel)文件的方法及性能比较

注释:工作中有需要将线上数据导出到excel给客户分析/查看的情况,如下是方法介绍情况:方法1分钟导出的数据量适用于utl_file读写文件包300万大量导出时plsql developer->export query result10万小量导出时excel连接数据库1万spool 循环打印5000--excel 最大行数1048576方案一、利用SQL_TO_CSV导出.csv文件.--...

weixin_42237496的博客 1106

【python快速编程入门(第二版)黑马程序员课后编程题】

python快速编程入门(第二版)黑马程序员课后编程题

weixin_46167259的博客 1万+

警惕AI依赖:如何避免数字水蛭侵蚀你的认知能力

在人工智能技术日益普及的今天,人机协作已成为现代工作流的核心范式。其原理在于通过算法模型辅助人类完成信息处理、内容生成等任务,从而提升效率。然而,过度依赖AI可能导致认知卸载,引发思考能力退化等潜在风险。从技术价值看,AI的核心在于增强而非替代人类智能,关键在于建立健康的协作模式。在应用场景上,无论是编程开发、内容创作还是决策分析,用户都需警惕工具依赖对深度工作、创造性思维和决策责任的侵蚀。本文聚焦于识别AI依赖的早期信号,并提供构建分阶段使用流程、将AI作为质疑者等具体策略,旨在帮助读者守护核心认知能力,

weixin_30240349的博客 626

SXSSFWorkbook

今天小编接到了一个任务,就是把数据从数据库取出,然后导出到excel里面。因为之前没接触过,所以这次去探究一下。

weixin_45229417的博客 1万+

LLC谐振变换器设计实战:从工作原理到参数设计与调试

开关电源设计是电力电子领域的核心技术,其核心目标在于提升效率与功率密度。为实现这一目标,软开关技术应运而生,它通过精心控制开关器件的电压与电流波形,使其在开通或关断瞬间实现零电压或零电流切换,从而从根本上降低开关损耗。LLC谐振变换器正是这一技术的杰出代表,它通过引入谐振网络,巧妙地实现了主开关管的零电压开关和次级整流管的零电流开关。这种拓扑结构在服务器电源、通信设备及高端显示驱动等要求高效率、高功率密度的应用场景中价值显著。本文将以半桥LLC为例,深入剖析其工作模态与增益特性,并系统阐述其参数设计、仿真验

weixin_34129696的博客 564

生成excel文件的工具类

代码如下:(依赖文件和文件的读取:https://blog.youkuaiyun.com/river66/article/details/96097419) import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.user...

river66的博客 294

大规模GPU集群组网实战:从Spine-Leaf架构到RoCE无损网络调优

在分布式训练与高性能计算场景中,GPU集群的算力释放高度依赖数据中心网络的带宽、时延与可靠性。随着模型规模扩大,东西向流量成为主要瓶颈,服务器之间需要频繁执行AllReduce等集合通信操作,任何丢包或拥塞都会直接拖慢训练迭代。因此,现代AI基础设施普遍采用Spine-Leaf两层拓扑,配合ECMP实现高可用转发,并借助RoCEv2与无损网络技术(PFC、ECN)构建低延迟、零丢包的计算网络。与此同时,管理网、存储网与计算网的物理或逻辑隔离,以及合理的IP地址规划,是保障集群稳定运行的基础。本文从实际部署8

weixin_28712661的博客 127

3GPP Release与UE Category:无线通信标准演进与终端能力分级全解析

在蜂窝移动通信领域,技术标准的演进与终端设备的能力分级是理解整个产业发展的核心框架。其基本原理由国际标准组织3GPP通过周期性发布的技术规范版本(Release)来定义,每个Release都像一份阶段性的技术蓝图,规定了网络与终端应支持的新功能与性能基线。这种标准化机制的技术价值在于确保了全球设备的互联互通与网络的平滑升级,为从4G LTE到5G NR乃至未来的演进提供了清晰路径。在这一框架下,终端能力分级(如LTE时代的UE Category)是将标准转化为具体设备性能的关键环节,它直接定义了终端在射频和

weixin_34098209的博客 332

poi之SXSSFWorkbook大量数据导出至excel

说明: 前面我们介绍了使用xls或xlsx模板导出excel数据。但是当数据量比较大时,这样的方式就会特别慢。导出2万条(每条数据占11列)数据时,使用模板的方式,会大约耗时20几分钟。那要导出百万千万甚至更多条数据呢?这时我们可以使用poi的SXSSFWorkbook来导出。 POI3.8之前的版本不支持大数据量处理,如果数据过多则经常报OOM错误,有时候调整JVM...

JustryDeng 3万+

基于 STM32 的乒乓球发球机控制系统设计与实现

乒乓球发球机是一种能够按照预设参数自动、连续发出乒乓球的训练设备。本系统以 STM32F103C8T6 为主控核心,通过控制实现球速调节、实现落点与旋转方向控制、实现出球节奏控制,并配合 OLED 显示与按键人机交互,实现速度、频率、落点、旋转四大参数的可调发球训练。

weixin_42300449的博客 212

使用easyExcel导出百万级数据

1:测试数据量两百二十多万,Excel2007,一个Excel多个sheet 2:导入maven依赖包 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>1.1.2-bet...

good_luck10的博客 5219

基于YOLOv11的无人机目标检测系统:实现drone、bird、aircraft多类别识别

采用改进的YOLOv11网络结构,平衡检测精度和速度融合VisDrone和UAVDT数据集,增强模型泛化能力设计多尺度特征融合模块,提升小目标检测性能开发直观的UI界面,便于实际部署和应用。

YOLO 326

【Bug已解决】NCCL timeout for validation 解决方案

训练用多卡 DDP / FSDP 正常,但一到或者进程直接 hang 在 eval 的某个集合通信上。最迷惑的是:训练阶段(有集合通信)完全正常,偏偏 eval 阶段(看起来更轻量)超时。因为 eval 阶段某些 rank 没参与 collective,导致参与的那部分 rank 永远等不到同伴。

一键难忘的博客 144

Java操作百万数据量Excel导入导出工具类(维护中)

更新日志:(如果有更好的优化方案或者更高级的工具类:欢迎评论或者私信) * 1.response.reset();注释掉reset,否在会出现跨域错误。 * 2.可导出多个单元、poi官方建议大数据量解决方案:SXSSFWorkbook。 * 3.自定义下拉列表:对每个单元格自定义下拉列表。 * 4.数据遍历方式换成数组(效率较高)、可提供模板下载、每个表格的大标题[2018-09-14] ...

用心做每件事 3万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

百万级Excel数据导入导出,就该这么玩

1.如此大批量数据的导出和导入操作,会占用大量的内存实际开发中还应限制操作人数。2.在做大批量的数据导入时,可以使用jdbc手动开启事务,批量提交。来源:blog.youkuaiyun.com/qq_44981526/article/details/128738042END往期精彩你的Spring Boot应用启动很慢?不妨试试这个神器!

竹林幽深 921

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C 百万级数据快速导出到Excel

C# 百万级数据快速导出到Excel 去发现同类优质开源项目:https://gitcode.com/ 本仓库提供了一个高效的C#解决方案,用于将百万级数据快速导出到Excel文件中。通过本资源文件,您可以在短短3秒内完成百万级数据的导出任务,极大地提升了数据处理的效率。 功能特点 高效导出:支持百万级数据在3秒内导出到Excel文件。 直接操作:通过C#的DataTable直接导出数据,无需复...

gitblog_06698的博客 447

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Excel百万级数据导入导出,EasyExcel 才是 yyds

因为你所创建的book,Sheet,row,cell等在写入到Excel之前,都是存放在内存中的(这还没有算Excel的一些样式格式等等),可想而知,内存不溢出就有点不科学了!具体我没有看网上其他人的测试情况,这东西一般也很少有人愿意测试,不过这个速度对于我当时解决公司大数据的导入和导出已经足够,当然公司的业务逻辑很复杂,数据量也比较多,表的字段也比较多,导入和导出的速度会比现在测试的要慢一点,但是也在人类能接受的范围之内。在2003以前Excel的版本后缀还是.xls。它的优点是 不会报内存溢出。

竹林幽深 627

导出百万级Excel数据与OOM问题解决方案

本文介绍了基于Apache POI SXSSF技术的百万级数据Excel导出方案,重点解决传统导出方式的内存溢出问题。SXSSF采用流式写入机制,通过设置内存窗口实现分片处理,将超出行数自动刷写到临时文件,显著降低内存占用。文章包含技术原理、环境配置和完整实现代码,演示了订单数据导出的具体流程,包括工作表创建、样式设置、流式写入和临时文件清理等关键步骤。该方案适用于电商、金融等需要处理大规模数据导出的场景,有效平衡性能与资源消耗。

没事学AI的博客 1020

百万数据excel导出功能如何实现?

???? 这是一个或许对你有用的社群???? 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:《项目实战(视频)》:从书中学,往事上“练”《互联网高频面试题》:面朝简历学习,春暖花开《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题《精进 Java 学习指南》:系统学习,互联网主流技术栈《必读 Java 源码专栏》:知其然,知其所以然????这是一个或许...

芋艿V 278

excel导入导出百万级数据优化

以上就是Excel导入导出百万级数据的优化思路了。可以作为案例参考和代码模板的使用,代码地址在这里。也欢迎大家的评论交流。

shigen的博客 248

Java操作百万数据量Excel导入导出工具类------暂时引用

更新日志:(如果有更好的优化方案或者更高级的工具类:欢迎评论或者私信) * 1.response.reset();注释掉reset,否在会出现跨域错误。 * 2.可导出多个单元、poi官方建议大数据量解决方案:SXSSFWorkbook。 * 3.自定义下拉列表:对每个单元格自定义下拉列表。 * 4.数据遍历方式换成数组(效率较高)、可提供模板下载、每个表格的大标题[2018-09-14] ...

quliuwuyiz的博客 1288

告别 OOM:EasyExcel 百万数据导出最佳实践(附开箱即用增强工具类)

后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,Spring Cloud Alibaba 等等,后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,Spring Cloud Alibaba 等等,已完结,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...,累计输出 100w+ 字,讲解图 4013+ 张,还在持续爆肝中..

犬小哈 151

Spring Boot通过EasyExcel异步多线程实现大数据量Excel导入,百万数据30秒

通过本文的介绍,我们了解了如何利用Spring Boot和EasyExcel实现高效的大数据量Excel导入功能。通过异步多线程处理,可以在短时间内完成对百万级数据的导入操作,显著提升了系统的性能和用户体验。在实际应用中,可以根据具体需求进一步优化和扩展,以满足不同场景下的数据处理需求。希望本文能够帮助到正在寻找Excel导入解决方案的开发者,也希望读者能够在实际项目中成功应用这些技术,提升自身的开发效率和项目的稳定性。😊🙏Java面试技巧Java面试八股文 - 掌握面试必备知识(目录篇)

学IT,找陈寒 1万+
上一篇: 数据结构:队列之循环队列
下一篇: MongoTemplate查询工具类,大家都来试试吧
一步一结
博客等级 码龄7年 50粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值