java
不恋水的雨
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
easyexcel快速填充大数据量不覆盖后面的行解决方式
摘要:该代码实现了一个基于模板的Excel导出工具类FileCheckResultExportWriter,支持批注添加、背景色设置等功能。主要特点包括:1) 使用EasyExcel实现高性能导出;2) 通过模板文件定义数据填充区域;3) 支持批注内容添加和不同级别的背景色设置;4) 处理大量数据时保留模板样式和备注行;5) 提供SheetEndRowData类缓存和恢复备注行样式。使用示例展示了如何配置列名、添加批注和颜色标记,并导出包含5万行数据的Excel文件。该工具适用于需要保持模板格式同时处理大数原创 2026-06-11 14:04:20 · 345 阅读 · 0 评论 -
手动调用spring的@Validated校验
本文介绍了一个基于JSR-303 Bean Validation规范的实体校验工具类ValidatorUtils。该工具类提供多种校验方式,包括校验单个对象、List集合和数组对象,支持分组校验。主要功能包括:1)通过validateEntityResult方法返回校验失败的错误信息;2)通过validateEntity方法返回校验失败的List信息;3)通过validateEntityProperty方法返回包含属性名和错误信息的Map。工具类使用静态初始化创建Validator实例,支持通过@Valid原创 2026-04-16 15:56:02 · 79 阅读 · 0 评论 -
宝兰德springboot内嵌版license过期处理方法
本文介绍了宝兰德SpringBoot内嵌版jar包中license过期问题的解决方案。主要提供了两种方法:一是直接覆盖jar包中的license文件,二是修改为外部读取license文件。重点阐述了第二种方法的实现步骤,包括修改application.yml配置license路径、处理license文件命名规则(bes.lic.txt和bes.lic的关系),以及替换过期license时的注意事项(需先删除lic文件再替换txt文件)。特别强调了不要随意修改license文件名,否则会导致读取失败。原创 2026-04-01 11:43:00 · 487 阅读 · 0 评论 -
System.currentTimeMillis频繁打印耗时的封装类
本文介绍了一个Java计时工具类TimeCounter,用于记录代码执行耗时。该类通过System.currentTimeMillis()获取时间戳,提供print()方法记录阶段耗时、reset()重置计时点、total()输出总耗时。支持自定义名称和调试模式,通过Lombok的@Slf4j注解实现日志输出。使用示例展示了如何初始化计时器、记录操作耗时、重置计时点以及获取总耗时。该工具类简单实用,适用于需要性能监控的代码场景。原创 2025-08-01 11:39:53 · 174 阅读 · 0 评论 -
实现文件假删除,类似事务的提交和回滚控制
摘要:FalseFileDelete类实现了一个可恢复的"假删除"功能,通过将文件移动到临时目录而非直接删除。该类提供delete()方法执行"删除"操作,rollback()方法可恢复被删除文件,submit()方法确认删除。使用方式为:创建实例后调用delete(),执行成功则调用submit(),异常时调用rollback()回滚。该方案适用于需要事务性文件操作的场景。原创 2025-08-01 11:31:16 · 200 阅读 · 0 评论 -
通用自然日计算工具
摘要: DateParse 是一个 Java 日期处理工具类,提供丰富的日期转换和计算功能。支持多种日期格式(如 yyyyMMdd 和 yyyy-MM-dd),可解析整型、字符串或 Date 对象,并实现以下操作: 基础功能:日期格式化、字符串/整型互转、去除特殊字符; 日期计算:获取前后N天、周、月、季度、年的首尾日期; 差值计算:计算日期间的天数、周数、月数、季度数、年数差值; 日期属性:获取日期所在年、月、季度、周数及半年标识; 扩展功能:如按偏移量获取指定月/周/季/年的第N天,生成全年日期列表等。原创 2025-07-30 17:02:31 · 153 阅读 · 0 评论 -
java枚举类封装一个基础枚举类
摘要:该代码定义了一个泛型接口IEnum<T>,用于处理枚举类型的通用操作。接口提供了获取枚举值(getValue)和名称(getName)的方法,以及判断枚举值是否相等(is/not)的默认方法。还包含静态工具方法:通过值获取枚举名称(getName)、获取所有枚举值的列表(keyList)、根据值获取枚举对象(get)和判断值是否存在(has)。这些方法简化了枚举类型的常用操作,提高了代码复用性。原创 2025-07-30 16:55:30 · 176 阅读 · 0 评论 -
java基于交易日表计算自然日、工作日、交易日
摘要:本文介绍了一个交易日计算系统的设计与实现。系统通过交易日表(BUS_DATE)结构存储日期信息,区分自然日、工作日和交易日三种日期类型。核心功能包括:1) 计算指定日期前/后N个交易日/工作日;2) 按周/月/季/年维度计算特定工作日;3) 日期转换和格式化处理。系统采用Java开发,包含枚举类、实体类、Mapper层、Service层和工具类(DimTimeUtil、DateParse)等模块,提供灵活的日期计算方法,适用于金融交易场景的日期计算需求。原创 2025-07-30 16:47:17 · 631 阅读 · 0 评论 -
springboot整合mybatis-plus和pagehelper插件报错,
在springboot和myabtisplus版本没有冲突的情况下,MybatisPlusAutoConfiguration配置类没有生效,查看该类发现存在生效条件,必须存在数据源的Bean对象。原创 2024-08-06 14:47:03 · 613 阅读 · 0 评论 -
java实现多数据源跨表关联计算内存溢出解决思路
有多个数据源,以下简称数据源A、B、C,来自相同或不同的数据库,现在需要把数据取出,在java中进行计算,常规操作是分别把每个数据源的数据全部查询出来,然后按照关联条件进行关联计算。查询时会出现一个很明显的问题,若这三个sql任意一个数据量很大,很有可能出现内存溢出的问题,因此不能直接查询全部数据,而是需要进行分批查询然后计算。使用第一个数据源(即A)作为计算的主表,根据关联条件去其他数据源过滤得到用于计算的数据。1.首先构造数据源A的查询sql,假设构造后的sql为。数据源B和C的查询sql分别为。原创 2024-07-08 09:42:11 · 636 阅读 · 0 评论 -
aspose.words提取所有word书签内容另存为新文件
aspose.words提取所有word书签内容另存为新文件。原创 2024-06-20 18:28:00 · 492 阅读 · 0 评论 -
mybatisplus填充公共字段MetaObjectHandler后不生效解决方式
所以没有触发实现类的填充代码,最好是直接对整个实体进行新增或更新,就能够进入实现类。注意只有指定了fill参数,这个属性插入或修改时才会触发。上述实现类,程序根本就没有进去。所以没有触发实现类的填充代码,最好是直接对整个实体进行新增或更新,就能够进入实现类。注意只有指定了fill参数,这个属性插入或修改时才会触发原创 2024-05-27 17:17:38 · 1560 阅读 · 0 评论 -
aspose通过开始和结束位置关键词截取word另存为新文件
【代码】aspose通过开始和结束位置关键词截取word另存为新文件。原创 2024-01-02 11:55:21 · 989 阅读 · 0 评论 -
java读取邮件标题时,突然报错Failed to load IMAP envelope
生产环境之前可以正常使用imap协议收取邮件,突然有一天报错Failed to load IMAP envelope,可以确定邮件服务器、账号密码、配置都是正确的,使用foxmail可以正常连接并成功收取邮件,因此可以推测java代码可能有兼容性问题,连接服务器的代码如下,开启mail.debug后,打印日志可以看到已经成功使用imap连接到服务器。这里不知为何没有获取到envelope这个对象,网上找到说法说是邮箱服务器设置了限制,只收取最近30天的邮件,但是我遇到的并不是这个问题。原创 2023-07-17 16:46:47 · 1355 阅读 · 0 评论 -
Aspose.word判断两个书签区域范围是否重叠
Aspose.word判断两个书签区域范围是否重叠。在word文档中,居然可以对选中的一个区域添加多个不同名称的书签,即:多个书签可以指向同一个范围,我现在有一个书签,我需要判断得到出和这个书签范围重复和有交集的所有书签,通过以下方法可以实现:原创 2023-01-14 21:33:03 · 398 阅读 · 0 评论 -
java使用Aspose.word保存word更新目录页码报错、页码不对以及样式错乱解决
摘要:本文分析了Aspose.Words在更新文档域(Document.updateFields())时出现的目录页码错误问题。主要问题包括:目录格式错乱、页码偏差、页码重复等,这些问题从10.x版本延续到24.2版本仍未完全修复。文章提出了解决方案:1) 在更新前先修正初始页码;2) 为目录标题添加_Toc标签;3) 处理表格跨页断行问题;4) 移除可能导致WPS和Office页码不一致的分页符。作者提供了完整的Java代码实现,包括页码修正、标签修复、分页符处理等功能模块,并建议升级到24.2版本以获得原创 2023-01-13 22:30:07 · 8234 阅读 · 21 评论 -
jfreechart后台生成图片采样完美解决方案以及样式美化
用jfreechart生成图片有很多问题,例如:x轴数据量多一点时,直接显示成了省略号,另外jfreechart默认的样式也是比较丑的,如下: jfreechart在画x轴标签时,会根据图片设置的宽度,和x轴坐标数计算出每个坐标占用的最大宽度,超过这个宽度,再去判断是否设置了参数:默认为0,不设置这个参数的话就不会进行换行,就会直接显示省略号。因此解决思路之一就是设置这个换行参数,或者适当增加图片宽度,可以在一定范围内解决x轴省略号的问题。但是当x轴数量太多,需要进行采样.................原创 2022-06-30 16:37:24 · 4424 阅读 · 2 评论 -
java实现list均匀采样算法
java实现list均匀采样算法,从一个List对象中均匀抽选出固定数量的样本。原创 2022-06-27 10:38:51 · 1516 阅读 · 2 评论 -
浅谈Thumbnails压缩gif图片质量的实现方式
Thumbnails压缩gif图片质量的实现方式,我们可以读取到gif的每一帧,然后对每一帧都进行压缩,最后再将压缩后的帧按顺序拼接起来,组成新的gif,原则上新的gif占用的空间会减少。然而存在一个问题,我们使用上面的代码去压缩时,由于每一帧图片大小不一致,压缩的比例也不一样,无法事先确定图片宽高,导致压缩出来的每帧的宽高都不一致,这样就导致gif没法看了。 因此我们不能将图片帧按大小压缩,而是应该直接进行缩放比例,这样也能压缩质量,保证每张图片宽高一致。...原创 2022-06-10 17:14:01 · 2786 阅读 · 0 评论 -
Groovy大量计算导致oom的解决办法
最近在项目中遇到一个内存持续增长的问题,系统启动后内存使用原本很低,但是在系统运行的过程中,内存一直在慢慢的增加,最后机器发出了内存预警,查看使用的内存,短短一个月居然达到了8G。经过一系列排查,发现是大量调用groovy脚本计算导致的,使用visualVM监控jvm已加载的类数量:发现每次调用脚本,都会增加一个类,问题代码: public static ScriptEngine engine = new ScriptEngineManager().getEngineByName("原创 2022-05-24 11:45:44 · 1627 阅读 · 5 评论 -
mybatis-plus使用PageHelper分页存在jar包依赖冲突问题
pom.xml文件关键配置 <!--spring-jdbc--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> <exclusions>原创 2022-05-06 14:16:02 · 469 阅读 · 0 评论 -
springboot集成mybatisplus时报Invalid bound statement错误 因为service创建了2次导致
public class Test { @Autowired private UserService userService;我在controller中注入service时,调用list方法发生如下报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.zhou.app01.sys.oa.service.UserService.getBaseMapper a..原创 2022-04-28 17:09:28 · 1866 阅读 · 0 评论 -
mybatis使用PageHelper的bug之第一次缓存后会自己分页
最近遇到一个mybatis一级缓存的问题,使用了pagehelper分页插件,程序频繁执行一个查询sql,数据量大约200条,这个sql没有使用分页,但是在执行大约6次之后,发现这个sql返回的数据变成5条,但是在之后的一段时间里面,再执行的话也没有出现返回5条的情况,经过对pagehelper源码的追踪,我发现这个是缓存导致的。原来是因为频繁执行一个查询sql,mybatis出于性能考虑,数据量不大的话会去查询全表的数据并缓存,然后将数据分页然后返回,问题就在这儿,我程序里面根本没有分页,参数里面也没原创 2021-01-15 16:24:45 · 865 阅读 · 2 评论 -
poi版本3.12以上添加多个批注报错的问题
添加批注的代码如下:public static void addHSSFComment(Cell cell,String value){ Comment comment = cell.getSheet().createDrawingPatriarch().createCellComment(new HSSFClientAnchor(0, 0, 0,0, (short) 3, 3, (short) 5, 6)); // 输入批注信息 comment.se原创 2021-01-18 14:43:20 · 1832 阅读 · 0 评论 -
springboot集成shiro使用ehcache的会话管理的完美实现方案
ehcache配置文件:<defaultCache maxEntriesLocalHeap="0" eternal="true" timeToIdleSeconds="0" timeToLiveSeconds="0" overflowToDisk="false" diskPersistent="false" />要想让Shiro的Ses原创 2020-07-18 15:10:53 · 915 阅读 · 0 评论 -
手动调用System.gc()导致程序执行缓慢的坑
最近在项目中遇到一个问题,页面打开非常慢,要20秒才能加载完毕,经过调试发现后台耗时非常高,经过一系列的盘查和尝试,发现了代码中有一段手动调用jvm垃圾回收的代码,因为这段程序会占用较高的内存,这个调用不一定有用,当时觉得影响不大就忽略掉了。当我随手取去掉这句代码时,页面打开速度直接降到了一秒钟,真是天翻地覆的差别.......原创 2020-06-03 11:05:14 · 2157 阅读 · 0 评论 -
poi修改excel单元格值导致单元格变成橙色的问题(WPS)
问题描述:在Java程序中将一个单元格的值改成空,结果导出excel后,用WPS软件打开,发现这个单元格背景色变成橙色,但是当这个单元格激活输入模式后,橙色又消失了。如下图:在单元格中输入值后,橙色消失,如下图:问题代码如下:这里把单元格值清空,写法看上去没什么问题,开始觉得是excel的这个单元格格式有问题,将这个单元格用格式刷改成空白单元格格式后,橙色也消失了,但...原创 2020-04-08 11:59:57 · 7064 阅读 · 0 评论 -
冒泡排序和选择排序
https://blog.youkuaiyun.com/qq_16855077/article/details/103876151转载 2020-01-10 10:12:00 · 142 阅读 · 0 评论 -
log4j2.xml配置--日志打印多次的问题
<?xml version="1.0" encoding="UTF-8" ?><!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --><!--Configuration后面的status,这个用于设置log4j2自身内部的信息...原创 2019-12-30 11:28:25 · 1318 阅读 · 0 评论 -
java读取配置文件中文乱码
配置文件是utf-8编码,但是使用下面这种方式读取出来的中文还是乱码的: public static void main(String[] args) throws Exception{ Properties p = loadProperty(); String a = p.getProperty("pro.key"); System.o...原创 2020-01-08 10:40:01 · 3188 阅读 · 0 评论 -
Java处理带BOM标记的数据流
BOM —— 字节顺序标记(Byte Order Mark)BOM标记的作用是告诉编辑器当前文件使用的编码方式,方便编辑器识别,一般编辑器中不会显示这个标记,但是这个标记是占用了几个字节的空间。一个字节有"大字节序"(BE)和"小字节序"(LE)的区别,比如0x2138是两个字节的字符,0x21和0x38,计算机处理字节序的时候,不知道什么是高位字节,什么是低位字节。它只知道按顺序读...原创 2020-01-09 15:12:54 · 606 阅读 · 0 评论 -
分享一个Java使用GZIP压缩数据和文件的工具类
import org.apache.commons.io.IOUtils;import java.io.*;import java.util.zip.GZIPInputStream;import java.util.zip.GZIPOutputStream;/** * @author lang.zhou * @date 2019/8/30 */public class GZi...原创 2020-01-09 17:27:06 · 795 阅读 · 0 评论 -
java脚本引擎Groovy并发控制
ScriptEngine是线程安全的,自身没有线程问题,但是变量作用域(Bindings)存在线程问题。一般计算时,如果不考虑线程,都是使用的默认Bindings:通过源码可以看到,如果不指定Bindings,默认使用内置的Bindings。这就会导致多线程存在问题,一个线程的变量可能会被另一个线程覆盖掉,导致计算结果出错。所有为了保证不同线程变量作用域相互独立,可以根据线程号来创建B...原创 2020-01-03 17:26:59 · 1451 阅读 · 1 评论
分享