zookeeper之ZkClient使用

Costas环参数调优指南:QPSK载波同步中的环路滤波器设计技巧 本文深入解析QPSK载波同步中Costas环的参数调优,特别是环路滤波器的设计技巧。通过分析星座图异常现象,提供从理论计算到MATLAB仿真的实战调优指南,涵盖环路带宽、阻尼系数等关键参数在不同信噪比场景下的选择策略,旨在解决载波同步失锁、性能下降等工程难题。 阅读详情

ZkClient是Github上一个开源的Zookeeper客户端。ZkClient在Zookeeper原生的API接口上进行了封装,是一个更加易用的Zookeeper哭护短。同时ZkClient在内部实现了诸如Session超时重连、Watcher反复注册等功能。

添加依赖:

<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.5.6</version>
</dependency>

<dependency>
    <groupId>com.101tec</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.11</version>
</dependency>

创建获取zkclient的工具类:

package com.zkclient;

import org.I0Itec.zkclient.ZkClient;

public class ZkClientTool {
    /**
     * 获取zkClien
     * @return
     */
    public static ZkClient getZkClient() {
        //获取zkclent new SerializableSerializer()是序列化器,可以直接传入对象,也可以直接读取,序列化器为我们完成序列化和反序列化
        ZkClient zkClient = new ZkClient("192.168.40.135:2181", 10000, 500000, new MySerializer());
        return zkClient;
    }
}

创建节点:

package com.zkclient;

import org.I0Itec.zkclient.ZkClient;
import org.apache.zookeeper.CreateMode;

public class CreateNode {
    public static void main(String[] args) {
        ZkClient zkCliet = ZkClientTool.getZkClient();
        User user = User.builder().id(1).name("zzz").build();
        String path = zkCliet.create("/node_2", user, CreateMode.PERSISTENT);
        System.out.println(path);
    }
}

获取节点值:

package com.zkclient;

import org.I0Itec.zkclient.ZkClient;
import org.apache.zookeeper.data.Stat;

public class GetNodeData {
    public static void main(String[] args) {
        ZkClient zkCliet = ZkClientTool.getZkClient();
        //如果获取节点状态,将stat作为参数传入即可
        Stat stat = new Stat();
        String user = zkCliet.readData("/node_2", stat);
        System.out.println("user:" + user);
        System.out.println("stat" + stat);
    }
}

获取子节点信息:

package com.zkclient;

import org.I0Itec.zkclient.ZkClient;

import java.util.List;

public class GetChildNode {
    public static void main(String[] args) {
        ZkClient zkCliet = ZkClientTool.getZkClient();
        List<String> children = zkCliet.getChildren("/node_2");
        System.out.println("children" + children.toString());
    }
}

检测某个节点是否存在:

package com.zkclient;

import org.I0Itec.zkclient.ZkClient;

public class NodeExits {
    public static void main(String[] args) {
        ZkClient zkCliet = ZkClientTool.getZkClient();
        boolean exists = zkCliet.exists("/node_2");
        System.out.println("exists:" + exists);
    }
}

删除节点:

package com.zkclient;

import org.I0Itec.zkclient.ZkClient;

public class DeleteNode {
    public static void main(String[] args) {
        ZkClient zkCliet = ZkClientTool.getZkClient();
        boolean node_2 = zkCliet.delete("node_2");
        System.out.println("delete node_2:" + node_2);
        //如果节点有子节点,使用deleteRecursive循环删除
        boolean node_21 = zkCliet.deleteRecursive("node_2");
        System.out.println("contains child delete node_21:" + node_21);
    }
}

如果有子节点会报错:

需要用deleteRecursive删除:

节点修改:

package com.zkclient;

import org.I0Itec.zkclient.ZkClient;

public class WriteData {
    public static void main(String[] args) {
        ZkClient zkCliet = ZkClientTool.getZkClient();
        Object oldDate = zkCliet.readData("/node_1");
        System.out.println("oldDate:" + oldDate);
        zkCliet.writeData("/node_1", "zkca");
        Object newDate = zkCliet.readData("/node_1");
        System.out.println("newDate:" + newDate);
    }
}

事件订阅:

可以订阅两种事件:

1.节点的子节点列表发生变化

2.节点本身数据发生变化

首先看节点的子节点的变化的事件订阅

package com.zkclient;

import org.I0Itec.zkclient.IZkChildListener;
import org.I0Itec.zkclient.ZkClient;

import java.util.List;

public class SubScribeChildChange {
    private static class ZkChildChangeListener implements IZkChildListener {

