spring cloud 集成nacos后配置加载优先级
项目中使用nacos统一管理配置,在本地开发时需要修改配置,发现启动时添加-Dxx=xx
并不生效。
项目中使用nacos统一管理配置,在本地开发时需要修改配置,发现启动时添加-Dxx=xx
并不生效。
最近有一条sql因为jar依赖的问题导致异常,以前旧版本是正常的,如下:
1 | -- 建表 |
现在需要改造该sql,改造如下:
1 | select SUBSTRING_INDEX(SUBSTRING_INDEX(t.product_ids, ',', nums.n), ',', -1) id,t.activity_id |
新sql看起来更复杂了,先是group by后group_concat数据,然后把逗号分割的列转换为行。
这种处理方法有一点问题是,group_concat如果太长会截取一部分。如果取的前几个较多,会取不到数据,截取长度可配置。
一次项目依赖版本变动,导致mybatis返回的字段变为空值。
查询sql如下:
1 | <select id="findFreshActivity" parameterType="int" resultMap="freshActivity"> |
映射如下:
1 | <resultMap id="freshActivity" type="com.feiniu.common.po.FreshActivity"> |
发现返回的对象里面id有值,activityName为null。
父类想获取子类上的泛型,如下:
1 | public abstract class AbsFileHandle<T> { |
解决办法有多种:
有个项目最开始gradle,打算边写边学习,最近不知道为什么一直编译失败,一直没找到原因。索性又改为maven了,在改的时候springboot采用的是3.1.5
,里面的spring版本是6.0
。在改为maven时顺手改为3.2.1
,之后调用接口一直失败。提示
1 | exception Name for argument of type [java.lang.Integer] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the |
其实在spring wiki里面有写,升级注意事项,之前没看见,后面才注意,因为LocalVariableTableParameterNameDiscoverer
在spring6.1里面已经删除。
Upgrading-to-Spring-Framework-6.x
Spring-Boot-3.2-Release-Notes
以前LocalVariableTableParameterNameDiscoverer
是会读取解析对象class文件后通过LocalVariableTable
拿到参数名称。
为了兼容老旧电脑,公司前端统一使用的vue2,项目种采用scss的老旧版本,导致当前win10版本需要python2来编译,本地电脑有一堆python3和node18项目,不想破环当前项目环境,所有打算通过docker启动。
docker容器镜像采用的是node:14.14-alpine3.10,在Alpine’s Python 2 Package is Deprecated 有说明alpine 3.12已经不使用python2了,所以直接使用3.10版本。
上次发现因为数据库获取新的连接超时,其实是对数据做存在更新不存在做插入。想到对于更新不同数据速度相差多少。
暂时有4种更新方法。
一个个更新
1 | update simple set code=#{item.code} |
采用batch批量更新,sql如上,只是批量提交请求。
拼装更新sql为一个大的sql
1 | <foreach collection="datas" item="item" separator=";"> |
对于mysql,需要添加allowMultiQueries=true参数
采用临时表关联更新
1 | update simple t, |
最近使用一个springboot项目采用默认的jackson序列化,配置参数如下
1 | spring.jackson.default-property-inclusion=non_null |
设置好后发现返回的Date类型,数据库时间是2023-11-06 16:24:40返回的时间是2023-11-06 08:24:40,时间少了8小时。
最开始以为是数据库采用PostgreSQL导致数据存储的时间有问题,查看数据库后数据正常。对数据进行debug后,找到是因为jackson对时间格式化时,采用的时区有误。