11.28技术讨论

1.同类方法a、b,都注解了事务,a调用b,b抛出异常,a、b方法数据库操作会回滚吗?

结论:在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational)的方法,注解是不会生效的


spring 在扫描bean的时候会扫描方法上是否包含@Transactional注解,如果包含,spring会为这个bean动态地生成一个子类(即代理类,proxy),代理类是继承原来那个bean的。此时,当这个有注解的方法被调用的时候,实际上是由代理类来调用的,代理类在调用之前就会启动transaction。然而,如果这个有注解的方法是被同一个类中的其他方法调用的,那么该方法的调用并没有通过代理类,而是直接通过原来的那个bean,所以就不会启动transaction,我们看到的现象就是@Transactional注解无效
————————————————
版权声明:本文为CSDN博主「蜗行牛步1024」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/levae1024/article/details/82998386

2.工厂模式、责任链模式

工厂
https://gitee.com/jinlibing/example/tree/master/src/main/java/org/example/factory

责任链
https://gitee.com/jinlibing/example/tree/master/src/main/java/org/example/chain

3.联合索引生效业务场景,最左前缀匹配原则,in会用到索引吗?

联合索引生效业务场景:查询时有多个字段总是同时出现
最左前缀匹配原则:key index (a,b,c),可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找
in会用到索引吗:会

索引(a,b,c)select * from myTest  where a=3 and b>7 and c=3;     ---- b范围值,断点,阻塞了c的索引

select * from myTest  where b=3 and c=4;   --- 联合索引必须按照顺序使用,并且需要全部使用,这里没有a

最后说说索引失效的条件
不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描
存储引擎不能使用索引范围条件右边的列
尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select *
mysql在使用不等于(!=或者<>)的时候无法使用索引会导致全表扫描
is null,is not null也无法使用索引
like以通配符开头(’%abc…’)mysql索引失效会变成全表扫描的操作。

引用 https://zhuanlan.zhihu.com/p/108179618

4.linklist为什么add update remove效率高

基于双向链表实现,只需要修改插入位置或删除位置左右数据的引用目标即可

5.java 8 lambda去重

List<String> myList = list.stream().distinct().collect(Collectors.toList());

6.遇到什么问题怎么解决


-- mysql 默认设置

show variables like 'group_concat_max_len';

-- 
SET GLOBAL group_concat_max_len = 102400;
SET SESSION group_concat_max_len = 102400;

7.mybatis $ #区别?

#{}方式能够很大程度防止sql注入(安全),${}方式无法防止Sql注入


https://blog.csdn.net/qq_44543508/article/details/97106696

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值