摘要:代理模式的意图很多,比如安全原因,远程调用等。这里主要讨论使用代理模式实现延迟加载,从而提升系统的性能和反应速度。是低级的字节码生成工具,使用已经近乎于在使用编程,对开发人员要求更高,当然也是性能最好的一种动态代理生成工具。
代理模式的意图很多,比如:安全原因,远程调用等。这里主要讨论使用代理模式实现延迟加载,从而提升系统的性能和反应速度。
延迟加载的核心思想是:如果当前并没有使用这个组件,则不需要真正地初始化它,使用一个代理对象替代它的原有的位置,只要在真正需要使用的时候,才对它进行加载。
代理模式的实现和使用代理分为几种
静态代理
为每一个代理写一个方法,其实是挺烦的。接口有变动,真实主题与代理类都要修改。
动态代理
解决了上面问题,同时可以在运行时指定代理类的执行逻辑,从而大大提升系统的灵活性。 动态代理又分JDK自带的动态代理,CGLIB,Javassist或者ASM库。 ASM是低级的字节码生成工具,使用ASM已经近乎于在使用Java bytecode编程,对开发人员要求更高,当然也是性能最好的一种动态代理生成工具。但ASM的使用是在过于繁锁,而且性能也没有数量级的提升,与CGLIB等高级字节码生成工具相比,ASM程序的维护性也较差,如果不是在对性能有苛刻要求的场合,建议还是使用CGLIB或Javassist 实际测试中,JDK的动态类创建过程很快,这是因为在这个内置实现中defineClass()方法被定义为native实现,故性能高于其它几种实现。但在代理类的函数调用性能上,JDK的动态代理就不如CGLIB和Javassist的基于动态代理的代理。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/65407.html
摘要:在他的重学前端课程中提到到现在为止,前端工程师已经成为研发体系中的重要岗位之一。大部分前端工程师的知识,其实都是来自于实践和工作中零散的学习。一基础前端工程师吃饭的家伙,深度广度一样都不能差。 开篇 前端开发是一个非常特殊的行业,它的历史实际上不是很长,但是知识之繁杂,技术迭代速度之快是其他技术所不能比拟的。 winter在他的《重学前端》课程中提到: 到现在为止,前端工程师已经成为研...
摘要:在他的重学前端课程中提到到现在为止,前端工程师已经成为研发体系中的重要岗位之一。大部分前端工程师的知识,其实都是来自于实践和工作中零散的学习。一基础前端工程师吃饭的家伙,深度广度一样都不能差。开篇 前端开发是一个非常特殊的行业,它的历史实际上不是很长,但是知识之繁杂,技术迭代速度之快是其他技术所不能比拟的。 winter在他的《重学前端》课程中提到: 到现在为止,前端工程师已经成为研发体系...
摘要:是的简称,运行环境,为的运行提供了所需的环境。分割字符串,返回分割后的字符串数组。当计算的值相同时,我们称之为冲突,的做法是用链表和红黑树存储相同的值的。迭代器取代了集合框架中的,迭代器允许调用者在迭代过程中移除元素。 Java基础1.JDK和JRE有什么区别? JDK 是java development kit的简称,java开发工具包,提供java的开发环境和运行环境。JRE 是j...
摘要:的简称,运行环境,为的运行提供了所需环境。分割字符串,返回一个分割后的字符串数组。线程安全是线程安全的,而是非线程安全的。迭代器取代了集合框架中的,迭代器允许调用者在迭代过程中移除元素。 本文分为十九个模块,分别是: Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Clou...
阅读 1920·2021-11-16 11:45
阅读 3609·2021-09-06 15:02
阅读 1971·2019-08-30 15:44
阅读 2255·2019-08-30 11:21
阅读 1817·2019-08-29 16:31
阅读 3387·2019-08-29 13:55
阅读 1870·2019-08-29 12:15
阅读 3218·2019-08-28 18:05