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

宁波手机网站开发seo搜索引擎优化是做什么的

宁波手机网站开发,seo搜索引擎优化是做什么的,jquery扁平自适应网站html5模板,2023年长春疫情最新规定公告我的JDK动态代理流程 我梳理的动态代理流程大约是: 如果每一个框架都有自己的BPP,且自己的BPP中都有自己的wrapIfNecessory,那样可能就是一个BPP一个代理类。但通常应该都是各自的框架以提供 Advisior(切面)的方式&am…

我的JDK动态代理流程

我梳理的动态代理流程大约是:

  1. 如果每一个框架都有自己的BPP,且自己的BPP中都有自己的wrapIfNecessory,那样可能就是一个BPP一个代理类。但通常应该都是各自的框架以提供 Advisior(切面)的方式,让AOP的BPP去处理他们的Advisior。

  2. BeanPostProcessor 处理bean的时候,会找到这个bean匹配上的的advisior(切面)的集合。

  3. ProxyFactory 拿到adivisor的集合和目标类之后

    1. 设置当前代理的 advicisor、设置当前代理的目标对象 targetClass,设置当前代理的接口类
    2. 使用Jdk或者cglib动态代理创建代理类createAopProxy().getProxy();​​
  4. 生成代理类:

    1. JDK动态代理

      1. JDK动态代理要求被代理类必须实现方法,否则报错。原因当然和JDK动态代理的原理有关系了。

        public Object getProxy(@Nullable ClassLoader classLoader) {return Proxy.newProxyInstance(classLoader, this.proxiedInterfaces, this);
        }
        
      2. 生成代理类,

        public Class<?> apply(ClassLoader loader, Class<?>[] interfaces) {。。。byte[] proxyClassFile = ProxyGenerator.generateProxyClass(proxyName, interfaces, accessFlags);。。。
        }
        
      3. 生成代理类

        1. 将所有方法包装成ProxyMethod对象

          1. 将Object类中的hashCode、equals、toString方法包装成ProxyMethod对象
          2. 获取代理类接口列表
          3. 遍历每个接口的每个方法,并包装成ProxyMethod对象
        2. 为代理类组装各种字段信息和方法信息

          1. 添加构造器方法,该构造器参数为InvocationHandler类型
          2. 添加静态字段及代理方法
          3. 添加静态字段的初始化方法
        3. 写入class文件

          1. 验证常量池中存在代理类的全限定名
          2. 验证常量池中存在代理类父类的全限定名,即Proxy类
          3. 验证常量池中存在代理类接口的全限定名
          4. 写入class文件前,将常量池设为只读,当前常量池中的变量不允许修改
          5. 每个class文件的前四个字节为魔数,用来确定这个文件是否是一个能被虚拟机接受的class文件,
          6. 后面再跟两个字节的次版本号和两个字节的主版本号
          7. 。。。
          8. 转成二进制文件输出
  5. 在调用代理对象方法时,会在方法内执行super.h.invoke(this, m3, new Object[]{var1});​​。即调用JdkDynamicAopProxy的invoke方法。

    final class JdkDynamicAopProxy implements AopProxy, InvocationHandler, Serializable {// 这里传的是thispublic Object getProxy(@Nullable ClassLoader classLoader) {if (logger.isTraceEnabled()) {logger.trace("Creating JDK dynamic proxy: " + this.advised.getTargetSource());}return Proxy.newProxyInstance(classLoader, this.proxiedInterfaces, this);}
    }public class Proxy implements java.io.Serializable {// super.h = new JdkDynamicAopProxy();protected InvocationHandler h;public static Object newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h)}public final String getUserByName(String var1) throws  {/***   调用父类的h属性的invoke方法*/return (String)super.h.invoke(this, m3, new Object[]{var1});}
    }
    
  6. JdkDynamicAopProxy的invoke方法

    1. 获取​MethodInterceptor​集合 chain:List<Object> chain = this.advised.getInterceptorsAndDynamicInterceptionAdvice(method, targetClass);​​

    2. 对于拦截器链为空的情况,会直接执行目标方法

    3. 对于拦截器链不为空的情况,会将代理对象、目标方法、拦截器链等信息,封装为一个 ReflectiveMethodInvocation 对象,然后通过它的proceed​​方法完成拦截器中的增强逻辑和目标方法的执行。

      1. MethodInvocation invocation = new ReflectiveMethodInvocation(proxy, target, method, args, targetClass, chain);​​
      2. 调用方法retVal = invocation.proceed();​​
http://www.15wanjia.com/news/55880.html

相关文章:

  • 网站域名包括网上营销网站
  • 网站推广需要几个人做百度竞价怎么开户
  • 有没有教做蛋糕的网站推广普通话手抄报简单
  • 南京外贸网站建设广东知名seo推广多少钱
  • 长沙住房和城乡建设部网站友链外链app
  • 常用的网站推广的方式方法seo公司怎么推广宣传
  • 网页游戏传奇霸业搜索引擎优化作业
  • 做集团网站应注意什么网上怎么推销自己的产品
  • 大连网站建设 仟亿软件培训班学费多少
  • 一个网站如何做双语荆门网站seo
  • 台州网站建设企业网站安全检测工具
  • 一个公司如何做多个网站备案seo课程培训班
  • 长安网站建设多少钱最近国际时事热点事件
  • 海南招聘网seo 重庆
  • 网站内容优化方法成都网站建设技术外包
  • 汕头网站建设推广上海百度提升优化
  • 怎么更改网站首页图片尺寸关键词优化外包
  • 扬州建设信用网站seo同行网站
  • cn域名建网站什么是电商?电商怎么做
  • 中小网站公司做的推广怎么样在线咨询
  • 邯郸做网站哪里好网络营销首先要进行
  • 商城网站具体需求seo数据是什么意思
  • 做网站一天能接多少单google登录
  • 重庆网站优化方式网站seo查询工具
  • 广州大型网站建设公司互联网广告销售是做什么的
  • 那个网站系统好搜索引擎营销概念
  • 论坛平台主要产品武汉网站推广优化
  • 淘宝店铺装网站导航怎么做关键词分词工具
  • 县网站建设方案百度指数特点
  • 高端自适应网站建设聊城seo整站优化报价