- 博客(128)
- 问答 (3)
- 收藏
- 关注
原创 关于BigDecimal计算除法的精度问题
所以后两种其实是divide的时候结果算出来时5.547-》保留一位变成5.5然后setScale生效,补一个0变成5.50。随后在加上setScale就不会有问题了。
2025-04-15 18:29:26
255
原创 feign拦截器interceptor的一些使用问题
还有一种情况比较少见,就是token是需要刷新的,每次请求的时候我们要先去看redis或者sql里有没有token,没有就需要去获取。你需要调用interceptor本身去拦截的proxy里边的方法去获取token,这就会出现循环依赖的问题,你就需要用@Lazy注解。但是真的不推荐这种写法,虽然使用没问题,但是不美观简洁。1.在proxy调用的时候先判断token有没有,没有就去获取,保证interceptor进去的时候一定有,这样interceptor就可以只依赖redis或者db。
2025-03-26 15:27:09
295
原创 feign配置超时时间
但是在你配置client的时候也可以配置对应的超时时间等参数,options也是可以配置,那二者同时配置的时候到底哪个配置会生效呢?我之前一直很疑惑,知道有一次,option我配置了2s读取超时,client里边是10s,但是最后2s就报错了,我就猜是option的配置会优先,追了一下源码,发现真的是。里边会比较options和client里边的配置是否相等,不相等的话用的就是options里边的配置。feign有很多可配置化参数,其中一个是options,另外一个是client。
2025-01-07 16:02:54
267
原创 feign验签不通过,但是postman没问题
正确的做法就应该是,feign的计算签名这些都通过拦截器来实现,从拦截器里边取出来payload或者body。测试一个外部api的时候发现,同样的签名方法和payload,放在postman请求完全没问题,curl也能通过,但是到了feign就签名错误。而feign是@Headers这种指定header而不是拦截器的方式,计算签名用的是jsonObject,所以导致二者对不上,签名不通过。但是,在feign传参数的时候,因为body是json,会进行序列化,变成。百思不得其解,后来发现了问题。
2024-12-25 18:26:06
528
原创 EasyExcel读取excel中的日期单元格,并且自动判定终止读取
最重要的是判断终止条件的地方,因为第一个表和第二个表不一样,所以第一个表的列不在第二个表格中,读取到第二个表对应实体类属性就是null,所以在invoke方法里加了条件。个人在工作中遇到一个需求,读取第三方的对账文件,但是对账文件中的日期的单元格格式不是文本,这样读出来就会是一个数字,表示的是1990年1月1日距今的天数。最初朴素的想法是读取出来数字,然后用Date接受,这样就知道需要excel对应的这串数字其实是日期,然后再自定义的listener里边定义converter做日期转换。
2024-11-07 14:40:52
562
原创 git merge没有生成合并提交
这是因为当执行合并操作时,如果目标分支的提交历史是源分支的直接延续(即,目标分支没有新的提交且位于源分支的历史之前),Git 会通过将目标分支的 HEAD 指针直接移动到源分支的最新提交来实现合并。这种情况下,不会生成一个新的合并提交。在这种情况下,如果你从 master 分支执行 git merge feature 命令,Git 会将 master 直接移动到 D,不会生成一个单独的合并提交,这就是快速前进合并。但是可以通过命令强制生成合并提交。
2024-10-23 18:14:21
617
原创 Mockito单元测试的坑
使用的是mockito以及junit4,发现在处理基本类型的时候,处理的不是很好,比如我有个方法的入参是int,以及BigDecimal,所有的基本类型,都要用Mockito 提供的相应的参数匹配器,如 anyInt()、anyLong()、anyBoolean()。但是我在mock的时候用any(),any(),会提示我NPE,但是使用anyInt(),any()去匹配两个入参,就没有问题。
2024-10-19 11:43:15
237
原创 easyExcel写入excel报错com.alibaba.excel.exception.ExcelGenerateException: java.lang.ExceptionInInitializ
这个报错有很多原因,最重要的是要看你的causedBy后边是什么,比如我的这个完整的异常栈信息是:com.alibaba.excel.exception.ExcelGenerateException: java.lang.ExceptionInInitializerError at com.alibaba.excel.write.ExcelBuilderImpl.addContent(ExcelBuilderImpl.java:65) ~[easyexcel-3.0.5.jar:?] at com.a
2024-08-27 17:23:01
1250
1
原创 Collections.singletonList()方法的小坑
这个方法进行转换,但是要注意,如果你进行转换的参数是null,最后生成的list不是空list,而是size为1有一个元素是null的list,这个时候加入你进行get或者其他操作是有可能触发NPE的。因为传递的参数要求是list,而我这边需要经常把单元素转为List,所以。
2024-07-03 15:42:31
386
原创 mvn编译所有单元测试报错OOM
怀疑是我的IDEA窗口开了太多,关了其他窗口只留了当前项目,结果就可以了。我在编译的时候运行了所有的单元测试,结果就报了这个错,1.修改IDEA的运行内存,调大到了8192M。修改完重启仍然有这个错误,用了第二种方法。但是单独运行这个单元测试是没问题的。
2024-05-17 18:29:08
619
原创 项目启动报错LoggerFactory is not a Logback LoggerContext but Logback is on the classpath
这种提示就是报的冲突,建议直接用maven依赖视图,搜索报错信息中提示的jar,例如我这个就是log4j-slf4j-impl,去每一个pom中找到引用这个jar的包,然后exclusion这个包,最后只留一个即可。
2024-05-11 17:52:33
1059
原创 mybatis注解方式if标签报错元素内容必须由格式正确的字符数据或标记组成
mybatis注解方式@Select使用if标签报错元素内容必须由格式正确的字符数据或标记组成
2024-03-27 18:29:01
494
原创 java.lang.IllegalAccessError: class lombok.class lombok.javac.apt.LombokProcessor报错解决
项目lombok版本是其他依赖里边指定的,我没有办法更改(也可以exclude他们的lombok版本我再显示引用高版本的,但是这样一是太麻烦,二是不知道高版本是否向下兼容容易出问题),所以我检查了自己的IDEA中的project Structure,但是我发现配置的都是1.8版本,理论上1.8之上版本才会有这个问题,百思不得其解。后来看到有的博客说,maven编译的时候使用的jdk版本是环境变量中的jdk版本,赶紧去终端中执行命令。解决方法就是在mac的系统变量中手动降级jdk的版本。,结果显示是17.。
2024-03-01 21:32:43
3178
原创 feign配置方式
之前一直是写一个config文件对feign的相关功能进行配置,包括连接时间啊,线程数啊,重试次数,拦截器等。中的name属性后边的值,如果配置的name属性在yaml文件中找不到对应值,则会进入default配置。注解,否则会加载两次,怀疑是yaml配置后就自动生成一个bean了,如果再加注解,就会生成两个?另外,这个地方配置拦截器的话不需要在拦截器的class文件中加上。其中配置中的cnt-plat对应的是。
2023-05-04 10:50:28
490
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人