-
ASM-03-classes Interface
接口和组件
介绍
用于生成和转换已编译类的ASM API基于ClassVisitor抽象类(请参见图2.4)。
此类中的每个方法都对应于同名的类文件结构部分(请参见图2.1)。
通过单个方法调用可以访问简单部分,该方法的参数描述其内容,并返回void。
可以通过返回辅助访问者类的初始方法调用来访问其内容可以具有任意长度和复杂度的节。
visitAnnotation,visitFi...
2018-07-20 05:43:31 |
Java
-
ASM-02-classes Structure
Java 类文件
所谓 Java 类文件,就是通常用 javac 编译器产生的 .class 文件。
这些文件具有严格定义的格式。
为了更好的理解 ASM,首先对 Java 类文件格式作一点简单的介绍。
Java 源文件经过 javac 编译器编译之后,将会生成对应的二进制文件(如下图所示)。
每个合法的 Java 类文件都具备精确的定义,而正是这种精确的定义,才使得 Java...
2018-07-20 05:43:31 |
Java
-
ASM-01-overview
动机
程序分析,生成和转换是有用的技术,可以在许多情况下使用:
程序分析
范围从简单的语法分析到完整的语义分析,可用于查找应用程序中的潜在错误,检测未使用的代码,反向工程代码等。
在编译器中使用程序生成。
其中包括传统的编译器,还有用于分布式编程的存根或骨架编译器,即时编译器等
程序转换可用于优化或混淆程序,
将调试或性能监控代码插入应用程序,用于面向方面的编程等
所有这些技...
2018-07-20 05:43:31 |
Java
-
ASM-00-入门教程
ASM
ASM 是一个通用的Java字节码操作和分析框架。
它可以用来修改现有的类或动态地生成类,直接以二进制形式。
ASM提供了一些通用的字节码转换和分析算法,可以从这些算法中构建自定义复杂的转换和代码分析工具。
ASM提供与其他Java字节码框架类似的功能,但主要关注性能。
因为它的设计和实现都尽可能地小和快,所以非常适合在动态系统中使用(当然也可以以静态的方式使用,例如在编译...
2018-07-20 05:43:31 |
Java
-
Java Proxy
Java Proxy
代码实现
UserService.java
public interface UserService {
/**
* 查询所有
*/
void queryAll();
}
UserServiceImpl.java
public class UserServiceImpl implements UserService {...
2018-07-20 01:30:27 |
Java
-
Gson/fastjson/Jackson json 反序列化/序列化 如何指定字段的名称
场景
java 一般命名是驼峰。比如 userName
发现和其他语言对接时,可能对方风格可能不同,有的是 user_name。
那么,怎么可以让不同的 json 和 java 对象的字段映射序列化+反序列化呢?
不同 json 库的操作方式
在 Java 中使用 JSON 库(如 Gson 或 Jackson)来指定注解的名字,那么通常的做法是在类或字段上使用注解来指定 JSON...
2018-07-20 01:24:03 |
Java
-
Json Path-另一种解析 json 的方式 jsonpath
场景
以前工作中,习惯于将对象转换为 json。并一直感觉这种转换非常的方便。
因为借助 fastjson, gjson, jackson 等工具就是一个方法就搞定。
以前写一些数据的抓取,我也会写一大堆代码,去构建这个对象。
后来知道有 mongo 这种文档型数据库,觉得也挺方便。
但是 xml 有 xmlPath, 我为什么一直都没有想到 json 有 json path 呢?...
2018-07-20 01:24:03 |
Java
-
Json 之 MessagePack
MessagePack
MessagePack 是一种高效的二进制序列化格式。
它可以像 JSON 一样在多种语言之间交换数据。
但它更快且更小。
小整数被编码成一个字节,典型的短字符串只需要一个额外的字节来存储字符串本身。
特性
支持语言丰富
压缩比例
原始大小为 27 byte
{"compact":true,"schema":0}
压缩后:
18 byt...
2018-07-20 01:24:03 |
Java