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

Centos7安装ZK-UI管理界面安装|Maven|Git|

 一: JDK1.8安装

参考:  Centos7卸载|安装JDK1.8|Xshell7批量控制多个终端

二:Maven安装

2.1:下载maven安装包 

maven 下载地址:https://mirror.bit.edu.cn/apache/maven/maven-3/ 

[root@www ~]# mkdir -p /usr/local/maven
[root@www ~]# cd /usr/local/tools
[root@www tools]# wget https://mirror.bit.edu.cn/apache/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
--2023-08-27 12:44:30--  https://mirror.bit.edu.cn/apache/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
正在解析主机 mirror.bit.edu.cn (mirror.bit.edu.cn)... 2001:da8:204:1205::22
正在连接 mirror.bit.edu.cn (mirror.bit.edu.cn)|2001:da8:204:1205::22|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:8296049 (7.9M) [application/octet-stream]
正在保存至: “apache-maven-3.8.8-bin.tar.gz”

100%[===========================================================================================================================================================================================================>] 8,296,049   3.84MB/s 用时 2.1s   

2023-08-27 12:44:32 (3.84 MB/s) - 已保存 “apache-maven-3.8.8-bin.tar.gz” [8296049/8296049])
 



2.2: 解压maven安装包到/usr/local/maven目录 

[root@www tools]# ll
总用量 8972
-rw-r--r--  1 root root 8296049 3月   8 22:09 apache-maven-3.8.8-bin.tar.gz
-rw-r--r--. 1 root root  887908 12月  9 2015 nginx-1.9.9.tar.gz
[root@www tools]# tar -zxvf apache-maven-3.8.8-bin.tar.gz -C /usr/local/maven/
 

[root@www maven]# ll
总用量 0
drwxr-xr-x 6 root root 99 8月  27 12:45 apache-maven-3.8.8
[root@www maven]# cd apache-maven-3.8.8/
[root@www apache-maven-3.8.8]# clear
[root@www apache-maven-3.8.8]# pwd
/usr/local/maven/apache-maven-3.8.8
[root@www apache-maven-3.8.8]# echo 'export PATH=/usr/local/maven/apache-maven-3.8.8/bin:$PATH' >>/etc/profile
[root@www apache-maven-3.8.8]# source /etc/profile
 

 2.3: 配置阿里云仓库镜像

[root@www conf]# pwd
/usr/local/maven/apache-maven-3.8.8/conf

[root@www conf]# mkdir -p /usr/local/maven/repository

[root@www conf]#  vi settings.xml 

<!--找到</mirrors>节点添加即可-->

   <mirror>
       <id>alimaven</id>
         <name>aliyun maven</name>
         <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
         <mirrorOf>central</mirrorOf>
    </mirror>
 


三: 在线安装Git

[root@www conf]# yum install git -y
[root@www conf]# git --version
git version 1.8.3.1
 

四: 安装zookeeper服务 

参考:使用Xshell7控制多台服务同时安装ZK最新版集群服务 

 五: 安装zkui

下载地址: mirrors / DeemOpen / zkui · GitCode

[root@www conf]# mkdir -p /usr/local/zkui

[root@www zkui]# git clone https://gitcode.net/mirrors/DeemOpen/zkui.git

[root@www zkui]# cd zkui/
[root@www zkui]# mvn clean install -DskipTests

 看到如图所示,即打包成功了;

六: 准备配置文件并启动服务

[root@www zkui]# cat config.cfg 
#Server Port
serverPort=9999
#Comma seperated list of all the zookeeper servers
zkServer=192.168.1.100:2181,192.168.1.101:2181,192.168.1.102:2181




