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

几十个必备的设计师灵感网站平台推广方式有哪些

几十个必备的设计师灵感网站,平台推广方式有哪些,如何做网站防劫持,中国工程建筑门户网站官网背景 之前的项目一直是用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/185338.html

相关文章:

  • 深圳疫情防控形势英文关键词seo
  • 网站 收录 做301北京百度科技有限公司电话
  • 把网站做成静态页面怎么优化网站关键词的方法
  • 深圳做网站排名价格合肥全网推广
  • 网站首页做几个关键词宁波seo网络推广优质团队
  • 企业网站每年要多少钱天津百度爱采购
  • 网站做动态还是静态顾问
  • 广告设计专业哪个大学最好长沙关键词优化服务
  • wordpress传不上站点超级外链工具
  • 新手如何做网站的教程优化疫情二十条措施
  • wordpress缩略图路径错误外链优化
  • 江西网站开发公司如何自创网站
  • 北京网站营销seo方案绍兴seo排名
  • 网站 空间转移网络营销推广方案模板
  • 汕头老城图片泰州seo推广
  • 外网图片素材网站关键词优化的方法有哪些
  • 地产网站建设方案长沙百度搜索网站排名
  • 本地如何搭建多个网站做测试在线网站建设
  • 网站域名地址百度有几种推广方式
  • 电子商务网站建设评估工具东莞软文推广
  • php做的网站模版2022年最新十条新闻
  • 怎样做下载网站网络推广方案七步法
  • 怎样弄网站的导航栏今日最新消息新闻
  • 合肥网络公司seo东莞企业网站排名优化
  • 建站快车帮助黄冈网站建设收费
  • 新公司做网站怎么做站长工具站长之家
  • 网站开发费用税营销网站的宣传、推广与运作
  • 品牌设计公司成都seo综合查询平台官网
  • 安丘网站建设aqfeifan网络营销方法有什么
  • wordpress 主题 ie8百度seo快速提升排名