- 博客(92)
- 资源 (2)
- 问答 (2)
- 收藏
- 关注

原创 java开源后台管理系统完整源码,OA、工作流、可继承权限管理系统,前后端分离架构
springboot、Mysql、MybatisPlus作为基础框架使用JWT和Redis实现登录会话功能用户管理组织架构管理。参数管理菜单管理动态路由菜单。缓存信息系统安全策略附件管理黑名单。权限管理 :继承权限。系统监控:记录系统操作日志。定时任务管理:动态管理系统的任务调度。activiti工作流根据流程图配置动态展示审批按钮流程发起、挂起、激活、终止,指派、增员、减员bpmn-js流程在线设计器,可以在线新建并绘制流程保存
2020-11-11 12:07:23
8944
17
原创 System.currentTimeMillis频繁打印耗时的封装类
本文介绍了一个Java计时工具类TimeCounter,用于记录代码执行耗时。该类通过System.currentTimeMillis()获取时间戳,提供print()方法记录阶段耗时、reset()重置计时点、total()输出总耗时。支持自定义名称和调试模式,通过Lombok的@Slf4j注解实现日志输出。使用示例展示了如何初始化计时器、记录操作耗时、重置计时点以及获取总耗时。该工具类简单实用,适用于需要性能监控的代码场景。
2025-08-01 11:39:53
87
原创 实现文件假删除,类似事务的提交和回滚控制
摘要:FalseFileDelete类实现了一个可恢复的"假删除"功能,通过将文件移动到临时目录而非直接删除。该类提供delete()方法执行"删除"操作,rollback()方法可恢复被删除文件,submit()方法确认删除。使用方式为:创建实例后调用delete(),执行成功则调用submit(),异常时调用rollback()回滚。该方案适用于需要事务性文件操作的场景。
2025-08-01 11:31:16
99
原创 通用自然日计算工具
摘要: DateParse 是一个 Java 日期处理工具类,提供丰富的日期转换和计算功能。支持多种日期格式(如 yyyyMMdd 和 yyyy-MM-dd),可解析整型、字符串或 Date 对象,并实现以下操作: 基础功能:日期格式化、字符串/整型互转、去除特殊字符; 日期计算:获取前后N天、周、月、季度、年的首尾日期; 差值计算:计算日期间的天数、周数、月数、季度数、年数差值; 日期属性:获取日期所在年、月、季度、周数及半年标识; 扩展功能:如按偏移量获取指定月/周/季/年的第N天,生成全年日期列表等。
2025-07-30 17:02:31
61
原创 java枚举类封装一个基础枚举类
摘要:该代码定义了一个泛型接口IEnum<T>,用于处理枚举类型的通用操作。接口提供了获取枚举值(getValue)和名称(getName)的方法,以及判断枚举值是否相等(is/not)的默认方法。还包含静态工具方法:通过值获取枚举名称(getName)、获取所有枚举值的列表(keyList)、根据值获取枚举对象(get)和判断值是否存在(has)。这些方法简化了枚举类型的常用操作,提高了代码复用性。
2025-07-30 16:55:30
104
原创 java基于交易日表计算自然日、工作日、交易日
摘要:本文介绍了一个交易日计算系统的设计与实现。系统通过交易日表(BUS_DATE)结构存储日期信息,区分自然日、工作日和交易日三种日期类型。核心功能包括:1) 计算指定日期前/后N个交易日/工作日;2) 按周/月/季/年维度计算特定工作日;3) 日期转换和格式化处理。系统采用Java开发,包含枚举类、实体类、Mapper层、Service层和工具类(DimTimeUtil、DateParse)等模块,提供灵活的日期计算方法,适用于金融交易场景的日期计算需求。
2025-07-30 16:47:17
359
原创 数据库char字段做trim之后查询很慢的解决方式
使用tirm无非是担心char字段存储的长度没达到数据库设置的长度,数据末尾会出现空格,而前端展示数据时一般会去掉空格传给后端,这就导致无法查询出数据,char是用来存储定长字符的,虽然出现这种问题,是设计和使用上的不合理导致,但是还得解决这个问题。当表数据量大时,即使给column1字段加上索引,这条查询语句也会很慢。这样就能走索引查询,不用全表扫描。
2025-06-18 17:51:19
220
原创 解决sql查询中in查询项过多时很慢的问题
针对大数据表IN查询效率低的问题,通过优化SQL语句提升性能。当IN条件包含上千元素时,即使有联合索引也会失效导致全表扫描。测试发现将IN查询改为多次单值查询(每次交互一次)反而更快。最佳方案是用UNION ALL拼接多个单值查询,既保证索引生效,又减少数据库交互次数。该方法有效解决了大数据量IN查询性能问题,相比原始方案性能显著提升。
2025-06-18 17:23:53
394
原创 POI大量创建批注很慢的坑
这段代码在创建少量批注时没有明显性能问题,当批注数量达到几千或者几万,poi写入excel的速度就会非常慢。将他放在主方法里,只调用一次,创建大量批注速度也直接起飞。慢的原因就在于这一个方法。
2025-05-15 09:47:18
233
原创 使用NVM自由切换nodejs版本
在日常开发中,我们可能需要同时进行多个不同NodeJS版本的项目开发,每个项目所依赖的nodejs版本可能不一致,我们如果只安装一个版本的nodejs,就可能出现node版本冲突问题,导致项目无法启动。这种情况下,对于维护多个版本的node将会是一件非常麻烦的事情,不可能频繁的安装卸载,NVM(node.js version management)就是为解决这个问题而产生的,顾名思义是一个nodejs的版本管理工具,他可以方便的在同一台设备上进行多个node版本之间切换。查看已安装的node版本。
2024-11-06 17:07:56
442
1
原创 windows以zip方式安装mysql8
cmd进入D:\Program Files\mysql-8.0.40-winx64\bin。,下载后放到D:\Program Files\mysql-8.0.40-winx64。(1)在路径下新建my.ini配置文件。执行命令登录mysql。(2)安装并启动服务。
2024-10-16 15:59:11
549
原创 springboot整合mybatis-plus和pagehelper插件报错,
在springboot和myabtisplus版本没有冲突的情况下,MybatisPlusAutoConfiguration配置类没有生效,查看该类发现存在生效条件,必须存在数据源的Bean对象。
2024-08-06 14:47:03
440
原创 封装poi操作excel超实用的工具类
excel中支持多种数据格式,分别对应java中的Double、String、Date、Boolean,根据单元格的getCellType()方法判断单元格类型,返回对应类型的数据。程序可以往表格中填充数据,从表格区域开始行位置填充,填充过程中插入了新行,但表格区域不会自动变化,因此填充完成后要重新设置表格区域,即重新设置表格结束行。excel中的列号用A到Z进行表示,A代表的就是第一列,Z代表的就是第26列,AA表示的是第27列。一个单元格不能重复添加批注,否则会报错,另外大量创建批注时,性能会非常低。
2024-07-18 16:05:55
555
原创 java实现多数据源跨表关联计算内存溢出解决思路
有多个数据源,以下简称数据源A、B、C,来自相同或不同的数据库,现在需要把数据取出,在java中进行计算,常规操作是分别把每个数据源的数据全部查询出来,然后按照关联条件进行关联计算。查询时会出现一个很明显的问题,若这三个sql任意一个数据量很大,很有可能出现内存溢出的问题,因此不能直接查询全部数据,而是需要进行分批查询然后计算。使用第一个数据源(即A)作为计算的主表,根据关联条件去其他数据源过滤得到用于计算的数据。1.首先构造数据源A的查询sql,假设构造后的sql为。数据源B和C的查询sql分别为。
2024-07-08 09:42:11
537
原创 mybatisplus填充公共字段MetaObjectHandler后不生效解决方式
所以没有触发实现类的填充代码,最好是直接对整个实体进行新增或更新,就能够进入实现类。注意只有指定了fill参数,这个属性插入或修改时才会触发。上述实现类,程序根本就没有进去。所以没有触发实现类的填充代码,最好是直接对整个实体进行新增或更新,就能够进入实现类。注意只有指定了fill参数,这个属性插入或修改时才会触发
2024-05-27 17:17:38
1334
原创 mybatis嵌套for循环中参数个数太多导致出现SOH等特殊字符报错无效的序列号是不是mybatis的bug
javaType原本是String,而前面竟然多了这些不可识别的特殊字符和空格,这种诡异的问题还是头一次见,我排查了这些数据,本身并没有这些特殊字符,是干干净净的数据,由此推测可能是sql执行传入的参数过多,而导致达梦驱动出现了bug。开始我一直以为是#{}中没有加jdbcType导致的,但是加上javaType和jdbcType之后也不能解决问题,我也排查了传入的参数,发现数据并无异常。看报错是达梦驱动在执行sql设置参数时出现了异常,参数的类型一致无法和数据对应上。
2024-05-14 17:49:00
837
5
原创 sql中select查询大数据量表时很慢
查询花了将近40秒钟,结果集的数据量就有50万,而且多加一个where条件,都会导致查询耗时增加,就算加索引也没有效果,因为我这里必须要加几个where条件,而这些条件又无法过滤掉大部分的数据,所以只会白白增加耗时。不使用distinct,而是使用count + group by来去重,然后在外层过滤where条件,发现查询只要5秒多,速度一下子快了太多,可能是数据库中group by有着天然的优势吧。
2024-05-07 10:16:38
638
3
原创 clob字段查询速度慢的完美解决办法
一般我们使用clob类型是为了存超长文本,而varchar2类型最长只能存储4000个字节,所以超过4000的情况下无法储存。我保存数据的时候就在程序里面按照4000的长度截取成3部分,分别存储到三个字段中,这样这个字段的最大储存长度就拓展到了4000x3=12000个字节了,如果觉得还是不够用,可以继续加字段拓展。表中存在clob类型的字段,当表数据量只有1000时,普通的select查询速度就已经很慢了,因为读取clob字段会占用数据库的io和其他耗时操作,大大影响查询性能。
2024-04-02 09:46:29
1711
原创 使用zip4j解压zip时文件名乱码解决最好的方案
zip4j解压zip时,出现中文乱码,看了下,zip4j解压时支持设置文件编码,我们只需要识别文件是不是utf-8编码,如果不是utf-8就使用gbk解压,但是这个判断没有100%准确的方式,我试过通过字节流的bom标记去判断,但是文件不一定有bom字节,所以不适用。我们先使用utf-8读取zip里面的文件名,然后判断文件名是否能使用gbk进行编码,如果不能,我们就用utf-8解压,如果gbk可以编码,就使用gbk进行解压。
2024-02-06 12:00:43
1756
2
原创 RedisTemplate自增时保证原子性的lua脚本限制接口请求频率
改进方式:使用redis的lua脚本,将"读取值、判断大小、自增"放到redis的一次操作中,redis底层所有的操作请求都是串行的,也就是一个请求执行完,才会执行下一个请求。这三步在请求不是很密集的时候,程序执行很快,可能不会产生问题,如果两个请求几乎在同一时刻到来,我们第1步和第2步的判断是无法保证原子性的。1.先去从redis里面拿到当前请求次数。2.判断当前次数是否大于或等于限制次数。3.当前请求次数小于限制次数时进行自增。自增的lua脚本如下。
2023-12-28 18:29:14
1150
原创 springboot启动项目自动动态加载数据库的groovy脚本
将groovy脚本保存在数据库中,页面支持动态增删改查,启动springboot项目时,从数据库中读取groovy配置表,然后编译脚本,项目中就可以直接调用使用脚本。创建springboot启动执行任务:GroovyApplicationRunner.java。开发环境:springboot+MybatisPlus。脚本实体类:Func.java。
2023-12-01 11:03:47
1012
原创 linux安装nginx
nginx下载地址:http://nginx.org/download。如果编译报错,需要安装依赖。
2023-11-15 16:45:25
147
原创 java使用jdbcTemplate查询并插入百万级数据解决方案
我们拿到ResultSet后,每次只读取10000条数据存到List中,然后将这些数据插入数据库,在插入结束之后清空这个List,jvm会回收这些数据释放内存,一直重复这个过程直到结果集读取完毕,就避免了内存泄漏的情况产生。我们使用jdbcTemplate的batchUpdate方法批量保存数据时,要想真正进行批量保存需要几个条件。因此我们需要写一个实现类继承ResultSetExtractor,去实现读取ResultSet的逻辑。背景:使用JdbcTemplate查询500万数据,然后插入到数据库。
2023-09-08 19:20:59
4357
原创 openssl生成PKCS12证书
4.将私钥和证书合并为PKCS12格式 openssl pkcs12 -export -in cert.crt -inkey private.key -out cert.p12。3.创建自签名证书 openssl x509 -req -days 3650 -in cert.csr -signkey private.key -out cert.crt。2.生成证书请求 openssl req -new -key private.key -out cert.csr。
2023-08-01 13:26:37
872
原创 Docker无法运行java虚拟机报错There is insufficient memory for the Java Runtime
Docker无法运行java虚拟机报错There is insufficient memory for the Java Runtime,需要升级容器内核runc版本
2023-07-20 11:19:20
4943
java实现innerjoin关联算法
2023-05-10
Groovy大量计算导致oom的解决办法
2022-05-27
css实现侧边栏折叠小工具htmm.zip
2020-05-16
wps打开带有css样式的html格式的word时,无法识别,该如何解决
2021-08-09
activiti工作流一个service调用另一个service时事务不生效?
2020-07-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人