hadoop-Zookeeper安装

news2024/10/24 10:26:21

hadoop-Zookeeper安装

Ububtu18.04安装Zookeeper3.7.1

环境与版本

这里采用的ubuntu18.04环境的基本配置为:

hostname 为master
用户名为hadoop
静态IP为 192.168.100.3
网关为 192.168.100.2
防火墙已经关闭
/etc/hosts已经配置

全版本下载地址:
https://archive.apache.org/dist/zookeeper/
这里我选择3.7.1这个版本
https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/

下载到本地后,将apache-zookeeper-3.7.1-bin.tar.gz上传到ubuntu18.04的/home/hadoop/opt/app目录下,
该目录下的目录作用如下:

bin目录 框架启动停止,客户端和服务端的
conf 配置文件信息
docs文档
lib 配置文档的依赖

standlone模式安装

解压缩与配置软连接
hadoop@master:~$ cd /home/hadoop/opt/app/
# 解压缩
hadoop@master:~/opt/app$ tar -zxf apache-zookeeper-3.7.1-bin.tar.gz 

查看当前目录结构:

hadoop@master:~/opt/app$ pwd # 查看当前目录
/home/hadoop/opt/app
hadoop@master:~/opt/app$ ll
总用量 9120
drwxrwxr-x  6 hadoop hadoop    4096 1112 10:42 ./
drwxrwxr-x  3 hadoop hadoop    4096 114 14:53 ../
drwxrwxr-x  6 hadoop hadoop    4096 1112 10:41 apache-zookeeper-3.7.1-bin/
-rw-rw-r--  1 hadoop hadoop 9311744 1112 10:39 apache-zookeeper-3.7.1-bin.tar.gz

配置zookeeper的软连接

# 软连接
hadoop@master:~/opt/app$ ln -s apache-zookeeper-3.7.1-bin zookeeper 
创建存储目录与修改zoo.cfg文件

切换到~/opt/app/zookeeper,配置zookeeper的数据存储-data0目录

hadoop@master:~/opt/app$ cd zookeeper # 切换到zookeeper中
hadoop@master:~/opt/app/zookeeper$ ls
bin  conf  docs  lib  LICENSE.txt  NOTICE.txt  README.md  README_packaging.txt
hadoop@master:~/opt/app/zookeeper$ mkdir data0 # 创建data0
hadoop@master:~/opt/app/zookeeper$ ls
bin  conf  data0  docs  lib  LICENSE.txt  NOTICE.txt  README.md  README_packaging.txt

进入~/opt/app/zookeeper/conf目录下,复制zoo_sample.cfg为zoo.cfg,

hadoop@master:~/opt/app/zookeeper$ cd conf/
hadoop@master:~/opt/app/zookeeper/conf$ ls
configuration.xsl  log4j.properties  zoo_sample.cfg
hadoop@master:~/opt/app/zookeeper/conf$ cp zoo_sample.cfg zoo.cfg #复制zoo.cfg

编辑zoo.cfg

hadoop@master:~/opt/app/zookeeper/conf$ vi zoo.cfg # 编辑zoo.cfg文件,编辑内容如下:
# dataDir=/tmp/zookeeper 注释掉这句默认配置,然后添加下面的配置
dataDir=/home/hadoop/opt/app/zookeeper/data0


# 在配置文件的最后面添加
server.1=master:2888:3888
# 如果是单节点的zookeeper集群部署可以配置多个server
#server.2=master:2889:3889
#server.3=master:2890:3890
配置zookeeper的环境变量
hadoop@master:~/opt/app/zookeeper/conf$ vi ~/.bashrc
#这一步会打开bashrc文件,编辑内容如下:
export ZOOKEEPER_HOME=/home/hadoop/opt/app/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH

hadoop@master:~/opt/app/zookeeper/conf$ source ~/.bashrc # 生效环境变量
启动与查看zk服务端(单机版本)

启动zk服务端(单机版本)
查看zk启动状态

hadoop@master:~/opt/app/zookeeper/conf$ zkServer.sh status #查看zk启动状态
ZooKeeper JMX enabled by default
Using config: /home/hadoop/opt/app/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Error contacting service. It is probably not running.

启动zkServer

