wordpress 做公司网站骑行网站模板

pingmian/2025/10/9 1:57:37/文章来源:
wordpress 做公司网站,骑行网站模板,上海企业云服务平台,海口模板建站公司【README】 本文阐述了3种代理模式的定义#xff0c;并编写了代码测试案例#xff1b; 代理其实是一种设计模式#xff0c;可以在访问目标对象的方法上下文添加处理逻辑#xff08;扩展目标对象的功能#xff09;#xff0c;是 切面编程的基石#xff1b; 【举个例子】…【README】 本文阐述了3种代理模式的定义并编写了代码测试案例 代理其实是一种设计模式可以在访问目标对象的方法上下文添加处理逻辑扩展目标对象的功能是 切面编程的基石 【举个例子】 抖音直播带货就是一种代理模式主播代理了工厂对象提供了购买商品的方法 主播可以下调商品价格因为走量类似于在购买商品方法上文添加了逻辑 主播可以赠送其他商品类似于在购买商品方法下文添加了逻辑 【代理模式URL】 1.定义一个带有代理方法的接口 2.定义目标对象实现这个接口 3.定义代理对象实现这个接口且代理对象调用目标对象的对应方法 4.客户端调用代理对象的方法代理对象接着调用目标对象的方法且代理对象可以在上下文添加逻辑代理模式的目的所在 【1】静态代理编译时生成代理类class文件 1代码结构 需要代理对象和目标对象实现相同接口 2优点可以在不修改目标对象的前提下扩展其功能 3缺点 冗余每次代理都要定义一个代理类会产生过多代理类不移维护 一旦接口方法有增删改则代理对象和目标对象都需要修改 【1.1】静态代理代码示例 // 接口 public interface IUserDao {public void sayHello(); }// 目标类 public class UserDaoImpl implements IUserDao {Overridepublic void sayHello() {System.out.println(i am method named sayHello.);} }// 代理类 public class UserDaoStaticProxy implements IUserDao {private IUserDao target;public UserDaoStaticProxy(IUserDao target) {this.target target;}Overridepublic void sayHello() {System.out.println(before);target.sayHello();System.out.println(after);} } main方法 public class StaticProxyTest {public static void main(String[] args) {// 目标对象IUserDao target new UserDaoImpl();// 代理对象UserDaoStaticProxy proxy new UserDaoStaticProxy(target);// 调用代理方法proxy.sayHello();} } 执行结果  before i am method named sayHello. after 【2】动态代理运行时生成代理对象 1为了解决静态代理会有多个代理类不易维护的缺点我们引入了动态代理 2动态代理利用了JDK API动态地在内存中构建代理对象从而实现对目标对象的代理功能。动态代理又被称为JDK代理或接口代理。 3静态代理与动态代理的区别主要在 静态代理在编译时就已经实现编译完成后代理类是一个实际的class文件动态代理是在运行时动态生成的即编译完成后没有实际的class文件而是在运行时动态生成类字节码并加载到JVM中 4优点 不需要代理对象实现接口但目标对象必须实现接口 5底层实现 底层调用了 // 生成代理对象 Proxy.newProxyInstance(ClassLoader loader,Class?[] interfaces,InvocationHandler h) loader 目标对象的类加载器interfaces 目标对象实现的接口class数组InvocationHandler将目标方法调用分配到的调用处理器对象 6调用处理类实现接口 InvocationHandler 类描述InvocationHandler 是代理对象关联的调用处理程序所实现的接口。 每个代理对象都有一个关联的调用处理程序。 当在代理对象上调用方法时方法调用被编码并分派到其调用处理程序的调用方法。 public interface InvocationHandler {public Object invoke(Object proxy, Method method, Object[] args)throws Throwable; } 方法描述处理代理对象上的方法调用并返回结果。 当在与其关联的代理对象上调用方法时将在调用处理程序上调用本方法。 【2.1】动态代理代码示例 // 目标对象的接口 public interface IUserDao2 {public String sayHello(); }// 目标对象所属类 public class UserDaoImpl2 implements IUserDao2 {Overridepublic String sayHello() {String msg i am method named sayHello. by dynamic proxy; System.out.println(msg);return msg;} }// 生成代理对象工厂 public class DynamicProxyFactory {private DynamicProxyFactory(){}public static Object getProxyInstance (Object target) {return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(),new InvocationHandler() {Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println(before);// 执行目标方法Object result method.invoke(target, args);System.out.println(after);return result;}});} } main方法 public class DynamicProxyTest {public static void main(String[] args) {// 目标对象UserDaoImpl2 target new UserDaoImpl2();// 代理对象IUserDao2 proxy (IUserDao2) DynamicProxyFactory.getProxyInstance(target);// 调用代理方法String result proxy.sayHello();System.out.println(result);} } 运行结果 before i am method named sayHello. by dynamic proxy after i am method named sayHello. by dynamic proxy 【3】cglib代理 1cglib定义 cglib 是一个强大、高性能和高质量的代码生成库。 它可以扩展 JAVA 类并在运行时实现接口 2特点 JDK的动态代理有一个限制就是使用动态代理的目标对象必须实现一个或多个接口。如果想目标对象不实现接口就可以使用CGLIB实现CGLIB是一个强大的高性能的代码生成包它可以在运行期扩展Java类与实现Java接口它广泛的被许多AOP的框架使用例如Spring AOP和dynaop为他们提供方法的 interception拦截CGLIB包的底层是通过使用一个小而快的字节码处理框架ASM来转换字节码并生成新的类。不鼓励直接使用ASM因为它需要你对JVM内部结构包括class文件的格式和指令集都很熟悉 3cglib与动态代理最大的区别 使用动态代理的对象必须实现一个或多个接口使用cglib代理的对象则无需实现接口达到代理类无侵入 【3.1】cglib代理代码示例 1maven 引入 cglib 依赖 dependencygroupIdcglib/groupIdartifactIdcglib/artifactIdversion3.2.5/version/dependency 2没有实现接口的目标类 public class UserDaoImpl3 {public String sayHello() {String msg i am method named sayHello. test cglib proxy.;System.out.println(msg);return msg;} } 3代理工厂 public class CglibProxyFactory implements MethodInterceptor {private Object target;public CglibProxyFactory(Object target) {this.target target;}public Object getProxyInstance () {this.target target;// 工具类Enhancer enhancer new Enhancer();// 设置父类enhancer.setSuperclass(target.getClass());// 设置回调函数enhancer.setCallback(this);// 创建子类对象代理return enhancer.create();}Overridepublic Object intercept(Object o, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {System.out.println(before);Object result method.invoke(target, args);System.out.println(after);return result;} } 4main方法 public class CglibProxyTest {public static void main(String[] args) {// 目标对象UserDaoImpl3 target new UserDaoImpl3();// 代理对象UserDaoImpl3 proxy (UserDaoImpl3) new CglibProxyFactory(target).getProxyInstance();// 调用代理方法String result proxy.sayHello();System.out.println(result);} } 执行结果 before i am method named sayHello. test cglib  proxy. after i am method named sayHello. test cglib  proxy. 【4】java代理实现小结 1静态代理 1.1实现较简单只要代理对象对目标对象进行包装即可实现增强功能但静态代理只能为一个目标对象服务如果目标对象过多则会产生很多代理类。1.2静态代理在编译时产生class字节码文件可以直接使用效率高。 2动态代理 2.1需要目标对象实现业务接口代理对象关联的调用处理类需要实现InvocationHandler接口。2.2动态代理必须实现InvocationHandler接口通过反射代理方法比较消耗系统性能但可以减少代理类的数量使用更灵活。 3cglib代理 无需实现接口通过生成类字节码实现代理比反射稍快不存在性能问题但cglib会继承目标对象需要重写方法所以目标对象不能为final类。【reference】 https://segmentfault.com/a/1190000011291179https://segmentfault.com/a/1190000011291179

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89118.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

