- 博客(33)
- 收藏
- 关注
原创 spring boot实现定时任务,且支持动态生成cron表达式
在实现类中,每次定时任务业务执行完后都会配置触发器下次执行时间,如果我们想要动态控制定时任务的触发时机,在获取下次执行时间的地方改造自己的实现方法,读取数据库或者redis都可以。且属性的值支持${}占位符从配置文件获取。业务场景:需要开启一个定时任务每天执行,任务执行时机通过配置文件获取,但是配置参数不能用cron表达式,要用更容易理解的时间点(时分秒)这种基于注解的方式很快捷,但是不符合我的需求,虽然可以从配置文件读取参数,但是无法将配置文件中的参数处理翻译为cron表达式。
2023-12-15 14:22:49 1407 1
原创 spring boot通过注解开启异步任务,并使用线程池管理
3.使用@Async注解标记需要异步执行的方法,并在注解内指定配置的线程池执行器名称就可以将异步线程交给线程池来管理。1.使用@EnableAsync注解开启异步,这个注解一般放在启动类或者线程池配置类上,这里我放在线程池配置类上。@Async注解实现异步任务是通过代理类技术实现的,在使用中需要注意@Async失效的一些情况,避免异步任务失效。(3)调用方与被调方不能在同一个类(同一个类方法之间调用不会通过代理调用因此异步任务会失效)线程池的相关参数,我放到了配置文件中,后续可以根据实际情况调整参数。
2023-12-15 14:22:00 659
原创 try catch捕获异常时,注意异常类,避免erro类捕获不到
我们在使用try catch捕获异常时,要注意异常类型,类型错误会导致捕获不到。例如这段代码: public static void main(String[] arg) { checkDataScript(2, "select * from { table1 }"); } /** * 校验sql语法是否正确 * * @param type 类型 0:查询,1:新增,2:更新,3:删除 */ public s
2023-12-06 10:05:57 555
原创 redis发布订阅模式,消费端重复消费问题解决
2.网络延时或者其他原因导致消息延时被消费端消费,这时此消息已被其他服务处理完成了,并且已经释放了redis锁,或者redis锁已过期的情况。在实际生产中,我们放入通道中的信息往往希望只被消费一次,但是在部署多个服务的情况下,通道中的消息会被重复消费,这里就来解决这个问题。解决方案:消息中可以放入一个任务id,服务在处理消息后生成一条处理记录,验证消息是否被处理过,只需要查库验证就可以了。解决方案:消费端代码加redis分布式锁,来避免重复消费。通过以上两个方式,就可以防止消息被重复消费。
2023-12-06 09:47:36 2087
原创 redis通过发布订阅模式实现轻量级的MQ
因为接口请求很大的情况不是很多,不需要集成MQ队列增加系统复杂度和部署难度,这个时候考虑选择使用redis的发布订阅模式,在请求进来时发布到redis的通道中,然后监听器中去消费通道里面的消息,实现轻量级的MQ功能。发布的消息内容根据自己的业务来确定,发布后可以直接给请求返回一个任务id,任务在系统异步执行,执行完成后可以通过任务id来查看执行结果。场景:提供了一个可以向数据库写数据的接口,当这个接口请求量很大时,需要考虑通过异步的方式去执行业务代码。1.新建一个redis的监听器。
2023-12-01 14:30:38 615
原创 jsqlparser实现select,update,delete语句增加where条件
我们在开发过程中,会遇到需要动态拼接sql语句的情况,jsqlparser可以很好的帮我们实现。一般引入了pagehelper分页组件都会有这个包,不需要再次引入。
2023-12-01 13:47:43 1099 1
原创 elementplus 配置日期控件el-date-picker的周次从周一开始
我们在使用elementplus的日期控件el-date-picker的选择周次功能时,需要将type设置为week,但是这时候,周次是从周日开始的,这不适合应用场景,我们需要的是从周一开始的。)却没有发现类似的配置属性,而是通过国际化来配置。我们可以在main.js中进行全局配置。这样就完成了使周次从周一开始的配置。Element plus(适配。)提供了属性,可以进行设置。Element(适配。
2023-09-27 09:58:55 3211
原创 vue 富文本编辑器TinyMCE 设置内容中的部分标签为不可编辑
解决方案:我们需要设置这个标签文本为不可编辑状态,这样就能避免误操作了,富文本编辑器提供了一个插件(noneditable)可以设置元素不可编辑,我们使用此插件以及一些api和时间来实现此功能。场景:在利用富文本编辑器TinyMCE 设置消息模板时,需要嵌入一些固定标签,固定标签用于后台解析模板时动态组装数据数据,嵌入的标签为文本格式,容易被误修改,造成无法解析这个固定标签。富文本编辑器对象根据自己实际情况获取,我的页面上放置了多个文本编辑器,所以对象获取是在onBlur方法中实现的。
2023-09-18 17:43:54 2025
原创 java实现html转word
优点:对于html不需要特殊处理,直接带完整样式生成到word文档中。使用poi实现html字符串生成word文档,和导出word文档,对于富文本插件生成的html代码也可以通过此方法生成word文件。2. 将html字符串导出word文档。1. 将html字符串生成doc文件。
2023-09-13 14:48:20 9609 6
原创 echarts柱状图加滑动,echarts饼状图无数据时显示暂无数据文字,不显示动画
1.当柱状图x轴数据项过多时,无法很好的显示,可以通过加滚动条来实现较好的使用体验。2.echarts图形无数据时,实现不显示动画,显示【暂无数据】文字。可以通过start属性控制初始展示数据项的比例。若start的值为100,则全部显示。
2023-09-08 14:43:10 1369
原创 解决echarts在el-tabs的el-tab-pane下切换时,图形错位的问题
解决方式是给el-tab-pane加:lazy="true"延迟渲染标签。
2023-09-08 14:14:52 555
原创 echarts 柱状图 Y轴最小刻度设置为1,以及X轴数据过多是显示不完整的问题
当统计一个月时,会出现日期显示不完整的问题,我们可以使用axisLabel设置坐标轴刻度标签,将interval属性设置为0,这个属性是标签显示间隔,若设置为1则间隔一个显示,另外因为字体太密集会覆盖,可以设置标签旋转一定角度,rotate设置为45。我们可以通过minInterval设置Y轴最小刻度单位。场景:在统计工作量的图表中,患者数不可能出现小数。1.echarts柱状图Y轴最小刻度设置为1。2.解决X轴数据过多时,显示不全的问题。
2023-08-22 14:49:09 5670 5
原创 Java获取周的开始和结束时刻,以及Calendar时间戳精度问题
数据库存储的是时分秒,通过查看控制台可以发现公共方法返回的时间后面有毫秒数,导致和数据库存储的时间对比不相等。Java中Calendar时间戳的精度问题。这样就可以和数据库对应数据匹配了。
2023-08-21 10:23:55 587 1
原创 Java 正则表达式 校验密码强度 要求:8-20位之间,必须包含大小写字母数字及特殊字符
Java 正则表达式 校验密码强度 要求:8-20位之间,必须包含大小写字母数字及特殊字符
2023-05-22 13:40:47 5008
原创 Java使用固定字符开头和结尾的字符串替换文本内容
使用正则表达式和Java的String类中的replaceAll方法来实现替换以固定字符开头和结尾的字符串。表示匹配任意字符(除了换行符)0次或多次,加上。表示非贪婪匹配,即尽可能少地匹配字符。结尾的字符串,并将其替换为。这个示例使用正则表达式。
2023-05-19 17:35:07 1567
原创 解决浏览器调式web项目时页面跳转或者刷新页面后network的日志和请求会清空的问题
只需要将NetWork里面的“Preserve log”勾上,程序加载新的jsp页面或者F5刷新浏览器页面时,历史日志就会保留不会被清空了。
2023-05-18 10:07:35 944 1
原创 Linux最简单分割tomcat的catalina.out文件的方法
利用Linux自带的logrotate工具实现对catalina.out日志文件的自动切割
2023-04-12 10:14:16 2059
原创 windows系统运行的tomcat如何输出catalina.out
1、打开bin下面的startup.bat文件,把call "%EXECUTABLE%" start %CMD_LINE_ARGS%重启tomcat,就会发现在logs文件夹下出现了catalina.out文件,把原来控制台的信息全写进去了。2、打开bin下面的catalina.bat文件,会发现共有4处 %ACTION% ,在后面分别加上。改为call "%EXECUTABLE%" run %CMD_LINE_ARGS%但输出的这个catalina.out文件,是一直增长的,也就是文件会越来越大。
2023-04-11 16:38:28 1010
转载 【PageHelper】详解
你知道的越多,你不知道的也越多使用过框架的亲故们肯定都听说过PageHelper这个分页神器吧?简单的一句话就可以帮我们实现分页!YYDS有没有?废话不多说,开始探索奥秘吧.
2023-04-03 17:08:23 2706
原创 【spring boot 事务方法的finally中开启新事务实现业务需求】
业务场景: 执行一次巡检任务,在巡检任务执行前,任务表状态更新为执行中,异步线程执行巡检任务(巡检任务执行加了事务控制),在本次巡检任务执行完毕后,任务表更新为空闲状态。遇到的问题:更新任务表为执行中可以放在控制器层,不受事务影响,但是更新任务表为空闲状态放在finally中会因为事务的回滚导致更新失败。解决方法:finally中通过开启新事务。
2023-03-29 13:25:13 594
转载 String.format()的用法
地区 深圳 为可变的String数据;年龄 18 为可变的int数据;性别 男 为可变的String数据。在开发中一段字符串的中间某一部分需要可变的。如:文本要展示 “张三用户来自深圳,年龄 18,性别 男…其中的 张三 是用户名,每个用户都是不一样的;
2023-03-27 15:51:15 174
原创 idea打包web项目为war包
第四步 开始打包Build->Build Artifacts。第五步 在配置的文件路径下可以找到war包。第三步 配置好后点击OK。
2023-03-27 15:36:32 869
原创 idea配置web项目
1> 配置source,Java代码以及配置文件所在文件夹设置为Source类型,静态资源所在文件夹不要设置类型,避免静态资源在打包后放入classes下面。依赖包一般在WEB-INF的lib文件夹下,另外需要引入tomcat。依赖包路径一般在WEB-INF的lib文件夹下。1.配置JDK以及编译输出位置。3. 配置Libraries。2.配置Modules。4. 配置Facets。
2023-03-14 09:14:49 464 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人