java第二课-CGLIB动态代理模式

本文深入探讨了动态代理的两种主要实现方式:JDK动态代理和CGLIB动态代理。详细解释了它们的工作原理,包括如何生成代理类、执行目标方法以及各自的优缺点。此外,还讨论了动态代理在实际开发中的应用场景,如接口功能拓展、日志打印和接口校验。

常用的代理模式实现方式有JDK动态代理和CGLIB动态代理。

  JDK动态代理是走的回调拦截,实现接口并生成代理类,再使用反射的技术去执行被代理类的目标方法。而且JDK动态代理是会拼接JAVA源代码的,然后编译成CLASS文件再读取到内存用。

  CGLIB动态代理采用的是继承的模式生成代理类,底层是基于ASM字节码技术实现生成代理类。直接生成CLASS文件再读取到内存中。CGLIB在生成代理类的时候会先生成Fastclass这个索引类, 通过索引机制对我们目标类中的方法加上索引,原理:使用字节码技术获取当前所有的方法,对每个方法加上一个索引,直接根据索引调用到目标方法。通过proxy.invokeSuper这个方法执行动态调用。唯一需要注意的是,CGLib不能对声明为final的方法进行代理,因为CGLib原理是动态生成被代理类的子类。

   认真捋了一下动态代理和静态代理的使用场景,最直观的感受是用在拓展接口功能上面。比如有一个用户表,已经有了service层和impl实现层。当中有一个updateUser的方法,当外部请求到了控制层中的方法,再调用这个updateUser的时候,可以通过代理的方式去调用这个方法,并在方法前后写自己的逻辑代码,而不用修改这个updateUser的方法。当然这只是举例。

   目前我觉得还是用在统一日志打印以及接口统一校验的地方用代理模式会比较合理也适合一些。本来是说CGLIB的效率会比JDK动态代理快很多,但是随着JDK的优化,度娘说JDK1.8以后JDK的动态代理的效率会高一点。有兴趣的测试的小伙伴可以去试试,我还是继续学其他了。后面还有好多设计模式,不过自己比较想学多线程、JVM调优、安全方面的东西。所以下期开始写其他的,设计模式估计要放到最后去咯。

  PS:有2年没怎么认真的看书和学习了,真的有点抗拒,开始学的话会很认真一直看,但是这个开始有点难。。加油吧!

  
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 HTML大屏展示模板是一种用于设计具有视觉冲击力且内容充实的巨型显示屏应用的设计方案,其应用范围广泛,涵盖了数据分析、监控以及决策支持等多个领域。这些模板通常整合了HTML、CSS、JavaScript等多种技术,尤其借助ECharts等数据可视化工具以达成复杂数据的图形化呈现。以下是对相关技术细节的深入说明: 1. **可视化**:数据可视化是将抽象的数据转化为直观的图像或图表的技术手段。这种技术有助于迅速识别数据中的模式、发展趋势和异常情况,使得非专业背景的人员也能轻松理解复杂的数据信息。在大屏展示场景中,可视化通常包含折线图、柱状图、饼图、热力图、地图等多种图表形式。 2. **大数据**:大数据指的是规模庞大、增长迅速、种类多样且数据密度较低的数据集合。在HTML大屏展示中,大数据的应用旨在支持实时或近乎实时的决策制定,例如监控销售业绩、交通流量、能源消耗等关键性能指标。 3. **HTML**:超文本标记语言(HTML)构成了网页内容的基础结构,用于界定页面的布局和元素。在大屏展示模板中,HTML负责构建页面组件,例如标题、段落、图像以及图表容器等。 4. **CSS**:层叠样式表(CSS)用于调控网页的视觉风格和布局结构。在大屏模板设计中,CSS扮演着核心角色,确保设计的响应性、适应性和美观度,包括设定颜色、字体、间距、动画效果等。 5. **ECharts**:ECharts是由百度研发的一款开源JavaScript数据可视化库,能够支持多种图表类型,如折线图、柱状图、散点图等,并提供了丰富的交互特性。在大屏展示中,ECharts能够助力生成动态且交互式的数据...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值