问题
文章平均质量分 63
每天进步亿点点的小码农
Later equals never
展开
-
java.lang.IllegalStateException Expected lazy evaluation to yield a non-null value but got null!
最近一个老项目线上出现一个问题,偶发性的出现mongo入库没有入成功,查看日志,得到如下报错:首先找到报错的那行代码 类的 方法的97行这里的value返回了null,继续看 方法正常情况应该返回的是 的返回值,在 类的 ,可以看到这个 相当于一个懒加载的方式,如果正常走到 是不可能返回 的,所以一定是 是 ,导致走到了if语句里,返回了,我们看下这几个变量的初始化值虽然 初始化是 ,但是 是 分析下这里代码的用处,通过 来做一个懒加载的标记,一开始 是 ,代码会跳过if,给 赋值原创 2024-10-30 20:30:00 · 702 阅读 · 0 评论 -
Failed to instantiate [org.dromara.dynamictp.core.executor.DtpExecutor] Constructor threw exception
今天开发好的功能上到测试环境测试,服务启动后报错,开发环境启动正常,报错如下:首先根据报错可以知道是dynamic-tp动态线程池相关的报错,这次开发也确实用到了动态线程池,配置如下:再结合报错日志中ThreadPoolExecutor.java类的第1311行通过抛这个异常的if条件,可知大概率是满足了 这个条件,导致抛了异常,由于配置中未配置 ,所以 取的默认值在dynamic-tp的配置类 中可以找到如下代码再到常量类 中找到如下代码:最后可以知道取值为 这是获取java虚拟机的可用处理器数,原创 2024-10-30 11:05:50 · 785 阅读 · 0 评论 -
EasyExcel的CellWriteHandler注入CellStyle不生效
类里发现确实有覆盖样式的操作,如下图:(ps:原本的2.2.7版本里是没有这个类的)方法,看这个方法名就能看出来,还要对 handler 进行排序和清理,再看下面。, 再排序清理一次,看到这里大概可以猜到了,估计我们自定义的。最近发现原本项目的导出excel功能中,写的那些。,经过排序清理之后,并不在最后,样式估计被后面的。,版本跨度比较大,所以怀疑是升级导致的问题。要解决问题,很简单,只要让我们自定义的。覆盖了,我们看下排序清理后的结果。,这3个逐个看了下源码,最终在。的源码,我们注册自定义的。原创 2024-05-17 18:53:26 · 1803 阅读 · 2 评论 -
Mysql死锁问题Deadlock found when trying to get lock;try restarting transaction
表的排他锁(lock_mode X),相当于两个事务都在等对方持有的排他锁,于是就死锁了。先去服务器上,看看死锁的日志,找到 mysql 的安装路径,使用如下命令登录 mysql。mysql -h 数据库IP地址 -P 数据库端口 -u 用户名 -p 库名。表的排他锁(lock_mode X),而事务2在根据主键ID更新。可以看到事务1在根据主键ID更新。去看了下代码,操作步骤如下。增加分布式锁,让并发不存在。1、根据主键ID更新。2、根据主键ID更新。3、根据主键ID更新。原创 2024-01-08 14:06:03 · 3421 阅读 · 0 评论 -
如何更新mongo每个数组中对象里的某个属性
最近项目中需要修复 mongo 中的数据,需要更新数组中对象的某一个属性,于是学会了一个 mongo 语句,记录下。现在我需要把订单号是 2024010500003 的订单里的两条菜品里的 foodNum 改成1。原创 2024-01-08 14:05:12 · 656 阅读 · 0 评论 -
nacos报错com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: io exception
因为我们现在项目用的 nacos 做注册中心,后台开发想和前台开发做联调时,后台开发需要起多个服务,很麻烦,加上最近架构师在搞灰度发布,我这边就顺便利用他的这个灰度发布,来简化本地的联调方式,所以就需要把开发的服务注册到测试环境的 nacos 上,在启动服务的时候,出现了这个报错:com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: io exception。所以原因就是 nacos 的9848端口没有映射出来导致。原创 2024-01-12 18:54:57 · 8959 阅读 · 1 评论 -
MongoDB查询字符串日期列等于系统日的数据
帮项目组同事写一个sql,要求查询出业务日期等于系统日的数据,因为项目中业务日期字段用的是字符串格式,于是不知道怎么写,求助我,想到mongo是支持js脚本的,于是用js脚本先写了一个求当天日期字符串的函数,再去查询。把脚本里的 collection 改成自己的集合名,businessDate改成自己的字段名称。原创 2023-05-25 22:43:07 · 318 阅读 · 0 评论 -
MyBatisPlus批量写入方法saveBatch速度很慢的解决方案
项目组在使用MyBatisPlus的批量插入方法saveBatch时速度缓慢,插入1w条数据,需要近1分钟的时间。原创 2023-05-25 22:39:22 · 6320 阅读 · 0 评论 -
MongoDB的Decimal128类型转换成Java的BigDecimal类型错误
项目组在使用mongo时,报类型转换错误,具体报错如下:org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [org.bson.types.Decimal128] to type [java.math.BigDecimal]原因是 MongoDB 的 Decimal128 类型无法转换成 Java 的 BigDecimal 类型导致可以原创 2023-05-19 18:38:29 · 737 阅读 · 0 评论 -
Java如何查询线程信息,jps、jstack、jmc、jvisualvm的运用
4、也可以使用jstack pid > 文件名.txt 把线程信息写入到文件里,如jstack 33280 > 33280.log,这样会在当前目录生成一个名叫33280.log的文件,“>”后面也可以跟一个路径+文件名,比如:stack 33280 > D:\33280.log,这样文件会生成到对应的目录。1、打开cmd命令行,进入到jdk的bin目录下,如:D:\Program Files\Java\jdk1.8.0_171\bin。jdk的bin目录下会自带一个jmc.exe的程序,我们直接打开。原创 2023-03-12 11:59:07 · 3354 阅读 · 0 评论 -
SpringBoot项目启动卡死问题调查
发现key1会走第12行和第21行,在21行会调用Lambda表达式等待结果,这时候key2会进来,发现key1已经占住了位置,会走36行的else里,而key2不满足39行和61行的if条件,循环中没有可以跳出的地方,就陷入了死循环。后来我就好奇,为什么就会卡死了呢,为什么不报错,看栈信息,最后应该是卡死在了ConcurrentHashMap的computeIfAbsent方法上,于是就去跟了下源码,找到了调用computeIfAbsent方法的地方,是ConcurrentMapCache的get方法。原创 2023-03-11 16:56:48 · 3694 阅读 · 4 评论 -
Mysql报错Can‘t create/write to file ‘/tmp/#sql_3a8_0.MYD‘ (Errcode: 28 - No space left on device)
Mysql报错Can't create/write to file '/tmp/#sql_3a8_0.MYD' (Errcode: 28 - No space left on device)原创 2023-03-07 21:11:45 · 1979 阅读 · 0 评论 -
后端返回前端Long类型的数据会发生变化
后来分析后决定,把Long转成String类型给到前台,方案就是在实体类id字段上增加注解,因为系统使用的是jackson,所以加上@JsonFormat(shape = JsonFormat.Shape.STRING)就可以了。今天在开发的过程中发现,后端有个Long类型的id,返回到前端,数值发生了变化,调查后发现是因为超过了前端能接收的最大数值,从而导致精度丢失。原创 2023-03-04 09:58:42 · 3098 阅读 · 0 评论