Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day04】——Java高级篇

简介: Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day04】——Java高级篇

7.SpringCloudAlibaba常用组件以及作用


Gateway网关:路由 用户鉴权

Nacos注册中心:服务注册与发现 配置中心

Sentinel熔断:服务流量控制和服务降级

Feign:远程调用

Dubbo:远程调用 高并发情况下  比Feign好用

Setea:分布式事务解决方案

Ribbon:负载均衡


8.事务的四大特性


简称ACID


A 原子性 事务是一个完整的操作 事务各步骤是不可分的 要么都执行 要么都不执行


C 一致性 事务完成的时候 数据必须处于统一状态


I 隔离性 对数据修改所有并发事务是隔离的 事务是独立的 它不应该以任何方式依赖于或影响其他


事务


D 永久性 事务完成后 它对数据库的修改永久保持  


9.Spring五个隔离级别


首先说一下事务并发会引起的三种情况


脏读


       A事务对一条记录进行修改 尚无提交 B事务已经看到了A的修改结果 若A发生回滚 B读到的数


据就是错误的


不可重复读


       A事务对一条记录进行修改 尚无提交 B事务第一次查询该记录 看到的是修改之后的结果 此时


A发生回滚 B事务又一次查询该记录 看到的是回滚的结果 同一个事务内 B两次查询结果不一致 这


就是不可重复读


幻读


       A事务对所有记录进行修改 尚未提交 此时B事务创建了一条新记录 A B都提交 A查看所有数


据 发现有一条数据没有被修改 因为这是B事务新增的 就像看到幻象一样 这就是幻读


非重复度和幻像读的区别:

       非重复读是指同一查询在同一事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时发生非重复读。


       幻像读是指同一查询在同一事务中多次进行,由于其他提交事务所做的插入操作,每次返回不同的结果集,此时发生幻像读。


       表面上看,区别就在于非重复读能看见其他事务提交的修改和删除,而幻像能看见其他事务提交的插入。


默认


       使用数据库默认隔离级别


读未提交


       事务尚无提交 其他事务可以看到该事务的修改结果 隔离级别最差,脏读、不可重复读、幻读


都不能避免。


读已提交


       事务只能看到其他事务提交之后的数据。可避免脏读,不可重复读、幻读无法避免。


不可重复读原因:A事务修改,B事务查询,A提交前和提交后,B事务看到的数据是不一致的。


幻读原因:A事务修改,B事务新增,B事务提交前,A事务已经提交。B事务提交后,A发现仍有


数据未修改。


可重复读


       一个事务多次查询,无论其他事务对数据如何修改,看到的数据都是一致的。因为A事务查询


数据时,若B同时在修改数据,A事务看到的永远是B事务执行前的数据。只有当A提交或者回滚之


后,看到的才是最新的被B修改知乎的数据。可避免脏读、不可重复读,幻读无法避免。


序列化        


       事务顺序执行,可避免脏读、不可重复读、幻读,但效率最差。因为A事务执行时,其他事务


必须等待。

20fe6a20247d408b90a89bae33856e66.png



相关文章
|
11天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
39 2
|
16天前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
21天前
|
存储 缓存 Oracle
Java I/O流面试之道
NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
Java I/O流面试之道
|
17天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
41 4
|
18天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
66 4
|
30天前
|
存储 Java 程序员
Java面试加分点!一文读懂HashMap底层实现与扩容机制
本文详细解析了Java中经典的HashMap数据结构,包括其底层实现、扩容机制、put和查找过程、哈希函数以及JDK 1.7与1.8的差异。通过数组、链表和红黑树的组合,HashMap实现了高效的键值对存储与检索。文章还介绍了HashMap在不同版本中的优化,帮助读者更好地理解和应用这一重要工具。
55 5
|
29天前
|
存储 Java
[Java]面试官:你对异常处理了解多少,例如,finally中可以有return吗?
本文介绍了Java中`try...catch...finally`语句的使用细节及返回值问题,并探讨了JDK1.7引入的`try...with...resources`新特性,强调了异常处理机制及资源自动关闭的优势。
21 1
|
1月前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
28 3
|
1月前
|
Java
Java面试题之cpu占用率100%,进行定位和解决
这篇文章介绍了如何定位和解决Java服务中CPU占用率过高的问题,包括使用top命令找到高CPU占用的进程和线程,以及使用jstack工具获取堆栈信息来确定问题代码位置的步骤。
108 0
Java面试题之cpu占用率100%,进行定位和解决
|
28天前
|
算法 Java
JAVA 二叉树面试题
JAVA 二叉树面试题
17 0
下一篇
无影云桌面