        public void handleChildChange(String parentPath, List<String> childrenList) throws Exception {
            System.out.println("parentPath:" + parentPath);
            System.out.println("childrenList:" + childrenList.toString());

        }
    }
    public static void main(String[] args) throws InterruptedException {
        ZkClient zkCliet = ZkClientTool.getZkClient();
        //可以监听:给node_1添加子节点、删除子节点甚至node_1节点本身的创建和删除
        zkCliet.subscribeChildChanges("/node_1", new ZkChildChangeListener());
        Thread.sleep(Integer.MAX_VALUE);
    }
}

删除该节点下的子节点:

删除本身节点:

创建本身节点:

节点本身数据发生变化的事件订阅:

package com.zkclient;

import org.I0Itec.zkclient.IZkDataListener;
import org.I0Itec.zkclient.ZkClient;

public class SubScribeDateChange {
    private static class ZkChildChangeListener implements IZkDataListener {

        public void handleDataChange(String datePath, Object date) throws Exception {
            System.out.println("datePath:" + datePath);
            System.out.println("date:" + date);
        }

        public void handleDataDeleted(String s) throws Exception {
            //触发删除的事件通知:
            System.out.println("s:" + s);
        }
    }
    public static void main(String[] args) throws InterruptedException {
        ZkClient zkCliet = ZkClientTool.getZkClient();
        //可以监听:给node_1添加子节点、删除子节点甚至node_1节点本身的创建和删除
        zkCliet.subscribeDataChanges("/node_1", new ZkChildChangeListener());
        Thread.sleep(Integer.MAX_VALUE);
    }
}

修改节点值:

输出:

七步设计高频变压器 阅读详情

相关推荐

2024高项范文-论项目成本管理

例如,在需求分析和设计阶段,安排了较多经验丰富的人员,确保基础工作的高质量完成,同时也避免了后续因需求变更等问题导致的时间和成本浪费。虽然项目进度略有延迟,但通过有效的成本管理和调整,最终在可控的成本范围内完成了项目,并且软件的质量也得到了保障。通过这个案例可以看出,在项目成本管理过程中,要紧密结合时间管理,根据实际情况灵活调整策略,注重风险的防范和应对,才能实现时间和成本的平衡,确保项目的成功。资源规划是成本基准形成的基础。识别和评估项目中的成本风险,并制定相应的应对措施,以降低风险对项目成本的影响。

xjflion的博客 1188

ZKClient详解

前提: zkClient是对zookeeper原生API操作的一个封装,简化客户端对zk的操作。同时zkClient内部实现了诸如Session超时重连、Watcher反复注册(watcher只能生效一次,所以如果使用原生zookeeper api操作,需要反复注册watcher),说白了就是开发人员轻松了很多。 一顿操作猛如虎,直奔主题。 ZKClient maven坐标 &l...

随风 4942

Day470&471.Netty概述&Netty高性能架构设计 -netty

Netty概述 一、原生 NIO 存在的问题 NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。 需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的 NIO 程序。 开发工作量和难度都非常大:例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常流的处理等等。 JDK NIO

阿昌爱Java 1572

(7)zookeeper开源客户端zkclient使用介绍

本节介绍 通过之前的介绍,我们对于zookeeper的原生java api操作zookeeper节点数据的使用有了一定的了解,但是原生api会有一些缺点,在我们开发使用过程当中不是太方便,本节,将会给大家介绍两个开源客户端:zkclient,会跟原生的api做一个比较,并且会给出响应的代码案例,帮助大家更好的去了解使用这两个客户端。 zookeeper原生api的不足 介绍两个开源客户端之前...

没头脑遇到不高兴 1290

如何把ORCAD 中的修改同步到PADS 中

Generate ECO file(*.eco),eco 文件的默然保存地址是在pads 的。ECO Files (*.eco),接着在文件中找到所生成的eco 文件,找到。再下来是产生eco 文件,先打开old_design.pcb,然后选择。PCB Design 前面的选项选中,意思把当前文件做为原始的比对。安装目录下(可修改eco 文件的保存目录),这里把eco 文件保存。接下来用新生成asc 文件的文件产生新的PCB 文件,新生成。不对新生成的pcb 做任何的修改,直接保存文件,这里把新文件。

智光工作室 993

Python调用CANoe(2)(测试模块配置)

本节内容在Python和CANoe的数据交互(1)的基础认知上,继续探索Python如何加载TestSetup,以及运行tse测试文件

蚂蚁小兵 1万+

