自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java开源后台管理系统完整源码,OA、工作流、可继承权限管理系统,前后端分离架构

springboot、Mysql、MybatisPlus作为基础框架使用JWT和Redis实现登录会话功能用户管理组织架构管理。参数管理菜单管理动态路由菜单。缓存信息系统安全策略附件管理黑名单。权限管理 :继承权限。系统监控:记录系统操作日志。定时任务管理:动态管理系统的任务调度。activiti工作流根据流程图配置动态展示审批按钮流程发起、挂起、激活、终止,指派、增员、减员bpmn-js流程在线设计器,可以在线新建并绘制流程保存

2020-11-11 12:07:23 8851 17

原创 nginx多个端口同时转发

server {server {

2025-03-11 09:37:18 281

原创 使用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

原创 mysql8导入脚本失败但命令窗口可以正常执行

这里指定了文件编码之后就能正常导入了。

2024-08-07 13:22:33 188

原创 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

原创 springboot和nginx项目开启gzip

后端修改application.yml。前端在nginx.conf中增加配置。

2024-07-05 17:41:50 226

原创 服务器使用ip访问时nginx配置防盗链报错404

假设服务器ip为172.16.2.99,则配置为。

2024-07-01 17:32:08 172

原创 aspose.words提取所有word书签内容另存为新文件

aspose.words提取所有word书签内容另存为新文件。

2024-06-20 18:28:00 324

原创 mybatisplus填充公共字段MetaObjectHandler后不生效解决方式

所以没有触发实现类的填充代码,最好是直接对整个实体进行新增或更新,就能够进入实现类。注意只有指定了fill参数,这个属性插入或修改时才会触发。上述实现类,程序根本就没有进去。所以没有触发实现类的填充代码,最好是直接对整个实体进行新增或更新,就能够进入实现类。注意只有指定了fill参数,这个属性插入或修改时才会触发

2024-05-27 17:17:38 1143

原创 springcloud多个服务共用同一个nacos配置

springcloud多个服务共用同一个nacos配置。

2024-05-22 10:04:42 707

原创 win11恢复旧版右键菜单

再重启windows资源管理器即可。2.重启windows资源管理器。1.在cmd控制台输入。

2024-05-16 15:28:16 579

原创 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

原创 springboot项目中使用线程池异步执行任务

【代码】springboot项目中使用线程池异步执行任务。

2024-01-24 16:50:26 546

原创 easyexcel上传校验的方法封装

使用自定义注解的方式来定义校验的类型,避免冗余代码。easyexcel版本3.1.5。

2024-01-12 14:47:05 1558

原创 aspose通过开始和结束位置关键词截取word另存为新文件

【代码】aspose通过开始和结束位置关键词截取word另存为新文件。

2024-01-02 11:55:21 841

原创 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

原创 linux重启jar包的脚本

【代码】linux重启jar包的脚本。

2023-11-30 10:55:38 562

原创 linux安装nginx

nginx下载地址:http://nginx.org/download。如果编译报错,需要安装依赖。

2023-11-15 16:45:25 136

原创 docker容器的日志占满磁盘空间处理办法

清空名为"容器id-json.log"的文件。

2023-11-06 09:54:00 265

原创 easypoi使用listener读取excel

easypoi使用listener读取excel。

2023-10-08 14:54:28 268

原创 使用poi准确读取excel单元格数据的方法

【代码】使用poi准确读取excel单元格数据的方法。

2023-09-26 11:23:50 1202

原创 java使用jdbcTemplate查询并插入百万级数据解决方案

我们拿到ResultSet后,每次只读取10000条数据存到List中,然后将这些数据插入数据库,在插入结束之后清空这个List,jvm会回收这些数据释放内存,一直重复这个过程直到结果集读取完毕,就避免了内存泄漏的情况产生。我们使用jdbcTemplate的batchUpdate方法批量保存数据时,要想真正进行批量保存需要几个条件。因此我们需要写一个实现类继承ResultSetExtractor,去实现读取ResultSet的逻辑。背景:使用JdbcTemplate查询500万数据,然后插入到数据库。

2023-09-08 19:20:59 4208

原创 使用itextpdf对pdf进行签名盖章

使用itextpdf对pdf进行签名盖章。

2023-08-01 15:28:42 1571 1

原创 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

原创 计算两个经纬度之间的距离

【代码】计算两个经纬度之间的距离。

2023-06-08 12:29:23 171

原创 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

原创 pageoffice处理setCustomSaveResult中文乱码

pageoffice处理setCustomSaveResult中文乱码

2023-04-10 14:55:11 297

数据关联工具类,对两个数据源的多行数据实现inner join

数据关联工具类,对两个数据源的多行数据实现inner join

2024-07-08

runc.amd64 docker内核升级到1.0.0-rc95

docker内核升级到1.0.0-rc95

2023-07-20

visual c++运行环境安装修复

visual c++运行环境安装修复

2023-06-25

java实现innerjoin关联算法

​ 场景:有三个List<Map>变量,分别为list1、list2、list3 List<Map<String,Object>> list1 = new ArrayList<>(); List<Map<String,Object>> list2 = new ArrayList<>(); List<Map<String,Object>> list3 = new ArrayList<>(); 现在需要根据一个输入的字符"list1.column1=list2.column2,list1.column3=list3.column4"(不是固定的)来实现inner join关系的控制,即list1中的map和list2中map通过key值column1和column2关联,同时list1中的map和list3中map通过key值column3和column4关联。在sql中就是"select * from list1 inner join list2 on list1.column1=list2.column2 inner join list3 on list1.column3=list

2023-05-10

Groovy大量计算导致oom的解决办法

问题原因分析:使用ScriptEngine.eval每次都会对脚本进行编译,生成一个新的类,被GroovyClassLoader加载,大量执行计算后,将导致被加载的类数量不断增加,最终OOM。 解决办法:对计算的表达式expression进行预编译,以表达式作为key,将编译好的类进行缓存,这样只会首次计算时去编译,后面再次计算时,根据expression从缓存里面取到对象,然后进行计算,不会再去创建类。 下载的资源文件中,封装了并发计算以及内存溢出解决方案的工具类GroovyEngine.java,调用示例: GroovyEngine engine = GroovyEngine.getInstance(); engine.put("a",1); engine.put("b",2); Object v1 = engine.eval("sum(a,b)");

2022-05-27

css实现侧边栏折叠小工具htmm.zip

使用css实现侧边栏折叠小工具,在经典的左右菜单布局中,点击浮动的小图标,来隐藏左边的菜单栏,实现右边区域的宽度增加。所需的css已经全部封装到css中

2020-05-16

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

TA关注的人

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