线上镜像代码版本对比

1.问题背景:

  • 接手一个一上线运行的项目,但是不知道,线上运行的代码版本

2.解决思路:

  • 获取线上运行项目代码
  • 批量比对代码,判断版本

3.实现方式:

  • 首先通过拉取线上镜像,通过inspect 镜像,查看项目运行目录,然后本地运行镜像,通过docker cp命令,获得项目运行文件(针对我的情况是war包)
  • 指定一个可能版本的代码,本地打包,然后通过beyondCompare软件进行反编译并比对,根据差异,定位具体版本

4.从java文件到class文件,java编译器到底对我们的代码做了什么?

+ 注解处理器对注解生成代理类
+ 泛型与类型擦除
+ 自动装箱、拆箱与遍历循环
+ 字节码生成

在此期间,我们的代码丢失了很多细节,包括但不限于,注释,注解,泛型;所以没有混淆的代码,即使反编译回成java代码,依然会和我们的源代码相差甚远;

5. beyondCompare使用方法

+ [beyondCompare官网](http://www.scootersoftware.com/)
+ 下载软件,正版有三十天试用期限


+ 使用方式:

原文地址:https://www.cnblogs.com/IC1101/p/11834477.html