JavaApi实现更新删除及读取节点

1.更新

同步方式:

/**
     * 三个参数
     * the path of the node
     * the data to set
     * the expected matching version
     */
    Stat stat = zooKeeper.setData("/set/node1", "NODE1".getBytes(), 1);

返回值Stat中封装了set命令中的返回值,可以通过Stat的各种get方法去获取。

异步方式:

zooKeeper.setData("/set/node1", "nnn".getBytes(), -1, new AsyncCallback.StatCallback() {
      public void processResult(int rc, String path, Object ctx, Stat stat) {
        System.out.println(rc);//0代表修改成功
        System.out.println(path);//节点路径
        System.out.println(ctx);//上下文参数
        System.out.println(stat);//属性描述对象
      }
    },"ctx");

2.删除

同步方式:

/**
 * @param path
 *    the path of the node to be deleted.
 * @param version
 *    the expected node version. 当为-1时,表示不考虑当前节点的版本信息。
*/
zooKeeper.delete("/delete/node1",0);

异步方式:

//VoidCallback:异步回调接口
zooKeeper.delete("/delete/node2", -1, new AsyncCallback.VoidCallback() {
  public void processResult(int rc, String path, Object ctx) {
    System.out.println(rc);//0表示删除成功
    System.out.println(path);//节点路径
    System.out.println(ctx);//上下文信息
  }
},"ctx");

3.读取

getData(String path,boolean b,Stat stat) 同步方式
getData(String path,boolean b,AsyncCallback.DataCallback callBack,Object ctx) 异步方式

path:znode路径

b:是否使用连接对象中注册的监视器。

stat:返回znode的元数据。

callBack:异步回调接口。

ctx:传递上下文参数。

4.查看子节点

List<String> getChildren(String path,boolean b) 同步方式

List<String> getChildren(String path,boolean b,AsyncCallback.DataCallback callBack,Object ctx) 异步方式

path:znode路径

b:是否使用连接对象中注册的监视器。

callBack:异步回调接口。

ctx:传递上下文参数。

5.判断节点是否存在

Stat exist(String path,boolean b) 同步方式
Stat exist(String path,boolean b,AsyncCallback.DataCallback callBack,Object ctx) 异步方式

