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

原创 java开源后台管理系统完整源码,OA、工作流、可继承权限管理系统,前后端分离架构
springboot、Mysql、MybatisPlus作为基础框架使用JWT和Redis实现登录会话功能用户管理组织架构管理。参数管理菜单管理动态路由菜单。缓存信息系统安全策略附件管理黑名单。权限管理 :继承权限。系统监控:记录系统操作日志。定时任务管理:动态管理系统的任务调度。activiti工作流根据流程图配置动态展示审批按钮流程发起、挂起、激活、终止,指派、增员、减员bpmn-js流程在线设计器,可以在线新建并绘制流程保存
2020-11-11 12:07:23
8851
17
原创 使用NVM自由切换nodejs版本
在日常开发中,我们可能需要同时进行多个不同NodeJS版本的项目开发,每个项目所依赖的nodejs版本可能不一致,我们如果只安装一个版本的nodejs,就可能出现node版本冲突问题,导致项目无法启动。这种情况下,对于维护多个版本的node将会是一件非常麻烦的事情,不可能频繁的安装卸载,NVM(node.js version management)就是为解决这个问题而产生的,顾名思义是一个nodejs的版本管理工具,他可以方便的在同一台设备上进行多个node版本之间切换。查看已安装的node版本。
2024-11-06 17:07:56
410
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
470
原创 springboot整合mybatis-plus和pagehelper插件报错,
在springboot和myabtisplus版本没有冲突的情况下,MybatisPlusAutoConfiguration配置类没有生效,查看该类发现存在生效条件,必须存在数据源的Bean对象。
2024-08-06 14:47:03
377
原创 封装poi操作excel超实用的工具类
excel中支持多种数据格式,分别对应java中的Double、String、Date、Boolean,根据单元格的getCellType()方法判断单元格类型,返回对应类型的数据。程序可以往表格中填充数据,从表格区域开始行位置填充,填充过程中插入了新行,但表格区域不会自动变化,因此填充完成后要重新设置表格区域,即重新设置表格结束行。excel中的列号用A到Z进行表示,A代表的就是第一列,Z代表的就是第26列,AA表示的是第27列。一个单元格不能重复添加批注,否则会报错,另外大量创建批注时,性能会非常低。
2024-07-18 16:05:55
511
原创 java实现多数据源跨表关联计算内存溢出解决思路
有多个数据源,以下简称数据源A、B、C,来自相同或不同的数据库,现在需要把数据取出,在java中进行计算,常规操作是分别把每个数据源的数据全部查询出来,然后按照关联条件进行关联计算。查询时会出现一个很明显的问题,若这三个sql任意一个数据量很大,很有可能出现内存溢出的问题,因此不能直接查询全部数据,而是需要进行分批查询然后计算。使用第一个数据源(即A)作为计算的主表,根据关联条件去其他数据源过滤得到用于计算的数据。1.首先构造数据源A的查询sql,假设构造后的sql为。数据源B和C的查询sql分别为。
2024-07-08 09:42:11
481
原创 mybatisplus填充公共字段MetaObjectHandler后不生效解决方式
所以没有触发实现类的填充代码,最好是直接对整个实体进行新增或更新,就能够进入实现类。注意只有指定了fill参数,这个属性插入或修改时才会触发。上述实现类,程序根本就没有进去。所以没有触发实现类的填充代码,最好是直接对整个实体进行新增或更新,就能够进入实现类。注意只有指定了fill参数,这个属性插入或修改时才会触发
2024-05-27 17:17:38
1143
原创 mybatis嵌套for循环中参数个数太多导致出现SOH等特殊字符报错无效的序列号是不是mybatis的bug
javaType原本是String,而前面竟然多了这些不可识别的特殊字符和空格,这种诡异的问题还是头一次见,我排查了这些数据,本身并没有这些特殊字符,是干干净净的数据,由此推测可能是sql执行传入的参数过多,而导致达梦驱动出现了bug。开始我一直以为是#{}中没有加jdbcType导致的,但是加上javaType和jdbcType之后也不能解决问题,我也排查了传入的参数,发现数据并无异常。看报错是达梦驱动在执行sql设置参数时出现了异常,参数的类型一致无法和数据对应上。
2024-05-14 17:49:00
764
5
原创 sql中select查询大数据量表时很慢
查询花了将近40秒钟,结果集的数据量就有50万,而且多加一个where条件,都会导致查询耗时增加,就算加索引也没有效果,因为我这里必须要加几个where条件,而这些条件又无法过滤掉大部分的数据,所以只会白白增加耗时。不使用distinct,而是使用count + group by来去重,然后在外层过滤where条件,发现查询只要5秒多,速度一下子快了太多,可能是数据库中group by有着天然的优势吧。
2024-05-07 10:16:38
607
3
原创 clob字段查询速度慢的完美解决办法
一般我们使用clob类型是为了存超长文本,而varchar2类型最长只能存储4000个字节,所以超过4000的情况下无法储存。我保存数据的时候就在程序里面按照4000的长度截取成3部分,分别存储到三个字段中,这样这个字段的最大储存长度就拓展到了4000x3=12000个字节了,如果觉得还是不够用,可以继续加字段拓展。表中存在clob类型的字段,当表数据量只有1000时,普通的select查询速度就已经很慢了,因为读取clob字段会占用数据库的io和其他耗时操作,大大影响查询性能。
2024-04-02 09:46:29
1496
原创 使用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
1608
1
原创 RedisTemplate自增时保证原子性的lua脚本限制接口请求频率
改进方式:使用redis的lua脚本,将"读取值、判断大小、自增"放到redis的一次操作中,redis底层所有的操作请求都是串行的,也就是一个请求执行完,才会执行下一个请求。这三步在请求不是很密集的时候,程序执行很快,可能不会产生问题,如果两个请求几乎在同一时刻到来,我们第1步和第2步的判断是无法保证原子性的。1.先去从redis里面拿到当前请求次数。2.判断当前次数是否大于或等于限制次数。3.当前请求次数小于限制次数时进行自增。自增的lua脚本如下。
2023-12-28 18:29:14
1093
原创 springboot启动项目自动动态加载数据库的groovy脚本
将groovy脚本保存在数据库中,页面支持动态增删改查,启动springboot项目时,从数据库中读取groovy配置表,然后编译脚本,项目中就可以直接调用使用脚本。创建springboot启动执行任务:GroovyApplicationRunner.java。开发环境:springboot+MybatisPlus。脚本实体类:Func.java。
2023-12-01 11:03:47
945
原创 java使用jdbcTemplate查询并插入百万级数据解决方案
我们拿到ResultSet后,每次只读取10000条数据存到List中,然后将这些数据插入数据库,在插入结束之后清空这个List,jvm会回收这些数据释放内存,一直重复这个过程直到结果集读取完毕,就避免了内存泄漏的情况产生。我们使用jdbcTemplate的batchUpdate方法批量保存数据时,要想真正进行批量保存需要几个条件。因此我们需要写一个实现类继承ResultSetExtractor,去实现读取ResultSet的逻辑。背景:使用JdbcTemplate查询500万数据,然后插入到数据库。
2023-09-08 19:20:59
4208
原创 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
806
原创 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
4257
原创 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
1066
原创 记录在windows环境以zip方式安装mysql
执行mysqld -install时可能会出现报错,提示缺失dll,因为mysql运行依赖visual c++库,尤其是云服务器,可能没有这些库,需要安装vcredist.exe,mysql5.7对应的是vcredist_2013的版本。安装后重新执行install命令。输入以下命令登录mysql,初始时root用户没有设置密码,提示输入密码时直接回车就行。文件,把最后一行跳过安全检查注释掉,后面登录。放到安装目录下:D:\mysql5.7。就需要输入我们修改后的密码了。以mysql5.7版本为例。
2023-06-25 15:35:40
1533
原创 uni.getSystemInfoSync().windowHeight两次调用不一致
第一次打开页面时拿到的值与第二次打开页面拿到的值不一致,我算了一下,两次值得差异就是导航栏得高度。我开始是在onLoad方法里面调用getSystemInfoSync,拿到的。getSystemInfoSync()返回的对象中有两个高度值,一个是。:小程序视图高度(除去原生的顶部和底部导航栏的高度)回调函数里面调用,就能正常拿到。
2023-06-19 16:43:45
1449
原创 sql语句导致jdbctemplate.batchupdate分批插入缓慢,rewriteBatchedStatements也没有用
发现了猫腻,这里的插入语句values里面又用了select max()去查询最大主键,导致每次插入都会查询主键,于是我把这里的select max去掉,发现批量插入的速度就很快了,5万数据插入只花了几秒钟。我最近项目中遇到一个jdbctemplate的batchupdate方法批量插入的问题,5万条数据分批插入,每次批量插入1000条,结果半个小时数据还没插完。经过断点调试,发现执行了第二个批量插入,但是速度还是出奇的慢,于是我开始怀疑是不是插入的sql语句有什么问题。
2023-06-03 14:24:28
1853
原创 web项目中tomcat创建文件权限不是755
这里的umask改成0022,重启下tomcat,之后tomcat创建的文件权限就是755。修改tomcat下的catalina.sh。
2023-05-26 16:26:49
667
原创 java实现innerjoin关联算法
java实现inner join关系的控制,即list1中的map和list2中map通过key值column1和column2关联,同时list1中的map和list3中map通过key值column3和column4关联。
2023-05-10 17:05:17
773
4
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关注的人