[root@www zkui]# pwd
/usr/local/zkui/zkui
[root@www zkui]# ll
总用量 108
-rw-r--r-- 1 root root  2385 8月  27 13:46 config.cfg
drwxr-xr-x 2 root root    61 8月  27 13:46 docker
drwxr-xr-x 2 root root   114 8月  27 13:46 images
-rw-r--r-- 1 root root 11358 8月  27 13:46 LICENSE-2.0.txt
-rw-r--r-- 1 root root   416 8月  27 13:46 Makefile
-rw-r--r-- 1 root root  1746 8月  27 13:46 nbactions.xml
-rw-r--r-- 1 root root  5374 8月  27 13:46 pom.xml
-rw-r--r-- 1 root root  6216 8月  27 13:46 README.md
-rwxr-xr-x 1 root root    43 8月  27 13:46 run.sh
drwxr-xr-x 4 root root    30 8月  27 13:46 src
drwxr-xr-x 7 root root   205 8月  27 14:07 target
-rw-r--r-- 1 root root 43008 8月  27 14:09 zkui.h2.db
-rw-r--r-- 1 root root   848 8月  27 14:07 zkui.out
-rw-r--r-- 1 root root 11065 8月  27 14:09 zkui-out.log
-rwxr-xr-x 1 root root  1252 8月  27 13:51 zkui.sh

七: 脚本启动:

[root@www zkui]# cat zkui.sh
#!/usr/bin/env bash

PIDFILE=~/zkui.pid
ZKUIBINDIR=$(cd `dirname $0`; pwd)
ZKUICLASSNAME="target/zkui-2.0-SNAPSHOT-jar-with-dependencies.jar"
ZKUI_DAEMON_OUT=$ZKUIBINDIR/zkui.out

start(){
    echo  "Starting zkui ... $ZKUIBINDIR"
    if [ -f "$PIDFILE" ]; then
        if kill -0 `cat "$PIDFILE"` > /dev/null 2>&1; then
            echo zkui already running as process `cat "$PIDFILE"`. 
            exit 0
        fi
    fi
    cp config.cfg target
    nohup java -jar "$ZKUIBINDIR/$ZKUICLASSNAME" > "$ZKUI_DAEMON_OUT" 2>&1 < /dev/null &
    if [ $? -eq 0 ];
    then
        echo $!>$PIDFILE
        if [ $? -eq 0 ];
        then
            sleep 1
            echo STARTED
        else
            echo FAILED TO WRITE PID
            exit 1
        fi
    else
        echo SERVER DID NOT START
        exit 1
    fi
}

stop(){
    echo -n "Stopping zkui ... "
    if [ ! -f "$PIDFILE" ]
    then
        echo "no zkui to stop (could not find file $PIDFILE)"
    else
        kill -9 $(cat "$PIDFILE")
        rm "$PIDFILE"
        echo STOPPED
    fi
    exit 0
}

case "$1" in
start)
    start
    ;;
stop)
    stop
    ;;
restart)
    shift
    "$0" stop
    sleep 3
    "$0" start
    ;;
*)
    echo "Usage: $0 {start|stop|restart}" >&2
esac
 

 执行命令启动服务

[root@www zkui]# ll
总用量 108
-rw-r--r-- 1 root root  2385 8月  27 13:46 config.cfg
drwxr-xr-x 2 root root    61 8月  27 13:46 docker
drwxr-xr-x 2 root root   114 8月  27 13:46 images
-rw-r--r-- 1 root root 11358 8月  27 13:46 LICENSE-2.0.txt
-rw-r--r-- 1 root root   416 8月  27 13:46 Makefile
-rw-r--r-- 1 root root  1746 8月  27 13:46 nbactions.xml
-rw-r--r-- 1 root root  5374 8月  27 13:46 pom.xml
-rw-r--r-- 1 root root  6216 8月  27 13:46 README.md
-rwxr-xr-x 1 root root    43 8月  27 13:46 run.sh
drwxr-xr-x 4 root root    30 8月  27 13:46 src
drwxr-xr-x 7 root root   205 8月  27 14:07 target
-rw-r--r-- 1 root root 43008 8月  27 14:09 zkui.h2.db
-rw-r--r-- 1 root root   848 8月  27 14:07 zkui.out
-rw-r--r-- 1 root root 11065 8月  27 14:09 zkui-out.log
-rwxr-xr-x 1 root root  1252 8月  27 13:51 zkui.sh
[root@www zkui]# ./zkui.sh stop 
Stopping zkui ... STOPPED
[root@www zkui]# ./zkui.sh start
Starting zkui ... /usr/local/zkui/zkui
STARTED

查看启动端口:

[root@www zkui]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:8877            0.0.0.0:*               LISTEN      1174/nginx: master  
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      654/rpcbind         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1136/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1411/master         
tcp6       0      0 :::9999                 :::*                    LISTEN      3642/java           
tcp6       0      0 :::111                  :::*                    LISTEN      654/rpcbind         
tcp6       0      0 :::22                   :::*                    LISTEN      1136/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1411/master         
 


