草庐IT

基于EasyExcel实现百万级数据导入导出

基于EasyExcel实现百万级数据导入导出在项目开发中往往需要使用到数据的导入和导出,导入就是从Excel中导入到DB中,而导出就是从DB中查询数据然后使用POI写到Excel上。大数据的导入和导出,相信大家在日常的开发、面试中都会遇到。很多问题只要这一次解决了,总给复盘记录,后期遇到同样的问题就好解决了。好啦,废话不多说开始正文!1.传统POI的的版本优缺点比较其实想到数据的导入导出,理所当然的会想到apache的poi技术,以及Excel的版本问题。HSSFWorkbook这个实现类是我们早期使用最多的对象,它可以操作Excel2003以前(包含2003)的所有Excel版本。在2003

基于EasyExcel实现百万级数据导入导出

基于EasyExcel实现百万级数据导入导出在项目开发中往往需要使用到数据的导入和导出,导入就是从Excel中导入到DB中,而导出就是从DB中查询数据然后使用POI写到Excel上。大数据的导入和导出,相信大家在日常的开发、面试中都会遇到。很多问题只要这一次解决了,总给复盘记录,后期遇到同样的问题就好解决了。好啦,废话不多说开始正文!1.传统POI的的版本优缺点比较其实想到数据的导入导出,理所当然的会想到apache的poi技术,以及Excel的版本问题。HSSFWorkbook这个实现类是我们早期使用最多的对象,它可以操作Excel2003以前(包含2003)的所有Excel版本。在2003

mongodb - 如何在第一级数组上使用 $elemMatch?

考虑以下文档:{"_id":"ID_01","code":["001","002","003"],"Others":"544554"}我经历了这个MongoDBdocforelemmatch-query&elemmatch-projection,但无法弄清楚如何将其用于上述文档。谁能告诉我如何使用$elemMatch作为字段代码? 最佳答案 在这种情况下,您需要使用$in运算符而不是$elemMatch,因为$in可用于搜索特定字段内的一个值(或多个值)。$in需要一个值列表作为数组传递。此外,对于您的情况,它会找到单个值,或者通过

数据库扩容也可以如此丝滑,MySQL千亿级数据生产环境扩容实战

数据库平滑扩容目录1:理解传统扩容实现方案2:理解平滑扩容双写方案3:掌握数据库2N扩容方案4:实现数据库双主同步5:掌握ShardingJDBC路由以及动态扩容技术6:掌握KeepAlived+MariaDB数据库高可用方案1.扩容方案剖析1.1扩容问题在项目初期,我们部署了三个数据库A、B、C,此时数据库的规模可以满足我们的业务需求。为了将数据做到平均分配,我们在Service服务层使用uid%3进行取模分片,从而将数据平均分配到三个数据库中。如图所示:后期随着用户量的增加,用户产生的数据信息被源源不断的添加到数据库中,最终达到数据库的最佳存储容量。如果此时继续向数据库中新增数据,会导致数

数据库扩容也可以如此丝滑,MySQL千亿级数据生产环境扩容实战

数据库平滑扩容目录1:理解传统扩容实现方案2:理解平滑扩容双写方案3:掌握数据库2N扩容方案4:实现数据库双主同步5:掌握ShardingJDBC路由以及动态扩容技术6:掌握KeepAlived+MariaDB数据库高可用方案1.扩容方案剖析1.1扩容问题在项目初期,我们部署了三个数据库A、B、C,此时数据库的规模可以满足我们的业务需求。为了将数据做到平均分配,我们在Service服务层使用uid%3进行取模分片,从而将数据平均分配到三个数据库中。如图所示:后期随着用户量的增加,用户产生的数据信息被源源不断的添加到数据库中,最终达到数据库的最佳存储容量。如果此时继续向数据库中新增数据,会导致数

利用Mysql存储过程造百万级数据

1.准备工作(1)由于是使用存储过程,mysql从5.0版开始支持存储过程,那么需要mysql的版本在5.0或者以上。如何查看mysql的版本,使用下面sql语句查看:(2)创建两张表,表结构一致,但使用的存储引擎不一样,如下所示,普通表使用mysql5.5版本后默认的INNODB存储引擎,内存表使用MEMORY存储引擎。由于MEMORY存储不常用这里简单说一下其特点:MEMORY引擎表结构创建在磁盘上,数据全部放在内存中,访问速度较快,但是当MySQL重启后或者一旦系统奔溃的话,数据都会消失,结构还存在。#创建普通表CREATETABLE`user_info`(`id`INT(11)NOTN

利用Mysql存储过程造百万级数据

1.准备工作(1)由于是使用存储过程,mysql从5.0版开始支持存储过程,那么需要mysql的版本在5.0或者以上。如何查看mysql的版本,使用下面sql语句查看:(2)创建两张表,表结构一致,但使用的存储引擎不一样,如下所示,普通表使用mysql5.5版本后默认的INNODB存储引擎,内存表使用MEMORY存储引擎。由于MEMORY存储不常用这里简单说一下其特点:MEMORY引擎表结构创建在磁盘上,数据全部放在内存中,访问速度较快,但是当MySQL重启后或者一旦系统奔溃的话,数据都会消失,结构还存在。#创建普通表CREATETABLE`user_info`(`id`INT(11)NOTN

面试官:如何在千万级数据中查询 10W 的数据,都有什么方案?

作者:变速风声链接:https://juejin.cn/post/7104090532015505416前言在开发中遇到一个业务诉求,需要在千万量级的底池数据中筛选出不超过10W的数据,并根据配置的权重规则进行排序、打散(如同一个类目下的商品数据不能连续出现3次)。下面对该业务诉求的实现,设计思路和方案优化进行介绍,对「千万量级数据中查询10W量级的数据」设计了如下方案多线程+CK翻页方案ESscrollscan深翻页方案ES+Hbase组合方案RediSearch+RedisJSON组合方案初版设计方案整体方案设计为:先根据配置的「筛选规则」,从底池表中筛选出「目标数据」在根据配置的「排序规

面试官:如何在千万级数据中查询 10W 的数据,都有什么方案?

作者:变速风声链接:https://juejin.cn/post/7104090532015505416前言在开发中遇到一个业务诉求,需要在千万量级的底池数据中筛选出不超过10W的数据,并根据配置的权重规则进行排序、打散(如同一个类目下的商品数据不能连续出现3次)。下面对该业务诉求的实现,设计思路和方案优化进行介绍,对「千万量级数据中查询10W量级的数据」设计了如下方案多线程+CK翻页方案ESscrollscan深翻页方案ES+Hbase组合方案RediSearch+RedisJSON组合方案初版设计方案整体方案设计为:先根据配置的「筛选规则」,从底池表中筛选出「目标数据」在根据配置的「排序规

集合幂级数学习笔记

Posttime:2022-02-1714:11:52本篇文章借鉴于武汉二中吕凯风的2015集训队论文《集合幂级数的性质与应用及其快速算法》。一、声明我们令全集为有限集\(U=\{1,2,...,n\}\),其中\(n=|U|\),设所有未标明的\(S\)都是\(U\)的子集。若\(X\)是一个集合,令\(2^{X}\)表示\(X\)的幂集(所有子集构成的集合)。二、定义设\(F\)是一个域,则称函数\(f:2^{U}\toF\)是\(F\)上的一个集合幂级数。对于每个\(S\in2^U\),记\(f_S\)为\(S\)处的函数值,称\(f_S\)为集合幂级数\(S\)项的系数。集合幂级数之间