工具网站有哪些乌海做网站

diannao/2025/10/13 7:43:47/文章来源:
工具网站有哪些,乌海做网站,wordpress最漂亮主题,餐饮品牌设计制作代理模式的定义#xff1a; Provide a surrogate or placeholder for another object to control access to it.#xff08;为其他对象提供一种代理以控制对这个对象的访问。#xff09; 简单说#xff0c;就是设置一个中间代理来控制访问原目标对象#xff0c;达到增强原…代理模式的定义 Provide a surrogate or placeholder for another object to control access to it.为其他对象提供一种代理以控制对这个对象的访问。 简单说就是设置一个中间代理来控制访问原目标对象达到增强原对象的功能和简化访问方式的目的。 代理模式通用类图 Java实现代理模式分为两类三种两类是静态代理和动态代理动态代理又可以分为JDK动态代理和CGLIB动态代理。 Java实现代理模式 静态代理 静态代理比较简单代理类需要实现和目标接口类一样的接口。 Solver静态代理类图 接口类ISolver public interface ISolver {void solve(); }目标类Solver public class Solver implements ISolver {Overridepublic void solve() {System.out.println(疯狂掉头发解决问题……);} }代理类SolverProxy代理类也要实现接口并且还要维护一个目标对象。 public class SolverProxy implements ISolver {//目标对象private ISolver target;public SolverProxy(ISolver target) {this.target  target;}Overridepublic void solve() {System.out.println(请问有什么能帮到您);target.solve();System.out.println(问题已经解决啦!);} }客户端Client public class Client {public static void main(String[] args) {//目标对象:程序员ISolver developer  new Solver();//代理客服小姐姐SolverProxy csProxy  new SolverProxy(developer);//目标方法解决问题csProxy.solve();} }运行结果 请问有什么能帮到您 疯狂掉头发解决问题…… 问题已经解决啦!我们看到通过静态代理可以在不修改目标对象的前提下扩展目标对象的功能。 但是它也有一些问题 冗余由于代理对象要实现与目标对象一致的接口会产生过多的代理类。 维护性不佳一旦接口增加方法目标对象与代理对象都要进行修改。 JDK动态代理 JDK动态代理利用了JDK反射机制动态地在内存中构建代理对象从而实现对目标对象的代理功能。 它主要用到了两个反射类的API java.lang.reflect Proxy| static Object newProxyInstance(ClassLoader loader,Class?[] interfaces, InvocationHandler h)返回一个指定接口的代理类实例该接口可以将方法调用指派到指定的调用处理程序 java.lang.reflect InvocationHandlerObject invoke(Object proxy, Method method, Object[] args) 在代理实例上调用目标方法并返回结果。 我们来看看使用JDK动态代理之后的客服代理场景。 JDK动态代理类图 接口类ISolver public interface ISolver {void solve(); }目标类Solver目标类需要实现接口类。 public class Solver implements ISolver {Overridepublic void solve() {System.out.println(疯狂掉头发解决问题……);} }动态代理工厂:ProxyFactory这里的动态代理工厂不需要实现接口直接采用反射的方式生成一个目标对象的代理对象实例。 ps:这里用了一个匿名内部类的方法还有一种方法动态代理类实现InvocationHandler接口大体上类似就不再给出例子了。 public class ProxyFactory {// 维护一个目标对象private Object target;public ProxyFactory(Object target) {this.target  target;}// 为目标对象生成代理对象public Object getProxyInstance() {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(请问有什么可以帮到您);// 调用目标对象方法Object returnValue  method.invoke(target, args);System.out.println(问题已经解决啦);return null;}});} } 客户端Client 客户端生成一个代理对象实例通过代理对象调用目标对象方法的时候就会进入invoke()方法最后是通过反射的方式调用目标对象的方法。 public class Client {public static void main(String[] args) {//目标对象:程序员ISolver developer  new Solver();//代理客服小姐姐ISolver csProxy  (ISolver) new ProxyFactory(developer).getProxyInstance();//目标方法解决问题csProxy.solve();} }运行结果 请问有什么可以帮到您 疯狂掉头发解决问题…… 问题已经解决啦我们简单总结一下静态代理和动态代理的主要区别 静态代理动态代理最主要区别 静态代理在编译时就已经实现编译完成后代理类是一个实际的class文件 动态代理是在运行时动态生成的即编译完成后没有实际的class文件而是在运行时动态生成类字节码并加载到JVM中 我们也观察到JDK动态代理目标对象必须得实现接口也就是说它是面向接口的假如我们不想要接口怎么办呢 Cglib动态代理 CGLIB(Code Generation Library)是一个基于ASM的字节码生成库它允许我们在运行时对字节码进行修改和动态生成它是通过继承来实现的。 我们来看看使用Cglib之后我们的客服代理是什么样的 Cglib动态代理类图 引入依赖Cglib是第三方类库需要引入依赖         dependencygroupIdcglib/groupIdartifactIdcglib/artifactIdversion3.2.5/version/dependency目标类Solver这里目标类不用再实现接口。 public class Solver {public void solve() {System.out.println(疯狂掉头发解决问题……);} }动态代理工厂 public class ProxyFactory implements MethodInterceptor {//维护一个目标对象private Object target;public ProxyFactory(Object target) {this.target  target;}//为目标对象生成代理对象public Object getProxyInstance() {//工具类Enhancer en  new Enhancer();//设置父类en.setSuperclass(target.getClass());//设置回调函数en.setCallback(this);//创建子类对象代理return en.create();}Overridepublic Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {System.out.println(请问有什么可以帮到您);// 执行目标对象的方法Object returnValue  method.invoke(target, args);System.out.println(问题已经解决啦);return null;}}客户端Client public class Client {public static void main(String[] args) {//目标对象:程序员Solver developer  new Solver();//代理客服小姐姐Solver csProxy  (Solver) new ProxyFactory(developer).getProxyInstance();//目标方法解决问题csProxy.solve();} }运行结果 请问有什么可以帮到您 疯狂掉头发解决问题…… 问题已经解决啦我们可以看到Cglib动态代理和JDK动态代理最大的区别就是: 使用JDK动态代理的对象必须实现一个或多个接口 使用Cglib动态代理的对象则无需实现接口达到代理类无侵入。 我们还需要注意 CGLib不能对声明为final的方法进行代理因为是通过继承父类的方式实现如果父类是final的那么就无法继承父类。

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

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

