【day03】每天三道 java后端面试题:JDK 和 CGLIB 动态代理的区别 | MySQL日志 | Spring框架的好处

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

JDK 动态代理和 CGLIB 动态代理都是 Java 中动态代理的两种实现方式,它们的区别主要在以下几个方面:

  1. 实现方式:JDK 动态代理是通过反射实现的,而CGLIB动态代理是通过继承目标类来实现的。

  2. 目标类限制:JDK 动态代理要求目标类必须要实现接口,而CGLIB动态代理则没有这个限制。

  3. 性能:JDK 动态代理相对于 CGLIB 动态代理来说,因为实现方式不同,生成的代理类的效率会低一些。

  4. 对象类型:JDK 动态代理只能代理实现了接口的类,CGLIB 通过继承实现,不能代理 final 类。

  5. 依赖库:JDK 动态代理是 Java 自带的库,不需要额外的依赖,而 CGLIB 动态代理需要依赖 cglib 库。

在使用动态代理时,可以根据需要和具体的场景选择合适的实现方式,JDK 动态代理适用于接口代理的场景,而 CGLIB 动态代理适用于类代理的场景。

2. MySQL 日志的了解,binlog、redolog、undolog 分别有什么作用和区别?

MySQL 是关系型数据库,其日志是其关键功能之一。MySQL 包括三种类型的日志,分别是 binlog、redolog 和 undolog,它们分别有不同的作用和特点。

  1. binlog ,binlog(Binary log)是 MySQL 中的二进制日志文件,用于记录 MySQL 服务器上的所有更新和修改操作。它可以记录所有的 DDL(Data Definition Language)和 DML(Data Modification Language)操作,包括对表结构的更改、数据的插入、修改、删除等等。binlog是在事务提交后生成的,因此可以用于恢复数据库。

  2. redolog ,redolog(Redo log)用于恢复数据,保证数据的一致性和持久性。当 MySQL 发生修改时,redolog 会将这些操作记录下来,并写入磁盘。这样,当 MySQL 发生宕机或崩溃时,通过重放 redolog 就可以恢复数据。

  3. undolog,undolog(Undo log)用于回滚操作。当 MySQL 发生事务回滚时,undolog 会记录这些操作并将其写入磁盘。这样,当 MySQL 需要回滚时,通过重放 undolog 就可以回滚事务。

区别:

  1. binlog 和 redolog 都是 MySQL 中的二进制日志,但是它们的作用和实现方式有所不同。
  2. binlog 是 MySQL 记录所有的操作,而 redolog 则是用于保证数据的一致性和持久性。
  3. 文件格式不同:binlog 是逻辑日志,redolog 是物理日志。binlog 记录的是SQL语句,而 redolog 记录的是数据页的修改,所以 binlog 可以跨平台使用,而 redolog 不能。
  4. 写入方式不同: binlog是追加写,redologe是循环写。
  5. 用途不同:binlog用于备份恢复,主从复制;redolog用于宕机等故障恢复。
  6. redolog 和 undolog 的区别是,redolog记录了事务完成后的数据,记录的是更新之后的值,用于恢复数据用;而undolog 记录了事务开始之前的数据,记录的是更新之前的值,是用于回滚操作的。

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

Spring 框架是一个开源的 Java 企业应用程序框架,它通过依赖注入(Dependency Injection)和面向切面编程AOP(Aspect Oriented Programming)等技术为开发者提供了一个全面的编程和配置模型。它可以降低 Java 开发的复杂度,提高代码的可维护性和可测试性,使得开发者能够更专注于业务逻辑的实现。

使用Spring框架有以下好处:

  1. 依赖注入(Dependency Injection):通过 Spring 框架的依赖注入功能,开发者可以将应用程序中的不同组件之间的依赖关系交给 Spring 来管理,从而降低组件之间的耦合度,并方便后续的组件替换和维护。

  2. 面向切面编程(Aspect Oriented Programming):Spring 框架提供了面向切面编程的支持,可以将应用程序的不同功能抽象成切面,并将这些切面与应用程序中的不同组件关联起来,从而降低了应用程序中的重复代码量,并提高了代码的可重用性和可维护性。

  3. 提供了多种技术整合方案:Spring 框架可以与其他的 Java 企业应用程序框架和技术进行整合,如 Hibernate、MyBatis、Struts、JSF 等,从而降低了技术整合的复杂度。

  4. 支持声明式事务管理:Spring 框架提供了声明式事务管理的支持,开发者可以通过配置来管理应用程序中的事务,从而简化了事务管理的过程。

  5. 提供了 IoC 容器:Spring 框架提供了一个 IoC 容器,可以对应用程序中的不同组件进行管理,并支持对组件进行 AOP 增强,从而实现了应用程序中的组件解耦和高度可配置性。

  6. 便于测试:Spring 框架可以方便地进行单元测试和集成测试,提高了代码的可测试性和可靠性。

  • 19
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuwuuu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值