JAVA分布式篇2——Zookeeper

JAVA分布式篇2——Zookeeper

1、简介

Zookeeper是一个开源的分布式(多台服务器干一件事)的,为分布式应用提供协调服务的 Apache项目

2、工作机制

  • Zookeeper从设计模式角度来理解:是一个基于观察者模式(一个人干活,有人盯着他)设计的分 布式服务管理框架

    • 存储 和 管理 大家都关心的数据 然后接受观察者的注册
    • 通知已经注册的那些观察者做出相应的反应
  • Zookeeper = 文件系统 + 通知机制

  • 类似美团

    • 商家营业并入驻
    • 获取到当前营业的饭店列表
    • 服务器节点下线
    • 服务器节点上下线事件通知
    • 重新再去获取服务器列表,并注册监听

3、特点

  • 是一个leader和多个follower来组成的集群
  • 集群中只要有半数以上的节点存活,Zookeeper就能正常工作(5台服务器挂2台,没问题;4台服 务器挂2台,就停止)
  • 全局数据一致性,每台服务器都保存一份相同的数据副本,无论client连接哪台server,数据都是 一致的
  • 数据更新原子性,一次数据要么成功,要么失败(不成功便成仁)
  • 实时性,在一定时间范围内,client能读取到最新数据
  • 更新的请求按照顺序执行,会按照发送过来的顺序,逐一执行(发来123,执行123,而不是321 或者别的)

4、应用场景

  • 统一命名服务
  • 统一配置管理
  • 服务器节点动态上下线
  • 软负载均衡

5、下载安装(linux)

zookeeper官网下载:https://downloads.apache.org/zookeeper/

zookeeper3.6.3 百度云:https://pan.baidu.com/s/1OM0Lq2rm-8qcd8nb8TGfEg提取码:izco

linux需要有jdk

移动zookeeper

mv /root/apache-zookeeper-3.6.3-bin.tar.gz /usr/local/apache-zookeeper-3.6.3-bin.tar.gz

解压zookeeper

tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz

zookeeper目录下创建文件夹

mkdir zkData
mkdir zkLog

拷贝配置文件

cp zoo_sample.cfg zoo.cfg
vim zoo.cfg

添加配置

dataDir=/usr/local/apache-zookeeper-3.6.3-bin/zkData
dataLogDir=/usr/local/apache-zookeeper-3.6.3-bin/zkLog

启动

[root@VM-16-14-centos bin]# ./zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

测试

[root@VM-16-14-centos bin]# jps
1898 QuorumPeerMain
1981 Jps
[root@VM-16-14-centos bin]# netstat -apn | grep 2181
tcp6       0      0 :::2181                 :::*                    LISTEN      1898/java
[root@VM-16-14-centos bin]# ./zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone

启动客户端

[root@VM-16-14-centos bin]# ./zkCli.sh[zk: localhost:2181(CONNECTED) 0] ls
ls [-s] [-w] [-R] path
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 2] quit

6、配置参数详解

  • tickTime =2000:通信心跳数,Zookeeper服务器与客户端心跳时间,单位毫秒,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就 是每个tickTime时间就会发送一个心跳,时间单位为毫秒
  • initLimit =10:LF初始通信时限,集群中的Follower跟随者服务器与Leader领导者服务器之间,启动时能容忍的最多心跳数,10*2000(10个心跳时间)如果领导和跟随者没有发出心跳通信,就视为失效的连接,领导 和跟随者彻底断开
  • syncLimit =5:LF同步通信时限,集群启动后,Leader与Follower之间的最大响应时间单位,假如响应超过syncLimit * tickTime->10秒,Leader就认为Follwer已经死掉,会将Follwer从服务器列表中删除
  • dataDir:数据文件目录+数据持久化路径 主要用于保存Zookeeper中的数据
  • dataLogDir:日志文件目录
  • clientPort =2181:客户端连接端口 监听客户端连接的端口

7、节点及其类型

7.1、节点

  • ZooKeeper数据模型的结构与linux文件系统很类似,整体上可以看作是一棵树,每个节点称做一 个ZNode(ZookeeperNode)
  • 每一个ZNode默认能够存储1MB的数据(元数据),每个ZNode的路径都是唯一的
  • 元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、 资源查找、文件记录等功能

7.2、节点类型

