AOP面试题

1.面向切面编程(AOP)的理解
面向切面编程,即AOP,即是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中。
AOP和IOC是补充性的技术,它们都是运用模块化方式解决企业应用程序开发中的复杂问题。在典型的面向对象的开发方式中,可能要将日志记录语句放在所有方法和Java类中才能实现日志功能。在AOP方式中,可以反过来将日志服务模块化,并以声明的方式将它们应用到需要的日志组件上。当然,优势就是Java类不需要知道日志服务的存在,也不需要知道日志服务的存在,也不需要考虑相关的代码。所以,用Spring AOP编写的应用程序代码是松散耦合的。AOP的功能完全集成到了Spring 事务管理、日志和其他各种特性的上下文中。

2.声明式事务的概念及原理
声明式事务(declarative transaction management)是Spring提供的对程序事务管理的方式之一。 声明式事务顾名思义就是采用声明的方式来处理事务。这里所说的声明,就是指在配置文件中申明。在Spring配置文件中,声明式的处理事务来代替代码式的处理事务。
【原理】
声明式事务管理意味着你无需在Bean中编写任何事务管理代码,只需将事务配置在Bean上就可以了.要想达到这个目的,最简单方法就是使用代理——代理会拦截所有方法的调用。如果方法位于事务配置中,代理就是起到通知的作用,它会在目标方法调用前开启事务,然后在一个try/catch块中执行目标方法.如果目标方法正常完成,代理就会提交事务;如果目标方法抛出运行时异常,代理就会回滚。

3.线程的基本概念,线程基本状态以及状态之间的关系?
一个程序中可以有多条执行线索同时执行,一个线程就是程序中的一条执行线索,每个线程上都关联有要执行的代码,即可以有多段程序代码同时运行,每个程序至少都有一个线程,即main方法执行的那个线程。如果只是一个cpu,它怎么能够同时执行多段程序呢?这是从宏观上来看的,cpu一会执行a线索,一会执行b线索,切换时间很快,给人的感觉是a,b在同时执行,好比大家在同一个办公室上网,只有一条链接到外部网线,其实,这条网线一会为a传数据,一会为b传数据,由于切换时间很短暂,所以,大家感觉都在同时上网。 状态:就绪,运行,synchronize阻塞,wait和sleep挂起,结束。wait必须在synchronized内部调用。 调用线程的start方法后线程进入就绪状态,线程调度系统将就绪状态的线程转为运行状态,遇到synchronized语句时,由运行状态转为阻塞,当synchronized获得锁后,由阻塞转为运行,在这种情况可以调用wait方法转为挂起状态,当线程关联的代码执行完后,线程变为结束状态。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值