hadoop@master:~/opt/app/zookeeper/conf$ zkServer.sh start #启动zkServer
ZooKeeper JMX enabled by default
Using config: /home/hadoop/opt/app/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

查看zk启动状态

hadoop@master:~/opt/app/zookeeper/conf$ zkServer.sh status #查看zk启动状态,单机启动为standalone模式
ZooKeeper JMX enabled by default
Using config: /home/hadoop/opt/app/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: standalone

关闭zk服务端(单机版本)

zkServer.sh start # 启动zk服务端
zkServer.sh stop # 关闭zk服务端
zkServer.sh status # 查看zk服务端状态
启动zk客户端
hadoop@master:~/opt/app/zookeeper/conf$ zkCli.sh #启动zkCli,默认连接端口2181
Connecting to localhost:2181
...
...
...
WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 1] help
ZooKeeper -server host:port cmd args
        addauth scheme auth
        close
        config [-c] [-w] [-s]
        connect host:port
        create [-s] [-e] [-c] [-t ttl] path [data] [acl]
        delete [-v version] path
        deleteall path
        delquota [-n|-b] path
        get [-s] [-w] path
        getAcl [-s] path
        history
        listquota path
        ls [-s] [-w] [-R] path
        ls2 path [watch]
        printwatches on|off
        quit
        reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]
        redo cmdno
        removewatches path [-c|-d|-a] [-l]
        rmr path
        set [-s] [-v version] path data
        setAcl [-s] [-v version] [-R] path acl
        setquota -n|-b val path
        stat [-w] path
        sync path
Command not found: Command not found help
[zk: localhost:2181(CONNECTED) 2] quit

WATCHER::

WatchedEvent state:Closed type:None path:null
2021-11-12 11:05:29,497 [myid:] - INFO  [main:ZooKeeper@1422] - Session: 0x1000029eae60000 closed
2021-11-12 11:05:29,497 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@524] - EventThread shut down for session: 0x1000029eae60000
hadoop@master:~/opt/app/zookeeper/conf$

配置伪分布式的Zookeeper

本小节的伪分布式集群部署是指在一台机器(master)上配置多个配置文件(zoo1.cfg,zoo2.cfg,zoo3.cfg),三个配置文件中设置不一样clientPort和dataDir,然后根据不同的配置文件来启动Zookeeper服务。
备注:本部分是在standlone已经完成安装的基础上进行的。

创建并生成各自的配置文件:

配置各个zk节点的配置文件,具体如下:

hadoop@master:~/opt/app/zookeeper/conf$ pwd
/home/hadoop/opt/app/zookeeper/conf
hadoop@master:~/opt/app/zookeeper/conf$ cp zoo.cfg zoo1.cfg
hadoop@master:~/opt/app/zookeeper/conf$ cp zoo.cfg zoo2.cfg
hadoop@master:~/opt/app/zookeeper/conf$ cp zoo.cfg zoo3.cfg

分布修改这三个配置文件:

zoo1.cfg 配置文件

# dataDir=/tmp/zookeeper 注释掉这句默认配置,然后修改下面的配置
dataDir=/home/hadoop/opt/app/zookeeper/data1

# clientPort=2181 注释掉15行这句话,把这句内容放在文件尾部
clientPort=2181
# server.1=master:2888(数据同步端口):3888(Leader选举端口)
server.1=master:2888:3888
server.2=master:2889:3889
server.3=master:2890:3890

zoo2.cfg 配置文件

# dataDir=/tmp/zookeeper 注释掉这句默认配置,然后修改下面的配置
dataDir=/home/hadoop/opt/app/zookeeper/data2

# clientPort=2181 注释掉15行这句话,把这句内容放在文件尾部
clientPort=2182
# server.1=master:2888(数据同步端口):3888(Leader选举端口)
server.1=master:2888:3888
server.2=master:2889:3889
server.3=master:2890:3890

zoo3.cfg 配置文件

# dataDir=/tmp/zookeeper 注释掉这句默认配置,然后修改下面的配置
dataDir=/home/hadoop/opt/app/zookeeper/data3

# clientPort=2183 注释掉15行这句话,把这句内容放在文件尾部
clientPort=2183
# server.1=master:2888(数据同步端口):3888(Leader选举端口)
server.1=master:2888:3888
server.2=master:2889:3889
server.3=master:2890:3890