zookeeper 常见客户端介绍和使用 zkCli、自带API、 zkClient、Curator

Zookeeper的基本客户端使用,包括自带的控制台、自带的API、第三方API例如zkClient、Curator等

不会骑摩托的程序员不是好的摄影师 5545

实战交易策略 篇二十二:情绪流龙头交易策略

在股票市场中,机构主导趋势,游资驱动热点,散户易被情绪裹挟,形成“金字塔”式生态链,并存在情绪传递、强者恒强、物极必反的规律特点。股市是资金驱动的情绪博弈场,价格波动由群体心理、资金博弈和预期差共同驱动,核心是资本逐利性与人性贪婪恐惧的交织,兼具资源配置、财富再分配与风险定价功能。涨停加速与逃逸缺口(主升强化)凹字板/平台突破(趋势延续)天量弱转强(分歧买点)不参与首波(二波策略)情绪周期(道术合一)主线思维(聚焦核心)开盘抢筹(竞价博弈)一字助攻(情绪强化)分批进出(滚动操作)

生活在别处 1499

Zookeeper客户端ZkClient、Curator的使用,史上最详细的教程来啦~

Zookeeper客户端ZkClient、Curator的使用,史上最详细的教程来啦~

zhaoshuangjian 4536

基于Simulink的无迹卡尔曼滤波(UKF)SOC高精度估计仿真

本文介绍了基于Simulink的无迹卡尔曼滤波(UKF)在电池SOC高精度估计中的应用。通过无迹变换替代传统EKF的线性化过程,UKF显著提升了SOC估计精度,在强非线性工况下误差可控制在0.5%以内。文章详细阐述了UKF的核心原理,包括Sigma点生成、状态预测和观测更新等关键步骤,并基于Thevenin等效电路模型构建了完整的UKF SOC估算系统。通过Simulink建模和仿真验证,展示了UKF在大电流脉冲、变温工况等复杂场景下的优异性能,其动态响应时间小于30ms,长期累积误差低于0.7%。研究为储

amy_mhd的博客 124

基于 SoC 的卷积神经网络车牌识别系统设计(1)引言

通过 CPU 软核 IP 在纯 FPGA 平台上构建一个 AI SoC 卷积神经网络车牌识别系统,其中,缩放、填充层、卷积层、ReLU、池化层、全连接层 IP 都是 Verilog 设计的,同时集成了各种高性能的 IP。这是最具挑战性的 AI SoC 芯片设计项目,集成了 Python 卷积神经网络代码、Verilog 卷积神经网络硬件设计、ARM SoC 设计、ARM 与 FPGA 的交叉编译流程等等。这不仅是科研学习、集创竞赛、秋招求职的一个极具优势的精彩项目,也是目前最火热的芯片行业之中的一个...

新芯设计的博客 3780

Zookeeper ZkClient简介

直接使用zk的api实现业务功能比较繁琐。因为要处理session loss,session expire等异常,在发生这些异常后进行重连。又因为ZK的watcher是一次性的,如果要基于wather实现发布/订阅模式,还要自己包装一下,将一次性订阅包装成持久订阅。另外如果要使用抽象级别更高的功能,比如分布式锁,leader选举等,还要自己额外做很多事情。这里介绍下ZK的两个第三方客户端包装小工具

done58的专栏 4223

YOLOv8【第七章:损失函数篇·第1节】一文搞定,IoU系列损失函数!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 1199

zookeeper下载以及zkClient的使用

zookeeper下载以及zkClient的使用 一、zookeeper下载安装(解压) zookeeper官网(可以跳过这些图片上的步骤直接到下载地址上):https://zookeeper.apache.org/ https://www.apache.org/dyn/closer.cgi/zookeeper/ zookeeper下载地址: http://mirro...

WATERMELON2016的博客 1769

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

zkclient操作zookeeper的代码

执行main()看效果,使用zkCli查看节点内容: import org.I0Itec.zkclient.IZkChildListener; import org.I0Itec.zkclient.IZkDataListener; import org.I0Itec.zkclient.ZkClient; import java.util.List; import java.util.con...

m0_37606574的博客 462

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Zookeeper客户端ZkClient

ZkClient简介 ZkClient是github上开源的一个zookeeper客户端。它对原生的zookeeper客户端API进行了封装,内部实现了session重连,Watcher反复注册,极大降低了开发人员使用zookeeper的难度。 创建会话 zkClient提供了7个构造方法来创建zookeeper会话。原生的zookeeper客户端API创建会话是异步过程,而zkClient将创建会

