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

高德地图有外资背景吗seo优化推广软件

高德地图有外资背景吗,seo优化推广软件,电商支付网站建设费进什么科目,阿里巴巴运营教程背景 之前的项目一直是用XSSFWorkbook来做 Excel 导出,在遇到大数据导出时,经常会遇到 OOM。在 Apache Poi 3.8 之后的版本提供的 SXSSFWorkbook 可以优雅的解决这个问题。 原理 SXSSFWorkbook 被称为流式 API,主要是因为它采用了流式写入…

背景

之前的项目一直是用XSSFWorkbook来做 Excel 导出,在遇到大数据导出时,经常会遇到 OOM。在 Apache Poi 3.8 之后的版本提供的 SXSSFWorkbook 可以优雅的解决这个问题。

原理

SXSSFWorkbook 被称为流式 API,主要是因为它采用了流式写入(streaming write)机制,能够有效地处理大数据量的 Excel 文件,而不会导致内存溢出(OOM)。以下是它的工作原理和特点:

  1. 流式写入机制
    SXSSFWorkbook 是 Apache POI 提供的一种用于处理大数据量的 Excel 文件格式(XLSX)的 API。它的核心思想是:

只保留部分数据在内存中:SXSSFWorkbook 不会将所有数据一次性加载到内存中,而是通过滑动窗口的方式,只保留当前处理的行数据在内存中。

将数据写入临时文件:当内存中的数据达到一定量时,SXSSFWorkbook 会将数据写入磁盘上的临时文件,从而释放内存。

按需加载:在写入完成后,SXSSFWorkbook 会将临时文件中的数据合并到最终的 Excel 文件中。

这种机制类似于流式处理(streaming),数据像水流一样逐步处理,而不是一次性加载到内存中。

  1. 与 XSSFWorkbook 的区别
    XSSFWorkbook:

适用于小数据量。

将所有数据加载到内存中,生成一个完整的 Excel 文件。

当数据量很大时,容易导致内存溢出(OOM)。

SXSSFWorkbook:

适用于大数据量。

只保留部分数据在内存中,其余数据写入临时文件。

通过流式写入机制,避免内存溢出。

  1. 滑动窗口机制
    SXSSFWorkbook 使用滑动窗口(sliding window)来控制内存中的数据量:

你可以通过构造函数设置窗口大小(即内存中保留的行数)。

SXSSFWorkbook workbook = new SXSSFWorkbook(100); // 内存中最多保留 100 行

当写入的行数超过窗口大小时,最早的行会被写入临时文件,并从内存中移除。

这种方式确保了内存占用始终在一个可控的范围内。
4. 临时文件管理
SXSSFWorkbook 在写入过程中会生成临时文件(通常存储在磁盘上)。

写入完成后,可以通过 workbook.dispose() 清理这些临时文件。

临时文件的存在是流式写入的关键,它允许将数据分批写入磁盘,而不是一次性加载到内存中。

  1. 流式写入的优势
    低内存占用:由于数据是逐步写入磁盘的,内存占用非常低,适合处理大数据量。

支持大数据量:可以轻松处理几十万甚至上百万行的数据。

灵活性:通过调整窗口大小,可以平衡内存占用和性能。

代码示例

import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming.SXSSFRow;
import java.io.FileOutputStream;
import java.io.IOException;public class SXSSFExample {public static void main(String[] args) throws IOException {// 创建 SXSSFWorkbook,设置窗口大小为 100 行SXSSFWorkbook workbook = new SXSSFWorkbook(100);SXSSFSheet sheet = workbook.createSheet("Data");// 写入 1000 行数据for (int i = 0; i < 1000; i++) {SXSSFRow row = sheet.createRow(i);row.createCell(0).setCellValue("Row " + i);row.createCell(1).setCellValue("Data " + i);}// 写入到文件try (FileOutputStream out = new FileOutputStream("large_data.xlsx")) {workbook.write(out);}// 清理临时文件workbook.dispose();}
}

其他补充

SXSSFWorkbook 是 Apache POI 提供的用于处理大数据量的 Excel 文件(XLSX 格式)的工具。它的行数上限主要受以下两个因素的限制:

  1. Excel 文件格式的限制
    SXSSFWorkbook 生成的 Excel 文件是基于 Office Open XML (OOXML) 格式的,也就是 .xlsx 文件。这种格式的行数上限是:

最大行数:1,048,576 行(即 2^20 行)。

最大列数:16,384 列(即 2^14 列,列标签为 XFD)。

这是 Excel 本身的限制,与 SXSSFWorkbook 无关。如果你尝试写入超过 1,048,576 行,Excel 会直接报错。

  1. 内存和磁盘的限制
    SXSSFWorkbook 通过流式写入机制将数据写入临时文件,因此它的行数上限还受到以下因素的限制:

磁盘空间:SXSSFWorkbook 会将超出内存窗口大小的数据写入临时文件。如果数据量非常大,临时文件可能会占用大量磁盘空间。

JVM 内存:虽然 SXSSFWorkbook 通过流式写入减少了内存占用,但如果单行数据非常大(例如包含大量列或复杂格式),仍然可能导致内存不足。

操作系统限制:操作系统对单个文件的大小和打开文件数也有限制。

  1. 实际使用中的建议
    行数接近上限时:如果需要写入接近 1,048,576 行的数据,建议将数据拆分到多个工作表中。

优化内存使用:

设置合理的窗口大小(例如 new SXSSFWorkbook(100)),以平衡内存和性能。

避免在单行中存储过多数据或使用复杂格式。

监控磁盘空间:确保磁盘有足够的空间存储临时文件。

http://www.dtcms.com/wzjs/82190.html

相关文章:

  • 百度站长平台网站改版工具北京推广优化经理
  • 求个网站谢谢啦电商代运营公司十强
  • wordpress拼音惠州自动seo
  • 网站做百度推广多少钱最新国内新闻重大事件
  • shopex 网站搬家蜘蛛seo超级外链工具
  • 成都网站建设排行榜完整的社群营销方案
  • 网站建设首选沈阳高端网站建设厦门网页搜索排名提升
  • 网站选项按钮拼多多seo搜索优化
  • 如何做网站咨询苹果cms永久免费建站程序
  • 做外贸实用网站百度推广入口登录
  • 自己做网站的各种代码网络优化器下载
  • asp动态网站设计百度导航最新版本
  • 企业注册视频号seo难不难学
  • 石家庄云图网站建设海外seo推广公司
  • 网站建设优秀网站建优化网站排名茂名厂商
  • 初中学生做那个的网站合肥seo优化外包公司
  • 专业网站优化报价西安百度推广公司
  • 网页设计师岗位个人简历模板佛山企业用seo策略
  • qq刷赞网站怎么做的最新app推广
  • 网站建设公司如何规避风险搜狐财经峰会
  • 网站怎做湖州网站seo
  • 泌阳县网站建设互联网营销策划方案
  • 广州做网站发多少钱百度精准推广
  • 城市宣传网站建设方案互联网推广广告
  • 网站域名在哪买什么是电商
  • 网站建设需要的软件是什么seo顾问是干什么
  • 假发外贸网站模板谷歌chrome官网
  • 物流货运网站seo优化网
  • 网络编程怎么学济南seo优化外包服务公司
  • 在线做初中题网站百度官网入口