[root@www zkui]# cd target/
[root@www target]# ll
总用量 13556
drwxr-xr-x 2 root root        6 8月  27 13:47 archive-tmp
drwxr-xr-x 5 root root      101 8月  27 13:47 classes
-rw-r--r-- 1 root root     2385 8月  27 14:13 config.cfg
drwxr-xr-x 4 root root       49 8月  27 13:47 generated-sources
drwxr-xr-x 2 root root       28 8月  27 13:47 maven-archiver
drwxr-xr-x 3 root root       17 8月  27 13:47 test-classes
-rw-r--r-- 1 root root   277078 8月  27 13:47 zkui-2.0-SNAPSHOT.jar
-rw-r--r-- 1 root root 13595676 8月  27 13:47 zkui-2.0-SNAPSHOT-jar-with-dependencies.jar
[root@www target]# ps -ef |grep zkui
root       5176      1  1 14:13 pts/0    00:00:24 java -jar /usr/local/zkui/zkui/target/zkui-2.0-SNAPSHOT-jar-with-dependencies.jar
root       5448   1737  0 14:36 pts/0    00:00:00 grep --color=auto zkui
 

八:浏览器访问:

http://192.168.1.111:9999/login

输入: admin/manager  登录

九: “stat is not executed because it is not in the whitelist.” 异常解决 

原因
zookeeper.4lw.commands.whitelist:3.4.10中的新增功能:此属性包含以逗号分隔的四个字母单词命令的列表。引入它是为了对ZooKeeper可执行的命令集提供精细的控制,因此用户可以在必要时关闭某些命令。默认情况下,如果未指定该属性,则它包含所有受支持的四个字母单词命令,但“ wchp”和“ wchc”除外。如果指定了属性,则仅启用白名单中列出的命令。
 

解决方案:  在zoo.cfg文件中添加

zookeeper配置中新增

4lw.commands.whitelist=*


点击Monitor:  

十: 修改后重启,再次查看 


Server: 192.168.1.100:2181



