spring|Java程序员必会的三个技能: Spring+MySQL+并发编程( 五 )


隔离级别:指的是一个事务与其他事务的隔离程度 。 隔离级别越高 , 则并发能力越弱 。
(1)Read Uncommitted(读未提交):即读取到 未提交的内容 。
一般不使用 。 此隔离级别下 , 查询不会加锁 , 即可能存在两个事务操作同一个表的情况 。 可能会导致 “脏读”、“不可重复读”、“幻读” 。
(2)Read Committed(读提交):即只能读取到 已提交的内容 。
常用(oracle、SQL Server 默认隔离级别) 。 此隔离级别下 , 查询采用 快照读 的机制 , 即不会读取到未提交的数据 , 从而避免 “脏读” , 但是仍可能导致 “不可重复读”、“幻读” 。
(3)Repeatable Read(可重复读)
常用(mysql 默认隔离级别) 。 此隔离级别下 , 查询采用 快照读 的机制 , 且事务启动后 , 当前数据不能被修改 , 从而可以避免 “不可重复读” , 但是仍可能导致 “幻读”(新增或删除某条数据) 。
(4)Serializable(串行化)
一般不使用 。 此隔离级别下 , 事务会串行化执行(排队执行) , 执行效率差、开销大 。 可以避免 “脏读”、“不可重复读”、“幻读“ 。
【举例:】
select @@transaction_isolation; -- 用于查看当前数据库的隔离级别(8.0版本)
set session transaction isolation level read committed; --用于设置隔离级别为 read committed

7.说说自增主键、UUID?
(1)自增主键 , 数据在物理结构上是顺序存储 , 性能好 , 占用空间小 。 可以是 int 和 bigint 类型 。 int 4字节 , bigint 8 字节 , 项目中理论不应出现 自增主键达到最大值的情况 , 因为数据太大 , 效率会大大降低 , 当出现一定的数据量后 , 应进行分库分表操作 。
(2)UUID , 数据在物理结构上是随机存储 , 性能较差 , 占用空间大 。 唯一ID , 绝不冲突 。
三、Spring
1. 什么是 Spring IOC 容器?
Spring 框架的核心是 Spring 容器 。 容器创建对象 , 将它们装配在一起 , 配置它们并管理它们的完整生命周期 。 Spring 容器使用依赖注入来管理组成应用程序的组件 。 容器通过读取提供的配置元数据来接收对象进行实例化 , 配置和组装的指令 。 该元数据可以通过 XML , Java 注解或 Java 代码提供 。
2. 什么是依赖注入?在依赖注入中 , 您不必创建对象 , 但必须描述如何创建它们 。 您不是直接在代码中将组件和服务连接在一起 , 而是描述配置文件中哪些组件需要哪些服务 。 由 IoC 容器将它们装配在一起 。
3. 可以通过多少种方式完成依赖注入?
通常 , 依赖注入可以通过三种方式完成 , 即:
构造函数注入
setter 注入
接口注入
在 Spring Framework 中 , 仅使用构造函数和 setter 注入 。
4. 区分构造函数注入和 setter 注入 。 5. spring 中有多少种 IOC 容器?BeanFactory - BeanFactory 就像一个包含 bean 集合的工厂类 。 它会在客户端要求时实例化 bean 。
ApplicationContext - ApplicationContext 接口扩展了 BeanFactory 接口 。 它在 BeanFactory 基础上提供了一些额外的功能 。
6. 区分 BeanFactory 和 ApplicationContext 。8. 什么是 spring bean?
它们是构成用户应用程序主干的对象 。
Bean 由 Spring IoC 容器管理 。
它们由 Spring IoC 容器实例化 , 配置 , 装配和管理 。
Bean 是基于用户提供给容器的配置元数据创建 。
9. spring 提供了哪些配置方式?
基于 xml 配置
bean 所需的依赖项和服务在 XML 格式的配置文件中指定 。 这些配置文件通常包含许多 bean 定义和特定于应用程序的配置选项 。 它们通常以 bean 标签开头 。 例如:
<bean id=\"studentbean\" class=\"org.edureka.firstSpring.StudentBean\">        <property name=\"name\" value=https://mparticle.uc.cn/"Edureka\"></property>    </bean>


推荐阅读