一次JVM分享的相关记录

一.概述

最近看见公司一位前辈有分享JVM相关的知识,自己特地从跑过去听了一下,感觉讲的不是很深入,但是相对来说还是不错的,本文就自己听到的一些东西做一个简单的总结。平时我们大多数都是用JAVA写代码,很多人学JAVA都是从HelloWorld开始,但是从你写HelloWorld代码到最终输出HelloWorld到底发生那些事情呢?要想清楚的回答这个问题,并不是很容易,你需要对JVM有一个清晰的了解后,才能说清楚这个问题,这只是一个引子,本文也不去挑战这个问题,这里主要记录一下自己从这个分享中听到的一些感兴趣的东西。

如何使用ASMifier

一.概述

ASM这个字节码处理框架,不仅能够读字节码,而且还能修改字节码,我们经常是先写好JAVA代码,然后编译(IDE或者javac)生成class文件,最后classloader再把相应的class文件加载到内存,但是有了ASM后,我们可以直接使用ASM生成class文件的字节数组,即面向字节码写JAVA代码,这样可以让JVM动态去加载一个类,但是这个类的class文件并不存在磁盘上,也就是说这个类的class文件是在内存中构建出来的。

JVM字节码指令相关

JAVA代码中的每个方法都会被编译成一系列的JVM字节码指令,这些字节码指令会被JVM所执行,从而产生相应的数据,我们通常可以用javap -verbose来查看一个方法的字节码指令。

单元测试Failed的排查

最近各种中间件升级的事情,升级中间件可能会出现很多诡异的问题,此时我们需要定位这些问题是自己升级导致还是其他原因导致,升级中间件可能会出现很多JAR包冲突的问题,此时需要一一排查。

IBatis不同版本对parameterMap的处理

一.概述

今天在升级一个监控的中间件时,发现必须升级ibatis的版本到2.3.4,原来ibatis的版本是2.3.0,升级后,发现sqlmap的解析出问题了,对于parameterMap这个标签解析出错,原因是parameterMap对应class没法实例化,为什么原来没有问题,升级后就有问题了呢?这时候只能怀疑版本的问题,2.3.4和2.3.0在解析parameterMap时有所不同。

HBase的基础类型KeyValue

一.概述

HBase是面向列的存储数据的,最终的存储单元都是KeyValue的结构,HBase本身也定义了一个KeyValue的类型,这是HBase数据存储的基本类型。那么KeyValue本身会存储那些信息呢?