今天主要学习了关于Java的基础知识,关于final/static以及事务的相关知识。
由于基础知识的薄弱,需要对java基础进行巩固以及能够更加准确的表达相关知识点,才有现在这些白话理解的描述。
1、final关键字
final关键字有三个主要特点:
①被修饰的类不可被继承。
②被修饰的方式不可被重写。
③不可变修饰的变量不可被改变。
其中的重点是:被修饰的引用不可变而引用所指向的内容是可以改变的。
2、static关键字
首先是关于加载顺序,静态资源是在类初始化的时候加载,而非静态资源在使用new的时候加载。
其次关于三个问题:
①静态方法能否引用非静态资源?
②静态方法能否引用静态资源?
③非静态方法能否引用静态资源?
------------------------------------------------------------------------------------
①不能,因为静态方法是在类初始化的时候进行加载,非静态资源需要通过new才会存在。
②能。因为都是在类初始化的时候进行加载,都存在。
③能,因为非静态资源通过new产生,而静态资源早已存在。
再者关于static的一些小问题:
① 静态资源的执行顺序是严格按照代码的排列顺序进行执行。
②不能修饰类,但是被修饰一般是内部类。
③父类静态资源代码-->子类静态资源代码的执行顺序。
④静态资源代码只会执行一次,且在类初始化的时候进行执行。
3、事务
所谓的事务具有四个特性:ACID
原子性:具有不可分离性,指的是所有事务要么全部执行成功,要么全部不执行。
一致性:指的是事务的执行使得数据库从一种正确的状态换成另一个正确的状态。
隔离性:在事务正确提交之前,不允许将事务对该数据的修改提供给其他事务。
持久性:事务正确提交之后,结果永远保存在数据库中。
并发事务可能产生的问题:
①第一类丢失更新:事务A撤销事务,覆盖事务B提交的数据。
②第二类丢失更新:事务A提交事务,覆盖事务B提交的数据。
③脏读:事务A读到事务B还没有提交的数据。
④不可重复读:在一个事务里读取两次某数据,且两次读出的数据不一致。
⑤幻读:在一个事务里面的操作中发现未被操作的数据。
事务隔离级别:
①default:根据不同数据库设置不一样。
②read_uncommitted:读未提交,不能解决脏读、不可重复读、幻读的问题。
③read_committed:读提交,可解决脏读问题,但是不能解决不可重复读、幻读问题。常使用这个。
④repeatable_read:重复读取。可解决脏读、不可重复读问题,但是不能解决幻读问题。
⑤serlalizable:串行化。三个问题都可以解决。