7.2.1、持久型

  • 持久化目录节点(persistent)客户端与zookeeper断开连接后,该节点依旧存在
  • 持久化顺序编号目录节点(persistent_sequential)客户端与zookeeper断开连接后,该节 点依旧存在,创建znode时设置顺序标识,znode名称后会附加一个值,顺序号是一个单调 递增的计数器,由父节点维护,例如:Znode001,Znode002…

7.2.2、短暂型

  • 临时目录节点(ephemeral)客户端和服务器端断开连接后,创建的节点自动删除
  • 临时顺序编号目录节点(ephemeral_sequential)客户端与zookeeper断开连接后,该节点 被删除,创建znode时设置顺序标识,znode名称后会附加一个值,顺序号是一个单调递增 的计数器,由父节点维护,例如:Znode001,Znode002…

8、分布式部署

8.1、编号配置

在zkData目录下书写myid文件(依次写上编号1、2、3)

vim myid

8.2、zoo.cfg配置

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/usr/local/apache-zookeeper-3.6.3-bin/zkData
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true
#cluster
quorumListenOnAllIPs=true
server.1=101.34.116.9:2888:3888
server.2=106.54.85.216:2888:3888
server.3=81.70.1.65:2888:3888

server.A=B:C:D

  • A:一个数字,表示第几号服务器(集群模式下配置的/opt/zookeeper/zkData/myid文件里面的数据就是A的值)
  • B:服务器的ip地址
  • C:与集群中Leader服务器交换信息的端口
  • D:选举时专用端口,万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选 出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口

8.3、启动

[root@VM-8-13-centos bin]# ./zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@VM-8-13-centos bin]# jps
29545 QuorumPeerMain
29597 Jps
[root@VM-8-13-centos bin]# ./zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
[root@VM-0-3-centos bin]# ./zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@VM-0-3-centos bin]# ./zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
[root@VM-16-14-centos bin]# ./zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@VM-16-14-centos bin]# jps
29545 QuorumPeerMain
29597 Jps
[root@VM-16-14-centos bin]# ./zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

8.4、问题解决

  • 检查配置文件
  • ping一下服务器
  • 查看一下防火墙是否在关闭状态
    • 查看防火墙状态:firewall-cmd --state
    • 启动防火墙:systemctl start firewalld
    • 关闭防火墙:systemctl stop firewalld.service
    • 禁止防火墙开机启动:systemctl disable firewalld.service

9、客户端操作

9.1、客户端启动

./zkCli.sh

9.2、帮助

[zk: localhost:2181(CONNECTED) 0] help
ZooKeeper -server host:port -client-configuration properties-file cmd argsaddWatch [-m mode] path # optional mode is one of [PERSISTENT, PERSISTENT_RECURSIVE] - default is PERSISTENT_RECURSIVEaddauth scheme authclose config [-c] [-w] [-s]connect host:portcreate [-s] [-e] [-c] [-t ttl] path [data] [acl]delete [-v version] pathdeleteall path [-b batch size]delquota [-n|-b] pathget [-s] [-w] pathgetAcl [-s] pathgetAllChildrenNumber pathgetEphemerals pathhistory listquota pathls [-s] [-w] [-R] pathprintwatches on|offquit reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]redo cmdnoremovewatches path [-c|-d|-a] [-l]set [-s] [-v version] path datasetAcl [-s] [-v version] [-R] path aclsetquota -n|-b val pathstat [-w] pathsync pathversion 
Command not found: Command not found help

9.3、基本命令

#查看当前znode中所包含的内容
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]
#查看当前节点详细数据
[zk: localhost:2181(CONNECTED) 2] ls -s /
[zookeeper]
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1
  • cZxid:创建节点的事务 每次修改ZooKeeper状态都会收到一个zxid形式的时间戳,也就是ZooKeeper事务ID。 事务ID是ZooKeeper中所有修改总的次序。 每个修改都有唯一的zxid,如果zxid1小于zxid2,那么zxid1在zxid2之前发生
  • ctime:被创建的毫秒数(从1970年开始)
  • mZxid:最后更新的事务zxid
  • mtime:最后修改的毫秒数(从1970年开始)
  • pZxid:最后更新的子节点zxid
  • cversion:创建版本号,子节点修改次数
  • dataVersion:数据变化版本号
  • aclVersion:权限版本号
  • ephemeralOwner:如果是临时节点,这个是znode拥有者的session id,如果不是临时节点 则是0
  • dataLength:数据长度 numChildren:子节点数
