踩坑

2021/1/17
Integer问题,
所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较
在学到CAS时,验证ABA问题,使用包装类Integer,使用的时候忘记规范,加深印象
Integer范围为-128~127,在超出范围的值会在堆上新声明对象,不会堆以前的对象复用,但是compareAndSet()源码使用 == 进行比较的,会造成由于地址值不同而造成赋值失败的情况。
阿里巴巴开发手册中这样描述:

【强制】所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较。
说明:对于 Integer var = ? 在-128 至 127 范围内的赋值,Integer 对象是在
IntegerCache.cache 产生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行
判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑,
推荐使用 equals 方法进行判断。

2021/1/20
在学习mybatis源码过程中,解析mybatis注解中的String时,在lambda表达式中使用了超出表达式的int类型,

        int index = 0;
        Arrays.asList(parameters).forEach(parameter -> {
            String name = parameter.getName();
//            System.out.println("name:" + name);
            nameArgMap.put(name, args[index++]);
        });

错误提示:Variable used in lambda expression should be final or effectively final
Lambda表达式中使用的变量应为Final或有效Final

2021/2/25
在mybatis的动态SQL中需要特别注意,当采用标签时,当含有多个标签,需要将标签中的SQL需要写上and,当只有一个条件成立时标签会自动进行去除and、or
w3cschool中对标签是这样描述的:where 元素知道只有在一个以上的if条件有值的情况下才去插入"WHERE"子句。而且,若最后的内容是"AND"或"OR"开头的,where 元素也知道如何将他们去除。

2021/2/25
pgsql中concat可以直接进行对三个字符串进行拼接
但是在Oracle中拼接字符串需要进行concat的嵌套
比如,like concat(concat(“1”,“2”),“3”)

2021/2/26
在clone项目的时候遇见

Error creating bean with name ‘flywayInitializer’ defined in class path resource
出现这个问题的原因是,由于本地的sql与运行现场的sql不同,导致cheksum问题

纠错:这里的问题主要是数据库中版本check sum值不一致导致的。

解决办法,网上普遍为修改数据库中的checksum值与提交的版本号一致,但是在真正开发中并不能修改运行现场的数据库

在求教了公司大佬后,给出三种办法
法一:项目中的db文件必须和运行现场保持一致,重新clone一份代码
法二:修改flyway的版本,让flyway版本更高。
法三:flyway的enabled改为true(不推荐使用),会直接禁止到flyway服务

2021/3/10
对数据库插入十万条数据,出现错误,提示主键已经存在
代码出现错误,集合中每次都是用同一个对象,使用pgsql插入的时候会造成每次插入同一个对象导致插入失败。

2021/3/26
字段代表的String值太长,数据库使用varchar(255)进行存放。会出现超出长度限制的异常。
我对字段进行了.varchar(1000),但是依旧会有超出的错误。大佬说直接使用text,
在查询了PGSQL后得知,varchar的最大长度为1GB属于有限制最大程度的,属于可变长的。text的是可边长度,无限制的

2021/4/2
将模块走微服务的时候经过feign进行调用httpapi的时候使用多媒体流文件会导致报500,因为feign的默认Encoder不会对文件进行解析,有两种方法,第一种直接将流文件解析放在api层,在进行http api调用时直接传入数据。第二种是进行配置文件,这种方法需要了解feign的运行机制,昨天尝试配置并未成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值