面试题30天打卡-day11

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 Tair(兼容Redis),内存型 2GB
简介: 面试题30天打卡-day11

1、MySQL 事务有哪些隔离级别、分别有什么特点,以及 MySQL 的默认隔离级别是什么?



读未提交:read uncommitted (最低的隔离级别) 《提交之前就可以读到》


事务A可以读取到事务B未提交的数据

可能会出现 脏读 (Dirty read)、不可重复度、幻读现象

理论情况下

读已提交:read committed (提交之后才能读到)


事务A只能读取到事务B提交之后的数据

解决了脏读现象,但它是不可重复读取数据

每一次读取到的数据是真实数据

可重复读:repeatable read (提交之后也读不到 :读取到开启事务时的数据。事务不结束数据就不会改变)


事务A开启之后,每一次在事务A中读取到的数据都是一致的。即使事务B修改数据,事务A中读取到的数据依然没有改变。

解决了不可以重复读问题

出现幻影读:读取的数据都是幻想

序列化 / 串行化:serializable (最高的隔离级别)


效率最高,解决所有问题


事务要进行排队,不能并发,并发新能低,开销大。


默认情况下MySQL的隔离级别为可重复读


面试官问到这个问题,可能想了解你对 MySQL 事务隔离级别的了解程度,以及你对事务隔离级别对数据的影响、如何选择合适的隔离级别等方面的理解。同时,也可能会考察你对数据库的基本概念和原理的掌握程度。

2、讲一下 Redis 的单线程模型,IO 多路复用是什么?


Redis 是一个基于内存的高性能 key-value 数据库,其单线程模型是指 Redis 在主线程中通过事件循环来处理客户端的请求和内部的任务。Redis 主线程通过阻塞式地监听文件描述符,来实现异步事件的处理。这种单线程模型可以避免多线程之间的竞争和加锁等问题,同时也可以让 Redis 轻松地实现高并发、高吞吐量的处理。


Redis 单线程模型中的 IO 多路复用是指利用操作系统的一些特性,通过同时监听多个文件描述符来实现同时处理多个连接的 I/O 操作。在 Redis 中,通过使用多路复用技术,主线程可以同时监听多个客户端的连接,当某个客户端的连接出现了 I/O 事件时,主线程便可以及时地处理该事件,从而提高了 Redis 的 I/O 效率。


在 Redis 的单线程模型中,虽然主线程只有一个,但是它可以通过 IO 多路复用技术来同时处理多个连接的 I/O 操作,从而实现高效的异步事件处理。

3、什么是 BIO、NIO、AIO?


BIO、NIO、AIO都是Java中网络编程的I/O模型。


BIO(Blocking IO )是JDK1.4之前的传统IO模型,特点就是同步阻塞等待数据,直到数据读取完毕才会返回结果,线程会一直阻塞在read/write 方法上,不能处理其他的IO请求,它的并发性能比较差。


NIO(Non-Blocking IO)是Java 1.4之后新增的IO模型,它支持同步非阻塞式的IO操作。NIO采用了多路复用器来处理IO请求,通过一个线程处理多个IO请求,实现了高并发处理。NIO主要有三个核心概念:Selector、Channel、Buffer。Selector负责监听多个Channel上的事件,Channel可以理解为对原始IO的封装,Buffer则是对数据的封装。


AIO(Asynchronous IO)是Java 1.7之后新增的IO模型,它支持异步非阻塞IO操作。与NIO不同的是,AIO在进行读写操作时不需要像NIO一样一直轮询,而是通过回调函数的方式在数据准备好后通知应用程序进行数据的读取,这样可以更加高效地利用系统资源,提高吞吐量。但是AIO在处理小文件和小数据量时的性能并不如NIO。


三者区别

BIO AIO NIO
处理IO方式 阻塞IO 非阻塞IO 异步IO
缺点 并发性能差 实现fu’z 虽弥补了并发能力,NIO代码比较复杂
适合场景 连接数较小且固定 链接数非常多且链接时间比较长 连接数多且变化较少


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
算法 安全 Java
面试题30天打卡-day29
面试题30天打卡-day29
50 0
|
Java 数据库连接 数据库
面试题30天打卡-day06
面试题30天打卡-day06
41 0
|
6月前
|
Kubernetes 调度 Docker
k8s面试题大全
本篇模拟面试官提问的各种docker,k8s问题,意在提高面试通过率,欢迎在评论区探讨,同步进步。
164 2
|
存储 NoSQL Java
面试题30天打卡-day24
面试题30天打卡-day24
39 0
|
存储 NoSQL 关系型数据库
面试题30天打卡-day20
面试题30天打卡-day20
61 0
|
负载均衡 NoSQL 安全
面试题30天打卡-day14
面试题30天打卡-day14
36 0
|
存储 缓存 NoSQL
【面试题系列】(一)
【面试题系列】(一)
|
Web App开发 前端开发 容器
【面试题总结3】
【面试题总结3】
常见面试题
面试题:请解释字符串比较之中 “ == ” 和 equals() 的区别?
44 1
|
前端开发
【面试题一】
【面试题一】