#创建节点
[zk: localhost:2181(CONNECTED) 3] create /china
Created /china
[zk: localhost:2181(CONNECTED) 4] create /usa
Created /usa
[zk: localhost:2181(CONNECTED) 5] ls /
[china, usa, zookeeper]
#获得节点的值
[zk: localhost:2181(CONNECTED) 6] create /china/nanyang "home"
Created /china/nanyang
[zk: localhost:2181(CONNECTED) 7] get /china/nanyang
home
#创建短暂节点
[zk: localhost:2181(CONNECTED) 8] create -e /xxx
Created /xxx
#创建带序号的节点
[zk: localhost:2181(CONNECTED) 9] create -s /uk
Created /uk0000000003
[zk: localhost:2181(CONNECTED) 10] create -s /uk
Created /uk0000000004
#获取值,设置值,监听值的变化
[zk: localhost:2181(CONNECTED) 11] set /usa "short"
[zk: localhost:2181(CONNECTED) 12] get /usa
short#(另一个机器)
[zk: localhost:2181(CONNECTED) 1] addWatch /usa
[zk: localhost:2181(CONNECTED) 2] 
WATCHER::WatchedEvent state:SyncConnected type:NodeDataChanged path:/usa
# 删除节点
[zk: localhost:2181(CONNECTED) 13] delete /usa
[zk: localhost:2181(CONNECTED) 14] ls /
[china, uk0000000003, uk0000000004, xxx, zookeeper]
[zk: localhost:2181(CONNECTED) 15] create /uk0000000003/uk
Created /uk0000000003/uk
[zk: localhost:2181(CONNECTED) 16] deleteall /uk0000000003

10、API

10.1、导入依赖

<dependencies><!--zookeeper--><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.6.3</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.14.0</version></dependency><!--junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency>
</dependencies>

10.2、创建节点

public class ZookeeperTest {private String con="101.34.116.9:2181,106.54.85.216:2181,81.70.1.65:2181";//单位毫秒private int time=60*1000;private ZooKeeper zooKeeper;@Beforepublic void zookeeper() throws IOException {Watcher watcher=(watchedEvent)->System.out.println("监听到了变化");zooKeeper = new ZooKeeper(con, time, watcher);}@Testpublic void createNode() throws KeeperException, InterruptedException {String s = zooKeeper.create("/idea", "idea".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);System.out.println(s);}
}
  • 一个ACL对象就是一个Id和permission对
  • 类似linux的文件权限,不同的是共有5种操作:CREATE、READ、WRITE、DELETE、ADMIN(对应更改ACL的权限)
    • OPEN_ACL_UNSAFE:创建开放节点,允许任意操作 (用的最少,其余的权限用的很 少)
    • READ_ACL_UNSAFE:创建只读节点
    • CREATOR_ALL_ACL:创建者才有全部权限
  • CreateMode.PERSISTENT:持久型节点

10.3、查询节点

@Test
public void selectNode() throws KeeperException, InterruptedException {byte[] data = zooKeeper.getData("/idea", false, new Stat());System.out.println(new String(data));
}

10.4、修改节点

@Test
public void updateNode() throws KeeperException, InterruptedException {Stat stat = zooKeeper.setData("/idea", "idea1".getBytes(), 0);System.out.println(stat);
}
[zk: localhost:2181(CONNECTED) 18] ls -s /idea
[]
cZxid = 0x100000013
ctime = Thu Jul 29 16:43:11 CST 2021
mZxid = 0x100000013
mtime = Thu Jul 29 16:43:11 CST 2021
pZxid = 0x100000013
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0
[zk: localhost:2181(CONNECTED) 19] ls -s /idea
[]
cZxid = 0x100000013
ctime = Thu Jul 29 16:43:11 CST 2021
mZxid = 0x10000001b
mtime = Thu Jul 29 17:09:11 CST 2021
pZxid = 0x100000013
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0

10.5、删除节点

@Test
public void deleteNode() throws KeeperException, InterruptedException {zooKeeper.delete("/idea",1);
}
[zk: localhost:2181(CONNECTED) 21] create /athens
Created /athens
监听到了变化
xxx
uk0000000004
zookeeper
china
监听到了变化

10.6、判断节点

@Test
public void existsNode() throws KeeperException, InterruptedException {Stat exists = zooKeeper.exists("/china", false);System.out.println(exists);
}

11、监听器

也是美团等的工作模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dj4aI8pH-1627572451887)(C:\Users\yoya\AppData\Roaming\Typora\typora-user-images\image-20210729223559847.png)]

