实战情况

k8s + springcloud 项目

打包依赖版本问题

更新了模块 A 依赖的 模块 B 打的jar包,但是镜像 A打包时,没有 mvn clean install 更新依赖包 B 或者 模块 A 在 mvn clean install 之前,没有对 B 包进行 mvn clean deploy,导致 A 镜像依赖的 B 包 不对

查看镜像中的jar包

从服务器上下载 镜像

kubectl get po -n namespace pod_name -o yaml   得到pod 使用的镜像名
docker save 镜像名 /保存到服务器的目录/test.tar
用 scp 或者 mobaxterm 拖到win本地

查看 tar 包

winrar / 360压缩打开tar 包

查看class文件

Java| 编译和反编译
配置环境变量

反编译工具

JD-GUI 很好用!!!!

JD-GUI 是一个用C++ 开发的 Java反编译工具,由 Pavel Kouznetsov开发,支持Windows、Linux和苹果Mac Os三个平台。而且提供了Eclipse平台下的插件JD-Eclipse。JD-GUI 基于GPLv3开源协议,对个人使用是完全免费的。JD-GUI主要的是提供了可视化操作,直接拖拽文件到窗口既可,效果图如下

JAVAP

javapjdk自带的一个工具,可以对代码反编译,也可以查看java编译器生成的字节码。javap和其他两个反编译工具最大的区别是他生成的文件并不是java文件,也不像其他两个工具生成代码那样更容易理解。拿一段简单的代码举例,如我们想分析Java 7中的switch是如何支持String的,我们先有以下可以编译通过的源代码:

public class switchDemoString {public static void main(String[] args) {String str = "world";switch (str) {case "hello":System.out.println("hello");break;case "world":System.out.println("world");break;default:break;}}
}

cmd 或者 bash 输入

javac Decompilation.java     编译
javap -c Decompilation.class    反编译
bash 中可以 用  javap -c Decompilation.class | grep 查找特定值
cmd 中 javap -c Decompilation.class | findstr 值
反编译 class 文件Compiled from "Decompilation.java"
public class Decompilation {public Decompilation();Code:0: aload_01: invokespecial #8                  // Method java/lang/Object."<init>":()V4: returnpublic static void main(java.lang.String[]);Code:0: ldc           #16                 // String world2: astore_13: aload_14: dup5: astore_26: invokevirtual #18                 // Method java/lang/String.hashCode:()I9: lookupswitch  { // 299162322: 36113318802: 48default: 82}36: aload_237: ldc           #24                 // String hello39: invokevirtual #26                 // Method java/lang/String.equals:(Ljava/lang/Object;)Z42: ifne          6045: goto          8248: aload_249: ldc           #16                 // String world51: invokevirtual #26                 // Method java/lang/String.equals:(Ljava/lang/Object;)Z54: ifne          7157: goto          8260: getstatic     #30                 // Field java/lang/System.out:Ljava/io/PrintStream;63: ldc           #24                 // String hello65: invokevirtual #36                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V68: goto          8271: getstatic     #30                 // Field java/lang/System.out:Ljava/io/PrintStream;74: ldc           #16                 // String world76: invokevirtual #36                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V79: goto          8282: return
}

javap并没有将字节码反编译成java文件,而是生成了一种我们可以看得懂字节码。其实javap生成的文件仍然是字节码,只是程序员可以稍微看得懂一些

JAD

JAD是一个比较不错的反编译工具,只要下载 jad,就可以实现对class文件的反编译了。还是上面的源代码,使用jad反编译后内容如下:

jad Decompilation.class
会生成一个Decompilation.jad的文件
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3)
// Source File Name:   Decompilation.javapackage com.yveshe;
import java.io.PrintStream;public class Decompilation
{public Decompilation(){}public static void main(String args[]){String str = "world";String s;switch((s = str).hashCode()){default:break;case 99162322: if(s.equals("hello"))System.out.println("hello");break;case 113318802: if(s.equals("world"))System.out.println("world");break;}}
}

看上面的代码这不就是标准的java的源代码么。这个就很清楚的可以看到原来字符串的switch是通过equals()和hashCode()方法来实现的。

PS: 但是,由于JAD已经很久不更新了
在对Java7生成的字节码进行反编译时,偶尔会出现不支持的问题
在对Java 8的lambda表达式反编译时就彻底失败

idea

直接把 class 文件拖动到 idea 窗口