server.A=B:C:D中A是一个数字,表示这个是第几号服务器,B是这个服务器的IP地址,C表示这个服务器与集群中的Leader服务器交换信息的端口,D表示集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。对于伪分布集群的配置方式,由于B都是一样,需要为不同的Zookeeper服务通信端口分配不同的端口号。

在各个data目录下创建myid文件,并存入当前服务器的编号,如下:

hadoop@master:~/opt/app/zookeeper$ pwd
/home/hadoop/opt/app/zookeeper
hadoop@master:~/opt/app/zookeeper$ touch data1/myid
hadoop@master:~/opt/app/zookeeper$ touch data2/myid
hadoop@master:~/opt/app/zookeeper$ touch data3/myid

hadoop@master:~/opt/app/zookeeper$ echo 1 > data1/myid
hadoop@master:~/opt/app/zookeeper$ echo 2 > data2/myid
hadoop@master:~/opt/app/zookeeper$ echo 3 > data3/myid

启动并测试Zookeeper伪分布式集群

依次启动Zookeeper服务,在启动的时候,选举算法依次投票,那么Leader
服务就是2号配置文件启动的服务。其他的节点服务都是Fllower,当启动第一台服务器的时候查看状态status是不可用的,因为集群中节点未在半数以上。集群中奇数和偶数对故障的容忍度是一致的,所以建议配置奇数个Zookeeper节点。

启动zkServer.sh并指定配置文件为zoo1.cfg

hadoop@master:~/opt/app/zookeeper$ zkServer.sh start /home/hadoop/opt/app/zookeeper/conf/zoo1.cfg # 通过zoo1.cfg启动zkServer
ZooKeeper JMX enabled by default
Using config: /home/hadoop/opt/app/zookeeper/conf/zoo1.cfg
Starting zookeeper ... STARTED
hadoop@master:~/opt/app/zookeeper$ zkServer.sh status /home/hadoop/opt/app/zookeeper/conf/zoo1.cfg # 查看通过zoo1.cfg启动的zkServer状态
ZooKeeper JMX enabled by default
Using config: /home/hadoop/opt/app/zookeeper/conf/zoo1.cfg
Client port found: 2181. Client address: localhost.
Error contacting service. It is probably not running.

启动zkServer.sh并指定配置文件为zoo2.cfg


hadoop@master:~/opt/app/zookeeper$ zkServer.sh start /home/hadoop/opt/app/zookeeper/conf/zoo2.cfg # 通过zoo2.cfg启动zkServer
ZooKeeper JMX enabled by default
Using config: /home/hadoop/opt/app/zookeeper/conf/zoo2.cfg
Starting zookeeper ... STARTED
hadoop@master:~/opt/app/zookeeper$ zkServer.sh status /home/hadoop/opt/app/zookeeper/conf/zoo2.cfg # 查看通过zoo2.cfg启动的zkServer状态,为leader
ZooKeeper JMX enabled by default
Using config: /home/hadoop/opt/app/zookeeper/conf/zoo2.cfg
Client port found: 2182. Client address: localhost.
Mode: leader

启动zkServer.sh并指定配置文件为zoo3.cfg

hadoop@master:~/opt/app/zookeeper$ zkServer.sh start /home/hadoop/opt/app/zookeeper/conf/zoo3.cfg # 通过zoo3.cfg启动zkServer
ZooKeeper JMX enabled by default
Using config: /home/hadoop/opt/app/zookeeper/conf/zoo3.cfg
Starting zookeeper ... STARTED
hadoop@master:~/opt/app/zookeeper$ zkServer.sh status /home/hadoop/opt/app/zookeeper/conf/zoo3.cfg # 查看通过zoo3.cfg启动的zkServer状态
ZooKeeper JMX enabled by default
Using config: /home/hadoop/opt/app/zookeeper/conf/zoo3.cfg
Client port found: 2183. Client address: localhost.
Mode: follower

目前看到zoo2.cfg的进程为leader节点。
如下图:
在这里插入图片描述

此时使用命令jps查看所有进程:

hadoop@master:~/opt/app/zookeeper$ jps
4833 QuorumPeerMain
5060 Jps
4726 QuorumPeerMain
4607 QuorumPeerMain