个人网站建设知乎新手学做网站从哪里开始

在进一步讨论之前,我们需要解释什么是 javascript 运行时以及为什么我们应该关心它的速度。 想象一下,你用JavaScript写了一个故事,你需要有人大声朗读。JavaScript 运行时就像那个友好的叙述者,让你的故事栩栩如生!这…

网站建设涉及的法律做网站制作较好的公司

高斯滤波 高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到…

取消网站的通知书网络营销外包公司哪家好

来源:中国华能(部分内容参考《财经》杂志韩舒淋“从GE数字化业务大调整看工业互联网未来”)打响“工业互联网”第一枪的GE(美国通用电气),曾是全球市值最高的工业巨头,如今市值却缩水至巅峰时期…

iis 浏览网站鹤壁建设网站推广渠道

目录 一、前言二、登录torna三、创建/选择空间四、创建/选择项目五、创建/选择应用六、获取应用的token七、服务推送7.1 引入maven依赖7.2 test下面按照如下方式新建文件 一、前言 Torna作为一款企业级文档管理系统,支持了很多种接口文档的推送方式。官方比较推荐的…

自己做网站送外卖襄阳网站seo

本文介绍使用python提取pdf中的表格到excel中,包含pdf的拆分、pdf提取到excel、合并excel。 一、拆分pdf 将一个大的pdf按页数拆分为多个小的pdf: # pip install PyPDF2import os, pdfplumber, PyPDF2# 分割pdf def split_pdf(input_pdf_path, num_splits):# Create a PDF…

江阴做网站的公司有国内平台有哪些

网络基本协议 TCP协议 UDP协议 二者对比: 连接性: TCP是面向连接的协议,需要在传输数据之前先进行三次握手建立连接。而UDP是无连接的协议,可以直接发送数据,无需事先建立连接。 可靠性: TCP提供了数…

