面试题30天打卡-day03

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
日志服务 SLS,月写入数据量 50GB 1个月
简介: 面试题30天打卡-day03

1、JDK 动态代理和 CGLIB 动态代理的区别是什么?


DK动态代理和CGLIB动态代理是Java中常用的两种代理模式实现方式,它们的主要区别在于代理对象的生成方式和应用场景。


JDK动态代理是基于Java反射机制实现的,在运行时动态生成代理类,在代理类中通过反射调用委托类的方法。JDK动态代理要求委托类必须实现一个或多个接口,代理对象实现了委托接口,具有与委托类相同的方法签名。JDK动态代理适合对单个接口进行代理。


CGLIB动态代理是通过在运行时动态生成子类的方式实现的,代理对象继承了委托类,重写了委托类的非final方法,并在方法中调用委托类的方法。CGLIB动态代理不要求委托类实现接口,代理对象具有与委托类相同的方法。CGLIB动态代理适合对类进行代理,特别是对没有实现接口的类进行代理。


JDK动态代理和CGLIB动态代理都有各自的优缺点,应根据具体情况选择合适的代理方式。JDK动态代理实现简单,代码清晰,但要求委托类实现接口;CGLIB动态代理可以代理非接口类,但生成的代理对象的性能相对较低,生成代理类的时间也比JDK动态代理长。

2、MySQL 日志有了解过吗?binlog、redolog、undolog 分别有什么作用、有什么区别?


MySQL是一个关系型数据库管理系统,具有许多复杂的机制来确保数据的一致性、可靠性和安全性。其中,MySQL日志机制是实现这些目标的重要手段之一,常用的日志包括binlog、redolog和undolog。


binlog(二进制日志)

binlog是MySQL的归档日志,记录了所有的数据库更新操作,包括数据增删改等。binlog文件可以被用来实现数据备份、数据同步等功能。binlog文件记录的是SQL语句的逻辑操作,而不是具体的数据内容,因此它相对较小。


redolog(重做日志)

redolog也是MySQL中的一种日志,记录了MySQL引擎执行的所有更新操作。redolog记录的是物理操作,即修改了哪些数据块,而不是具体的SQL语句。redolog是MySQL引擎层的日志,具有很高的写入性能,因为redolog是在内存中缓存的,写入时不需要进行磁盘I/O操作。当MySQL意外宕机时,redolog中的日志将用于数据的恢复。


undolog(撤销日志)

undolog是MySQL中用来实现事务回滚和MVCC(多版本并发控制)机制的日志。undolog记录了事务执行过程中修改的数据的前一个状态,当回滚事务时,MySQL将根据undolog中的信息将数据恢复到事务执行之前的状态。undolog是MySQL引擎层的日志,与redolog一样,也是在内存中缓存的。


区别:


binlog是用来实现数据备份和恢复、数据同步等功能的,记录的是SQL语句的逻辑操作,而redolog和undolog是MySQL引擎层的日志,用来保证数据的一致性和可靠性,记录的是物理操作。

redolog和undolog都是MySQL引擎层的日志,而binlog是MySQL的归档日志,是在MySQL Server层生成的。

redolog和undolog都是在内存中缓存的,写入性能较高,而binlog需要进行磁盘I/O操作,写入性能相对较低。

在MySQL中,这三种日志协同工作,确保了数据的一致性、可靠性和安全性。

3、Spring 框架是什么?使用 Spring 框架有哪些好处?


Spring框架是一个开源的JavaEE全栈框架。Spring框架的主要目标是简化企业级应用程序的开发,提高开发效率和代码质量,并解决传统JavaEE应用程序的复杂性和低效率问题。Spring框架包括了众多模块和功能,主要包括以下几个部分:


核心容器:包括IoC和AOP两个模块,实现了控制反转和面向切面编程功能。

数据访问/集成:包括JDBC、ORM、事务管理等模块,提供了方便的数据库访问和集成功能。

Web开发:包括Web、MVC、Websocket、REST等模块,提供了Web开发和REST服务开发的支持。

安全:包括Web安全、ACL、用户认证、授权等模块,提供了完善的安全控制功能。

测试:包括单元测试和集成测试的支持。

Spring框架的优点主要包括:


简化开发:Spring框架提供了丰富的功能和组件,可以大大简化企业级应用程序的开发。

可扩展性:Spring框架是一个轻量级的框架,可以很容易地与其他框架和组件进行集成。

高度模块化:Spring框架是一个高度模块化的框架,每个模块可以独立使用,也可以组合使用。

可测试性:Spring框架提供了便于单元测试和集成测试的功能。

AOP编程的支持

方便程序的测试

降低 JavaEE API 的使用难度

Java源码是经典学习范例

方便集成各种优秀的框架

生命式事物的支持

方便解耦,简化开发

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
6
分享
相关文章
面试题30天打卡-day26
面试题30天打卡-day26
71 0
C++面试题其二
extern "C" 用于告诉编译器按照C语言的链接方式处理代码,通常用于C++代码与C代码混合编程,以防止因名字修饰(name mangling)引起的链接错误。例如: extern "C" { void c_function(); } 通过这些问题的深入理解和解答,能够更好地掌握C++编程的核心概念和实际应用,为面试做好充分的准备。
113 1
k8s面试题大全
本篇模拟面试官提问的各种docker,k8s问题,意在提高面试通过率,欢迎在评论区探讨,同步进步。
282 2
面试题30天打卡-day16
面试题30天打卡-day16
59 0