java基础新

目录

集合总结

​编辑Java异常体系

 常见的运行时异常?

Object类有哪些方法

​编辑权限修饰符

分布式锁

Redis和Zookeeper实现分布式所哪个效率高

分布式事务

事务失效的8种原因

TCC 如果出现网络连不通怎么办?

CAP理论

CAP有哪些组合方式?

分布式事务解决方案

集群部署时的分布式 Session 如何实现

接口和抽象类的区别

方法重载和方法重写的区别

==和equals的区别

Java中的static关键字解析

Java中finally关键字解析

Java中创建对象的方法

深拷贝和浅拷贝

秒杀系统如何设计?高并发下会出现什么问题?


集合总结

在这里插入图片描述
Java异常体系

 在这里插入图片描述

 
常见的运行时异常?


1.NullPointerException 空指针异常
2.ClassNotFoundException 指定类不存在
3.NumberFormatException 字符串转换为数字异常
4.IndexOutOfBoundsException 数组下标越界异常
5.ClassCastException 数据类型转换异常
6.FileNotFoundException 文件未找到异常
7.NoSuchMethodException 方法不存在异常
8.IOException IO 异常
9.SocketException Socket 异常

Object类有哪些方法

在这里插入图片描述
权限修饰符

 在这里插入图片描述


分布式锁


实现分布式锁的三种方式
1.基于数据库实现分布式锁 基于数据库的实现方式的核心思想是:在数据库中创建一个表,表中包含方法名等字段,并在方法名字段上创建唯一索引,想要执行某个方法,
就使用这个方法名向表中插入数据,成功插入则获取锁,执行完成后删除对应的行数据释放锁。
2.基于缓存(Redis等)实现分布式锁 SETNX expire delete
(1)获取锁的时候,使用setnx加锁,并使用expire命令为锁添加一个超时时间,超过该时间则自动释放锁,锁的value值为一个随机生成的UUID,通过此在释放锁的时候进行判断。当且仅当 key 不存在,将 key 的值设为 value ,并返回1;若给定的 key 已经存在,则 SET NX 不做任何动作,并返回0。
(2)获取锁的时候还设置一个获取的超时时间,若超过这个时间则放弃获取锁。
(3)释放锁的时候,通过UUID判断是不是该锁,若是该锁,则执行delete进行锁释放。
3.基于Zookeeper实现分布式锁 zooKeeper是一个为分布式应用提供一致性服务的开源组件,它内部是一个分层的文件系统目录树结构,规定同一个目录下只能有一个唯一文件名


分布式事务


事务失效的8种原因


1、spring的事务注解@Transactional只能放在public修饰的方法上才起作用,如果放在其他非public(private,protected)方法上,虽然不报错,但是事务不起作用
2、如使用mysql且引擎是MyISAM,则事务会不起作用,原因是MyISAM不支持事务,可以改成InnoDB引擎
3、在业务代码中如果抛出RuntimeException异常,事务回滚;但是抛出Exception,事务不回滚;
4、如果在加有事务的方法内,使用了try…catch…语句块对异常进行了捕获,而catch语句块没有throw new RuntimeExecption异常,事务也不会回滚
5、在类A里面有方法a 和方法b, 然后方法b上面用 @Transactional加了方法级别的事务,在方法a里面 调用了方法b, 方法b里面的事务不会生效。原因是在同一个类之中,方法互相调用,切面无效 ,而不仅仅是事务。这里事务之所以无效,是因为spring的事务是通过aop实现的。解决方法:

@Service
public class OrderServiceImpl implements OrderService {
   
   @Autowired
   private OrderService orderService;

    @Transactional
    public void update(Order order) {
        orderService.updateOrder(order);
    }

    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public void updateOrder(Order order) {
        // update order
    }

}


6.数据源没有配置事务管理器

@ComponentScan("com.alanchen")
@EnableTransactionManagement
@Confi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值