自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 easypoi 大批量导出(二)

3.获取到ExcelBatchExportService对象后,调用appendData 方法,而在这里可以看到,开头就是对sheet 的长度判断,如果大于sheet的最大长度,则重新创建一个新的sheet 来导出对应的数据。4.至此我们就弄清楚了为什么我们只需要循环调用这个方法就能自动的将所有的数据导入到一个表格里面输出了。,这样就能使得每次调用的上下文都保持一致,而这时导出的workbook 对象就可以重复设置。说调用easypoi自带的导出大数据量的方法,分批导出后合并成一个sheet 导出。

2024-08-26 13:52:56 212

原创 easypoi 导出大数据量数据内存溢出问题

导出的数据越来越多,如果一次性load到内存中,根据垃圾回收机制,大对象可能直接进入老年代存储,所以很有可能会引发频繁的fullgc 问题。3. 将生成的excel 文件上传到阿里云的oss 服务中,再将oss 返回的下载地址插入到任务记录表中,提供用户下载。1.考虑批量的方式,分批导出数据库中的信息,通过重复指向不同的堆对象,及时释放内存,保证只占用一次循环的最大内存。2.调用easypoi自带的导出大数据量的方法,分批导出后合并成一个sheet 导出。2.导出的主体实现开启另外一个线程,采用异步导出。

2024-08-26 10:58:19 403

原创 LocalDate 和字符串相互转换的坑

String 转换LocalDate 的坑

2024-08-22 14:59:42 269

原创 easypoi 利用现有的枚举类转换枚举名称

easypoi 枚举转换

2024-08-20 14:20:46 245

原创 easypoi 导出 一对一实体乱序问题

跟进sortAllParams方法中可以看到源码中使用HashMap存放分组和分组中具体的数据。由于HashMap的存放顺序和key 的hash值有关。所以在HashMap 遍历链表的时候,和push的顺序无关,导致乱序。了解到问题的本质后,我们就可以采用确定顺序hash 的数字代替文本。保证按照我们想要的顺序输出,最后得到表格结果后就可以根据预设的映射替换成我们需要的真实文字导出。使用1,2,3,4代替分组名称。再拿到Workbook后遍历所在行,遍历替换想要输出的表格名称。

2024-08-19 14:32:36 164

原创 Enum 枚举类只需增加注解就能获取对应的枚举类型,实现前端获取枚举接口

利用反射和自动扫描注册,优雅实现Enum 枚举类增加注解就能获取对应的枚举类型,去除冗余代码

2023-09-12 18:02:27 737 3

原创 关于返回String类型得数据多了双引号的坑

为什么改了配置类的实现方式和为什么选用了json 转化器再到为什么字符串转换成json 格式会多带出一对双引号的问题

2023-04-21 17:16:04 4069

原创 记一次关于ArrayList 非线程安全导致的生产问题

ArrayList 非线程安全解决方案,以及触发场景

2021-12-17 17:25:34 458

原创 查看maven 依赖树,解决java.lang.NoSuchMethodError 版本冲突

1,java.lang.NoSuchMethodError:没有找到对应的方法。这个问题一种原因可能是没有引入对应的依赖包,另一种原因可能是因为jar包冲突而产生的。加载了同一个包的不同版本,而使用到的方法刚好在该版本中没有。那么我们怎么解决这种jar包冲突导致找不到对应的方法的问题呢?1,我们可以通过maven 命令(mvn dependency:tree)查看依赖树,拿到报错的那个包在整个pom 下的版本依赖信息。在执行mvn 命令的时候报了一个 版本未知的错误。因为maven的依赖和环境变量有

2021-06-07 18:02:41 338

原创 Spring Aop代理不生效

项目场景:要做一个切面记录请求参数和返回参数的日志问题描述: 在contrller层和service层做切面,没有什么问题。对工具类进行切面处理时,没有办法代理。原因分析:代理模式不生效的场景:1,对静态方法不代理2,对私有方法不代理3,被代理的类如果不是由spring管理的话代理不生效,因为Spring AOP 的底层是依赖于IOC管理对应的bean4,若是被代理的类,被增强的方法中内部调用了被增强的方法。第二个方法的代理也会失效5,解决方案:...

2020-12-25 11:45:35 2662

原创 使用责任链模式实现状态改变