客户端连接Zookeeper服务节点,则使用如下命令:

hadoop@master:~/opt/app/zookeeper$ zkCli.sh -server localhost:2181

Connecting to localhost:2181
#退出使用quit

centos安装Zookeeper3.7.1

这里采用的centos7.6环境的基本配置为:

hostname 为node1
用户名为root
静态IP为 192.168.100.3
网关为 192.168.100.2
防火墙已经关闭
/etc/hosts已经配置

全版本下载地址:
https://archive.apache.org/dist/zookeeper/
这里我选择3.7.1这个版本
https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/

下载到本地后,将apache-zookeeper-3.7.1-bin.tar.gz上传到ubuntu18.04的/home/hadoop/opt/app目录下,
该目录下的目录作用如下:

bin目录 框架启动停止,客户端和服务端的
conf 配置文件信息
docs文档
lib 配置文档的依赖

基于centos7.6伪分布模式安装

centos7.6安装zookeeper的过程与ubuntu安装zookeeper的过程完全一致。下面提供具体过程。

上传解压修改文件名

上传apache-zookeeper-3.7.1-bin.tar.gz 到/opt/software目录下,并对压缩包进行解压

[root@node1 ~]#  cd /opt/software/
# 解压缩
[root@node1 ~]#  tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz
 # 修改文件名
[root@node1 ~]#  mv apache-zookeeper-3.7.1-bin zookeeper
# 创建zkdata目录
[root@node1 ~]#  cd /opt/software/zookeeper
[root@node1 ~]#  mkdir zkdata
复制zookeeper安装目录

复制zookeeper目录到/opt/module目录下,并复制3份,命名为001-003

cd /opt/software
cp -r zookeeper /opt/module/zookeeper001
cp -r zookeeper /opt/module/zookeeper002
cp -r zookeepe /opt/module/zookeeper003

创建并配置zoo.cfg配置文件
修改zookeeper001配置文件

首先把zookeeper001/conf下的的zoo_sample.cfg文件复制为zoo.cfg

cd /opt/module/zookeeper001/conf
cp zoo_sample.cfg zoo.cfg

修改zoo.cfg配置文件

vim zoo.cfg

修改配置如下

# 第1步:设置数据持久化目录
dataDir=/opt/module/zookeeper001/zkdata
# 设置客户端连接当前ZooKeeper服务使用的端口号
clientPort=2181
# 设置ZooKeeper集群中每个ZooKeeper服务的地址及端口号
server.1=node1:2888:3888
server.2=node1:2889:3889
server.3=node1:2890:3890

在zookeeper001/zkdata下创建myid文件,内容为1

echo 1 > /opt/module/zookeeper001/zkdata/myid
修改zookeeper002配置文件

首先把zookeeper002/conf下的的zoo_sample.cfg文件复制为zoo.cfg

cd /opt/module/zookeeper001/conf
cp zoo_sample.cfg zoo.cfg

修改zoo.cfg配置文件

vim zoo.cfg

修改配置如下

# 第1步:设置数据持久化目录
dataDir=/opt/module/zookeeper002/zkdata
# 设置客户端连接当前ZooKeeper服务使用的端口号
clientPort=2182
# 设置ZooKeeper集群中每个ZooKeeper服务的地址及端口号
server.1=node1:2888:3888
server.2=node1:2889:3889
server.3=node1:2890:3890

在zookeeper002/zkdata下创建myid文件,内容为2

echo 2 > /opt/module/zookeeper002/zkdata/myid
修改zookeeper003配置文件

首先把zookeeper003/conf下的的zoo_sample.cfg文件复制为zoo.cfg

cd /opt/module/zookeeper003/conf
cp zoo_sample.cfg zoo.cfg

修改zoo.cfg配置文件

vim zoo.cfg

修改配置如下

# 第1步:设置数据持久化目录
dataDir=/opt/module/zookeeper003/zkdata
# 设置客户端连接当前ZooKeeper服务使用的端口号
clientPort=2183
# 设置ZooKeeper集群中每个ZooKeeper服务的地址及端口号
server.1=node1:2888:3888
server.2=node1:2889:3889
server.3=node1:2890:3890

在zookeeper003/zkdata下创建myid文件,内容为1

