Java Class文件字节码解释

下面的信息可以通过javap这个反编译命令或者jclasslib这个插件查看
第一部分:CA FE BA BE 前四个字节   魔数
第二部分:次版本号 00 00(0)
第三部分:00 34(52)-->1.8  51->1.7  ...JDK主版本号
第四部分:常量池的个数2个字节 00 19(25-1=24)第0号常量被jvm给占用了,表示什么都不引用
    常量池分类:字面量、符号引用,第一个字节是tag
//java/lang/Object."<init>":()V  没有入参,返回值为 null
第一个常量:0A 00 04 00 15 methodref_info: 0A  class_index: 00 04(4) #4   00 15(21)(nameAndType_index)
第五个常量:01 -> utf-8 length: 00 08(8个字节)  75 73 65 72 4E 61 6D 65->userName
access_flag 类的权限描述符(2个字节)0x0021 acc_public acc_super
this 关键字是jvm传入方法的第一个参数
This class Name: 2个字节(索引值)00 03
super class name:2个字节(索引值)00 04
实现接口的个数:2个字节:00 00 -->最多65535个

字段的个数:00 01(1)

filed_info(1),可以通过下面3个描述符唯一确定一个字段
访问修饰符:00 02 acc_private
字段名称的索引: 00 05#5 -> userName
字段描述索引:00 06#6 -> Ljava/lang/String;

指令:
2A --> aload_0
B7 -->调用父类的构造方法 #00 01  java/lang/Object."<init>":()V
B1 -->return void


分布式锁:
1.基于数据库实现分布式锁
2.基于缓存(Redis等)实现分布式锁
3.基于Zookeeper实现分布式锁

基于数据库缺点:
    1.这把锁强依赖于数据库的可用性,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值