摘要:
关于获取各种浏览器可见窗口大小的一点点研究。在我本地测试当中:在IE、FireFox、Opera下都可以使用 document.body.clientWidth document.body.clientHeight 即可获得,很简单,很方便。 而在公司项目当中:Opera仍然使用 document.body.clientWidthdocument.body.clientHeight 可是IE和FireFox则使用document.documentElement.clientWidth document.documentElement.clientHeight 原来是W3C的标准在作怪啊 htt 阅读全文
摘要:
框架结构 ASM字节码处理框架是用Java开发的而且使用基于访问者模式生成字节码及驱动类到字节码的转换。这允许开发人员避免直接处理方法字节码中的类常量池及偏移,因此为开发人员隐藏了字节码的复杂性并且相对于其他类似工具如BCEL, SERP, or Javassist提供了更好的性能。ASM分为几个包更方便灵活地构建。包结构图如图1。 Figure 1. Arrangement of ASM packages ·Core包提供了读/写/转换字节码的API而且是其他包的基础。这个包已经足够生成Java字节码而且能够实现大部分的字节码转换。 ·Tree包提供了Java字节码的内存 阅读全文
摘要:
Java定义的位运算(bitwiseoperators)直接对整数类型的位进行操作,这些整数类型包括long,int,short,char,andbyte。表4-2列出了位运算:表4.2位运算符及其结果运算符结果~按位非(NOT)(一元运算)&按位与(AND)|按位或(OR)^按位异或(XOR)>>右移>>>右移,左边空出的位以0填充运算符结果<<左移&=按位与赋值|=按位或赋值^=按位异或赋值>>=右移赋值>>>=右移赋值,左边空出的位以0填充<<=左移赋值续表既然位运算符在整数范围内对位操作 阅读全文
摘要:
一、内存分配的策略 按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的. 静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间.这种分配策略要求程序代码中不允许有可变数据结构(比如可变数组)的存在,也不允许有嵌套或者递归的结构出现,因为它们都会导致编译程序无法计算准确的存储空间需求. 栈式存储分配也可称为动态存储分配,是由一个类似于堆栈的运行栈来实现的.和静态存储分配相反,在栈式存储方案中,程序对数据区的需求在编译时是完全未知的,只有到运行的时候才能够知道,但是规定在运行中进入一个程序模块时,必须知道该 阅读全文
摘要:
Java栈与堆----对这两个概念的不明好久,终于找到一篇好文,拿来共享1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。3. Java中的数据类型有两种。一种是基本类型(pr 阅读全文
摘要:
翻译 原文:http://www.ociweb.com/jnb/jnbNov2005.html1.CGLIB包的介绍代理为控制要访问的目标对象提供了一种途径。当访问对象时,它引入了一个间接的层。JDK自从1.3版本开始,就引入了动态代理,并且经常被用来动态地创 建代理。JDK的动态代理用起来非常简单,当它有一个限制,就是使用动态代理的对象必须实现一个或多个接口。如果想代理没有实现接口的继承的类,该怎么 办?现在我们可以使用CGLIB包CGLIB是一个强大的高性能的代码生成包。它广泛的被许多AOP的框架使用,例如Spring AOP和dynaop,为他们提供方法的interception(拦截) 阅读全文
摘要:
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://dreamhead.blogbus.com/logs/4007513.html这里要说的ASM,并不是指汇编语言,而是一个操作Java bytecode的框架。对于Java平台而言,bytecode便是它的“汇编语言”,所以,ASM这个名字倒也算是实至名归。ASM本身很强大,有不少软件和框架选择它作为底层的实现,比如cglib。在这篇blog中,主要来关注一下它在代码生成方面的威力。在起步阶段,Hello World总是一个很好的选择,也就是说,我们生成的目标代码是这样的:public class AsmExampl 阅读全文
摘要:
原文地址:http://blog.csdn.net/rainight/archive/2004/09/22/112686.aspx作者简介薛谷雨,NORDSAN(北京)信息科技开发有限公司高级JAVA研发工程师,正致力于企业级异构数据交换的服务器产品的研发,在J2EE和WEB SERVICE方面有较为丰富的开发经验,您可以通过rainight@126.com与他联系。前言代码生成器(code generator,CG),顾名思义就是生成代码的工具。有了它,你就可以从一组简单的设定或者数据库设计中获得几百、几千行代码。如果不采用这项技术 的话,开发者就不得不花上几个小时或者几天的时间来手工编写这 阅读全文
摘要:
ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class 文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。 阅读全文
摘要:
jvm classLoader architecture :a, Bootstrap ClassLoader/启动类加载器主要负责jdk_home/lib目录下的核心 api 或 -Xbootclasspath 选项指定的jar包装入工作.b, Extension ClassLoader/扩展类加载器主要负责jdk_home/lib/ext目录下的jar包或 -Djava.ext.dirs 指定目录下的jar包装入工作c, System ClassLoader/系统类加载器主要负责java -classpath/-Djava.class.path所指的目录下的类与jar包装入工作.b, Use 阅读全文