-
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
-
Json 之 Kryo
Kryo
Kryo 是一种用于 Java 的二进制序列化和克隆工具:快速、高效、自动化。
Kryo 是一个用于 Java 的快速高效的二进制对象图序列化框架。
该项目的目标是高速度、低大小和易于使用的 API。
该项目在任何需要持久化对象的时候都非常有用,无论是写入文件、数据库还是通过网络传输。
深度拷贝
Kryo 还可以执行自动深拷贝和浅拷贝/克隆。
这是从对象到对象的直接拷...
2018-07-20 01:24:03 |
Java
-
Json 之 Jboss Marshaling
关于 JBoss Marshalling
JBoss Marshalling 是一个替代的序列化 API,修复了 JDK 序列化 API 中的许多问题,同时完全兼容 java.io.Serializable 及其相关接口,并添加了多个可调参数和附加功能。
所有这些功能都可以通过工厂配置进行插拔(例如外部化器、类/实例查找表、类解析和对象替换)。
特性
该框架的灵感来自对标准Objec...
2018-07-20 01:24:03 |
Java