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

简介: 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使...
5094 0
|
分布式计算 Java Linux
Linux系统安装Zookeeper
Linux系统安装Zookeeper
405 0
|
Java 网络安全
zookeeper的环境搭建和配置
本文介绍了如何在多台节点上搭建和配置Zookeeper环境。内容包括Zookeeper的下载、解压、环境变量配置、配置文件修改、zkdata目录创建、myid文件设置,以及将Zookeeper及其配置文件复制到其他节点。还提供了运行测试的命令,包括启动、状态检查和停止Zookeeper服务。
zookeeper的环境搭建和配置
|
Java Linux Apache
Linux安装maven并配置maven仓库
Linux安装maven并配置maven仓库
1048 1
|
Java API Apache
java的实体拷贝方式与实战
Java 中的实体拷贝,通常指的是将一个对象的属性值复制到另一个对象的过程。实体拷贝可以是浅拷贝(Shallow Copy)或深拷贝(Deep Copy)。浅拷贝仅复制对象的引用,而不复制引用的对象本身;深拷贝则会复制对象以及对象内部引用的所有对象。实现实体拷贝的方法有多种,包括直接赋值、使用克隆方法、通过序列化/反序列化,以及利用反射或第三方库。下面详细介绍这些实现原理:
410 1
|
存储 SQL 关系型数据库
MYSQL实战-------丁奇(极客时间)学习笔记
MYSQL实战-------丁奇(极客时间)学习笔记
279 0
|
SQL 关系型数据库 MySQL
Linux安装Zookeeper详细步骤(下载,安装,配置,启动,停止)
Linux安装Zookeeper详细步骤(下载,安装,配置,启动,停止)
6238 0
|
JavaScript 前端开发 开发工具
Vue 项目利用 HBuilderX 打包 APP 流程
Vue 项目利用 HBuilderX 打包 APP 流程
2183 3
|
Java 数据库 Spring
【异常解决】解决mybatis-plus分页查询默认最多查询500条记录的问题,真是个大坑啊
【异常解决】解决mybatis-plus分页查询默认最多查询500条记录的问题,真是个大坑啊
1309 0
|
存储 缓存 算法
[译] OpenSSL 3.0.0 设计
本文翻译 OpenSSL 官网文档:https://www.openssl.org/docs/OpenSSL300Design.htmlTongsuo-8.4.0 是基于 OpenSSL-3.0.3 开发,所以本文对 Tongsuo 开发者同样适用,内容丰富,值得一读!介绍本文概述了 OpenSSL 3.0 的设计,这是在 1.1.1 版本之后的 OpenSSL 的下一个版本。假设读者熟悉名为 &
435 0