状态改变之责任链模式场景描述:最近有个关于新增流程审批的项目,要按一定的流程顺序实现状态修改。按照最原始的实现方式就是拿到当前状态然后判断需要执行的步骤继续执行。这个弊端就是会存在有许多的判断和重复代码;V.1.0的实现 :为了快速实现该功能,就采用了分段实现各个流程功能,然后根据状态判断需要执行的流程,组合实现弊端:代码又臭又长,重复性高,不容易扩展V.2.0的实现 :功能实现后,还有时间便开始考虑重构代码。正常来说面向对象编程,要实现易扩展,就可以套用相应的设计模式。而我要实现的功能其

2020-11-07 16:23:33 252

原创 SpringBoot整合Mybatis框架的底层源码

首先简单介绍下FactoryBean的作用:当实现FactoryBean接口的类注册到Spring容器中时,通过getBean()获取对象时,底层实现实际上是调用FactoryBean接口的getObject()获取内部的对象; 在SpringBoot中有一个默认的配置类MybatisAutoConfiguration,默认扫描根目录下的所有的类,默认使用了@Mapper注解作添加到IncludeFilter中,找到对应的Dao,然后通过 BeanDefinitionRe...

2020-07-19 22:36:48 240

原创 Spring如何将Aop代理交由IOC管理思考

今天来一起揭秘下spring的AOP的代理对象是如何交由IOC容器管理的; 首先先梳理IOC容器创建bean的整个过程: 1,通过读取xml,或者注解来注册我们程序所需要的交由spring管理的bean信息;比如在某个类上面加上@Component注解 2,解析相关的元素信息加载到BeanDefinition中,在BeanFactory容器以Key为beanName,Value为bean对应的BeanDefinition的Map存放我们所定义的相...

2020-07-16 16:49:58 426

原创 基于Spring注入静态属性

在我们日常编码中,经常会有一种情况,就是在工具类里常用static修饰其中的方法。而我们都知道我们的静态方法内部只能引用静态变量。当然不只是静态方法,只要是我们想要通过spring来帮助注入静态变量,按我们正常的方式都会存在无法注入得到为空值的问题。 现象: static修饰的属性,用自动注入的方式,得到的是一个空值,null.也就是没有被spring注入。 解决方案一:采用set的方式注入对应的属性,对静态属性重新赋值;注意要加上@Auto...

2020-07-03 15:59:56 1678

原创 基于模板模式+策略模式的告警规则设计

由于监控类型增多。一个统一的流程下,要兼容各种不一样的规则,会引入许多if-else的判断语句。代码可扩展性太差。进行代码重构的过程是痛苦的。牵一发而动全身。深感觉设计之重要性,当初为了完成需求而写的代码,现在整改起来真是头疼。首先分析下。整个规则下有个统一的流程;1,先获取数据源;2,再获取对应的监控规则;3,然后根据规则产生不同级别的告警4,同是该级别告警重复次数达到一定值时记录该告警同时发送邮件给相关人员。告警实现v1.0。 就是按照函数编程的习惯...

2020-06-12 00:50:30 1560 1

原创 Redis 分布式锁-设置过期失效问题

项目背景: 由于监控系统要每隔1分钟检测各个被监控的机器心跳,所以用了spring的定时器。由于是集群部署,所以需要解决重复执行定时器的问题。所以采用了分布式锁的方式,让定时器只被一个节点执行。Redis分布式锁的实现 采用Setnx命令和expire命令,实现分布式锁。但是近期发现定时器都没有被执行,查看redis锁的key值发现,这个key对应的value(项目...

2020-04-27 23:49:25 2661

原创 全球化部署(一)数据同步,id自增问题

最近,因项目需要全球化部署。因为各个站点都有自己独立的一套数据库作为写入数据,因为性能要求要能做到就近接入,但查看需要做到能查看所有数据,所以需要同步数据。 历史原因没有考虑到全球化部署的问题,所以id都是直接自增的int类型。但因为需要在不同的数据库中的表数据同步到同一张表中,会存在id冲突的问题。 解决方案:整改id。 第一个想法就...

2020-04-02 19:59:33 949 1

原创 基于MQ实现实时监控系统(一)

基于MQ实现实时监控系统(一)最近项目开发一个实时监控的系统。该项目的实现主要是基于mq,实时消费对应的最新数据,对一些指标进行监控。对应的监控规则下,如果产生对应告警,就会发送通知给用户,同时实现一些基本信息的管理以及统计等功能。关于使用的消息中间件本系统采用的是基于rockemq封装的消息中间件。具体的相关知识不展开介绍。项目中遇到一个问题是消息堆积量过大的时候,消费速度会变缓慢。解决...

2019-09-18 21:03:56 1628

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除