当前位置: 首页 > news >正文

新手如何建立自己网站做网站开发的有哪些公司好

新手如何建立自己网站,做网站开发的有哪些公司好,网站流量数据查询,机械加工网上平台什么是代理? 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方…

什么是代理?

代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.
这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法

举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接连接明星,而是联系明星的经纪人,来达到同样的目的.明星就是一个目标对象,他只要负责活动中的节目,而其他琐碎的事情就交给他的代理人(经纪人)来解决.这就是代理思想在现实中的一个例子

java中的代理类型

静态代理

  • 代理对象和目标对象(委托对象)都要实现相同的接口;

  • 当有很多目标需要被代理时,需要手动写很多代理类,会造成代码重复和膨胀;

动态代理

  • 目标对象需要实现接口,代理对象不需要实现接口;

  • 能在运行时自动生成代理对象,不需要手动写很多代理类,不会有代码重复和膨胀;

demo
package delegate.jdk;public interface IHello {String hello(String name);
}
package delegate.jdk;public class HelloImpl implements IHello {@Overridepublic String hello(String name) {return "Hello, " + name;}
}
package delegate.jdk;import java.lang.reflect.Proxy;public class RuntimeProxyFactory {public static Object createProxy(Object target) {return Proxy.newProxyInstance(target.getClass().getClassLoader(),target.getClass().getInterfaces(),(proxy, method, args) -> {long startTimeStamp = System.currentTimeMillis();Object returnValue = method.invoke(target, args);long endTimeStamp = System.currentTimeMillis();long runtime = endTimeStamp - startTimeStamp;System.out.println("Runtime: " + runtime);return returnValue;});}
}
package delegate.jdk;public class ProxyTest {public static void main(String[] args) {IHello hello = (IHello) RuntimeProxyFactory.createProxy(new HelloImpl());System.out.println(hello.hello("Lee"));}
}
原理分析(todo)

cglib代理

  • 目标类也不需要实现接口;(代理类继承目标类,以目标类子类的方式实现代理,所以也叫子类代理,因为是基于继承实现,所以目标类及其方法不能被final修饰)

demo

package delegate.cglib;public class Hello {public String hello(String name) {return "Hello, " + name;}}
package delegate.cglib;import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;import java.lang.reflect.Method;public class RuntimeInterceptor implements MethodInterceptor {@Overridepublic Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {long startTimeStamp = System.currentTimeMillis();Object returnValue = methodProxy.invokeSuper(o, objects);long endTimeStamp = System.currentTimeMillis();long runtime = endTimeStamp - startTimeStamp;System.out.println("Runtime: " + runtime);return returnValue;}
}
package delegate.cglib;import org.springframework.cglib.proxy.Enhancer;public class RuntimeProxyFactory {public static Object createProxy(Object target) {Enhancer enhancer = new Enhancer();enhancer.setSuperclass(target.getClass());enhancer.setCallback(new RuntimeInterceptor());return enhancer.create();}
}
package delegate.cglib;public class ProxyTest {public static void main(String[] args) {Hello hello = (Hello) RuntimeProxyFactory.createProxy(new Hello());System.out.println(hello.hello("Lee"));}
}

原理分析(todo)

Spring AOP中的动态代理

在Spring的AOP编程中:如果加入容器的目标对象有实现接口,用JDK代理;如果目标对象没有实现接口,用Cglib代理。

参考资料

  1. Java的三种代理模式

  2. Spring | Aop核心 | Cglib源码详细解析

  3. https://km.sankuai.com/collabpage/1584727104

http://www.sczhlp.com/news/77326/

相关文章:

  • 视频直播点播网站建设上海浦东网站建设公司
  • 学前端要逛那些网站如何给网站续费
  • 网站建设猫腻下载官方正版百度
  • 重庆市城乡建设施工安全管理总站网站网架生产厂家排名
  • 免费开源的网站系统网站备案更改吗
  • 做餐饮系统网站建设西安seo代理计费
  • dw做网站小技巧17网一起做网店普宁潮汕
  • 做网站能成功吗微信小程序注册后怎么登录
  • 网站加载流量什么叫平台公司
  • 网站建设哪家最好用开发网站的流程步骤
  • 做集团网站应注意什么娱乐网站模板
  • Linux系统初步设置本地Git环境和生成SSH密钥
  • cmd命令之查看端口号使用情况
  • 重庆招聘网站哪个好优秀免费h5页面制作
  • android studio下载官网银徽seo
  • 网站关键词选取的步骤中国建设银行网站能查流水吗
  • 网站开发购物店网站建设学习要多久
  • 杭州专业的程序开发公司长春seo网站排名优化
  • 大连网站建设详细流程江西省建设质量监督局网站
  • 如何提高景区旅游网站建设wordpress调用多媒体
  • 题解:B3929 [GESP202312 五级] 小杨的幸运数
  • 站群网站建设推广品牌设计的原则有哪些
  • 网站被恶意刷流量手机无法登录wordpress
  • wordpress 类似的怎样给网站做优化
  • 室内设计网站知乎做跨境电商一件代发的网站
  • 河北网站建设开发广源建设集团有限公司网站
  • IO流-------输出字符流
  • 建设手机网站大概要多少钱电子商务网站建设方案书
  • 个人网站可以做电商么大连建设网交费查询
  • 陕西专业网站开发联系电话一个网站建设流程图