数据量过大的时候导出数据很慢
原因解析
速度慢无非两个原因:
- sql取数很慢
- 程序很慢
sql很慢有3种原因:
- sql本身查询不合理,需要优化
- 数据库没有索引
- 多次频繁访问数据,造成了不必要的开销
取消多次获取数据,一次获取
- 框定一个大致的范围,获取此次查询的所有数据
- 使用map设置数据,没有主键使用傅和主键拼接数据
// 使用deliId作为key,将所有未分摊折扣存储在一个Map中
Map<Long, List<SemisteelDiscountPerrow>> discountMap = allDisocuntList.stream().collect(Collectors.groupingBy(SemisteelDiscountPerrow::getDeliId));// 将数据回填到excel中
map.forEach((key,value) -> {valMap[0] = new HashMap(12);valMap[0].put("company", value.getCompany());valMap[0].put("zyear", value.getZyear());valMap[0].put("zmonth", value.getZmonth());valMap[0].put("customer", value.getCustomer());valMap[0].put("saleOrder", value.getSaleOrder());valMap[0].put("deliveryOrder", value.getDeliveryOrder());valMap[0].put("wlCode", value.getWlCode());dataListChild[0] = new ArrayList<>();Map<String, Object> discMap = new HashMap<String, Object>();SemisteelDiscountPerrow entity = new SemisteelDiscountPerrow();entity.setDeliId(value.getDeliId());// List<SemisteelDiscountPerrow> discountList = queryNoZero(entity);// 避免使用数据库多次查询,直接使用上面的allDisocuntList查询的数据List<SemisteelDiscountPerrow> discountList = discountMap.get(value.getDeliId());for (SemisteelDiscountPerrow discount2 : discountList) {discMap.put(discount2.getDiscountType(),discount2.getRowDiscount());}dataListChild[0].add(discMap);valMap[0].put("discount", dataListChild[0]);list.add(valMap[0]);
});
相关文章:
数据量过大的时候导出数据很慢
原因解析 速度慢无非两个原因: sql取数很慢程序很慢 sql很慢有3种原因: sql本身查询不合理,需要优化数据库没有索引多次频繁访问数据,造成了不必要的开销 取消多次获取数据,一次获取 框定一个大致的范围,获取此次查询的所有数据使用map设置数据,没有主键使用傅和主键拼接数据 /…...
NVIDIA k8s-device-plugin源码分析与安装部署
在《kubernetes Device Plugin原理与源码分析》一文中,我们从源码层面了解了kubelet侧关于device plugin逻辑的实现逻辑,本文以nvidia管理GPU的开源github项目k8s-device-plugin为例,来看看设备插件侧的实现示例。 一、Kubernetes Device Pl…...
langChainv0.3学习笔记(初级篇)
LangChain自0.1版本发布以来,已经历了显著的进化,特别是向AI时代的适应性提升。在0.1版本中,LangChain主要聚焦于提供基本的链式操作和工具集成,帮助开发者构建简单的语言模型应用。该版本适用于处理简单任务,但在应对…...
聚焦两会:科技与发展并进,赛逸展2025成创新新舞台
在十四届全国人大三次会议和全国政协十四届三次会议期间,代表委员们围绕多个关键议题展开深入讨论,为国家未来发展谋篇布局。其中,技术竞争加剧与经济转型需求成为两会焦点,将在首都北京举办的2025第七届亚洲消费电子技术贸易展&a…...
Xilinx ZYNQ FSBL解读:LoadBootImage()
篇首 最近突发奇想,Xilinx 的集成开发环境已经很好了,很多必要的代码都直接生成了,这给开发者带来了巨大便利的同时,也让人错过了很多代码的精彩,可能有很多人用了很多年了,都还无法清楚的理解其中过程。博…...
flutter的HTTP headers用法介绍
flutter的HTTP headers用法介绍 在 Flutter 中,HTTP headers 是用于在发送 HTTP 请求时传递额外信息的关键部分。它们可以用于身份验证、缓存控制、内容类型声明等。以下是关于 Flutter 中 HTTP headers 的详细说明和用法。 1. 什么是 HTTP Headers? H…...
Flutter开发避坑指南:高频问题排查与性能调优实战
目录 一、使用中常见问题 1.环境与配置问题 2.Widget 重建与状态管理 3.布局与绘制问题 4.动画与卡顿(Jank)问题 5.平台相关问题 二、Flutter实战14问 1.如何使用 Flutter 进行多语言支持? 1. 添加依赖 2. 配置 Material App 3. 创…...
Uniapp实现地图获取定位功能
摘要:本文将手把手教你如何在Uniapp项目中集成地图功能、实现定位获取,并解决微信小程序、APP、H5三端的兼容性问题🚀🚀🚀 一、环境准备 地图平台选择 微信小程序:腾讯地图(强制使用)…...
Ubuntu 24.04 安装与配置 JetBrains Toolbox 指南
📌 1. JetBrains Toolbox 介绍 JetBrains Toolbox 是 JetBrains 开发的工具管理器,可用于安装、更新和管理 IntelliJ IDEA、PyCharm、WebStorm、CLion 等。本指南记录了 JetBrains Toolbox 在 Ubuntu 24.04 上的 安装、路径调整、权限管理 及 遇到的问题…...
【AI】神经网络|机器学习——图解Transformer(完整版)
Transformer是一种基于注意力机制的序列模型,最初由Google的研究团队提出并应用于机器翻译任务。与传统的循环神经网络(RNN)和卷积神经网络(CNN)不同,Transformer仅使用自注意力机制(self-attention)来处理输入序列和输出序列,因此可以并行计算,极大地提高了计算效率…...
【VUE2】第二期——生命周期及工程化
目录 1 生命周期 1.1 介绍 1.2 钩子 2 可视化图表库 3 脚手架Vue CLI 3.1 使用步骤 3.2 项目目录介绍 3.3 main.js入口文件代码介绍 4 组件化开发 4.1 组件 4.2 普通组件注册 4.2.1 局部注册 4.2.2 全局注册 1 生命周期 1.1 介绍 Vue生命周期:就是…...
贪心算法三
> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解什么是贪心算法,并且掌握贪心算法。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! >…...
猫耳大型活动提效——组件低代码化
1. 引言 猫耳前端在开发活动的过程中,经历过传统的 pro code 阶段,即活动页面完全由前端开发编码实现,直到 2020 年接入公司内部的低代码活动平台,满足了大部分日常活动的需求,运营可自主配置活动并上线,释…...
机器学习 Day02,matplotlib库绘图
1.matplotlib图像结构 容器层:画板,画布,坐标系辅助层:刻度,标题,网格,图例等图像层:折线图(主讲),饼图,直方图,柱状图等…...
MySQL中有哪几种锁?
大家好,我是锋哥。今天分享关于【MySQL中有哪几种锁?】面试题。希望对大家有帮助; MySQL中有哪几种锁? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 MySQL 中,锁是用于确保数据的一致性和并发控制的机…...
Unity单例模式更新金币数据
单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取该实例。在游戏开发中,单例模式非常适合用于管理全局唯一的数据,比如玩家的金币数量。通过使用单例…...
【javaEE】多线程(进阶)
1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…...
python从入门到精通(二十四):python爬虫实现登录功能
这里写目录标题 requests实现登录功能selenium实现登录功能 requests实现登录功能 使用 requests 库结合会话(Session)来尝试登录。不过豆瓣有反爬虫机制,这种方式可能会受到验证码等因素的限制 import requests import re# 豆瓣登录页面 l…...
Flask Jinja语法总结篇
目录 1️⃣ 变量(Variables) 2️⃣ 条件语句(if 语句) 3️⃣ 循环(for 语句) 4️⃣ 过滤器(Filters) 5️⃣ 宏(Macros,类似于函数) 6️⃣ 模板继承(Template Inheritance) 7️⃣ 包含模板(Include) 8️⃣ Flask 结合 Jinja 总结 Jinja 是 Flask 默认使…...
Vue3实战学习(Element-Plus常用组件的使用(输入框、下拉框、单选框多选框、el-image图片))(上)(5)
目录 一、Vue3工程环境配置、项目基础脚手架搭建、Vue3基础语法、Vue3集成Element-Plus的详细教程。(博客链接如下) 二、Element-Plus常用组件使用。 (1)el-input。(input输入框) <1>正常状态的el-input。 <2>el-input的disable状态。 <3…...
C++ 链表List使用与实现:拷贝交换与高效迭代器细致讲解
目录 list的使用: 构造与赋值 元素访问 修改操作 容量查询 链表特有操作 拼接(Splice) C11 新增方法 注意: stl_list的模拟实现: 一、链表节点设计的艺术 1.1 结构体 vs 类的选择 二、迭代器实现的精髓 2…...
安当TDE透明加密技术:为Manus大模型构建用户会话数据保护的“安全金库”
摘要 在人工智能技术深度落地的今天,大模型开发者面临的核心挑战已从算法优化转向数据安全。作为垂直领域大模型的代表,Manus凭借其强大的语义理解与个性化交互能力,在金融、医疗、教育等行业获得广泛应用。然而,其海量的用户会话…...
知乎后台管理系统:数据库系统原理实验1——数据库基础概念
实验背景 通过练习绘制语义网络,加深对于基本概念之间关系的理解和掌握。掌握在VISIO中绘制能准确表达基本概念之间关系的语义网络的技能。了解并比较数据模型的Chen’s表示法和UML表示法。理解关系模型设计中的完整性约束的重要性。掌握在Linux操作系统下远程访问…...
docker compose 以redis为例
常见docker compose 命令 》》注意这个是旧版本的,新版本 docker 与compose 之间没有 - 新版本的 docker compose 把 version 取消了 ,redis 默认是没有配置文件的 ,nginx,mysql 默认是有的 services:redis:image: redis:lat…...
ES C++客户端安装及使用
1. ES 介绍 Elasticsearch , 简称 ES ,它是个开源分布式搜索引擎,它的特点有:分布式,零配 置,自动发现,索引自动分片,索引副本机制, restful 风格接口,多…...
【软件工程】一篇入门UML建模图(状态图、活动图、构件图、部署图)
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀软件开发必练内功_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…...
应急响应--流量分析
(一)Cobalt Strike流量特征分析 1.HTTP特征 源码特征: 在流量中,通过http协议的url路径,在checksum8解密算法计算后,32位的后门得到的结果是92,64位的后门得到的结果是93,该特征符…...
name ‘bare_metal_version‘ is not mamba_ssm安装
目录 解决方法: 测试ok: mamba_ssm安装报错,windows 安装时, pip install mamba_ssm name bare_metal_version is not defined mamba代码地址: https://github.com/state-spaces/mamba/tree/main 解决方法&…...
自然语言处理:高斯混合模型
介绍 大家好,博主又来给大家分享知识了,今天给大家分享的内容是自然语言处理中的高斯混合模型。 在自然语言处理这个充满挑战与机遇的领域,我们常常面临海量且复杂的文本数据。如何从这些数据中挖掘出有价值的信息,对文本进行有…...
【C++指南】一文总结C++类和对象【中】
🌟 各位看官好,我是egoist2023! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习C类和对象的语法知识。注意:在本章节中,小编会以Date类举例 👍 如果觉得…...
