Zookeeper源码编译打包与逆向工程

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,182元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
云原生网关 MSE Higress,422元/月
简介: Zookeeper源码编译打包与逆向工程

最近要将zookeeper静态版本升级到动态版本(为什么升级,如何升级是另一个话题了,后续我将专门开贴讨论)。升级过程中出现不兼容异常,需要修改zk源码。于是没有Java开发经验的我只能硬着头皮把这事给干了。


本文分为两部分,第一部分记录如何对zookeeper源码进行编译打包,第二部分记录如果对java class文件进行逆向工程。


zookeeper源码编译打包


$ git clone https://github.com/apache/zookeeper
$ git checkout -b 3.5.6 origin/branch-3.5.6
$ mvn package -DskipTests 
$ find . -name "*.tar.gz"
./zookeeper-assembly/target/apache-zookeeper-3.5.6-bin.tar.gz
./zookeeper-assembly/target/apache-zookeeper-3.5.6.tar.gz

打包之后生成了了两个tar.gz文件,带bin的才是我们想要的可用于部署zk的包。




class文件的逆向工程


百度了一番,Java有很多逆向工程的工具。我们就用jad吧。

首先是安装,

wget https://varaneckas.com/jad/jad158e.linux.intel.zip
ls ./jad
sudo ln -sf ./jad /usr/bin/jad

其次使用

$ cd zookeeper-server/target/classes/org/apache/zookeeper/server/quorum 
$ jad LearnerSessionTracker.class
$ ls ./LearnerSessionTracker.jad
$ cat  LearnerSessionTracker.jad    | head
// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: packimports(3)
// Source File Name:   LearnerSessionTracker.java
package org.apache.zookeeper.server.quorum;
import java.io.PrintWriter;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
相关文章
|
存储 应用服务中间件 调度
在StatefulSet中使用LocalVolume存储卷保持节点一致
StatefulSet是一种有状态服务,其存储卷的使用有多种方式: 使用共享存储,这时在模板中定义一个volume卷,可以给多个pod共享; 每个pod配置独立的存储卷,使用非共享存储(块存储)时需要这样配置,通过配置volumeClaimTemplates实现; 对于StatefulSet使...
5049 0
|
分布式计算 Java Linux
Linux系统安装Zookeeper
Linux系统安装Zookeeper
376 0
|
12月前
|
前端开发
Promise.race() 方法在什么场景下使用?
`Promise.race()` 方法通过其独特的竞争机制,在需要快速获取结果、设置超时控制、实现快速失败以及根据条件动态选择异步操作等场景中,能够提供简洁有效的解决方案,帮助优化异步操作的执行流程和提高系统的响应性能。
|
Java 网络安全
zookeeper的环境搭建和配置
本文介绍了如何在多台节点上搭建和配置Zookeeper环境。内容包括Zookeeper的下载、解压、环境变量配置、配置文件修改、zkdata目录创建、myid文件设置,以及将Zookeeper及其配置文件复制到其他节点。还提供了运行测试的命令,包括启动、状态检查和停止Zookeeper服务。
zookeeper的环境搭建和配置
|
并行计算 数据可视化 数据处理
面向未来的数据科学工具链:Dask与Jupyter生态系统的融合
【8月更文第29天】随着数据量的不断增长,传统的数据处理方法已经难以满足科研和商业的需求。Dask 是一个并行计算库,能够有效地处理大规模数据集,同时它与 Jupyter Notebook 和其他数据科学工具的无缝集成,使得数据科学家能够构建更加高效的工作流程。本文将探讨如何利用 Dask 与 Jupyter 生态系统构建现代化的数据科学工作流,并通过具体的代码示例展示其实现过程。
248 1
|
机器学习/深度学习 算法 开发工具
通义千问2(Qwen2)大语言模型在PAI-QuickStart的微调、评测与部署实践
阿里云的人工智能平台PAI,作为一站式的机器学习和深度学习平台,对Qwen2模型系列提供了全面的技术支持。无论是开发者还是企业客户,都可以通过PAI-QuickStart轻松实现Qwen2系列模型的微调、评测和快速部署。
|
存储 小程序 数据库
服务器数据恢复—异常断电导致存储不可用的数据恢复案例
服务器存储数据恢复环境: 一台存储中有一组由12块SAS硬盘组建的RAID6磁盘阵列,划分为一个卷,分配给几台Vmware ESXI主机做共享存储。该卷中存放了大量Windows虚拟机,这些虚拟机系统盘是统一大小,数据盘大小不确定,数据盘是精简模式。 服务器存储故障: 机房断电导致服务器存储异常关机,加电后存储无法使用。
服务器数据恢复—异常断电导致存储不可用的数据恢复案例
|
Kubernetes 容器
安装ipvsadm并且k8s开启IPVS模式
安装ipvsadm并且k8s开启IPVS模式
270 0
|
存储 IDE 编译器
编程笔记 GOLANG基础 005 第一个程序:hello world 使用vscode
编程笔记 GOLANG基础 005 第一个程序:hello world 使用vscode
338 0
|
Linux
Centos 8完美升级至Centos 8 Stream教程
经此Centos8生命周期将缩短、2021年12月31日以后,CentOS Linux 8的使用者将无法获得包括问题修复和功能更新在内的任何软件维护和支持。 对于宝塔面板的影响,可能将无法正常安装面板或面板内的环境软件等
1684 0
Centos 8完美升级至Centos 8 Stream教程