12、分布式锁

  • redis:高性能
  • zookeeper:高可用(可靠性)

12.1、传统锁

在这里插入图片描述

12.2、分布式锁

在这里插入图片描述

12.3、实现秒杀(ssm)

待补

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557446.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用计算机弹奏曲子童年,5.这首曲子使我想起了我的童年.十.书面表达现在.计算机游戏非常盛行.这是一件好事还是一件坏事?请你用英语写一篇短文来陈述自己的观点.并说明理由.字数:80-120....

5&#xff0e;这首曲子使我想起了我的童年.十.书面表达现在.计算机游戏非常盛行.这是一件好事还是一件坏事?请你用英语写一篇短文来陈述自己的观点.并说明理由.字数:80-120.【查看更多】题目列表(包括答案和解析)将下列英语句子译成汉语&#xff0c;汉语句子译成英语每空填写一…

JAVA分布式篇3——Dubbo

JAVA分布式篇3——Dubbo 1、架构演变 1.1、单应用架构 当网站流量很小时&#xff0c;只需要一个应用&#xff0c;将所有的功能部署到一起&#xff08;所有业务都放在一个tomcat 里&#xff09;&#xff0c;从而减少部署节点和成本用于简化 增删改查 工作量的数据访问框架 &a…

淮北市成人学计算机学校,安徽淮北市成人学电脑?

安徽淮北市成人学电脑&#xff1f;-"零基础"入学,签订就业协议,保证就业薪资,先就业后付款让你学习无忧就业无忧!成人学电脑 安徽成人学电脑 淮北市成人学电脑学电脑找高薪就业it专业就选择VR环境艺术创意设计师&#xff1a;专业优势&#xff0c;装饰行业需要人才时代…

Java分布式篇4——Redis

Java分布式篇4——Redis 1、互联网架构的演变历程 1.1、第一阶段 数据访问量不大&#xff0c;简单的架构即可搞定&#xff01; 1.2、第二阶段 数据访问量大&#xff0c;使用缓存技术来缓解数据库的压力不同的业务访问不同的数据库 1.3、第三阶段 主从读写分离。 之前的缓存…

计算机win7无法安装,新机装不了Win7?照这个方法5分钟搞定!

昨天有小伙伴在评论留言7代酷睿装不了Win7&#xff0c;评论回复有字数限制&#xff0c;小编今天就着重针对100/200系列主板安装Win7给大家推送一个教程&#xff0c;包括USB 3.0驱动和NVME驱动全部搞定&#xff0c;装Win7没有那难&#xff01;首先&#xff0c;下载Win7的原版镜像…

Java分布式篇5——FastDFS

Java分布式篇5——FastDFS 分布式文件系统 1、主流的分布式文件系统 1.1、 HDFS (Hadoop Distributed File System)Hadoop 分布式文件系统 高容错的系统&#xff0c;适合部署到廉价的机器上能提供高吞吐量的数据访问&#xff0c;非常适合大规模数据应用HDFS采用主从结构&a…

如何导出计算机硬盘重数据,硬盘对拷教程,100%保存原硬盘数据

硬盘对拷是老生常谈的问题&#xff0c;网上教程一搜一大把&#xff0c;这里也不是我原创了&#xff0c;就拷贝中关村的一篇写的比较详细的&#xff0c;普及下小白吧&#xff01;●Ghost硬盘对拷优点&#xff1a;全盘完全100%对拷&#xff0c;包括原有操作系统也可使用。新硬盘对…

计算机微格教学心得体会,微格教学心得体会6篇_微格教学体会报告

微格教学的英文为Microteaching&#xff0c;在我国被译为"微型教学"、"微观教学"、"小型教学"等&#xff0c;目前国内用得较多的是"微格教学"。微格教学是一种利用现代化教学技术手段来培训师范生和在职教师教学技能的系统方法。下面是…

Java分布式篇6——RabbitMQ

Java分布式篇6——RabbitMQ 1、MQ&#xff08;Message Queue&#xff09;消息队列 消息队列中间件&#xff0c;是分布式系统中的重要组件主要解决&#xff0c;异步处理&#xff0c;应用解耦&#xff0c;流量削峰等问题实现高性能&#xff0c;高可用&#xff0c;可伸缩和最终一…

windows7计算机启动修复怎么办,Win7电脑开机提示启动修复无法进入系统怎么办?...

