摘要:
1.Class文件基础 (1)文件格式 Class文件的结构不像XML等描述语言那样松散自由。由于它没有任何分隔符号, 所以,以上数据项无论是顺序还是数量都是被严格限定的。哪个字节代表什么 含义,长度是多少,先后顺序如何,都不允许改变。 (2)数据类型 仔细观察上面的Class文件格式,可以看出Cl 阅读全文
摘要:
原文链接:http://blog.jamesdbloom.com/JVMInternals.html This article explains the internal architecture of the Java Virtual Machine (JVM). The following di 阅读全文
摘要:
聊聊文字,写一篇关于 java 基础知识的博文。 JVM 线程栈 到 函数运行 每一个JVM线程来说启动的时候都会创建一个私有的线程栈。一个jvm线程栈用来存储栈帧,jvm线程栈和C语言中的栈很类似,它负责管理局部变量、部分运算结果,同时也参与到函数调用和函数返回的工作中。JVM规范中运行线程栈的大 阅读全文
摘要:
一、什么是ASM ASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class文件里,这些类文件拥有足够的元数据来解析类中 阅读全文
摘要:
用了一下午总算把java agent给跑通了,本篇文章记录一下具体的操作步骤,以免遗忘。。。 通过java agent可以动态修改代码(替换、修改类的定义),进行AOP。 目标: ? 1 为所有添加@ToString注解的类实现默认的toString方法 ? 1 为所有添加@ToString注解的类 阅读全文
摘要:
main类: Java code ? 1 2 3 4 public static void main(String[] args) { File file = new File("e:\\3.txt"); System.out.println(file.getName()); } Java code 阅读全文
摘要:
pclass = Class.forName("get_class_method.Person"); //Field ageField = pclass.getField("age");//因为age成员变量是私有的,所以会产生NoSuchFieldException异常 Field ageField = pclass.getDeclaredFie... 阅读全文
摘要:
YAML是“另一种标记语言”的外语缩写[1] (见前方参考资料原文内容);但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名。它是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。 它是类似于标准通用 阅读全文
摘要:
javap是JDK自带的反汇编器,可以查看java编译器为我们生成的字节码。通过它,我们可以对照源代码和字节码,从而了解很多编译器内部的工作。 javap是JDK自带的反汇编器,可以查看java编译器为我们生成的字节码。通过它,我们可以对照源代码和字节码,从而了解很多编译器内部的工作。 语法: ja 阅读全文
摘要:
jstack?-- 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到 当时运行的java 阅读全文
摘要:
一直在学习Java,碰到了很多问题,碰到了很多关于i++和++i的难题,以及最经典的String str = "abc" 共创建了几个对象的疑难杂症。 知道有一日知道了java的反汇编 命令 javap。现将学习记录做一小结,以供自己以后翻看。如果有错误的地方,请指正 1.javap是什么: whe 阅读全文
摘要:
背景 想调用ASM API (用于字节码处理的开源API)对字节码进行处理,目标是实现对java程序运行时各种对象的动态跟踪,并进一步分析各个对象之间的关系(研究前提是目前的UML锁阐释的whole-part relation 是比较混乱的)。由于ASM相关内容又可以延伸很远,在此文中略过。 在完成 阅读全文
摘要:
-javaagent 这个JVM参数是JDK 5引进的. Java -help的帮助里面写道: -javaagent:<jarpath>[=<options>] load Java programming language agent, see java.lang.instrument JDK 工具 阅读全文
摘要:
理解Java代码是如何被编译为字节码并在Java虚拟机(JVM)上执行是非常重要的,这将帮助理解你的程序是如何执行的。这样的理解不仅仅能够让你在逻辑上更好的掌握语言特性,而且能够有机会理解在做出重要决定时所需的权衡以及相应的副作用。 这篇文章解释了Java代码是如何被编译为字节码并在JVM上执行的, 阅读全文
摘要:
概述 本文重点讲述javaagent的具体实现,因为它面向的是我们Java程序员,而且agent都是用Java编写的,不需要太多的C/C++编程基础,不过这篇文章里也会讲到JVMTIAgent(C实现的),因为javaagent的运行还是依赖于一个特殊的JVMTIAgent。 对于javaagent 阅读全文
摘要:
由于jvm内部的限制Instrumentation 只能修改方法体 不能动态添加删除方法(安全第一吧!!!!) Premain 对于使用命令行接口的实现,可以将以下选项添加到命令行来启动代理: jarpath 是代理 JAR 文件的路径。 options 是代理选项。此开关可以在同一代码行使用多次, 阅读全文
解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variabl
摘要:
1.添加M2_HOME的环境变量 2.Preference->Java->Installed JREs->Edit 选择一个jdk, 添加 -Dmaven.multiModuleProjectDirectory=$M2_HOME 阅读全文
摘要:
JAVA反射机制是在运行状态中,对于任意一个类(class文件),都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象方法的功能称为java语言的反射机制。动态获取类中信息,就是java反射。可以理解为对类的解剖。 如果想要对... 阅读全文