电影网站推广3d效果图设计制作软件

mysql如何删除一条记录delete from 表名 where 条件实例:use db1delete from tb1 where id 1; 转载于:https://www.cnblogs.com/effortsing/p/10393229.html

仓山福州网站建设做soho外贸网站

转载:http://www.cnblogs.com/lijunamneg/archive/2013/01/18/2866953.html Android其本质就是在标准的Linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个JAVA的application framework,所有的应用程序都是基于JAVA的applicati…

中国住房和城乡建设网网站湛江免费网站建站模板

腾讯云免费服务器申请入口 https://curl.qcloud.com/FJhqoVDP 免费服务器可选轻量应用服务器和云服务器CVM,轻量配置可选2核2G3M、2核8G7M和4核8G12M,CVM云服务器可选2核2G3M和2核4G3M配置,腾讯云服务器网txyfwq.com分享2024年最新腾讯云免费…

域名网站网址宜昌市上海中学官网

受到其它一些函数式编程开发语言的影响,在Erlang语言中,将函数作为一个对象,赋予其“变量”的属性,即为我们的匿名函数 或 简称 fun,它具有以下特性: (匿名函数:不是定义在Erlang模…

做会员卡网站百度广告联盟推广链接

一、Q-learning算法介绍 Q-learning是一种强化学习算法,用于解决基于环境的决策问题。它通过学习一个Q-table来指导智能体在不同状态下采取最优动作。下面是Q-learning算法的基本步骤: 1. 定义环境:确定问题的状态和动作空间,并…

网站开发好百度一下百度百科

基于协同过滤算法的推荐 (本实验选用数据为真实电商脱敏数据,仅用于学习,请勿商用) 数据挖掘的一个经典案例就是尿布与啤酒的例子。尿布与啤酒看似毫不相关的两种产品,但是当超市将两种产品放到相邻货架销售的时候&a…

做网站的公司不给域名做网站需要掌握什么

数学基础线性代数 从行的角度从列的角度行列式的几何解释向量范数和矩阵范数 向量范数矩阵范数的更强的性质的意义 几种向量范数诱导的矩阵范数 1 范数诱导的矩阵范数无穷范数诱导的矩阵范数2 范数诱导的矩阵范数 各种范数之间的等价性向量与矩阵序列的收敛性 函数的可微性与展…

网站制作与网站建设建一个购物网站多少钱

在工作中,我们难免会遇到一些棘手的电脑问题,自己搞定不了?那就找高手帮忙吧!假若就在身旁还能帮上忙,但远在天边的又是鞭长莫及,这该如何是好呢?这时候大家都会想到QQ的远程功能。但经常用QQ远…

做接口自动化是网站登录加密建设婚恋网站

实现浮点数转换成人民币读法字符串 将浮点数转换成人民币读法字符串, 例如: 将1006.333转换为壹千零陆元叁角叁分。 整体解析: 将浮点数分成整数部分和小数部分,分开处理整数部分和小数部分。 小数部分的处理比较简单&#xff…

类似凡科建站的网站房屋装修网

互联网公司的项目经理:客户伤不起 前面《互联网公司的项目经理:大同与大不同》谈到了互联网公司的项目经理面对的客户和传统软件公司的不同,主要表现在客户与项目经理是同一组织内的、是和你一个战壕共同战斗的,很多情况甚至荣辱与…

留学网站建设多少钱游戏代理怎么找渠道

概述 京东作为中国最大的电商平台,为了保护其网站数据的安全性,采取了一系列的反爬虫机制。然而,作为开发者,我们可能需要使用爬虫工具来获取京东的数据。 正文 Puppeteer 是一个由 Google 开发的 Node.js 库,它提供…

建设部网站设计资质查询做网站系统的答辩ppt范文

目录 概述定义应用场景主要角色类图 详述基本代码应用实例符合的设计原则 总结 概述 定义 代理模式是一种结构型设计模式,它允许通过一个代理对象来控制对原始对象的访问。代理对象可以在不改变原始对象的情况下,增加一些额外的功能,例如权限…

动态链接做网站外链图南京网站制作公司招聘

实现功能 需求:在类的成员属性使用Autowirde注解注入容器中的对象。 实现思路 要实现这个功能。我们首先要思考一个问题:类与类的关系是在调用的建立的,还是说在创建对象的时候就就将建立了? ---我实现的方案是,在在程…

网站建设报告总结平面设计线上培训班哪个好

所谓的激活函数,就是李宏毅老师讲到的sigmoid函数 和 hard sigmoid函数 ,ReLU函数那些 现在一点点慢慢探索,会成为日后想都做不到的经历,当你啥也不会的时候,才是慢慢享受探索的过程。 有一说一,用chatGP…