当Stat为null时,则该节点不存在。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 使用Java Api操作HDFS过程详解

    如题 我就是一个标题党 就是使用JavaApi操作HDFS,使用的是MAVEN,操作的环境是Linux 首先要配置好Maven环境,我使用的是已经有的仓库,如果你下载的jar包 速度慢,可以改变Maven 下载jar包的镜像站改为 阿里云. 贴一下 pom.xml 使用到的jar包 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifact

  • 使用Android studio3.6的java api方式调用opencv

    基本环境: Android studio3.6 NDK:r15c(尽量使用该版本) Opencv3.4.1 android sdk 操作: (1)新建工程,选择Empty Activity,工程名为op (2)File->New->Import Module,然后选择自己的java-opencv的相对应路径,比如,D:\Android\OpenCV-android-sdk\sdk\java (3)修改openCVlibrary341下面的build.gradle中的,compileSdkVer

  • Java中时间API的基本使用教程

    1. 时区概念 国际经度会议(又称国际子午线会议)上,规定将全球划分为24个时区(东.西各12个时区).规定英国的格林尼治天文台旧址为中时区(零时区).东1-12区,西1-12区.每个时区横跨经度15度,时间正好是1小时.最后的东.西第12区各跨经度7.5度,以东.西经180度为界.每个时区的中央经线上的时间就是这个时区内统一采用的时间,称为区时,相邻两个时区的时间相差1小时.英国(格林尼治天文台旧址)为本初子午线,即零度经线. 时区的表格划分 为什么全世界不使用统一的时间 于各个地区所在地球位

  • Java8中Lambda表达式使用和Stream API详解

    前言 Java8 的新特性:Lambda表达式.强大的 Stream API.全新时间日期 API.ConcurrentHashMap.MetaSpace.总得来说,Java8 的新特性使 Java 的运行速度更快.代码更少.便于并行.最大化减少空指针异常. 0x00. 前置数据 private List<People> peoples = null; @BeforeEach void before () { peoples = new ArrayList<>(); peoples

  • Java多线程ThreadAPI详细介绍

    1.Thread的构造方法 package threadAPI; public class CreateThread { public static void main(String[] args) { Thread t1 = new Thread(); Thread t2 = new Thread(); t1.start(); t2.start(); System.out.println(t1.getName()); System.out.println(t2.getName()); } }

  • Java8新特性时间日期库DateTime API及示例详解

    Java8新特性的功能已经更新了不少篇幅了,今天重点讲解时间日期库中DateTime相关处理.同样的,如果你现在依旧在项目中使用传统Date.Calendar和SimpleDateFormat等API来处理日期相关操作,这篇文章你一定不要错过.来刷新你的知识库吧! 背景 Java对日期.日历及时间的处理一直以来都饱受诟病,比如java.util.Date和java.util.Calendar类易用性差,不支持时区,非线程安全:还有用于格式化日期的类DateFormat也是非线程安全的等问题. J

  • Java日志API管理最佳实践详解

    概述 对于现在的应用程序来说,日志的重要性是不言而喻的.很难想象没有任何日志记录功能的应用程序运行在生产环境中.日志所能提供的功能是多种多样的,包括记录程序运行时产生的错误信息.状态信息.调试信息和执行时间信息等.在生产环境中,日志是查找问题来源的重要依据.应用程序运行时的产生的各种信息,都应该通过日志 API 来进行记录. 很多开发人员习惯于使用 System.out.println.System.err.println 以及异常对象的 printStrackTrace 方法来输出相关信息.这

  • Java并发框架:Executor API详解

    介绍 随着当今处理器中可用的核心数量的增加, 随着对实现更高吞吐量的需求的不断增长,多线程 API 变得非常流行. Java 提供了自己的多线程框架,称为 Executor 框架. 1. Executor 框架是什么? Executor 框架包含一组用于有效管理工作线程的组件.Executor API 通过 Executors 将任务的执行与要执行的实际任务解耦. 这是 生产者-消费者 模式的一种实现. java.util.concurrent.Executors 提供了用于创建工作线程的线程池

  • JavaApi实现更新删除及读取节点

    1.更新 同步方式: /** * 三个参数 * the path of the node * the data to set * the expected matching version */ Stat stat = zooKeeper.setData("/set/node1", "NODE1".getBytes(), 1); 返回值Stat中封装了set命令中的返回值,可以通过Stat的各种get方法去获取. 异步方式: zooKeeper.setData(&q

  • JavaScript之DOM插入更新删除_动力节点Java学院整理

    JavaScript之DOM插入更新删除,供大家参考,具体内容如下 更新 拿到一个DOM节点后,我们可以对它进行更新. 可以直接修改节点的文本,方法有两种: 一种是修改innerHTML属性,这个方式非常强大,不但可以修改一个DOM节点的文本内容,还可以直接通过HTML片段修改DOM节点内部的子树: // 获取<p id="p-id">...</p> var p = document.getElementById('p-id'); // 设置文本为abc: p.

  • C++删除链表中间节点的方法

    本文实例讲述了C++删除链表中间节点的方法.分享给大家供大家参考,具体如下: 题目: 给定链表头结点head,实现删除链表的中间节点函数. 解题思路及代码: 快慢指针,快指针走两步,慢指针一步. 当快指针走到终点时,慢指针正好是链表中间节点,删除此节点即可. 链表结构定义: typedef struct Node { int data; struct Node* next; }node, *pLinkedList; 算法C++代码: Node* removeMidNode(pLinkedList

  • jQuery插件zTree实现删除树子节点的方法示例

    本文实例讲述了jQuery插件zTree实现删除树子节点的方法.分享给大家供大家参考,具体如下: 1.实现代码: <!DOCTYPE html> <html> <head> <title>zTree实现基本树</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <link rel="

  • 用javascript读取xml文件读取节点数据

    下面代码是读取的节点数据,还有一种情况是读取节点属性数据. <head> <title></title> <script type="text/javascript"> var objLength = null; var xmlHttp; var strurl = ""; function ajaxrequst() { if (window.ActiveXObject) { xmlHttp = new ActiveXO

  • java使用归并删除法删除二叉树中节点的方法

    本文实例讲述了java使用归并删除法删除二叉树中节点的方法.分享给大家供大家参考.具体分析如下: 实现的思想很简单: first:找到要删除的节点 second:如果删除的节点没有右子树那么左子树链到父节点 third:如果删除的节点没有左子树那么右子树链到父节点 forth:如果删除的节点又左右孩子,那么可以归并删除节点后的子树:方法有两种一种是用删除节点的左子树的最右节点,指向删除节点的右子树,另一种是用删除节点的用字数的最左节点指向删除节点的左子树. Java 实现如下: public v

  • PHP实现双链表删除与插入节点的方法示例

    本文实例讲述了PHP实现双链表删除与插入节点的方法.分享给大家供大家参考,具体如下: 概述: 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱.所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点.一般我们都构造双向循环链表. 实现代码: <?php class node{ public $prev; public $next; public $data; public function __construct($data,$

  • Java反射 JavaBean对象自动生成插入,更新,删除,查询sql语句操作

    通过反射根据提供的表名.POJO类型.数据对象自动生成sql语句. 如名为 User 的JavaBean与名为 user 的数据库表对应,可以提供一个封装有数据的User对象user,根据user中含有的数据自动生成sql语句. 1.生成插入语句(插入user中包含的非空数据的语句): String insertSql = getInsertSql("user", User.class, user); 2.生成更新语句(user中id不能为空): String updateSql =

  • springboot使用redis对单个对象进行自动缓存更新删除的实现

    Springboot的项目搭建在此省略,pom文件依赖什么的就不说了 创建一个实体类 @Data @EqualsAndHashCode(callSuper = true) @Accessors(chain = true) @ApiModel(value="ERepository对象", description="题库") public class ERepository extends BasicModel<ERepository> implements

  • C++实现LeetCode(237.删除链表的节点)

    [LeetCode] 237.Delete Node in a Linked List 删除链表的节点 Write a function to delete a node (except the tail) in a singly linked list, given only access to that node. Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given the third node with va

随机推荐