- 博客(165)
- 收藏
- 关注
原创 对SpringBoot项目Jar包进行加密防止反编译
只需要在启动类的pom.xml文件中加如下插件即可,需要注意的是,改插件时要放到spring-boot-maven-plugin插件后面,否则不起作用。java -javaagent:xxx-encrypted.jar='-pwd=密码' -jar xxx-encrypted.jar。这样,打包好的项目只能在生成机器码的机器运行,其他机器则启动不了项目。无密码启动:java -javaagent:xxx-encrypted.jar -jar xxx-encrypted.jar。命令,会自动生成一串机器码。
2024-08-27 11:08:02 1020
原创 SpringBoot + Redis的zset实现排行榜,实现分数相同按照时间顺序排序
使用zset提供的排序功能,可以按照分数从高到低排序,**但是如果分数相同,按照默认的排序规则会按照value值排序**,而不是按照时间顺序排序。假设现在的时间戳是1680417299000,除以1e13得到0.1680417299000,再加上一个固定的分数(比如10),那么最终的分数就是10.1680417299000,可以将它作为zset中某个成员的分数,用来排序。实现了分数倒序排列,分数相同时间戳大的排在了前面,这和我们的需求相反了,所以,就需要在做一次转换。3、获取zset某个用户的分数和名次。
2024-08-26 16:07:41 627
原创 idea 设置自动移除多余 的import (或整个项目删除)
2、如果想把整个项目的移除可以如下操作。1、开发的时候,直接自动去除多余的引入。
2024-08-05 16:33:07 1641
原创 npm 运行/打包vue项目时报错:Error: error:0308010C:digital envelope routines::unsupported的解决方法
前端项目启动(npm run dev)和打包时(npm run build:prod)报出如下错误,
2024-06-14 10:57:02 765
原创 vue中数组常用的六种循环方法、VUE中list的各种方法和运用
简单记录一下,常用的六种数组循环的方法,分别是for(),map(),forEach(),filter (),every(),some();
2024-06-05 14:26:44 3947 1
原创 MySQL 插入数据的时候自动忽略重复数据
MySQL中插入数据,如果插入的数据在表中已经存在(主键或者唯一键已存在),使用insert into语法的时候,如果遇到重复数据,会直接报错,导致事务回滚,所有插入数据,全部失败。如果想要忽略重复数据,只插入不重复的数据,可以使用以下方法。
2024-05-21 18:26:28 1214
原创 Java实现微信扫码登入的实例代码
审核通过的话就是这个样子 还有最底下的授权回调地址 (www.xxxxx.com) 填写域名即可。首先去通过微信开放平台做好开发者资质认证,创建网站应用然后等待审核。第一步 用户通过点击事件获取到微信二维码连接。
2024-04-23 18:32:23 461
原创 Java读取html 中标签的值
如果返回的是json格式的字符串,可以用jsonUtil的工具类,直接转换成jsonobject,然后直接jsonObject.get("key"),就可以拿到数据,那如果返回的是一个html页面呢,应该怎么获取html页面中的信息呢;根据 HTML 的结构和需要提取的内容,可以使用 Jsoup 提供的选择器来获取指定的元素。Java 提供了多个库用于解析 HTML,比如 Jsoup 和 HtmlUnit。Elements这个对象提供了一系列类似于DOM的方法来查找元素,抽取并处理其中的数据。
2024-04-23 17:29:36 2407
原创 spring多线程实现+合理设置最大线程数和核心线程数
每秒200个任务需要20个线程,那么当每秒达到1000个任务时,则需要(1000-queueCapacity)*(20/200),即60个线程,可将maxPoolSize设置为60。当负载降低时,可减少线程数量,如果一个线程空闲时间达到keepAliveTiime,该线程就退出。这实际上是将队列长度设置为Integer.MAX_VALUE,将会导致线程数量永远为corePoolSize,再也不会增加,当任务数量陡增时,任务响应时间也将随之陡增。2.分析下线程池处理的程序是CPU密集型,还是IO密集型。
2024-03-29 18:28:07 3019
原创 解决:Command line is too long. Shorten command line for xxx or also for Application default configurat
点击项目启动配置项 --> Enviroment --> Shorten command line 选项 --> 选择 classpath file 或JAR manifest 选项 --> 重新启动工程运行即可。解决方法有两种,正如报错信息截图所示,缩短命令行或者改为应用程序默认配置。
2024-03-25 14:39:08 11363
原创 mysql5.7先group by分组再order by取最新一条记录时失效
mysql 先group by分组再order by取最新一条记录时失效
2024-02-27 14:55:14 737
原创 SpringBoot项目启动后执行指定方法的四种实现
实现接口ApplicationListener方式和实现ApplicationRunner,CommandLineRunner接口都不影响服务,都可以正常提供服务,注意监听的事件,通常是ApplicationStartedEvent 或者ApplicationReadyEvent,其他的事件可能无法注入bean。@PostConstruct是Java自带的注解,在方法上加该注解会在项目启动的时候执行该方法,也可以理解为在spring容器初始化的时候执行该方法。(与@PostConstruct区别之一)
2024-02-21 10:06:48 1984
原创 Mapstruct对象插入数据库某个字段总是为空或者赋值失败
1、因为mapstruct的原理是通过调用get方法获取源对象的值,再调用set方法赋值给目标对象(如图),所以源对象需要有get方法,目标对象需要有set方法。检查发现是目标对象没有写set方法也没有使用lombok的@Data注解。使用mapstruct进行对象间赋值时出现了赋值失败的情况,即赋值后新对象里面的所有属性都是空值,点击查看class。比如:addNum,如果字段是这样的,那么就总是null。如果字段是add开头命名的字段,那么就无法赋值,解决方法:我用最粗暴的方法,直接不用这个了。
2023-12-22 16:02:50 742
原创 【Mybatis-plus】updateById()方法不能更新字段为null的原因及解决办法---@TableField(updateStrategy = FieldStrategy.ALWAYS)
在日常项目开发过程中,经常会使用Mybatis-plus的updateById()方法,快速将接收道德参数或者查询结果中原本不为null的字段更新为null,并且该字段在数据库中可为null,这个时候使用updateById()并不能实现这个操作,不会报错,但是对应的字段并没有更新为null。设置好了之后,在更新时就可以直接使用mybatis-plus中的updateById方法就可以成功将字段更新为null,但是这样做存在一定的弊端,就是当需要这样处理的字段比较多时,要给对应的字段都要添加上这样的注解。
2023-12-22 15:53:03 1776 1
原创 mysql varchar类型字段为数字时,不带引号查询时查询结果与事实不符
mysql varchar类型字段为数字时,不带引号查询时查询结果与事实不符
2023-10-21 11:55:47 379
原创 mapstruct 部分字段不生成的问题
属性名称带add前缀则会不生成,要么去掉@Builder,要么把属性名add改了。使用mapstruct自动生成代码。有一个字段:addAmount。类上使用了@Builder注解。开发的时候遇到的坑。
2023-10-06 14:17:52 474
原创 Spring自动加载数据几种方式执行顺序
Spring应用启动过程中,肯定是要自动扫描有@Component注解的类,加载类并初始化对象进行自动注入。加载类时首先要执行static静态代码块中的代码, 之后再初始化对象时会执行构造方法。 在对象注入完成后,调用带有@PostConstruct注解的方法。 当容器启动成功后,再根据@Order注解的顺序调用CommandLineRunner和ApplicationRunner接口类中的run方法。因此,加载顺序为static>constructer>@PostConstruct&
2023-09-14 20:06:39 1143
原创 MySQL中如何计算时间相差的分钟数
本文介绍了MySQL中三个常用的函数用于计算时间相差的分钟数,它们分别是TIMEDIFF、TIMESTAMPDIFF和DATEDIFF函数。使用这些函数可以轻松地计算时间相差的分钟数,提高你的工作效率。使用TIMEDIFF函数可以计算两个时间相差的时间差,返回值是时间类型。使用DATEDIFF函数可以计算两个日期相差的天数,如果你需要计算分钟数,可以将天数乘以24再乘以60。DATEDIFF函数是MySQL中用于计算日期差的函数,但它也可以用于计算时间差。2. TIMESTAMPDIFF函数。
2023-09-06 10:08:57 5456
原创 java定时任务cron表达式每周执行一次,执行时间与实际时间不一样的坑!!!
java定时任务cron表达式每周执行一次,执行时间与实际时间不一样的坑!!!
2023-08-29 17:37:28 3957
原创 判断bigdecimal类型是正负数还是0+bigdecimal正负数转换
【代码】判断bigdecimal类型是正负数还是0+bigdecimal正负数转换。
2023-08-28 15:53:22 1061
原创 常见数据库批量插入,如何不插入重复数据?Mysql 4 种方式避免重复插入数据!
最常见的方式就是为字段设置主键或唯一索引,当插入重复数据时,抛出错误,程序终止,但这会给后续处理带来麻烦,因此需要对插入语句做特殊处理,尽量避开或忽略异常,下面我简单介绍一下,感兴趣的朋友可以尝试一下:这里为了方便演示,我新建了一个user测试表,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引:当插入数据时,如出现错误时,如重复数据,将不返回错误,只以警告形式返回。
2023-08-10 14:20:56 1775
原创 MySQL 手机选号(AABB、ABCD、DCBA、AAA),SQL SERVER 手机选号(AABB、ABCD、DCBA、AAA),通过规则查询靓号
MySQL 手机选号(AABB、ABCD、DCBA、AAA),SQL SERVER 手机选号(AABB、ABCD、DCBA、AAA),通过规则查询靓号
2023-08-10 11:52:07 113903
原创 MySQL登录时出现 Access denied for user ‘root‘@‘xxx.xxx.xxx.xxx‘ (using password: YES) 的原因及解决办法
分析原因:(区分)当本地出现这样的情况,就是密码错误,找到正确的密码或者修改密码;当远程登陆的时候,首先确定登陆密码是否正确,第二确定是否远程授权。例子:mysql> set password for root@localhost = password('123');格式:mysql> set password for 用户名@localhost = password('新密码');格式:mysqladmin -u用户名 -p旧密码 password 新密码。方法4:在忘记root密码的时候,可以这样。
2023-07-28 21:36:00 16216
原创 Could not find artifact org.springframework.boot的原因之一
完成之后pom.xml文件可能还会爆红,这时候需要重启idea。只要拉取不到,就是版本错了,可以去maven中央仓库查看版本号。的版本从2.5.4手动改成2.3.4时。
2023-07-28 21:34:42 3996
原创 关于swagger突然跳转登录页面,swagger打开跳转login页面BUG
关于swagger突然跳转登录页面,swagger打开跳转login页面BUG
2023-07-10 17:00:46 2616
原创 Stream通过findFirst()查找满足条件的一条数据,根据某个属性值获取一条数据
Stream通过findFirst()查找满足条件的一条数据,根据某个属性值获取一条数据
2023-07-07 19:06:39 7015
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人