<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      0    課程地址

      https://coding.imooc.com/lesson/201.html#mid=12807

       

      1    重點關注

      1.1    本節內容

      curator新增節點時附帶權限(遞歸給所有子節點權限)

      curator修改節點的權限

       

      1.2    關鍵代碼

      • curator新增節點時附帶權限
              String nodePath = "/acl/father/child/sub";
              
              List<ACL> acls = new ArrayList<ACL>();
              Id imooc1 = new Id("digest", AclUtils.getDigestUserPwd("imooc1:123456"));
              Id imooc2 = new Id("digest", AclUtils.getDigestUserPwd("imooc2:123456"));
              acls.add(new ACL(Perms.ALL, imooc1));
              acls.add(new ACL(Perms.READ, imooc2));
              acls.add(new ACL(Perms.DELETE | Perms.CREATE, imooc2));
              
              //遞歸創建子節點creatingParentsIfNeeded()
              //遞歸給子節點權限 withACL(acls, true)   
              // 創建節點
              byte[] data = "spiderman".getBytes();
              cto.client.create().creatingParentsIfNeeded()
                      .withMode(CreateMode.PERSISTENT)
                      .withACL(acls, true)
                      .forPath(nodePath, data);    

       

      • curator修改節點的權限
              cto.client.setACL().withACL(acls).forPath("/acl/father/child/sub");

       

       

       

       

       

      2    課程內容


       

       


       

      3    Coding

      3.1    curator新增節點時附帶權限(遞歸給所有子節點權限)

      • 啟動服務端
          進入到
      cd /usr/local/zookeeper/bin
      
       
          重啟zookeeper服務端
      ./zkServer.sh restart

       

      • 主類
      package com.imooc.curator;
      
      import java.util.ArrayList;
      import java.util.List;
      
      import org.apache.curator.RetryPolicy;
      import org.apache.curator.framework.CuratorFramework;
      import org.apache.curator.framework.CuratorFrameworkFactory;
      import org.apache.curator.retry.RetryNTimes;
      import org.apache.zookeeper.CreateMode;
      import org.apache.zookeeper.ZooDefs.Ids;
      import org.apache.zookeeper.ZooDefs.Perms;
      import org.apache.zookeeper.data.ACL;
      import org.apache.zookeeper.data.Id;
      
      import com.imooc.utils.AclUtils;
      
      public class CuratorAcl {
      
          public CuratorFramework client = null;
          public static final String zkServerPath = "172.26.139.4:2181";
      
          public CuratorAcl() {
              RetryPolicy retryPolicy = new RetryNTimes(3, 5000);
              client = CuratorFrameworkFactory.builder().authorization("digest", "imooc1:123456".getBytes())
                      .connectString(zkServerPath)
                      .sessionTimeoutMs(10000).retryPolicy(retryPolicy)
                      .namespace("workspace").build();
              client.start();
          }
          
          public void closeZKClient() {
              if (client != null) {
                  this.client.close();
              }
          }
          
          public static void main(String[] args) throws Exception {
              // 實例化
              CuratorAcl cto = new CuratorAcl();
              boolean isZkCuratorStarted = cto.client.isStarted();
              System.out.println("當前客戶的狀態:" + (isZkCuratorStarted ? "連接中" : "已關閉"));
              
              String nodePath = "/acl/father/child/sub";
              
              List<ACL> acls = new ArrayList<ACL>();
              Id imooc1 = new Id("digest", AclUtils.getDigestUserPwd("imooc1:123456"));
              Id imooc2 = new Id("digest", AclUtils.getDigestUserPwd("imooc2:123456"));
              acls.add(new ACL(Perms.ALL, imooc1));
              acls.add(new ACL(Perms.READ, imooc2));
              acls.add(new ACL(Perms.DELETE | Perms.CREATE, imooc2));
              
              // 創建節點
              byte[] data = "spiderman".getBytes();
              cto.client.create().creatingParentsIfNeeded()
                      .withMode(CreateMode.PERSISTENT)
                      .withACL(acls, true)
                      .forPath(nodePath, data);
              
      
              //cto.client.setACL().withACL(acls).forPath("/curatorNode");
              
              // 更新節點數據
      //        byte[] newData = "batman".getBytes();
      //        cto.client.setData().withVersion(0).forPath(nodePath, newData);
              
              // 刪除節點
      //        cto.client.delete().guaranteed().deletingChildrenIfNeeded().withVersion(0).forPath(nodePath);
              
              // 讀取節點數據
      //        Stat stat = new Stat();
      //        byte[] data = cto.client.getData().storingStatIn(stat).forPath(nodePath);
      //        System.out.println("節點" + nodePath + "的數據為: " + new String(data));
      //        System.out.println("該節點的版本號為: " + stat.getVersion());
              
              
              cto.closeZKClient();
              boolean isZkCuratorStarted2 = cto.client.isStarted();
              System.out.println("當前客戶的狀態:" + (isZkCuratorStarted2 ? "連接中" : "已關閉"));
          }
          
      }

       

      • linux客戶端驗證子節點權限
      --啟動linux客戶端
      zkCli.sh
      
      [zk: localhost:2181(CONNECTED) 5] getAcl /workspace    
      'world,'anyone
      : cdrwa
      
      --開始驗證
      [zk: localhost:2181(CONNECTED) 4] getAcl /workspace/acl
      'digest,'imooc1:ee8R/pr2P4sGnQYNGyw2M5S5IMU=
      : cdrwa
      'digest,'imooc2:eBdFG0gQw0YArfEFDCRP3LzIp6k=
      : r
      'digest,'imooc2:eBdFG0gQw0YArfEFDCRP3LzIp6k=
      : cd
      
      [zk: localhost:2181(CONNECTED) 6] getAcl /workspace/acl/father
      'digest,'imooc1:ee8R/pr2P4sGnQYNGyw2M5S5IMU=
      : cdrwa
      'digest,'imooc2:eBdFG0gQw0YArfEFDCRP3LzIp6k=
      : r
      'digest,'imooc2:eBdFG0gQw0YArfEFDCRP3LzIp6k=
      : cd
      [zk: localhost:2181(CONNECTED) 7] getAcl /workspace/acl/father/child
      'digest,'imooc1:ee8R/pr2P4sGnQYNGyw2M5S5IMU=
      : cdrwa
      'digest,'imooc2:eBdFG0gQw0YArfEFDCRP3LzIp6k=
      : r
      'digest,'imooc2:eBdFG0gQw0YArfEFDCRP3LzIp6k=
      : cd
      [zk: localhost:2181(CONNECTED) 8] getAcl /workspace/acl/father/child/sub
      'digest,'imooc1:ee8R/pr2P4sGnQYNGyw2M5S5IMU=
      : cdrwa
      'digest,'imooc2:eBdFG0gQw0YArfEFDCRP3LzIp6k=
      : r
      'digest,'imooc2:eBdFG0gQw0YArfEFDCRP3LzIp6k=
      : cd
      [zk: localhost:2181(CONNECTED) 9] 

       

       

      3.2    curator修改節點權限

      • 啟動服務端
          進入到
      cd /usr/local/zookeeper/bin
      
       
          重啟zookeeper服務端
      ./zkServer.sh restart

       

      • 主類
      package com.imooc.curator;
      
      import java.util.ArrayList;
      import java.util.List;
      
      import org.apache.curator.RetryPolicy;
      import org.apache.curator.framework.CuratorFramework;
      import org.apache.curator.framework.CuratorFrameworkFactory;
      import org.apache.curator.retry.RetryNTimes;
      import org.apache.zookeeper.CreateMode;
      import org.apache.zookeeper.ZooDefs.Ids;
      import org.apache.zookeeper.ZooDefs.Perms;
      import org.apache.zookeeper.data.ACL;
      import org.apache.zookeeper.data.Id;
      
      import com.imooc.utils.AclUtils;
      
      public class CuratorAcl {
      
          public CuratorFramework client = null;
          public static final String zkServerPath = "172.26.139.4:2181";
      
          public CuratorAcl() {
              RetryPolicy retryPolicy = new RetryNTimes(3, 5000);
              client = CuratorFrameworkFactory.builder().authorization("digest", "imooc1:123456".getBytes())
                      .connectString(zkServerPath)
                      .sessionTimeoutMs(10000).retryPolicy(retryPolicy)
                      .namespace("workspace").build();
              client.start();
          }
          
          public void closeZKClient() {
              if (client != null) {
                  this.client.close();
              }
          }
          
          public static void main(String[] args) throws Exception {
              // 實例化
              CuratorAcl cto = new CuratorAcl();
              boolean isZkCuratorStarted = cto.client.isStarted();
              System.out.println("當前客戶的狀態:" + (isZkCuratorStarted ? "連接中" : "已關閉"));
              
              String nodePath = "/acl/father/child/sub";
              
              List<ACL> acls = new ArrayList<ACL>();
              Id imooc1 = new Id("digest", AclUtils.getDigestUserPwd("imooc1:123456"));
              Id imooc2 = new Id("digest", AclUtils.getDigestUserPwd("imooc2:123456"));
              acls.add(new ACL(Perms.ALL, imooc1));
              //acls.add(new ACL(Perms.READ, imooc2));
              //acls.add(new ACL(Perms.DELETE | Perms.CREATE, imooc2));
              
              // 創建節點
      //        byte[] data = "spiderman".getBytes();
      //        cto.client.create().creatingParentsIfNeeded()
      //                .withMode(CreateMode.PERSISTENT)
      //                .withACL(acls, true)
      //                .forPath(nodePath, data);
              
      
              cto.client.setACL().withACL(acls).forPath("/acl/father/child/sub");
              
              // 更新節點數據
      //        byte[] newData = "batman".getBytes();
      //        cto.client.setData().withVersion(0).forPath(nodePath, newData);
              
              // 刪除節點
      //        cto.client.delete().guaranteed().deletingChildrenIfNeeded().withVersion(0).forPath(nodePath);
              
              // 讀取節點數據
      //        Stat stat = new Stat();
      //        byte[] data = cto.client.getData().storingStatIn(stat).forPath(nodePath);
      //        System.out.println("節點" + nodePath + "的數據為: " + new String(data));
      //        System.out.println("該節點的版本號為: " + stat.getVersion());
              
              
              cto.closeZKClient();
              boolean isZkCuratorStarted2 = cto.client.isStarted();
              System.out.println("當前客戶的狀態:" + (isZkCuratorStarted2 ? "連接中" : "已關閉"));
          }
          
      }

       

      • linux客戶端驗證子節點權限
      --啟動linux客戶端
      zkCli.sh
      
      --開始驗證
      [zk: localhost:2181(CONNECTED) 9] getAcl /workspace/acl/father/child/sub
      'digest,'imooc1:ee8R/pr2P4sGnQYNGyw2M5S5IMU=
      : cdrwa
      [zk: localhost:2181(CONNECTED) 10] 

       


       


       

       











      posted on 2024-04-11 08:03  菜鳥乙  閱讀(42)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 国产情侣激情在线对白| 亚洲精品区午夜亚洲精品区| 国产av亚洲精品ai换脸电影| 日本深夜福利在线观看| 性欧美老人牲交xxxxx视频| 国产成人永久免费av在线| 扎鲁特旗| 亚洲成色精品一二三区| 精品久久人人妻人人做精品| 在线观看国产区亚洲一区| 91精品国产蜜臀在线观看| 亚洲18禁一区二区三区| 日韩精品毛片一区到三区| 青海省| 日韩精品福利一二三专区| 东方四虎av在线观看| 亚洲成在人线AV品善网好看| 亚洲av免费看一区二区| 无码人妻精品一区二区三区蜜桃| 亚洲国产美女精品久久久久| 国产亚洲精品久久久久久久软件| 日韩欧激情一区二区三区| 欧美色欧美亚洲高清在线视频| 亚洲欧美国产日韩天堂区| 丰满人妻一区二区三区无码AV| 久久无码高潮喷水| 黑人猛精品一区二区三区| 日本亚洲一区二区精品| 桃源县| 国产精品成人网址在线观看 | 国产99精品成人午夜在线| 国产中年熟女高潮大集合| 疯狂做受xxxx高潮欧美日本| 亚洲 欧洲 自拍 偷拍 首页| 91人妻熟妇在线视频| 91中文字幕一区在线| 亚洲国产av无码精品无广告| 国产福利片无码区在线观看| 国产精品自在自线免费观看| 91老肥熟女九色老女人| 亚洲天堂在线观看完整版|