echo 3 > /opt/module/zookeeper001/zkdata/myid
启动并测试Zookeeper伪分布式集群

依次启动Zookeeper服务,在启动的时候,选举算法依次投票,那么Leader
服务就是2号配置文件启动的服务。其他的节点服务都是Fllower,当启动第一台服务器的时候查看状态status是不可用的,因为集群中节点未在半数以上。集群中奇数和偶数对故障的容忍度是一致的,所以建议配置奇数个Zookeeper节点。

启动zookeeper001下的zkServer.sh
[root@node1 module]# cd /opt/module/
[root@node1 module]# ./zookeeper001/bin/zkServer.sh start # 启动zkServer

输出为:

ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper001/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

查看zkServer状态


[root@node1 module]#  ./zookeeper001/bin/zkServer.sh status  # 查看zkServer状态

输出为:

ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper001/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Error contacting service. It is probably not running.
启动zookeeper002下的zkServer.sh
[root@node1 module]# cd /opt/module/
[root@node1 module]# ./zookeeper002/bin/zkServer.sh start # 启动zkServer

输出为:

ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper002/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

查看zkServer状态


[root@node1 module]#  ./zookeeper002/bin/zkServer.sh status  # 查看zkServer状态

输出为:

Using config: /opt/module/zookeeper002/bin/../conf/zoo.cfg
Client port found: 2182. Client address: localhost. Client SSL: false.
Mode: leader
启动zookeeper003下的zkServer.sh
[root@node1 module]# cd /opt/module/
[root@node1 module]# ./zookeeper003/bin/zkServer.sh start # 启动zkServer

输出为:

ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper003/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

查看zkServer状态


[root@node1 module]#  ./zookeeper003/bin/zkServer.sh status  # 查看zkServer状态

输出为:

ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper003/bin/../conf/zoo.cfg
Client port found: 2183. Client address: localhost. Client SSL: false.
Mode: follower

启动后,myid值为2的zookeeper002下的称为了leader。

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

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

相关文章

Director3D: Real-world Camera Trajectory and 3DScene Generation from Text 论文解读

目录 一、概述 二、相关工作 1、文本到3D生成 2、3DGS 三、Director3D 1、Cinematographer 2、Decorator 3、Detailer 4、Loss 一、概述 该论文提出利用真实世界数据集,设计一个从文本生成真实世界3D场景和自适应相机轨迹的强大的开放世界文本到3D生成框架…

Git使用GUI界面实现任意历史版本对比

首先进入版本历史查看界面 标记某次提交 选择某次提交并和标记的提交对比 可以查看比较结果了,具体到每一个文件每一行代码

鸿蒙HarmonyOS NEXT 5.0开发(2)—— ArkUI布局组件

文章目录 布局Column:从上往下的布局Row:从左往右的布局Stack:堆叠布局Flex:自动换行或列 组件Swiper各种选择组件 华为官方教程B站视频教程 布局 主轴和交叉轴的概念: 对于Column布局而言,主轴是垂直方…

cnn做整图匹配

好像还没有人把cnn在工业机器视觉中使用,我们打破界限,试一试! 工业上有很多需求,判断加工产品有还是没有,从前基本上都是使用找斑的方法来判断。 我们可以用cnn代替试试! 我们前头cnn最好成绩是&#x…

STM32(二十一):看门狗

WDG(Watchdog)看门狗,手动重装寄存器的操作就是喂狗。 看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入…

免费送源码:Node.JS+Express+MySQL Express 流浪动物救助系统 计算机毕业设计原创定制

摘 要 随着互联网大趋势的到来,社会的方方面面,各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去,而其中最好的方式就是建立网络管理系统,并对其进行信息管理。由于现在网络的发达,流浪动物救助系…

python基础综合案例(数据可视化—折线图可视化)

可视化案例的学习目标: 通过案例,回忆巩固python基础的语法 锻炼编程能力,熟练语法的使用 1.json数据格式 两种不同的语言由于数据格式不同,所以没有办法直接沟通,就比如我们可以将python 的数据格式转成json&…

VirtualBox虚拟机桥接模式固定ip详解