鸡蛋达芬奇 1678

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Zookeeper客户端ZkClient、Curator的使用

本文主要介绍了操作Zookeeper的几种客户端的基础使用,希望对老铁们会有所帮助。可以去操作zookeeper创建、删除、查询、修改znode节点在原生Zk API中,提供了watcher的机制监听节点,而zkClient将之转换成Listener的概念,就是订阅服务端的事件,从而我们只要实现IZkChildListener 接口相应的方法就能够对事件进行处理。以上监听内容,摘自:zkClient的事件监听机制。

qq_39093474的博客 1180

Java 使用ZkClient操作Zookeeper

目录 ZkClient介绍 导入jar包依赖 简单使用样例 ZkClient介绍   因为Zookeeper API比较复杂,使用并不方便,所以出现了ZkClient,ZkClient对Zookeeper API进行了封装,利用ZkClient可以更加方便地对Zookeeper进行操作。 导入jar包依赖   在pom.xm...

JOKER0707的博客 669

ZkClient操作zookeeper以及监听的使用

参考非常详细的文章:https://blog.youkuaiyun.com/t1dmzks/article/details/78440717 demo:链接:https://pan.baidu.com/s/1dWUKYzBe5wBdQFijxX2Oxw 提取码:4r2t 1. 需引入pom <!-- https://mvnrepository.com/artifac...

祁_z 2323

zookeeper ZkClient Api

  ZkClient ZkClient创建连接 //连接地址,如果是集群都好分割,超时时间也可以不填,构造方法也有默认的超时时间 String CONNECT_ADDR = "192.168.9.145:2181"; ZkClient zkClient = new ZkClient(new ZkConnection(CONNECT_ADDR), 10000); ZkClient创建...

qq_1141193930的博客 249

Zookeeper中ZkClient的使用

1.ZkClient zkc =new ZKClient(new zkConnection(CONNECT_ADDR),10000); (1)create and delete方法 zkc.createEphemeral("/temp"); //创建临时节点 zkc.createPersistent("/super/c1",true); //创建持久化节点 zkc.dele...

qq_42794038的博客 484

zookeeper客户端(二)zkClient的使用

原生Zookeeper API存在的弊端: Zookeeper API使用起来比较繁琐,并且zookeeper的watcher是一次性的,如果要基于watcher实现发布/订阅模式需要进行额外的编码,以实现每次watcher失效后重新注册,将一次性的订阅包装成持久订阅。 Zookeeper API接口中,节点保存数据默认为二进制byte数组,若想直接保存对象类型的数据,需要将对象转换为二进制类...

zhoujian_Liu的博客 1173

011 zkClient操作zookeeper集群

1、导入依赖 <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</version> </dependency> 2.编写序列化类(解决获取数据时候无法序列化而报错) import org.I0Itec.zkclient.exception.ZkMa

yerongjie的博客 4674

Zookeeper——3、使用zkClient操作zookeeper

zkClient在原生API的基础上进行了封装,简化了zookeeper的复杂性。 创建客户端方法:ZKClient(Arguments) 参数1:zkServers,zookeeper服务器地址,用“,”分隔。 参数2:sessionTimeout,会话超时时间,单位毫秒,默认为30000ms。 参数3:connectionTimeout,连接超时时间。 参数4:IZkConnecti

隔壁老王的专栏 1万+

ZooKeeper Java 客户端连接— ZkClient

使用原生ZooKeeper客户端,比较的复杂,在调用APi时,需要传入较多的参数,并且不支持递归创建节点,递归删除节点,好在目前有很多优秀的框架对ZooKeeper进行了封装,ZkClient就是一款比较优秀的Zookeeper客户端。ZkClient相对于ZooKeeper API用起来更加简单。 Maven依赖引入 ZkClient是对ZooKeeper原生客户端的封装,除了因此ZooKeeper的jar包之外,我们还需要引入ZkClient的jar包,Maven如下: <dependen

微服务技术栈 1111

ZooKeeper的zkClient API 讲解

zkClient使用 zkClient是Datameer的工程师StefanGroschupf和Peter Voss一起开发的。在原生API的基础上进行了封装,简化了ZooKeeper的复杂性 创建客户端方法:ZKClient(Arguments) 参数1:zkServers ZooKeeper 服务器的地址,使用“,”分隔 参数2:sessionTimeout 超时会话,为毫秒,默认...

Future_LL的博客 522
上一篇: java垃圾回收
下一篇: 数据结构与算法-树与二叉树
给自己加加油
博客等级 码龄8年 302粉丝 110原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值