相关文章

建筑专业网站有哪些外包公司劳动合同

1、问题 svn下载的项目路径需要换,也就是下面的URL:SVN:// 需要修改 2、解决办法 linux平台 svn switch --relocate oldSvnPath newSvnPath windows平台 右击项目 TortoiseSVN->Relocate 然后修改就行

做jsp网站用哪些软件下载世界街景地图怎么退订

苹果自带的“safari浏览器”正在悄悄“追踪”你的信息,这样做可以有效避免你的隐私信息不被泄露。说起苹果设备自带的APP,毫无疑问safari浏览器是其中的代表之一,很多朋友由于习惯的原因,大多在使用苹果设备的时候选择下载一些第三…

一般产地证去哪个网站做北京网站设计网站设计公司

无论是从保护电力系统的安全还是从保护用电设备和人身的安全来看,严格控制并限定电流谐波含量,以减少谐波污染造成的危害已成为人们的共识。总谐波失真THD与功率因数 PF 的关系市面上很多的 LED 驱动电源,其输入电路采用简单的桥式整流器和电…

最简单的制作网站46云虚拟主机

设计模式专栏:http://t.csdnimg.cn/4j9Cq 目录 1.简介 2.实现原理 3.QString的实现分析 3.1.内部结构 3.2.写入时复制 4.示例分析 5.使用场景 6.总结 1.简介 CopyOnWrite (COW) 是一种编程思想,用于优化内存使用和提高性能。COW 的基本思想是&am…

山东做外贸网站的公司wordpress 注册侧边栏

rgbif版本:3.7.8.1 什么是多值传参? 您是否在使用rgbif时设想过,给某个参数一次性传递许多个值,它将根据这些值独立地进行请求,各自返回独立的结果。 rgbif支持这种工作模式,但是具体的细节需要进一步地…

深圳网站建设公司团队建站园

先说下结论:如果系统不考虑全球化的话,那么我们不用考虑时区的问题,因为我们可以认为中国境内的计算机全部用的是北京时间。1. 时区的来源和划分地球自转一圈是360度,共24小时,所以1小时15度,即&#xff1a…

在什么网站上可以做免费广告wordpress的背景图片

由于需要测试一款40G网卡,下载了 iperf3.1.3 用于性能测试。 iperf3.1.3 源码下载 可以在 iperf 官网 下载源代码: 交叉编译 需要运行在 aarch64 linux 环境下,所以需要交叉编译。 进入iperf3 目录下,运行 ./configure 脚本…

企业网站和信息化建设重庆建站模板展示