近日一位Win7系统用户向我们反映&#xff0c;他的电脑在开机的过程中出现了启动修复的提示&#xff0c;导致无法正常进入系统&#xff0c;对于该问题应该如何解决呢&#xff1f;其实这个问题是很多Win7用户都碰到过的&#xff0c;因此本文就给大家介绍三种有效的解决方法。启动…

哈维玛德学院 计算机,哈维玛德学院优势多多,令人神往!

哈维心情学院是美国首批文学和艺术学院之一&#xff0c;位于加利福尼亚州克莱蒙特&#xff0c;成立于1955年12月&#xff0c;是一所私立科学、工程和数学精英学院。哈维心情学院是美国最优秀的大学之一。哈维心情学院在美国大学中排名第14位&#xff0c;具有卓越的学术声誉。这…

Java微服务篇1——SpringBoot

Java微服务篇1——SpringBoot 1、什么是springboot 1.1、Spring出现的问题 Spring是Java企业版&#xff08;Java Enterprise Edition&#xff0c;JEE&#xff0c;也称J2EE&#xff09;的轻量级代替品。无需开发重量级的 Enterprise Java Bean&#xff08;EJB&#xff09;&am…

计算机网络技术双机互联,快速实现双机互联的几种方案

文/大锋寝室里电脑越来越多&#xff0c;平时拷贝软件还得用软盘&#xff0c;况且软盘只有1.44MB&#xff0c;实在不够用&#xff0c;建网的想法也由此而来。当然此方案同样适用于家庭及其他区域内部计算机的互联。直接电缆连接对于双机通信&#xff0c;可以考虑使用并行或串行电…

Java微服务篇2——SpringCloud

Java微服务篇2——SpringCloud 1、微服务架构 1.1、单体应用架构 的⽤户量、数据量规模都⽐较⼩&#xff0c;项目所有的功能模块都放在一个工程中编码、 编译、打包并且部署在一个Tomcat容器中的架构模式就是单体应用架构&#xff0c;这样的架构既简单实 ⽤、便于维护&#…

ajax解析json中的对象数组对象,在JQuery中检索json数组后获取json对象Ajax

我使用JQuery AJAX检索某些数据(标题和说明)。正如你可以看到我打通的结果&#xff0c;并出结果的JSON数组和循环div标签中在JQuery中检索json数组后获取json对象Ajaxsuccess : function(jsonArray){$.each(jsonArray,function(messageIndex,jsonObject){$("#results"…

Java微服务篇3——Lucene

Java微服务篇3——Lucene 1、数据分类 1.1、结构化数据 具有固定格式或有限长度的数据&#xff0c;如数据库&#xff0c;元数据等 常见的结构化数据也就是数据库中的数据&#xff0c;在数据库中搜索很容易实现&#xff0c;通常都是使用 sql语句进行查询&#xff0c;而且能很…

服务器中所有文件夹变只读,我的电脑里全部文件夹属性都变成只读了改也改不过来...

第一个方法&#xff1a;你用管理员身份进入电脑然后更改一下文件夹的属性.隐藏文件看不到可以通过下面的方法显示出来:在文件夹选项里去掉‘隐藏受保护的文件和文件夹’前面的勾选--应用--确定 试试能否显示出你所需要的文件如果还不能显示&#xff0c;那么应该是注册表的问题&…

Java微服务篇4——Elastic search

Java微服务篇4——Elastic search 1、Elastic search安装配置 Elastic search官方&#xff1a;https://www.elastic.co/cn/products/elasticsearch Elastic search6.2.4 百度云&#xff1a;https://pan.baidu.com/s/1JyQok8Nija4gYhcjh-HWcw提取码&#xff1a;isa2 解压即可…

ftp文件服务器杀毒,FTP远程查杀网页木马方法

感谢使用护卫神云查杀系统&#xff0c;该软件专门查杀网页木马&#xff0c;完全免费&#xff0c;欢迎大家使用。远程FTP查杀部分&#xff1a;1、点击【远程查杀】图标&#xff0c;如上图所示&#xff0c;进入远程FTP查杀页面&#xff1a;1、首先要求输入远程FTP连接信息&#x…

Java微服务篇5——Docker

Java微服务篇5——Docker 1、虚拟化技术 虚拟化技术是一种计算机资源管理技术&#xff0c;是将计算机的各种实体资源&#xff0c;如服务器、网络、内存及存储 等&#xff0c;予以抽象、转换后呈现出来。虚拟化技术打破了计算机实体结构间的&#xff0c;不可切割的障碍。使用户…