写点什么

Java 外包是如何转正华为的,2021 最新网易 Java 面试题目

用户头像
极客开源
关注
发布于: 刚刚

AOP 简介

AOP (Aspect Oriented Programing) 称为:面向切面编程,它是一种编程思想。AOP 是 OOP(面向对象编程 Object Oriented Programming)的思想延续


AOP 采取横向抽取机制,取代了传统纵向继承体系重复性代码的编写方式(例如性能监视、事务管理、安全检查、缓存、日志记录等)

AOP 核心思想

基于代理思想,对原来目标对象,创建代理对象,在不修改原对象代码情况下,通过代理对象,调用增强功能的代码,从而对原有业务方法进行增强


切面:需要代理一些方法和增强代码

AOP 的应用场景

场景一:记录日志


场景二:监控方法运行时间 (监控性能)


场景三: 权限控制


场景四: 缓存优化 (第一次调用查询数据库,将查询结果放入内存对象, 第二次调用, 直接从内存对象返回,不需要查询数据库 )


场景五: 事务管理 (调用方法前开启事务, 调用方法后提交或者回滚、关闭事务 )

Spring AOP 编程两种方式

方式一:Spring AOP 使用纯 Java 实现,不需要专门的编译过程和类加载器,在运行期通过代理方式向目标类植入增强代码(编程复杂,不推荐)


方式二:Spring 2.0 之后支持第三方 AOP 框架(AspectJ ),实现另一种 AOP 编程 (推荐)

AOP 编程相关术语

1.Aspect(切面): 是通知和切入点的结合,通知和切入点共同定义了关于切面的全部内容---它的功能、在何时和何地完成其功能


2.joinpoint(连接点):所谓连接点是指那些被拦截到的点。在 spring 中,这些点指的是方法,因为 spring 只支持方法类型的连接点.


3.Pointcut(切入点):所谓切入点是指我们要对哪些 joinpoint 进行拦截的定义.通知定义了切面的”什么”和”何时”,切入点就定义了”何地”.


4.Advice(通知、增强):所谓通知是指拦截到 joinpoint 之后所要做的事情就是通知.通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能)


5.Target(目标对象):代理的目标对象


6.Weaving(织入):是指把切面应用到目标对象来创建新的代理对象的过程.切面在指定的连接点织入到目标对象


7.Introduction(引入)(不要求掌握):在不修改类代码的前提下, Introduction 可以在运行期为类动态地添加一些方法或 Field.

AOP 编程底层实现机制

AOP 就是要对目标进行代理对象的创建, Spring AOP 是基于动态代理的,分别基于两种动态代理机制: JDK 动态代理和 CGLIB 动态代理

方式一:JDK 动态代理

JDK 动态代理,针对目标对象的接口进行代理 ,动态生成接口的实现类 (必须有接口)

过程要点

1.必须对接口生成代理


2.采用 Proxy 对象,通过 newProxyInstance 方法为目标创建代理对象。


该方法接收三个参数 :


? (1)目标对象类加载器


? (2)目标对象实现的接口


? (3)代理后的处理程序 InvocationHandler


3.实现 InvocationHandler 接口中 invoke 方法,在目标对象每个方法调用时,都会执行 invoke

难道这样就够了吗?不,远远不够!

提前多熟悉阿里往年的面试题肯定是对面试有很大的帮助的,但是作为技术性职业,手里有实打实的技术才是你面对面试官最有用的利器,这是从内在散发出来的自信。


备战阿里时我花的最多的时间就是在学习技术上,占了我所有学习计划中的百分之 70,这是一些我学习期间觉得还是很不错的一些学习笔记


我为什么要写这篇文章呢,其实我觉得学习是不能停下脚步的,在网络上和大家一起分享,一起讨论,不单单可以遇到更多一样的人,还可以扩大自己的眼界,学习到更多的技术,我还会在 csdn、博客、掘金等网站上分享技术,这也是一种学习的方法。


今天就分享到这里了,谢谢大家的关注,以后会分享更多的干货给大家!





本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

用户头像

极客开源

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
Java外包是如何转正华为的,2021最新网易Java面试题目