`
文章列表
JDK动态代理的原理是根据定义好的规则,用传入的接口创建一个新类,这就是为什么采用动态代理时为什么只能用接口引用指向代理,而不能用传入的类引用执行动态类。 cglib采用的是用创建一个继承实现类的子类,用asm库动态修改子类的代码来实现的,所以可以用传入的类引用执行代理类  Spring AOP AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。Spring主要通过代理来实现AOP。 切面(Aspect):对横切关注点的抽象(类似类对对象的抽象)连接点( ...
 一.概念 代理是什么呢?举个例子,一个公司是卖摄像头的,但公司不直接跟用户打交道,而是通过代理商跟用户打交道。如果:公司接口中有一个卖产品的方法,那 么公司需要实现这个方法,而代理商也必须实现这个方法。如果公司卖多少钱,代理商也卖多少钱,那么代理商就赚不了钱。所以代理商在调用公司的卖方法后,加上自己的利润然后再把产品卖给客户。而客户部直接跟公司打交道,或者客户根本不知道公司的存在,然而客户最终却买到了产品。   专业点说:代理模式是对象的结构型模式,代码模式给某一个对象提供代理,并由代理对象控制原对象(目标对象,被代理对象)的引用。简单点说,就是通过一个工厂生成一个类的代理对象,当客 ...
这篇文章是关于网站性能优化体验的,性能优化是一个复杂的话题,牵涉的东西非常多,我只是按照我的理解列出了性能优化整个过程中需要考虑的种种因素。点到为止,包含的内容以浅显的介绍为主,如果你有见解能告知我 ...

Ehcache详细解读

  Ehcache 是现在最流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大,最初知道它,是从Hibernate的缓存开始的。网上中文的EhCache材料以简单介绍和配置方法居多,如果你有这方面的问题,请自行google;对于API,官网上 ...

CGLIB

cglib is a powerful, high performance and quality Code Generation Library, It is used to extend JAVA classes and implements interfaces at runtime.cglib是Code Generation Library的缩写。 CGlib是一个强大的,高性能,高质量的Code生成类库。它可以在运行期扩展Java类与实现Java接口。当然这些实际的功能是asm所提供的,cglib依赖于ASM库。cglib就是封装了asm,简化了asm的操作,实现了在运行期动态生 ...
  转载:http://kb.cnblogs.com/page/160526/ 今天这堂培训课讲什么呢?我既不讲Spring,也不讲Hibernate,更不讲Ext,我不讲任何一个具体的技术。我们抛开任何具体的技术,来谈谈如何提高代码质量。如何提高代码质量,相信不仅是在座所有人苦恼的事情,也是所有软件项目苦恼的事情。如何提高代码质量呢,我认为我们首先要理解什么是高质量的代码。   高质量代码的三要素   我们评价高质量代码有三要素:可读性、可维护性、可变更性。我们的代码要一个都不能少地达到了这三要素的要求才能算高质量的代码。   1. 可读性强   一提到可读性似乎有一些老生常谈的味 ...
一、编码GBK的不可映射字符 解决方法   由于java源代码是用的UTF-8编码,Eclipse中默认编码是GB18030,因此,在生成javadoc的时候,需要手工指定一下编码和字符集。主菜单–>Project–>Generate javadoc–>next–>next–> 在 “Extra javadoc options”下面的文本框中填入 ” -encoding UTF-8 -charset UTF-8 “.     二、classpath导致java.lang.IllegalArgumentException, 解决方法 将环境变量中的 ...
下面三篇文章讲解怎么定义类、方法、变量等说的很详细 明了。   http://alvinqq.iteye.com/blog/940960   http://alvinqq.iteye.com/blog/940965   http://alvinqq.iteye.com/blog/940970     一、如何使用ASM       ASM提供了两套API供使用者使用,一套叫Core API,是基于事件的方式对字节码进行处理;另一套叫Tree API,是基于对象的方式对字节码进行处理。如果你熟悉XML解析,那么实际上Core API就是SAX这种处理模式,而Tree API就是 ...
  在ASM的Core API中使用的是访问者模式来实现对类的操作,主要包含如下类: 一、ClassVisitor接口: 在这个接口中主要提供了和类结构同名的一些方法,这些方法可以对相应的类结构进行操作。如下: public interface Cla ...
上一篇文章,我们已体验到ASM的威力,那么结合上面的代码解释ASM是怎么执行的。   ClassWriter clazzWriter = new ClassWriter(0);       首先看下官方文档对ClassWriter的描述:   A ClassVisitor that generates classes in bytecode form. More precisely this visitor generates a byte array conforming to the Java class file format. It can be used alone, t ...
  一、什么是ASM       首先看下官方中的说明 ASM a very small and fast Java bytecode manipulation framework。 ASM是一个JAVA字节码分析、创建和修改的开源应用框架。它可以动态生成二进制格式的stub类或其他代理类,或者在类被JAVA虚拟机装入内存之前,动态修改类。在ASM中提供了诸多的API用于对类的内容进行字节码操作的方法。与传统的BCEL和SERL不同,在ASM中提供了更为优雅和灵活的操作字节码的方式。ASM相当小巧,并且它有更高的执行效率,是BCEL的7倍,SERP的11倍以上(摘自网络,具体没有测试)。目 ...
今天看到一网友写的 Java 文件监控,实时监控文件加载 ,突然想到Commons-io中已有此功能的实现,先温习下 写个简单的Demo:   package wy.util.filemonitor; import java.io.File; import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; import org.apache.commons.io.monitor.FileAlterationObserver; import org.apache.log4j.Logger; /* ...
国际化这个分类中共包含两个标签:用于设定语言地区<fmt:setLocale/>和用于设定请求的字符编码的<fmt:requestEncoding>标签。 1.<fmt:setLocale/>标签 <fmt:setLocale>标签用来设定用户语言区域。 【语法】: <fmt:setLocale value=”locale”[variant=”variant”] [scope=”page|request|session|application”]> 参数名 ...
读取消息资源主要有4个标签,在这里进行一下小总结: <fmt:buddle> <fmt:setBuddle> <fmt:message> <fmt:param> 四个标签之间的嵌套关系大概是这个样子: 1 <fmt:buddle basename="name"> 2 <fmt:message key="key"> 3 <fmt:param value="value"> 4 </fmt: ...
I18N格式标签库:I18N-capable formation tags library.它可以根据发出请求的客户端地域的不同来显示不同的语言。同时还提供了格式化数据和日期的方法。引入该标签库的方法为: <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> I18N格式标签库提供了11个标签,这些 标签从功能上可以划分为3类如下: 1)数字日期格式化。formatNumber标签、formatData标签、parseNumber标签、parseDate标 ...
Global site tag (gtag.js) - Google Analytics