面试学习(4)

学习目标:

  • Java面试题
  • MySQL面试题
  • Redis面试题

学习内容:

2024-01-25:

  • mybatis中#{}和${}的区别
  • Spring事务什么时候会失效
  • 负载均衡算法有哪些

具体内容:

mybatis中#{}和${}的区别

概念

#{}是预编译处理、是占位符,${}是字符串替换,是拼接符

Mybatis在处理#{}的时候,会将sql中的#{}替换为?号,调用PreparedStatement来赋值

Mybatis在处理${}的时候,会将${}替换为变量的值,调用Statement来赋值;

使用#{}可以有效防止SQL注入,提高系统安全性


Spring事务什么时候会失效

概念

spring事务的原理是AOP,进行了切面增强,失效的根本原因就是AOP切面不起作用了

场景

1、发生了自调用,类里面使用了this调用本类的方法,此时这个this不是代理类,而是对象本身,需要将this变成类的代理类即可

2、方法不是public,@Transactional只能用于public方法上,否则会失效,非public方法可以开启AspectJ代理模式

3、数据库不支持事务

4、没有被spring管理

5、异常被吃掉,事务不会回滚

负载均衡算法有哪些

1、轮询:按照顺序将请求均衡的分配到所有的服务器上,不关心任何服务器状态

2、随机:通过系统随机函数,根据后台列表的大小值随机选取一台进行访问

3、源地址哈希值:获取客户端IP,使用哈希函数算法得到要访问服务器的序号,同一个IP在服务器列表没有发生改变的情况下,永远只会访问指定的那一台服务器

4、加权轮询:不同的服务器配置不同,可以设置权重,多分配请求给权重高的服务器

5、加权随机:同加权轮询一样,可对指定服务器多分配请求

6、最小连接数:相对而言最灵活的一种算法,针对不同配置的服务器配置,请求处理速度等连接情况,动态分配一台积压连接数最小的服务器来处理情况,尽可能的提高后台服务器的利用效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值