主题
面试速答(先看这里)
**一句话结论:**项目中有一个数据迁移,原来的数据存储在旧的系统,现在系统做了重构,需要迁移到新的系统中,老系统的数据被加工到Excel中了,需要基于Excel实现文件的导入,同时需要避免内存溢出以及性能太低的问题。
60秒标准回答:
这个问题是 的衍生,内容基本上是来自这篇的,不是为了凑数,是很多人不知道这种其实可以当做项目亮点来用的,所以在这里单独再加一下
项目中有一个数据迁移,原来的数据存储在旧的系统,现在系统做了重构,需要迁移到新的系统中,老系统的数据被加工到Excel中了,需要基于Excel实现文件的导入,同时需要避免内存溢出以及性能太低的问题
在大文件的读取方面,EasyExcel更合适,因为他不会像POI一样耗内存,可以大大的减少内存占用。因为他并不会一次性把整个Excel都加载到内存中,而是逐行读取的
**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点
回答主线:
- **要点1:**这个问题是 的衍生,内容基本上是来自这篇的,不是为了凑数,是很多人不知道这种其实可以当做项目亮点来用的,所以在这里单独再加一下。
- **要点2:**在大文件的读取方面,EasyExcel更合适,因为他不会像POI一样耗内存,可以大大的减少内存占用。
- **要点3:**同时考虑使用多线程来读取,这里就需要用到线程池的技术,直接用ExecutorService就行了。
- **要点4:**因为还涉及到数据的批量写入,需要依赖mybatis或者mybatis-plus。
- **要点5:**直接参考下面这篇就行了,代码都有的:
**记忆锚点:**Excel → laiyanhong-9tr5c → gmf9ggk2fmv1h0o6 → ExecutorService → mybatis-plus → wwwyuquecom
关键取舍:
- 项目中有一个数据迁移,原来的数据存储在旧的系统,现在系统做了重构,需要迁移到新的系统中,老系统的数据被加工到Excel中了,需要基于Excel实现文件的导入,同时需要避免内存溢出以及性能太低的问题。
易错提醒:
- 项目中有一个数据迁移,原来的数据存储在旧的系统,现在系统做了重构,需要迁移到新的系统中,老系统的数据被加工到Excel中了,需要基于Excel实现文件的导入,同时需要避免内存溢出以及性能太低的问题。
追问准备:
- 围绕「Excel」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「laiyanhong-9tr5c」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「gmf9ggk2fmv1h0o6」:底层原理是什么?使用时有哪些边界和常见坑?
- 如果线上出现异常,你会如何定位、验证并规避?
这个问题是https://www.yuque.com/laiyanhong-9tr5c/zwpzru/gmf9ggk2fmv1h0o6 的衍生,内容基本上是来自这篇的,不是为了凑数,是很多人不知道这种其实可以当做项目亮点来用的,所以在这里单独再加一下。
背景
项目中有一个数据迁移,原来的数据存储在旧的系统,现在系统做了重构,需要迁移到新的系统中,老系统的数据被加工到Excel中了,需要基于Excel实现文件的导入,同时需要避免内存溢出以及性能太低的问题。
技术选型
在大文件的读取方面,EasyExcel更合适,因为他不会像POI一样耗内存,可以大大的减少内存占用。因为他并不会一次性把整个Excel都加载到内存中,而是逐行读取的。
同时考虑使用多线程来读取,这里就需要用到线程池的技术,直接用ExecutorService就行了。
因为还涉及到数据的批量写入,需要依赖mybatis或者mybatis-plus。
具体实现
直接参考下面这篇就行了,代码都有的: