当前位置: 首页 > news >正文

网页ui设计培训seo刷关键词排名优化

网页ui设计培训,seo刷关键词排名优化,网站开发的语言,做图片能去哪些网站ZooKeeper提供了多种功能,包括分布式锁、配置管理、服务发现、领导选举等。 下面是一些常见的ZooKeeper功能及其在Java中的应用示例代码。 分布式锁 import org.apache.zookeeper.*; import java.io.IOException; import java.util.concurrent.CountDownLatch;pu…

ZooKeeper提供了多种功能,包括分布式锁、配置管理、服务发现、领导选举等。

下面是一些常见的ZooKeeper功能及其在Java中的应用示例代码。

分布式锁

import org.apache.zookeeper.*;
import java.io.IOException;
import java.util.concurrent.CountDownLatch;public class DistributedLock implements Watcher {private static final String ZOOKEEPER_ADDRESS = "localhost:2181";private static final int SESSION_TIMEOUT = 5000;private static final String LOCK_PATH = "/distributed-lock";private ZooKeeper zooKeeper;private String currentLockPath;private CountDownLatch lockSignal;public DistributedLock() throws IOException, InterruptedException, KeeperException {// 创建ZooKeeper对象,建立与ZooKeeper服务器的连接zooKeeper = new ZooKeeper(ZOOKEEPER_ADDRESS, SESSION_TIMEOUT, this);lockSignal = new CountDownLatch(1);// 确保锁的根节点存在ensurePathExists(LOCK_PATH);}public void lock() throws KeeperException, InterruptedException {// 创建临时顺序节点作为锁节点String lockNodePath = zooKeeper.create(LOCK_PATH + "/lock-", new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL);while (true) {// 获取锁节点下的所有子节点List<String> children = zooKeeper.getChildren(LOCK_PATH, false);Collections.sort(children);// 获取当前锁节点在所有子节点中的位置int index = children.indexOf(lockNodePath.substring(LOCK_PATH.length() + 1));if (index == 0) {// 如果当前锁节点是第一个节点,则获取到了锁this.currentLockPath = lockNodePath;return;} else {// 如果当前锁节点不是第一个节点,则监听前一个节点的删除事件,然后等待String previousLockPath = LOCK_PATH + "/" + children.get(index - 1);zooKeeper.exists(previousLockPath, true);lockSignal.await();}}}public void unlock() throws KeeperException, InterruptedException {// 删除当前锁节点zooKeeper.delete(currentLockPath, -1);currentLockPath = null;}private void ensurePathExists(String path) throws KeeperException, InterruptedException {// 确保路径存在,如果不存在则创建持久节点if (zooKeeper.exists(path, false) == null) {zooKeeper.create(path, new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);}}@Overridepublic void process(WatchedEvent watchedEvent) {if (watchedEvent.getType() == Event.EventType.NodeDeleted && watchedEvent.getPath().equals(currentLockPath)) {// 当前锁节点被删除时,唤醒等待线程lockSignal.countDown();}}
}

配置管理

import org.apache.zookeeper.*;
import java.io.IOException;
import java.util.concurrent.CountDownLatch;public class ConfigManager implements Watcher {private static final String ZOOKEEPER_ADDRESS = "localhost:2181";private static final int SESSION_TIMEOUT = 5000;private static final String CONFIG_PATH = "/config";private ZooKeeper zooKeeper;private CountDownLatch configSignal;private String currentConfig;public ConfigManager() throws IOException, InterruptedException, KeeperException {// 创建ZooKeeper对象,建立与ZooKeeper服务器的连接zooKeeper = new ZooKeeper(ZOOKEEPER_ADDRESS, SESSION_TIMEOUT, this);configSignal = new CountDownLatch(1);// 确保配置节点存在ensurePathExists(CONFIG_PATH);}public String getConfig() throws KeeperException, InterruptedException {// 获取配置节点的数据,并等待配置更新byte[] data = zooKeeper.getData(CONFIG_PATH, true, null);configSignal.await();return new String(data);}private void ensurePathExists(String path) throws KeeperException, InterruptedException {// 确保路径存在,如果不存在则创建持久节点if (zooKeeper.exists(path, false) == null) {zooKeeper.create(path, new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);}}@Overridepublic void process(WatchedEvent watchedEvent) {if (watchedEvent.getType() == Event.EventType.NodeDataChanged && watchedEvent.getPath().equals(CONFIG_PATH)) {try {// 当配置节点数据发生变化时,获取最新的配置数据,并唤醒等待线程byte[] data = zooKeeper.getData(CONFIG_PATH, true, null);currentConfig = new String(data);configSignal.countDown();} catch (KeeperException | InterruptedException e) {e.printStackTrace();}}}
}

服务发现

import org.apache.zookeeper.*;
import java.io.IOException;
import java.util.List;
import java.util.concurrent.CountDownLatch;public class ServiceDiscovery implements Watcher {private static final String ZOOKEEPER_ADDRESS = "localhost:2181";private static final int SESSION_TIMEOUT = 5000;private static final String SERVICE_PATH = "/services";private ZooKeeper zooKeeper;private CountDownLatch serviceSignal;private List<String> currentServices;public ServiceDiscovery() throws IOException, InterruptedException, KeeperException {// 创建ZooKeeper对象,建立与ZooKeeper服务器的连接zooKeeper = new ZooKeeper(ZOOKEEPER_ADDRESS, SESSION_TIMEOUT, this);serviceSignal = new CountDownLatch(1);// 确保服务节点存在ensurePathExists(SERVICE_PATH);}public List<String> getServices() throws KeeperException, InterruptedException {// 获取服务节点的子节点列表,并等待服务更新List<String> children = zooKeeper.getChildren(SERVICE_PATH, true);serviceSignal.await();return currentServices;}private void ensurePathExists(String path) throws KeeperException, InterruptedException {// 确保路径存在,如果不存在则创建持久节点if (zooKeeper.exists(path, false) == null) {zooKeeper.create(path, new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);}}@Overridepublic void process(WatchedEvent watchedEvent) {if (watchedEvent.getType() == Event.EventType.NodeChildrenChanged && watchedEvent.getPath().equals(SERVICE_PATH)) {try {// 当服务节点的子节点发生变化时,获取最新的服务列表,并唤醒等待线程List<String> children = zooKeeper.getChildren(SERVICE_PATH, true);currentServices = children;serviceSignal.countDown();} catch (KeeperException | InterruptedException e) {e.printStackTrace();}}}
}

以上是对示例代码的详细注释,希望能够帮助您理解代码的功能和使用方式。

http://www.ds6.com.cn/news/84912.html

相关文章:

  • axure rp8怎么做网站社会新闻热点事件
  • 怎么做正规网站吗青岛优化网站关键词
  • 本地建设多个网站链接百度一下你就知道搜索
  • 怎么做html网站百度网络优化推广公司
  • 网站的维护与更新白山网络推广
  • 商城网站的开发怎么做的爱站网站排名查询工具
  • 网站的管理包括seo搜索优化是什么
  • 手机客户端开发太原seo团队
  • wordpress 慢 google合肥网站seo推广
  • 怎么看网站做没做推广最佳bt磁力猫
  • 百度网站安全在线检测广东网站营销seo费用
  • 潍坊网站制作价格百度指数查询入口
  • 网站的二级栏目怎么做淘宝店铺推广
  • 给网站做图企业网站建设多少钱
  • 劳务公司网站建设新手怎么做seo优化
  • 呼和浩特企业网站排名优化上海站群优化
  • 网站实现隶书繁体中国万网域名注册
  • 建设工程施工合同范文seo网站推广有哪些
  • 有什么网站可以做名片足球排名世界排名
  • 做网站需要哪些知识2022网络热词30个
  • 合肥如何做百度的网站中国最新军事新闻最新消息
  • 做幼儿园网站技师培训
  • 网站文章内容一键排版功能线下宣传渠道和宣传方式
  • 网站备案 管局审核 需要多长时间关键词列表
  • 郑州注册公司流程及费用百度seo技术优化
  • 车载cms是什么意思宁波seo怎么做引流推广
  • 怎么做素材设计网站网上店铺的推广方法有哪些
  • 怎么用css做网站分片seo关键词排名优化是什么
  • 做外贸怎么网站找客户信息马鞍山seo
  • 营销型网站建设方法sem和seo是什么职业岗位