参考回答:
AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。不过OOP允许开发者定义纵向的关系,但并不适合定义横向的关系,例如日志功能。日志代码往往横向地散布在所有对象层次中,而与它对应的对象的核心功能毫无关系对于其他类型的代码,如安全性、异常处理和透明的持续性也都是如此,这种散布在各处的无关的代码被称为横切(cross cutting),在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。
AOP技术恰恰相反,它利用一种称为"横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect",即切面。所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。
使用"横切"技术,AOP把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处基本相似,比如权限认证、日志、事物。AOP的作用在于分离系统中的各种关注点,将核心关注点和横切关注点分离开来。
本文向大家介绍请简短说明一下你对AQS的理解。相关面试题,主要包含被问及请简短说明一下你对AQS的理解。时的应答技巧和注意事项,需要的朋友参考一下 考察点:多线程 AQS其实就是一个可以给我们实现锁的框架 内部实现的关键是:先进先出的队列、state状态 定义了内部类ConditionObject 拥有两种线程模式独占模式和共享模式。 在LOCK包中的相关锁(常用的有ReentrantLock、
本文向大家介绍请说说你对promise的理解相关面试题,主要包含被问及请说说你对promise的理解时的应答技巧和注意事项,需要的朋友参考一下 Promise是ES6中对回调的处理方案,用于处理回调过多,形成回调地狱,不直观的问题;Promise可以链式调用,代码直观易操作,并且有, 等语法糖便于操作
本文向大家介绍请说下你对__proto__和prototype的理解相关面试题,主要包含被问及请说下你对__proto__和prototype的理解时的应答技巧和注意事项,需要的朋友参考一下
本文向大家介绍说一下你对闭包的理解?相关面试题,主要包含被问及说一下你对闭包的理解?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 一句话可以概括:闭包就是能够读取其他函数内部变量的函数,或者子函数在外调用,子函数所在的父函数的作用域不会被释放。
本文向大家介绍说一下你对 web worker的理解?相关面试题,主要包含被问及说一下你对 web worker的理解?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 在HTML页面中,如果在执行脚本时,页面的状态是不可相应的,直到脚本执行完成后,页面才变成可相应。web worker是运行在后台的js,独立于其他脚本,不会影响页面你的性能。并且通过postMessage将结果回传到主线程
本文向大家介绍请你说明一下ConcurrentHashMap的原理?相关面试题,主要包含被问及请你说明一下ConcurrentHashMap的原理?时的应答技巧和注意事项,需要的朋友参考一下 考察点:JAVA内存模型 ConcurrentHashMap 类中包含两个静态内部类 HashEntry 和 Segment。HashEntry 用来封装映射表的键 / 值对;Segment 用来充当锁的角色