VirtualBox虚拟机桥接模式固定ip详解 VirtualBox 桥接设置Ubuntu 24.04使用固定IP问题记录 VirtualBox 桥接设置 为什么设置桥接模式?桥接模式可以实现物理机和虚拟机互相通信,虚拟机也可以访问互联网(推荐万金油),物…

STM32通信协议-I2C

目录 一,IC2的协议规则 I2C总线是PHILIPS公司开发的两线式串行总线,I2C总线主要解决了单片机一对多通信的问题 两根通信线:SCL,SDA,同步,半双工通信,支持数据应答机制,支持总线挂载多设备。 …

Verilog:参数(parameter)的使用

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 参数(parameter)一般用于定义常数,常用于进行可配置的参数化设计中,本文将对参数的使用进行详细介绍。 首先来看看参数的BNF范式&#xff…

Hadoop 安装教程——单节点模式和分布式模式配置

文章目录 一、预备知识1.1 Hadoop 发行版本1.2 部署方式 二、预备条件2.1 环境准备2.2 创建新用户(可选)2.3 配置 SSH 无密码登录2.4 下载 Hadoop2.5 编辑 hadoop-env.sh 脚本2.6 编辑 dfs 和 yarn 脚本 三、单节点模式部署3.1 官方使用案例3.2 查看运行结果 四、伪分布模式部署…

用哪种建站程序做谷歌SEO更容易?

做网站很容易,但做一个能带来流量和订单的网站就没那么简单了。尤其是在谷歌SEO优化方面,不同的建站程序对SEO的支持程度也不同。在这方面,WordPress和Shopify无疑是最佳选择。 WordPress作为一个内容管理系统(CMS)&am…

关键词提取技术:TF-IDF 详解

1. 什么是TF-IDF? TF-IDF(Term Frequency-Inverse Document Frequency) 是一种统计方法,用于评估单词在文档集或语料库中的重要性。它是自然语言处理和信息检索中的核心技术之一。 TF-IDF主要基于以下两个概念: TF&a…

Java毕业设计 基于SSM jsp餐厅卫生安全系统

Java毕业设计 基于SSM jsp餐厅卫生安全系统 这篇博文将介绍一个基于SSM框架和jsp开发的餐厅卫生安全系统,适合用于Java毕业设计。 功能介绍 餐厅人员: 注册 登录 首页 图片轮播 窗口信息 窗口详情 文明窗口 差评窗口 系统公告 个人中心 管理员:…

亚信安全DeepSecurity中标知名寿险机构云主机安全项目

近日,亚信安全DeepSecurity成功中标国内知名寿险机构的云主机安全项目。亚信安全凭借在云主机安全防护领域的突出技术优势,结合安全运营的能力,以“实战化”为指导,为用户提供无惧威胁攻击、无忧安全运营的一站式云安全体系&#…

Anaconda和Pycharm超详细安装教程(2024版本+Win11)

一、安装Anaconda 1.1 下载Anaconda 在官方网站(Free Download | Anaconda)上下载适用于你的操作系统的 Anaconda 安装包。(这里以windows为例) 1.2 安装Anaconda 打开下载的安装包,并按照安装向导的指示进行安装。在安装过程中,你可以选择默认的安装选项,也可以根据…

Visual Studio安装图文详解教程

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 教程说明 本教程旨在详细介绍 Visual Studio 社区版的安装过程及其注意事项。 Visual Studio简介 Visual Studio 社区版功能完备且可扩展的免费 IDE,可用于创…

NVR接入录像回放平台EasyCVR视频融合平台语音对讲配置

国标GB28181视频平台EasyCVR视频融合平台可拓展性强、视频能力灵活,平台可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、智能分析接入等功能。其中,在语音对讲方面,NVR接入录像回放平台目前…

4种鼓励创业创新的方法

随着市场趋于饱和,许多企业,尤其是初创企业,很难在竞争中保持领先地位。技术为企业彻底改变其营销和管理策略铺平了道路。另一个经过实践检验的成功渗透特定市场的方法是在办公室内部激发创新,从员工到品牌皆如此。 那么究竟如何…

【设计模式-原型】

**原型模式(Prototype Pattern)**是一种创建型设计模式,旨在通过复制现有对象的方式来创建新对象,而不是通过实例化类来创建对象。该模式允许对象通过克隆(复制)来创建新的实例,因此避免了重新创…