ZooKeeper学习之路 (五)ZooKeeper API的简单使用 增删改查

ZooKeeper学习之路 (五)ZooKeeper API的简单使用 增删改查

大家好,又见面了,我是全栈君。

zookeeper文件系统的增删改查

public class ZKDemo1 {
    
    private static final String CONNECT_STRING = "hadoop1:2181,hadoop2:2181,hadoop3:2181";
    //如果zookeeper使用的是默认端口的话,此处可以省略端口号
    //private static final String CONNECT_STRING = "hadoop1,hadoop2,hadoop3";
    
    //设置超时时间
    private static final int SESSION_TIMEOUT = 5000;
    
    public static void main(String[] args) throws Exception {
        //获取zookeeper的连接
        //没有配置监听的话,最后一个参数设为null
        ZooKeeper zk = new ZooKeeper(CONNECT_STRING, SESSION_TIMEOUT, null);
        
        
        
        //创建一个节点
        /**
         * 四个参数path, data, acl, createMode
         * path:创建节点的绝对路径
         * data:节点存储的数据
         * acl:权限控制
         * createMode:节点的类型----永久、临时    有编号的、没有编号的
         * 
         * */
        //String create = zk.create("/xx", "xx".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);
        //System.out.println(create);//输出的结果是:/xx0000000008
        
        /**
         * 判断节点是否存在
         * */
        Stat exists = zk.exists("/xx0000000008", null);
        if(exists == null) {
            System.out.println("节点不存在");
        }else {
            System.out.println("节点存在");
        }
        
        
        /**
         * 查看节点的数据
         * 
         * */
        /*byte[] data = zk.getData("/xx0000000008", false, null);
        System.out.println(new String(data));*/
        
        
        /**
         * 修改节点的数据
         * */
        /*Stat setData = zk.setData("/xx0000000008", "xyz".getBytes(), -1);
        if(setData == null) {
            System.out.println("节点不存在 --- 修改不成功");
        }else {
            System.out.println("节点存在 --- 修改成功");
        }*/
        
        
        /**
         * 删除节点
         * */
        
        /*zk.delete("/xx0000000008", -1);*/
        
        
        
        
        //关闭zookeeper的连接
        zk.close();
    }

}

监听设置

 1 public class ZKDemo2 {
 2     
 3     private static final String CONNECT_STRING = "hadoop1,hadoop2,hadoop3";
 4     private static final int SESSION_TIMEOUT = 5000;
 5     
 6     public static void main(String[] args) throws Exception {
 7 
 8         // 获取连接
 9         // 当前的这个匿名内部类不是已经添加好的监听, 以后只要是当前这个zk对象添加了任何的监听器响应了之后,都会调用这个process方法
10         ZooKeeper zk = new ZooKeeper(CONNECT_STRING, SESSION_TIMEOUT, new Watcher() {
11             
12             @Override
13             public void process(WatchedEvent event) {
14                 
15                 System.out.println("1111111111111111111111");
16                 KeeperState state = event.getState();
17                 String path = event.getPath();
18                 EventType type = event.getType();
19                 
20                 System.out.println(state+"\t"+path+"\t"+type);
21             }
22         });
23         
24         System.out.println("2222222222222222222222");
25         
26         /**
27          * 注册监听
28          * 第二个参数有三种传法:
29          * 
30          * 1、false, 表示不使用监听器
31          * 
32          * 2、watcher对象, 表示当前的这次监听如果响应不了的话,就会回调当前这个watcher的process方法
33          * 
34          * 3、true,  表示如果当前的会话/zk 所注册或者添加的所有的监听器的响应,都会会调用 获取连接时  初始化的 监听器对象中 的 process 方法
35          */
36         zk.getData("/a/c", true, null);
37         
38         System.out.println("3333333333333333333333333333");
39         Thread.sleep(5000);
40         
41         zk.setData("/a/c", "hehe666".getBytes(), -1);
42         
43         System.out.println("4444444444444444444444444444");
44         
45         zk.close();
46         
47         
48         
49     }
50 
51 }

输出结果

2222222222222222222222
1111111111111111111111
SyncConnected    null    None
3333333333333333333333333333
1111111111111111111111
SyncConnected    /a/c    NodeDataChanged
4444444444444444444444444444

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107620.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • javascript图片展示墙特效

    查看效果:http://hovertree.com/code/javascript/pwl4bhoi.htm代码如下:1<!DOCTYPEhtml>2<html>

    2021年12月21日
  • 操作系统–银行家算法c语言代码

    操作系统–银行家算法c语言代码直接上代码了,两个文件分别是main.c和banker.hmain.c#include#include#include”banker.h”//试探分配voidProbeAlloc(intprocess,RESOURCE*res){Available.A-=res->A;Available.B-=res->B;

    2022年7月22日
  • 中英文字典树_字典树详解

    中英文字典树_字典树详解英文字典树英文字典树的结构图是这样的。按照树型结构存储字符串,每个结点存一个字符,自顶向下做标记的就是词的词尾,比如,app,apple,application,abstract,absorb,block,black,blake…等等介绍一下英文字典树的结点数据结构:1.词频int型变量记录词频2.结点型数组,长度26下标对应0-25(也…

    2022年9月6日
  • java中scanner是什么意思_java中Scanner是什么?怎么用?

    java中scanner是什么意思_java中Scanner是什么?怎么用?在java中有一种类可以获取我们输入的信息,这也是java中的新特征,有小伙伴知道这是什么类吗?小编最近在学Scanner类,发现还需要结合正则表达式一起使用,这对我们以前知识的掌握来说,得有比较好的基础才能完成。下面我们就一起看看Scanner类如何在java中使用吧。1.概念一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。2.语法Scanners=newScanner(S…

    2022年7月21日
  • 程序员需要什么条件_大厂程序员啥意思

    程序员需要什么条件_大厂程序员啥意思从参加工作到现在,短短的几年内,我投资在自己身上的钱已超过三十多万,光买书籍的钱就已超过总投资的三分之一,买了不少于上千本书,有实体书,也有电子书。这些书不仅提升了我的技术能力,更提升了我的视野和认知。

    2022年8月22日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号