1、CGlib简单介绍,访问地址:http://www.blogjava.net/stone2083/archive/2008/03/16 /186615.html,从简单的示例到不同业务场景的变化,一步步让读者明白,为什么要使用cglib以及哪种场景下需要使用cglib;

2、cglib源码学习交流,访问地址:http://www.iteye.com/topic/799827,作者agapple的cglib源码阅读记录,有对和个类的介绍说明,也有部分示例;

3、cglib相关性能测试对比,访问地址:http://www.iteye.com/topic/801577,也是agapple写的,其中需要关注的就是作者提到的BeanCopier与BeanUtils做copy的时候的性能差异很大;

4、AOP 的利器:ASM 3.0
介绍,访问地址:http://www.ibm.com/developerworks/cn/java/j-lo-asm30/,虽然是写字节码的,但
是读下来不会让人感到枯燥,作者先以示例为铺垫,一步步的深入,并比较了示例在现有的逻辑基础之上增加验权的的几种实现方式。其中有介绍使用装饰模式
(Decorator),指出了使用装饰模式的可能代码改动量比较大的问题;使用Proxy方式,不过这种方式可能会有性能问题;最终才引出ASM,指出
asm是直接生成class类的方式,不会有性能问题,以下两句话可以说明:

Proxy
毕竟是通过反射实现的,必须在效率上付出代价:有实验数据表明,调用反射比一般的函数开销至少要大 10 倍。而且,从程序实现上可以看出,对
proxy class 的所有方法调用都要通过使用反射的 invoke 方法。因此,对于性能关键的应用,使用 proxy class
是需要精心考虑的,以避免反射成为整个应用的瓶颈。
    ASM
能够通过改造既有类,直接生成需要的代码。增强的代码是硬编码在新生成的类文件内部的,没有反射带来性能上的付出。同时,ASM 与 Proxy
编程不同,不需要为增强代码而新定义一个接口,生成的代码可以覆盖原来的类,或者是原始类的子类。它是一个普通的 Java 类而不是 proxy
类,甚至可以在应用程序的类框架中拥有自己的位置,派生自己的子类。

Cglib学习站点(转)的更多相关文章

  1. Android学习站点推荐

    收集了一些比較好的Android学习站点,希望对大家有所帮助: 1.http://developer.android.com/ Android官方站点,可惜被屏蔽了,须要使用FQ软件 2.http:/ ...

  2. C/C++学习站点资源

    学习论坛: 轩辕软件论坛 中国IT实验室C/C++论坛 编程爱好者论坛 编程中国论坛 进阶站点: 浙江工业 http://acm.zjut.edu.cn 浙江大学 http://acm.zju.edu ...

  3. CGLIB学习笔记

    0 概述 CGLIB基于ASM实现.提供比反射更为强大的动态特性.使用CGLIB可以非常方便的实现的动态代理. 0.1 CGLIB包结构 net.sf.cglib.core    底层字节码处理类. ...

  4. 优秀JS学习站点

    第一个:电子书类集合站点:http://www.javascriptcn.com/thread-2.html 第二类:移动端博客学习: https://segmentfault.com/a/11900 ...

  5. python学习站点

    1.python 外部扩展网址 http://www.lfd.uci.edu/~gohlke/pythonlibs Python Extension Packages 2.web2py学习 http: ...

  6. Cglib学习报错 java.lang.reflect.InvocationTargetException-->null

    package javacore.testForCglibProxy; import java.lang.reflect.Method; import net.sf.cglib.proxy.Enhan ...

  7. Web前端推荐学习站点

    http://javascript.ruanyifeng.com/   JavaScript参考标准教程,写的很不错. https://www.xiaohuochai.cc/  小火柴前端站 http ...

  8. 老的acm & oj学习站点

    1.网易小鱼博客 http://gisyhy.blog.163.com/blog/#m=0&t=1&c=fks_087069086082087064085081082095085084 ...

  9. jQuery中文学习站点

    jQuery是一个快速.简单的Javascript library,它简化了HTML文件的traversing,事件处理.动画.Ajax互动,从而方便了网页制作的快速发展.jQuery是为改变你编写J ...

随机推荐

  1. [连载]JavaScript讲义(02)--- JavaScript核心编程

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamFja2ZydWVk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...

  2. 发送通知:Notification

    Intent的主要功能是完成一个Activity跳转到其他Activity或者是Service的操作,表示的是一种 操作的意图. PendingIntent表示的是暂时执行的一种意图,是一种在产生某一 ...

  3. Android设计中的.9.png

    在Android的设计过程中,为了适配不同的手机分辨率,图片大多需要拉伸或者压缩,这样就出现了可以任意调整大小的一种图片格式“.9.png”.这种图片是用于Android开发的一种特殊的图片格式,它的 ...

  4. Sizzle之tokenize

    在Sizzle里,大体思路,当为复合选择器时,判断是否支持querySeletorAll,如果不支持则调用自写方法select. select的功能十分冗长,下面先分析tokenize 在tokeni ...

  5. JavaScript创建对象的模式

    /** * Created by W_YH on 2016/3/14. */ /* 对象的创建方式 */ //------->第一种创建方式------创建Object的实例 var perso ...

  6. .net通用权限框架B/S(二) 数据库设计

    1.组织机构---员工是1:n关系 2.角色---员工n:n 3.角色--导航菜单n:n 4.操作权限(id)---导航菜单(prms_id)n:n   [此处是n:n关系正常是生成第三张表存放多对多 ...

  7. MSDN地址,记录下来,以防以后使用

    MSDN在线官网:https://msdn.microsoft.com/zh-cn/default.aspx 以备学习时候使用.

  8. oracle误删除数据的恢复方法

    学习数据库时,我们只是以学习的态度,考虑如何使用数据库命令语句,并未想过工作中,如果误操作一下,都可能导致无可挽回的损失.当我在工作中真正遇到这些问题时,我开始寻找答案. 今天主要以oracle数据库 ...

  9. ThinkPHP 的CURD

    1.ThinkPHP 3 读取数据 (重点) 对数据的读取 Read $m=new Model('User'); $m=M('User'); select $arr = $m->select() ...

  10. JAVA读取propertise配置文件

    java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"key=value"的格式,在pr ...