Zookeeper version: 3.9.0-1674a5e97f43bc38e9bf56b04f83a7ae34d68249, built on 2023-07-19 09:09 UTC
Clients:
/192.168.1.111:50992[1](queued=0,recved=9,sent=9)
/192.168.1.111:50994[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/2.8889/10
Received: 11
Sent: 10
Connections: 2
Outstanding: 0
Zxid: 0x400000002
Mode: follower
Node count: 7
Environment:
zookeeper.version=3.9.0-1674a5e97f43bc38e9bf56b04f83a7ae34d68249, built on 2023-07-19 09:09 UTC
host.name=docker0
java.version=1.8.0_371



Server: 192.168.1.101:2181



Zookeeper version: 3.9.0-1674a5e97f43bc38e9bf56b04f83a7ae34d68249, built on 2023-07-19 09:09 UTC
Clients:
/192.168.1.111:54260[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/0.0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x400000002
Mode: follower
Node count: 7
Environment:
zookeeper.version=3.9.0-1674a5e97f43bc38e9bf56b04f83a7ae34d68249, built on 2023-07-19 09:09 UTC
host.name=docker1
java.version=1.8.0_371



Server: 192.168.1.102:2181



Zookeeper version: 3.9.0-1674a5e97f43bc38e9bf56b04f83a7ae34d68249, built on 2023-07-19 09:09 UTC
Clients:
/192.168.1.111:40514[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/0.0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x400000002
Mode: leader
Node count: 7
Proposal sizes last/min/max: 48/48/48
Environment:
zookeeper.version=3.9.0-1674a5e97f43bc38e9bf56b04f83a7ae34d68249, built on 2023-07-19 09:09 UTC
host.name=docker2
java.version=1.8.0_371

可以看到Zookeeper集群已经纳入监控 

[root@www ~]# echo stat |nc localhost 2181
Zookeeper version: 3.9.0-1674a5e97f43bc38e9bf56b04f83a7ae34d68249, built on 2023-07-19 09:09 UTC
Clients:
 /0:0:0:0:0:0:0:1:49704[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/0.0/0
Received: 3
Sent: 2
Connections: 1
Outstanding: 0
Zxid: 0x400000002
Mode: leader
Node count: 7
Proposal sizes last/min/max: 48/48/48
 


[root@www conf]# echo stat |nc localhost 2181
Zookeeper version: 3.9.0-1674a5e97f43bc38e9bf56b04f83a7ae34d68249, built on 2023-07-19 09:09 UTC
Clients:
 /0:0:0:0:0:0:0:1:33244[0](queued=0,recved=1,sent=0)
 /192.168.1.111:50992[1](queued=0,recved=58,sent=58)

Latency min/avg/max: 0/1.1207/10
Received: 62
Sent: 61
Connections: 2
Outstanding: 0
Zxid: 0x400000002
Mode: follower
Node count: 7
 


[root@www ~]# echo stat |nc localhost 2181
Zookeeper version: 3.9.0-1674a5e97f43bc38e9bf56b04f83a7ae34d68249, built on 2023-07-19 09:09 UTC
Clients:
 /0:0:0:0:0:0:0:1:33320[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/0.0/0
Received: 3
Sent: 2
Connections: 1
Outstanding: 0
Zxid: 0x400000002
Mode: follower
Node count: 7
 

相关文章:

Centos7安装ZK-UI管理界面安装|Maven|Git|

一: JDK1.8安装 参考: Centos7卸载|安装JDK1.8|Xshell7批量控制多个终端 二&#xff1a;Maven安装 2.1&#xff1a;下载maven安装包 maven 下载地址&#xff1a;https://mirror.bit.edu.cn/apache/maven/maven-3/ [rootwww ~]# mkdir -p /usr/local/maven [rootwww ~]# …...

C语言日常刷题7

文章目录 题目答案与解析1234567 题目 1、如下程序的运行结果是&#xff08; &#xff09; char c[5]{a, b, \0, c, \0}; printf("%s", c)A: ‘a’ ‘b’ B: ab\0c\0 C: ab c D: ab 2、若有定义&#xff1a; int a[2][3]; &#xff0c;以下选项中对 a 数组元素正确…...

037 - 有关时间和日期的函数方法

文档&#xff1a;MySQL :: MySQL 5.7 Reference Manual :: 12.7 Date and Time Functions​​​​​​ 以下为案例&#xff0c;更多内容可查看文档 返回当前日期&#xff1a; CURDATE() 返回当前时间&#xff1a; CURTIME() 返回当前日期和时间&#xff1a; NOW() 返回年份&a…...

(JAVA)树——tree

...

js判断对象是否为空对象的方法总结

js判断对象是否为空对象的方法总结 方法1&#xff1a;JSON.stringify()方法方法2&#xff1a;for in方法方法3&#xff1a;Object.keys()方法方法4&#xff1a;Object.getOwnPropertyNames()方法方法5&#xff1a;jquery 的 isEmptyObject()方法 在面试或者开发过程中&#xff…...

LeetCode1049. 最后一块石头的重量 II

1049. 最后一块石头的重量 II 文章目录 [1049. 最后一块石头的重量 II](https://leetcode.cn/problems/last-stone-weight-ii/)一、题目二、题解方法一&#xff1a;01背包二维数组算法思路具体实现 方法二&#xff1a;01背包一维数组 一、题目 有一堆石头&#xff0c;用整数数…...

universal robot 机械臂 官方基本教程

https://academy.universal-robots.cn/modules/e-Series-core-track/Chinese/module3/story_html5.html?courseId2166&languageChinese 教程1 控制箱内部 包含&#xff1a; 主机板&#xff0c;SD卡&#xff0c;和安全控制板 安全控制板负责所有控制信息&#xff0c;包括…...

网络常见安全漏洞

引言 随着互联网的迅猛发展&#xff0c;网络安全问题日益严重。在网络世界中&#xff0c;各种常见的安全漏洞给人们的通信和数据安全带来了巨大的威胁。本文将介绍一些常见的网络安全漏洞&#xff0c;并提供一些防范措施。 1. XSS&#xff08;跨站脚本攻击&#xff09; 跨站…...

【JS案例】JS实现图片放大镜功能

JS案例图片放大镜 &#x1f31f;效果展示 &#x1f31f;HTML结构 &#x1f31f;CSS样式 &#x1f31f;实现思路 &#x1f31f;具体实现 1.初始化数据图片 2.获取所需DOM元素 3.初始化页面 初始化缩略图 绑定事件 &#x1f31f;完整代码 &#x1f31f;写在最后 &…...

linux centos7 bash中字符串反向输出

给定一个字符串&#xff0c;如何反向(倒序)输出&#xff1f; 字符串反转的方法&#xff1a;a.对各个字符位置进行循环调换&#xff08;从原字符串左边取出放在新字符串的右边&#xff1b;从原字符串右边取出放在新字符串的左边&#xff09;。b.对各个字符由水平排列转为垂直排…...

c++:QT day1 认识与学习

...

git rebase和merge区别

一、概述 merge和rebase 标题上的两个命令&#xff1a;merge和rebase都是用来合并分支的。 这里不解释rebase命令&#xff0c;以及两个命令的原理&#xff0c;详细解释参考这里。 下面的内容主要说的是两者在实际操作中的区别。 1.1 什么是分支 分支就是便于多人在同一项目…...

Vue插槽实现商品列表-编辑渲染

商品列表 文章目录 商品列表核心步骤创建组件 1. MyTag组件详细步骤双击显示&#xff0c;自动聚焦失去焦点&#xff0c;隐藏输入框回显标签信息回车修修改内容&#xff0c;同时隐藏输入框 MyTable组件详细步骤1-动态的设置整个表格的数据 &#xff1a; props2-实现自定义结构-插…...

Vue开发之父子组件

创建父子组建&#xff0c;分三步。一是创建文件&#xff0c;二是引入组建&#xff0c;三是组件间通信。在components目录下新建sub文件夹&#xff0c;用于存放一下可以复用的子组件。比如新建一个SubCon.vue组件 <template><div class"first-app">{{ ms…...

fastadmin think-queue supervisor配置

起因是微信支付回调需要同时做发货处理&#xff0c;但是发货接口不能影响,需要队列进行异步处理1. 1.fastadmin 后台购买queue插件(基于think-queue消息队列) 2.代码 2.1 添加文件&#xff1a;application---->extra--->queue.php 内容&#xff1a;我这里用的数据库做…...

STM32 进不了main 函数

1. 我用的是STM32L151C8T6 的芯片&#xff0c;在github 上找了个别人的例程&#xff0c;拿来当模板改&#xff0c;由于他用的是HSE 外部晶振&#xff0c;我用的是内部晶振HSI&#xff0c;所以需要改系统时钟&#xff0c;改完后debug&#xff0c; 一直进不了main 函数&#xff0…...

不用循环数组,js+html实现贪吃蛇

功能描述&#xff1a;每走10步随机改变一个方方向&#xff0c;当键盘按下方向键 w,s,a,d时&#xff0c;使用键盘方向控制蛇的移动&#xff0c;蛇头每撞到一次自身时改变屏幕颜色&#xff0c;蛇头碰到边界时从另一边回来。 实现思路&#xff1a;用个30大小的数组存放每个结点&a…...

什么是线程安全和线程不安全?

线程安全(Thread Safety)和线程不安全(Thread Unsafety)是与并发编程相关的概念,特别是在多线程环境中使用共享资源时会涉及到这些概念。 线程安全: 当多个线程同时访问共享资源时,如果在没有额外的同步措施的情况下,这些线程仍然能够正确地执行并保持数据的一致性,那…...

VUE笔记(十)Echarts

一、Echarts简介 1、什么是echarts ECharts是一款基个基于 JavaScript 的开源可视化图表库 官网地址&#xff1a;Apache ECharts 国内镜像&#xff1a;ISQQW.COM x ECharts 文档&#xff08;国内同步镜像&#xff09; - 配置项 示例&#xff1a;echarts图表集 2、第一个E…...

FPGA原理与结构——时钟IP核原理学习

一、前言 在之前的文章中&#xff0c;我们介绍了FPGA的时钟结构 FPGA原理与结构——时钟资源https://blog.csdn.net/apple_53311083/article/details/132307564?spm1001.2014.3001.5502 在本文中我们将学习xilinx系列的FPGA所提供的时钟IP核&#xff0c;来帮助我们进一…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...