首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏个人随笔

    Javap -c 字节码解析

    栈和局部变量操作 将常量压入栈的指令 aconst_null         将null对象引用压入栈 iconst_m1         将int类型常量-1压入栈 iconst_0         将int类型常量0压入栈 iconst_1         将int类型常量1压入栈 iconst_2         将int类型常量2压入栈 iconst_3         将int类型常量3压入栈 iconst_4         将int类型常量4压入栈 iconst_5         将int类

    88060发布于 2018-05-17
  • 来自专栏ccylovehs

    javap查看class文件

    通过JVM编译java文件生成class字节码文件,很多时候很想用工具打开看看,目前还不清楚哪一个软件专门查看class文件的,但是通过windows下的javap命令可以查看详细的class文件 ShowClass.java

    2.5K11发布于 2018-09-14
  • 来自专栏haifeiWu与他朋友们的专栏

    Java命令之javap初探

    javap是jdk自带的一个工具在jdk安装目录的/bin下面可以找到,可以对代码反编译,也可以查看java编译器生成的字节码,对代码的执行过程进行分析,了解jvm内部的工作。 下面列举javap命令的常用options及其功能描述,更多功能的使用请自行Google,楼主不做赘述。 s 输出内部类型签名 -c 输出分解后的代码,例如,类中每一个方法内,包含java字节码的指令, -verbose 输出栈大小,方法参数的个数 -constants 输出静态final常量 实例分析 javap 如果没有使用options,那么javap将会输出该class文件中的包,类里的protected和public域以及类里的所有方法。javap将会把它们输出在标准输出上。 javap可以用于反编译和查看编译器编译后的字节码。一般用到的不多,不过平时用javap -c比较多,该命令用于列出每个方法所执行的JVM指令,用来解决比较棘手的逻辑出错的bug是个不错的选择。

    79820发布于 2018-09-11
  • 来自专栏凯哥Java

    Idea添加Javap详细教程

    大家安装过jdk之后,细心的同学都会发现bin目录下自带了一个工具软件javap,如果你想查看文件的字节码信息,有没有简便的方式呢,还是一望无际的使用命令行呢,答案是当然有,下面详细讲解使用设置Idea File-》setting 图片 图片 Create Tool创建一个新的工具,填入Name信息,然后设置Tools settings, 先配置Program项,也就是外部工具程序位置,这里我们配置的是javap 即可 图片 接着配置Parameters项,也就是javap后面跟着的参数选项,这里选择-c反编译的选项,然后空格,然后跟上class文件,这个地方还是通过宏来获取idea窗口当前的java文件对应的class Working directory目录,也就是程序运行输出目录位置,使用宏命令,OutputPath OutputPathOutputPath,到此配置完成之后点击ok确定关闭窗口 图片 下面开始使用已经配置好的javap 工具,在任意一个java文件上右击,右键菜单上选择External Tools》javap -c 就可以看到字节码信息啦,是不是很友善呀 图片 图片

    82320编辑于 2022-12-16
  • 来自专栏朱永胜的私房菜

    【面试题精讲】javap命令

    为什么需要javap命令? 使用 javap 命令可以帮助开发人员了解和分析Java程序的内部结构和细节。 3. javap的实现原理? javap 实际上是通过解析Java字节码文件来获取相关信息并进行反编译。当我们运行 javap 命令时,它会加载指定的类文件,并根据字节码规范解析该文件的内容。 4. javap的使用示例 下面是一些常见的 javap 命令的使用示例: 查看类的所有方法和字段: javap -p MyClass 反编译类文件并输出到指定文件 : javap -c -o output.txt MyClass 查看类的常量池信息: javap -v MyClass 5. javap的优点 可读性高: 7. javap的使用注意事项 在使用 javap 命令时,需要保证JDK的bin目录在系统路径中,这样才能直接运行 javap 命令。

    28020编辑于 2023-10-22
  • 来自专栏Linyb极客之路

    通过javap命令分析java汇编指令

    一、javap命令简述 javap是jdk自带的反解析工具。 javap的用法格式: javap <options> <classes> 其中classes就是你要反编译的class文件。 在命令行中直接输入javapjavap -help可以看到javap的options有如下选项: -help --help -? javap -v classxx,不仅会输出行号、本地变量表信息、反编译汇编代码,还会输出当前类用到的常量池等信息。 javap -l 会输出行号和本地变量表信息。 二、javap测试及内容详解 前面已经介绍过javap输出的内容有哪些,东西比较多,这里主要介绍其中code区(汇编指令)、局部变量表和代码行偏移映射三个部分。

    2.6K20发布于 2018-12-13
  • 来自专栏全栈程序员必看

    命令行中 javac、java、javap 的使用详解

    3. javap javap 主要用于帮助开发者深入了解 Java 编译器的机制,主要选项有: -c:分解方法代码,即显示每个方法具体的字节码 -public | protected | package | private:用于指定显示哪种级别的类成员 -verbose:指定显示更进一步的详细信息 输入 javap -c com/zxk/test/SoftReferenceTest ,输出信息显示如下 : E:\JavaWeb_workspaces\dbBackup\src\com\zxk\test>javap -c com/zxk/test/SoftReferenceTest Compiled from java/io/PrintStream.println:(Ljava/lang/String;)V 122: return } ---- 参考原文: windows命令行中java和javac、javap

    1.1K11编辑于 2022-09-02
  • 来自专栏高级开发进阶

    JavaP6大纲】Zookeeper篇:选举机制

    领导者选举的过程实际上就是比较哪台服务器比较强,比较规则是:1. 谁的数据比较新谁当领导(zxid),2.数据都一样则看谁的服务器Id(myid)比较大,谁就是领导;这个过程是通过各个服务器之间相互投票来进行的,每台服务器会接收其他服务器的投票,在投票信息里就会包含上面说的两个信息zxid, myid,然后进行PK,选出谁比较强,而PK中弱的那一方修改自己的投票,改为投刚刚和自己PK赢的一方,所以按照这个规则,每台服务器都会有一个自己认为最强的那个人,而在整个投票的过程中,每台服务器内部都会存在一个投票箱,该投票箱内存放了其他服务器当前投给了谁,所以每台服务器可以根据这个投票箱内的数据来看是否有超过半数的服务器和我当前投的最强者是同一台服务器,如果超过了则认为选出了Leader(自己当前所投的那个最强者即为Leader),如果发现自己就是这个最强者,则进行领导,如果自己不是,则进行跟随(Follower)。

    30120发布于 2021-04-09
  • 来自专栏高级开发进阶

    JavaP6大纲】Dubbo篇:Dubbo特性?

    透明远程调用:就像调用本地方法一样调用远程方法;只需简单配置,没有任何 API 侵入 负载均衡机制:Client 端 LB,可在内网替代 F5 等硬件负载均衡器 容错重试机制:服务 Mock 数据,重试次数、超时机制等 自动注册发现:注册中心基于接口名查询服务提 供者的 IP 地址,并且能够平滑添加或删除服务提供者 性能日志监控:Monitor 统计服务的调用次调和调用时间的监控中心 服务治理中心:路由规则,动态配置,服务降级,访问控制,权重调整,负载均衡,等手动配置 自动治理中心:无,比如:熔断限流机制、自动权重调整等(因此可以搭配SpringCloud的熔断机制等进行开发)

    34620发布于 2021-04-12
  • 来自专栏高级开发进阶

    JavaP6大纲】MySQL篇:主从问题

    主从备份不可靠,需要人经常去查看同步状态,一旦出现报错,需要及时人为的处理。 出现1236:[ERROR] Slave I/O: Got fatal error 1236 from master when reading data from binary log: ‘Client requested master to start replication from impossible position’, Error_code: 1236 解决方案:主从服务器失去连接,出现了宕机的情况。常用解决办法,重新查询主服务器的状态,获取新的position位置,重新设置从服务器的同步信息。设置命令为:change master to master_log_file=’’,master_log_pos=123;

    37910发布于 2021-04-14
  • 来自专栏高级开发进阶

    JavaP6大纲】MySQL篇:如何优化SQL?

    应尽量避免全表扫描,首先要考虑在 where 及 order by 涉及的列上建立索引 避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描 应尽量避免在where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描 应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描 in 和 not in 也要慎用,很多时候用 exists 代替 in 是一个好的选择,对于连续的数值,能用 between 就不要用 in 了,否则会导致全表扫描 like以通配符%开头索引失效会变成全表扫描的操作 应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描 应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描 不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。 尽量用全职索引,最左前缀 查询从索引的最左前列开始并且不跳过索引中的列 索引列上不操作,范围之后全失效 不等空值还有OR,索引影响要注意 字符串不加单引号索引失效

    35610发布于 2021-04-14
  • 来自专栏高级开发进阶

    JavaP6大纲】Java基础篇:HashMap底层原理

    HashMap是Map的一个实现类,它是以键值对存储数据的,Key-Value都是Map.Entry中的属性。当我们向HashMap中存放一个元素(k1,v1),先根据k1的hashCode方法来决定在数组中存放的位置。如果这个位置没有其它元素,将(k1,v1)直接放入一个Node类型的数组中,当元素加到12的时候,底层会进行扩容,扩容为原来的2倍。如果该位置已经有其它元素(k2,v2),那就调用k1的equals方法和k2进行比较二个元素是否相同,如果结果为true,说明二个元素是一样的,用v1替换v2,如果返回值为false,二个元素不一样,就用链表的形式将(k1,v1)存放。不过当链表中的数据较多时,查询的效率会下降,所以在JDK1.8版本后做了一个升级,HashMap存储数据结构链表长度超过8且数组长度大于64时数据结构,会将链表替换成红黑树才会树化时,会将链表替换成红黑树,来提高查找效率。因为对于搜索,插入,删除操作多的情况下,使用红黑树的效率要高一些。因为红黑树是一种特殊的二叉查找树,二叉查找树所有节点的左子树都小于该节点,所有节点的右子树都大于该节点,就可以通过大小比较关系来进行快速的检索。在红黑树上插入或者删除一个节点之后,红黑树就发生了变化,但它不再是一颗红黑树时,可以通过左旋和右旋,保证每次插入最多只需要三次旋转就能达到平衡,因为红黑树强制约束了从根到叶子的最长的路径不多于最短的路径的两倍长,插入、删除和查找某个值的最坏情况时间都要求与树的高度成比例,这个在高度上的理论上限允许红黑树在最坏情况下都是高效的。

    39520发布于 2021-04-12
  • 来自专栏高级开发进阶

    JavaP6大纲】SpringCould篇:常用组件底层实现

    Eureka是微服务架构中的注册中心,专门负责服务的注册与发现。 服务中都有一个Eureka Client组件,这个组件专门负责将这个服务的信息注册到Eureka Server中。 Eureka Client告诉Eureka Server,自己在哪台机器上,监听着哪个端口。 而Eureka Server是一个注册中心,里面有一个注册表,保存了各服务所在的机器和端口号。 Eureka Client把这些相关信息从Eureka Server的注册表中拉取到自己本地缓存起来

    42120发布于 2021-04-13
  • 来自专栏一个会写诗的程序员的博客

    使用 javap 命令查看 Java Class 文件的字节码内容

    Light { private int m; public int inc() { return m +1; } } 如果我们通过命令行来查看某个 class 的字节码文件的话,可以直接通过javap staff 279 Aug 14 13:05 Light.class -rw-r--r-- 1 bytedance staff 116 Aug 14 13:05 Light.java 然后用javap 命令查看 class 文件的字节码: bytedance$javap -verbose Light 警告: 二进制文件Light包含light.sword.Light 字节码内容: Classfile

    1.7K30编辑于 2021-12-16
  • 来自专栏高级开发进阶

    JavaP6大纲】Zookeeper篇:zookeeper工作原理

    zookeeper:Zookeeper会维护一个类似于标准的文件系统的具有层次关系的数据结构。这个文件系统中每个子目录项都被称为znode节点,这个znode节点也可以有子节点,每个节点都可以存储数据,客户端也可以对这些node节点进行getChildren,getData,exists方法,同时也可以在znode tree路径上设置watch(类似于监听),当watch路径上发生节点create、delete、update的时候,会通知到client。client可以得到通知后,再获取数据,执行业务逻辑操作。Zookeeper 的作用主要是用来维护和监控存储的node节点上这些数据的状态变化,通过监控这些数据状态的变化,从而达到基于数据的集群管理。

    36120发布于 2021-04-09
  • 来自专栏高级开发进阶

    JavaP6大纲】MySQL篇:传播行为

    Spring支持7中事务传播行为 一个场景:假设外层方法里面包含二个新增用户和新增角色的方法,二个方法后面还会抛一个异常。 propagation_required(需要传播):当前没有事务则新建事务,有则加入当前事务。

    37710发布于 2021-04-12
  • 来自专栏高级开发进阶

    JavaP6大纲】分布式事务篇:BASE理论

    BASE 理论是对 CAP 理论的延伸,核心思想是即使无法做到强一致性,但应用可以采用适合的方式达到最终一致性。 基本可用: 基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务。这就是损失部分可用性的体现。 软状态: 软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。MySQL Replication 的异步复制也是一种体现。 最终一致性: 最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。

    51940发布于 2021-04-08
  • 来自专栏高级开发进阶

    JavaP6大纲】功能设计篇:单点登录

    用户访问系统1的受保护资源,系统1发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数

    40730发布于 2021-04-08
  • 来自专栏高级开发进阶

    JavaP6大纲】SpringCould篇:什么是微服务

    单体架构的痛点 缺点一:项目过于臃肿当大大小小的功能模块都集中在同一项目的时候,整个项目必然会变得臃肿,让开发者难以维护。 缺点二:资源无法隔离,整个单体系统的各个功能模块都依赖于同样的数据库、内存等资源,一旦某个功能模块对资源使用不当,整个系统都会被拖垮。 缺点三:无法灵活扩展当系统的访问量越来越大的时候,单体系统固然可以进行水平扩展,部署在多台机器上组成集群,但是这种扩展并非灵活的扩展。比如我们现在的性能瓶颈是支付模块,希望只针对支付模块做水平扩展,这一点在单体系统是做不到的。

    38020发布于 2021-04-13
  • 来自专栏高级开发进阶

    JavaP6大纲】Java基础篇:HashMap扩容机制

    将(k1,v1)直接放入Node类型的数组中,这个数组初始化容量是16,默认的加载因子是0.75,也就是当元素加到12的时候,底层会进行扩容,扩容为原来的2倍。

    50430发布于 2021-04-12
领券