查看 class 文件相关推荐

  1. windows用 tree命令查看目录文件夹结构

    windows用 tree命令查看目录文件夹结构 ## 查看帮助 tree --helptree --dirsfirst --filelimit 6 -h -t –dirsfirst 目录优先展示 – ...

  2. objdump查看目标文件构成

    objdump objdump是用查看目标文件或者可执行的目标文件的构成的GCC工具 反汇编 #objdump -d cpuid2 对于其中的反汇编代码 左边是机器指令的字节,右边是反汇编结果.显然, ...

  3. 【Ubuntu】dpkg-deb -c :查看deb文件中的内容

    1.dpkg-deb -c :查看deb文件中的内容 $ dpkg-deb -c package eg: $ dpkg-deb -c sogoupinyin_2.2.0.0108_amd64.deb ...

  4. 利用adb命令查看apk文件包名的一些方法

    利用adb命令查看apk文件包名的一些方法 前提是已经下载android SDK并配好环境变量! 在控制台输入命令$adb shell pm 可以看到adb shell pm的相关用法,详细信息请自己 ...

  5. linux查看特定文件的位置

    ubuntu如何查看特定文件的位置呢 这里我想更改一个依赖库的源码,但是不知道安装位置,命令如下: locate +文件名 locate pygad.py 结果如下: 即可.

  6. 《Adobe Acrobat DC经典教程》—第1章1.11节在阅读模式下查看PDF文件

    本节书摘来自异步社区<Adobe Acrobat DC经典教程>一书中的第1章1.11节在阅读模式下查看PDF文件,作者[美]Lisa Fridsma(丽莎 弗里斯玛) , Brie Gy ...

  7. 查看linux文件的权限:ls -l 文件名称

    查看linux文件的权限:ls -l 文件名称 查看linux文件夹的权限:ls -ld 文件夹名称(所在目录) 修改文件及文件夹权限: sudo chmod -(代表类型)×××(所有者)×××(组 ...

  8. 查看binlog文件的2种方式

    2019独角兽企业重金招聘Python工程师标准>>> 查看binlog文件的2种方式 1.使用show binlog events a.获取binlog文件列表 mysql> ...

  9. [Android Pro] linux下查看一个文件的属性(ls,lsattr,file,stat)

    reference to : http://blog.chinaunix.net/uid-28458801-id-4615294.html 查看文件属性有多种方法,且这些方法中偏向不同,具体如下: 1 ...

  10. [文章存档]Kudu 的 Debug Console 窗口如何查看更多文件

    链接:https://docs.azure.cn/zh-cn/articles/azure-operations-guide/app-service-web/aog-app-service-web-h ...

最新文章

  1. ubuntu14.04LTS openssh-server 手动安装配置步骤
  2. HelloCharts-android 之饼状图的使用
  3. Android开发之选项菜单(optinosMenu)
  4. 在抽象类中可以没有抽象方法_是否可以在最终课程中使用抽象方法?
  5. Java-异常02 捕获和抛出异常
  6. Objective-C的self.用法的一些总结
  7. 计算机英语讲课笔记07
  8. 机器视觉:下一代相机高速接口
  9. vue store的值刷新就被覆盖解决方案
  10. H3CSE20200603班-SSL V*N
  11. BS7799、ISO/IEC 17799、ISO/IEC 27001的联系与区别
  12. 《创业维艰》:如何完成比难更难的事
  13. JavaScript求和函数
  14. Nginx代理百度地图离线瓦片
  15. struts2配置细节
  16. H3C无线AP 瘦模式转胖模式 fit转fat
  17. 大数据知识的基本介绍,大数据的特点主要包含哪几个?
  18. 三星Galaxy S21系列5G手机竟成了《天赐的声音》舞台上最亮的星?
  19. IMEI、IMEISV
  20. `MD`语法技巧Typora

热门文章

  1. Centos下如何永久修改系统时间 hwclock
  2. 大数据发展促进委员会在京成立
  3. 华泰单因子测试之换手率类因子
  4. 我的世界服务器创世神文件夹,我的世界服务器怎么给创世神权限的指令
  5. 我的世界服务器神秘修改节点,我的世界神秘节点指令 | 手游网游页游攻略大全...
  6. 雷电模拟总是显示android启动,雷电模拟器启动失败如何解决?启动失败解决方法图文分享...
  7. 用matlab画标准雷电波,雷电波发生器的MATLAB仿真及参数选取sc
  8. 基于准则匹配的图像对准
  9. 力扣739:每日温度【C++】
  10. 便利店的选址有什么诀窍吗?需要掌握哪些选址技巧?