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();
}
}
监听设置
public class ZKDemo2 {
private static final String CONNECT_STRING = "hadoop1,hadoop2,hadoop3";
private static final int SESSION_TIMEOUT = 5000;
public static void main(String[] args) throws Exception {
// 获取连接
// 当前的这个匿名内部类不是已经添加好的监听, 以后只要是当前这个zk对象添加了任何的监听器响应了之后,都会调用这个process方法
ZooKeeper zk = new ZooKeeper(CONNECT_STRING, SESSION_TIMEOUT, new Watcher() {
@Override
public void process(WatchedEvent event) {
System.out.println("1111111111111111111111");
KeeperState state = event.getState();
String path = event.getPath();
EventType type = event.getType();
System.out.println(state+"\t"+path+"\t"+type);
}
});
System.out.println("2222222222222222222222");
/**
* 注册监听
* 第二个参数有三种传法:
*
* 1、false, 表示不使用监听器
*
* 2、watcher对象, 表示当前的这次监听如果响应不了的话,就会回调当前这个watcher的process方法
*
* 3、true, 表示如果当前的会话/zk 所注册或者添加的所有的监听器的响应,都会会调用 获取连接时 初始化的 监听器对象中 的 process 方法
*/
zk.getData("/a/c", true, null);
System.out.println("3333333333333333333333333333");
Thread.sleep(5000);
zk.setData("/a/c", "hehe666".getBytes(), -1);
System.out.println("4444444444444444444444444444");
zk.close();
}
}
输出结果
2222222222222222222222
1111111111111111111111
SyncConnected null None
3333333333333333333333333333
1111111111111111111111
SyncConnected /a/c NodeDataChanged
4444444444444444444444444444
ZooKeeper学习之路 (五)ZooKeeper API的简单使用 增删改查的更多相关文章
- Neo4j学习笔记(1)——使用Java API实现简单的增删改查
阅读目录 项目的创建及配置 使用嵌入式数据库 创建节点和关系 查询及更新 删除关系和节点 完整代码 参考资料 回到顶部 项目的创建及配置 因为Neo4j依赖的jar包比较多,所以推荐使用Maven来管 ...
- ElasticSearch6(三)-- Java API实现简单的增删改查
基于ElasticSearch6.2.4, Java API创建索引.查询.修改.删除,pom依赖和获取es连接 可查看此文章. package com.xsjt.learn; import java ...
- python学习第十五天字典的创建及增删改查操作方法
字典是python比较常见的数据类型,跟列表一样,比如的字典的创建,字典的常见的操作的方法,增加,删除,修改,查找等方法,字典的一共的数据方法为 keys() values() fromkeys() ...
- 测开之路五十一:代码实现MongoDB增删改查
初始化时连接.析构时断开连接 from pymongo import MongoClient class Mogo(object): def __init__(self, host='127.0.0. ...
- salesforce 零基础学习(五十一)使用 Salesforce.com SOAP API 实现用户登录以及简单的增删改查(JAVA访问salesforce)
此篇请参看:https://resources.docs.salesforce.com/202/latest/en-us/sfdc/pdf/salesforce_developer_environme ...
- Android 系统API实现数据库的增删改查和SQLite3工具的使用
在<Android SQL语句实现数据库的增删改查>中介绍了使用sql语句来实现数据库的增删改查操作,本文介绍Android 系统API实现数据库的增删改查和SQLite3工具的使用. 系 ...
- MyBatis学习--简单的增删改查
jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: Public static void main(String[] args) ...
- MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存
目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...
- Java API实现Hadoop文件系统增删改查
Java API实现Hadoop文件系统增删改查 Hadoop文件系统可以通过shell命令hadoop fs -xx进行操作,同时也提供了Java编程接口 maven配置 <project x ...
随机推荐
- jQuery基础---Ajax基础
内容提纲: 1.Ajax 概述 2.load()方法 3.$.get()和$.post() 4.$.getScript()和$.getJSON() 5.$.ajax()方法 6.表单序列化 发文不易, ...
- mongodb在w10安装及配置
官网网站下载mongodb 第一步:安装 默认安装一直next,直到choose setup type,系统盘空间足够大,安装在c盘就好 第二步:配置及使用 1.创建目录mongodb,及三个文件夹d ...
- 在 Azure Web 应用中创建 .NET 应用程序
本快速入门帮助你在数分钟内将你的第一个 ASP.NET Web 应用部署到 Azure 应用服务.完成本教程后,你将能够在云中启动并运行一个简单的 Web 应用.在本教程中完成的所有操作均符合1 元试 ...
- 面向对象(基础oop)之初识继承
大家好,我叫李京阳,,很高兴认识大家,之所以我想开一个自己的博客,就是来把自己所了解的知识点通过自己的话写一下,希望被博客园的朋友们点评和一起讨论一下,也希望从博客园中多认识一些软件开发人员!现在我开 ...
- [PHP] PHP的纯CPU基准测试(PHP5.5.9 vs PHP7.2.1)
PHP的纯CPU基准测试(PHP5.5.9 vs PHP7.2.1): 1.bench.php 可在PHP源代码的 php-src/Zend 目录 2.micro_bench.php 也可以在 PHP ...
- 腾讯云安全组,实现服务器外网ip访问网站
添加访问地ip出入站规则HTTP,并将云主机添加到安全组中.
- 高性能分布式锁-redisson的使用
1,概述:在一些高并发的场景中,比如秒杀,抢票,抢购这些场景,都存在对核心资源,商品库存的争夺,控制不好,库存数量可能被减少到负数,出现超卖的情况,或者 产生唯一的一个递增ID,由于web应用部署在多 ...
- spring中AOP的AspectJ的Execution表达式
AspectJ的Execution表达式: 使用springAOP定义pointcut里面的execution表达式: execution()函数是常用的切点函数 "execution(* ...
- k:特殊的线性表—栈
栈(Stack): 栈是一种特殊的线性表,栈中的数据元素以及数据元素之间的逻辑关系和线性表相同,两者之间的差别在于:线性表的插入和删除操作可以在表的任意位置进行,而栈的插入和删除操作只允许在表的尾端 ...
- 从BASE理论到CAP理论
BASE理论面向的是大型高可用可扩展的分布式系统,和传统事务的CID特性是相反的,它完全不同于ACID的强一致性模型,而是提出通过牺牲强一致性来获得可用性,并允许数据在一段时间内是不一致的,但最终达到 ...