1.介绍 1.1 Pandas是什么? Pandas是一个基于NumPy的分析结构化数据的工具集,NumPy为其提供了高性能的数据处理能力。Pandas被普遍用于数据挖掘和数据分析,同时也提供数据清洗、数据I/O、数据可视化等辅助功能。 Github_Star 40k : https://github.com/…

网站开发人员需要去做原型吗有多少人自己做电影网站

在 QML 中,几乎所有组件都继承自 Item 类型,因此它们共享一些通用的属性。 QML 组件通用属性 位置和尺寸 x 和 y: 组件在其父元素中的位置坐标 Item {x: 100y: 100 }width 和 height: 组件的宽度和高度 Item {width: 200height: 100 }z: 组件在 Z 轴…

vps除了做网站还能做什么公共资源交易中心主任级别

Aethir,去中心化GPU云基础设施领导者,宣布其备受期待的节点销售。Aethir是一家企业级的以AI和游戏为重点的GPU即服务提供商。Aethir的去中心化云计算基础设施使GPU提供商能够与需要NVIDIA的H100芯片提供强大AI/ML任务支持的企业客户相连接。 此外&#x…

茂名企业做网站视频剪辑培训比较有名的学校

来源:科学的乐园在科幻小说《三体Ⅲ:死神永生》之中,歌者文明“母世界”的宇宙飞船曾经利用宇宙规律武器二向箔来摧毁地球文明,将地球所处的三维世界完全变成了一个二维世界。很多人无法想象,仅仅一个手机大小的物质&a…

wordpress 分类判断长沙seo排名收费

教育 -C语言程序设计-章节资料考试资料-南京师范大学中北学院【】 第一章 单元测试 1、【单选题】对于计算机来说,最后执行的C语言程序是( ) A、源程序 B、目标程序 C、汇编程序 D、可执行程序 参考资料【 】 2、【单选题】以下叙述中正确的是…

做企业网站一般用什么服务器如何做网站 知乎

版本回退 修改代码 添加第一个版本 接下同上,添加多个版本 回退到上一个版本 回到旧版本(建议实际中操作) 版本回退和回到旧版本的区别: 版本回退:就是删除当前版本,回到以前的版本。 回到旧版…

为网站做外链的方式品牌网站建设必在大蝌蚪

上一篇文章呢,我们讲述了JavaScript运算符中的关系运算符和逻辑运算符,那么紧接上一篇的文章我们今天来说说逻辑运算符。引言逻辑运算符不是很难,也不是很多,我们只要记住三个就可以啦!分别是:!…

找潍坊做网站的赣州网站制作公司

目录 一、磁盘介绍 1. 磁盘数据结构 2. 磁盘的接口类型 3. 磁盘在Linux上的表现形式 二、磁盘分区与MBR 1. 分区优缺点 2. 分区方式 3. MBR分区 4. GPT分区 三、文件系统 1. 文件系统的组成 2. 默认的文件系统 3. 文件系统的作用 4. 模拟破坏文件与修复文件 4…

国内免费网站空间网站建设痛点

一、解释MVC和MVVM架构模式 MVC和MVVM都是常见的前端架构模式,用于抽象分离并解决特定问题。这两种模式在结构上具有一定的相似性,但在细节和数据处理方式上存在一些差异。 MVC,即Model-View-Controller,是一种用于应用程序分层…

电子商务网站开发需求文档北京网站搭建服务

1、在主菜单中选择“模型”→“users and roles”→“users”,新增一个user,其中"name"字段就是要添加的模式名。 2、在新增表时,在表属性的“general”页签中选择"owner",选择刚才新增的user,即可…

网站系统名称怎么填如何给自己的网站做seo

文章目录 变量变量的声明变量命名规则变量的类型 常量常量的定义与初始化字面量常量整型常量浮点型常量字符常量常量表达式(constexpr) 大家好,我是 shopeeai,也可以叫我虾皮,中科大菜鸟研究生。今天我们来一起来学习C…

阿里云 iis 多个网站免费的黄冈网站有哪些

摘要 本文聚集于实战,只讲解最实用的知识点,至于支付起源、在线支付发展历程等科普知识,感兴趣的读者可参考其它优秀的支付类书籍或网络上其它优秀的文章。本章内容对大部分专业概念进行了极致简化,以便更好地帮助读者入门。实际…

网站制作教程:初学者建设银行信用卡网站登录

1. 动态的改变记录级别和策略,即修改log4j.properties,不需要重启Web应用,这需要在web.xml中设置一下。2. 把log文件定在 /WEB-INF/logs/ 而不需要写绝对路径。3. 可以把log4j.properties和其他properties一起放在/WEB-INF/ ,而不是Class-Pat…