如果是一般java程序,不追求性能极致,想使用方便,推荐使用 Javassist 库. 如果是android程序,或者一般java程序欲追求性能极限,推荐使用 asm for java 及 asmdex for android.   但使用上比较麻烦一点,需要了解一些jvm底层机制. ASM在创建class字节码的过程中,操纵的级别是底层JVM的汇编指令级别,这要求ASM使用者要对class组织结构和JVM汇编指令有一定的了解.ASM 可以直接产生二进制 class 文件,也可以在类被加载入 J…
我们来学习Java虚拟机的结构原理与运行时数据区域. 1.Java虚拟机概述 Oracle官方定义的Java技术体系主要包括以下几个部分: Java程序设计语言 各种平台的Java虚拟机 Class文件格式 Java API类库 第三方Java类库 可以把Java程序设计语言.Java虚拟机和Java API类库这三部分统称为JDK(Java Development Kit),它是Java程序开发的最小环境.另外,Java API中的Java SE API子集和Java虚拟机这两部分统称为JRE…
参考APG里的说法:平台差异及不兼容性的一个特别的方面,是对象的运行时初始化和程序关闭时这些对象的相应析构. ACE为了明确管理对象的清理,定义了ACE_Object_Manager类,这个类不仅涉及到对象的管理,还与ACE库的初始化与关闭相关. ACE中应用了大量的设计模式,本篇顺便研究ACE的程序入口函数替换机制分析. ACE库的初始化与关闭 应用要确保在使用ACE库时正确的初始化和关闭,有以下两种常用方式: 1.使用ACE_TMAIN宏作为程序入口函数: 2.使用ACE::init()和A…
这篇文章 2016年12月13日星期二 就写完了,当时想着等写完另外一篇关于自定义注解的一起发.结果没想到这一等就是半年多 - -. 有时候的确是这样啊,总想着等条件更好了再干,等准备完全了再开始,结果好多想法.好多事情都不了了之. 读完本文你将了解: 什么是注解 Java 内置的注解 个用于通知编译器信息的注解 个用于修饰注解的注解 自定义一个注解 注解的作用 注解的用法 运行时注解 总结 Thanks 什么是注解 注解是一种元数据(描述数据的数据) 描述作用,不会直接生效,需要在编译前/运行…
Java把所有的非正常情况分为两种:异常(Exception)和错误(Error),它们都继承Throwable父类. Java的异常(Exception和Error)分为检查异常和非检查的异常. 其中根据Exception异常进行分类,可分为运行时异常和非运行时异常. 检查异常: 就是编译器要求你必须处理的异常.比如我们在编程某个文件的读于写时,编译器要求你必须要对某段代码try....catch... 或者 throws exception,这就是检查异常,简单的来说,你代码还没有运行,编码…
什么是字符串常量池 JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池或者字符串字面量池 工作原理 当代码中出现字面量形式创建字符串对象时,JVM首先会对这个字面量进行检查,如果字符串常量池中存在相同内容的字符串对象的引用,则将这个引用返回,否则新的字符串对象被创建,然后将这个引用放入字符串常量池,并返回该引用. 实现前提 字符串常量池实现的前提条件就是Java中String对象是不可变的,这样可以安全保证多个变量共享同一个对象.如果Java中的String对…
一:Error和Exception的基本概念: 首先Exception和Error都是继承于Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型. Exception 和 Error 体现了 Java 平台设计者对不同异常情况的分类,Exception和Error体现了JAVA这门语言对于异常处理的两种方式. Exception 是程序正常运行过程中可以预料到的意外情况,并且应该被开发者捕获,…
System类: System 类代表Java程序的运行平台,程序不能创建System类的对象, System类提供了一些类变量和类方法,允许直接通过 System 类来调用这些类变量和类方法. System 类提供了代表标准输入.标准输出和错误输出的类变量,并提供了一些静态方法用于访问环境变量.系统属性的方法,还提供了加载文件和动态链接库的方法. 获取操作系统环境变量System.getenv() package com.zmd.common_class_libraries; import j…
1 定义一个函数 void _invalid_parameter( const wchar_t * expression, const wchar_t * function, const wchar_t * file, int line, uintptr_t pReserved ); 2 注册这个函数 _invalid_parameter_handler _set_invalid_parameter_handler(_invalid_parameter_handler pNew); 3 在程序开…
1.sh catlina.sh run以控制台形式输出 2.sever.xml.配置acesslog,设置访问日志输出 Tomcat的访问日志是靠org.apache.catalina.valves.AccessLogValve来控制的,你可以修改$tomcat/conf/server.xml来启用它 ($tomcat是Tomcat安装的目录).AccessLogValve默认应该是注释掉的,简单的将其注释去掉,然后重启Tomcat就可以了. 以下是Tomcat默认的配置: className=…