实战练习之Linux上实现shell脚本自动化编程

news2024/11/16 1:48:24

实验拓扑要求

在这里插入图片描述

主机环境描述

在这里插入图片描述
注意:

  • 172.25.250.101-172.25.250.105 共 5 个 IP 地址由servera.exam.com服务器进行提供。
  • 172.25.250.106 由 serverb.exam.com 服务器进行提供。

需求描述

1. 172.25.250.101 主机上的 Web 服务要求提供 www.exam.com Web站点,该站点在任何路由可达
的主机上被访问,页面内容显示为 "Hello,Welcome to www.exam.com !",并提供
content.exam.com/yum/AppStream和content.exam.com/yum/BaseOS URL 作为网络仓库供所
有主机使用。
2. 172.25.250.102 主机提供基于Chronyd 的 NTP 服务将本主机作为时间服务器,对外提供 NTP 服
务,并设置本服务器为 3 层。
3. 172.25.250.103 主机提供的MySQL 数据库服务,要求使用需求1中提供的仓库进行安装,并将数据
库密码设定为 redhat。创建名称为 bbs 的数据库提供给论坛服务使用。
4. 172.25.250.104 主机提供 NFS 服务,该服务将导出本地的 /bbs 目录作为论坛数据目录,该导出指
定只能论坛所在主机使用,并且开机自动挂载。
5. 172.25.250.105 主机提供 DNS 服务,该服务需要提供对项目中所有主机名的正向和反向解析,并
要求所有服务器的 DNS 配置为该 DNS 服务器。
6. 172.25.250.106 主机提供基于 Discuz 的论坛服务,该论坛服务使用 172.25.250.103 主机提供的数
据库 bbs,使用 172.25.250.104 主机提供的 NFS 作为论坛数据目录,并开机挂载。并使用
172.25.250.101 主机提供的网络仓库,172.25.250.102 主机提供的 NTP 服务,172.25.250.105 主
机提供的 DNS 服务。
7. 所有服务器的防火墙服务和 SELinux 服务必须开启。
8. 所有服务器提供的网络服务必须在系统重启后仍然可以正常提供服务。
9. 根据所有服务的相关代码,编写一键部署shell脚本,最基础的功能为 通过执行该脚本实现所有上面
所有需求,要求脚本必须在 servera.exam.com 主机上运行,并支持多次运行。

解答

环境准备:首先准备两台虚拟机,然后手动将两台虚拟机上的IP都修改为题目要求的,并且在两台虚拟机之间相互直接配置ssh公钥认证实现无密码自动登录。并且将仓库的压缩包传到101主机的根目录下面。以便实现shell脚本的自动化运行。

1、要想实现题目中的网络仓库,就要先配置本地仓库,来下载dns,http进行域名解析,能够在网页中通过这个content.exam.com/yum/AppStream来访问到其文件目录。

#首先先配置本地仓库
#配置本地仓库的函数代码如下
bendi(){
	num=`/usr/bin/ls -l /mnt | grep "total" | cut -d" " -f2`
	if [ $num -eq 0 ];then
		echo 'no mount'
		/usr/bin/mount /dev/sr0 /mnt
		echo 'success mounted'
	else
		echo 'is mounted'
	fi
	/usr/bin/cat>/etc/yum.repos.d/myrepo.repo<<"EOF"
[baseOS]
name=baseOS
baseurl=/mnt/BaseOS
gpgcheck=0
[appstream]
name=appstream
baseurl=/mnt/AppStream
gpgcheck=0
EOF
}

#然后下载httpd,dns服务
xiazai(){

/usr/bin/yum install httpd  bind -y
systemctl start httpd
systemctl start named

systemctl enable httpd
systemctl enable named
}

下载完服务后,就先配置web服务器,能够实现页面访问。并且要在本地hosts上面写主机名解析文件。其代码如下:


#Web服务
web(){
/usr/bin/mkdir /www
/usr/bin/mkdir /www/exam
/usr/bin/mkdir /www/exam/yum
host=`grep -o "172.25.250.101 www.exam.com" /etc/hosts`
if [ $? -eq 1 ];then
	echo "172.25.250.101 www.exam.com" >> /etc/hosts
fi
echo "Hello,Welcome to www.exam.com" > /www/exam/index.html
	/usr/bin/cat>/etc/httpd/conf.d/vhost.conf<<"EOF"
<directory /www>
allowoverride none
require all granted
</directory>
<virtualhost 172.25.250.101:80>
documentroot /www/exam
servername www.exam.com
</virtualhost>
<directory /www/exam/yum>
Options Indexes FollowSymLinks
allowoverride none
require all granted
</directory>
EOF
}

2、配置DNS服务,能够正向反向解析。并且在172.25.250.106上面能够解析成功

#配置dns 
dns(){
/usr/bin/cat>/etc/named.conf<<"EOF"
options {
        listen-on port 53 { 172.25.250.105; };
        directory       "/var/named";
};


zone "exam.com" IN {
        type master;
        file "named.exam";
};

zone "250.25.172.in-addr.arpa" IN {
        type master;
        file "named.fanxiang";
};
EOF
/usr/bin/cat>/var/named/named.exam<<"EOF"
$TTL 1d
@       IN      SOA     @       admin.exam.com. (2024071901
                                                             1
                                                             1
                                                             1
                                                             1)
        IN      NS      ns.exam.com.
        IN      MX      10 mail.exam.com.
ns      IN      A       172.25.250.105
www     IN      A       172.25.250.101
content IN      A       172.25.250.101
ntp     IN      A       172.25.250.102
mysql   IN      A       172.25.250.103
nfs     IN      A       172.25.250.104
dns     IN      A       172.25.250.105
bbs     IN      A       172.25.250.106
EOF
/usr/bin/cat>/var/named/named.fanxiang<<"EOF"
$TTL 1d
@       IN      SOA     @       admin.exam.com. (2024071901
                                                             1
                                                             1
                                                             1
                                                             1)
        IN      NS      ns.exam.com.
        IN      MX      10 mail.exam.com.
105     IN 	PTR     ns  
101     IN 	PTR     content.exam.com.  
101     IN 	PTR     www.exam.com.
102     IN 	PTR     ntp.exam.com. 
103     IN 	PTR     mysql.exam.com.
104     IN 	PTR     nfs.exam.com.
105     IN 	PTR     dns.exam.com.
106     IN 	PTR     bbs.exam.com.
EOF
#其是将106主机的dns改成dns,使其能够进行正反解析
ssh root@172.25.250.106 << 'EOF'
nmcli connection modify ens160 ipv4.dns 172.25.250.105
nmcli connection up ens160
EOF
}
#重启服务
reloa(){
	systemctl restart named
	systemctl restart httpd
}

3、在101和106上分别创建网络仓库,使其能够在网页中访问。

#在101上面配置网络仓库
wangluo(){
#配置网络仓库
umount /dev/sr0
mv /etc/yum.repos.d/myrepo.repo myrepo
mount /dev/sr0 /www/exam/yum
/usr/bin/cat>/etc/yum.repos.d/yum.repo<<"EOF"
[baseOS]
name=baseOS
baseurl=http://content.exam.com/yum/BaseOS
gpgcheck=0
[appstream]
name=appstream
baseurl=http://content.exam.com/yum/AppStream
gpgcheck=0
EOF
}

#在106上创建网络仓库
serverwangluo(){
ssh root@172.25.250.106 << END
cat>/etc/yum.repos.d/yum.repo<< EOF
[baseOS]
name=baseOS
baseurl=http://172.25.250.101/yum/BaseOS
gpgcheck=0
[appstream]
name=appstream
baseurl=http://172.25.250.101/yum/AppStream
gpgcheck=0
EOF
END
}


4、在101上配置NTP服务器。

#时间服务器 NTP
ntp(){
	
local1=`grep -o "local stratum 3" /etc/chrony.conf`
if [ $? -eq 0 ];then
	echo "existed"
else
	echo "local stratum 3" >> /etc/chrony.conf
fi
allow1=`grep -0 "allow 172.25.250.0/24" /etc/chrony.conf`
if [ $? -eq 0 ];then
        echo "existed"
else
	echo "allow 172.25.250.0/24">>/etc/chrony.conf
fi
	systemctl enable chronyd.service
	systemctl restart chronyd.service

	ssh root@172.25.250.106 << 'EOF'
echo "server 172.25.250.102 iburst" >> /etc/chrony.conf
systemctl enable chronyd.service
systemctl restart chronyd.service
exit
EOF
}

5、来配置nfs服务,来共享/bbs的目录文件内容。106实现自动挂载。

nfs(){

	#server
	dnf install nfs-utils -y
	systemctl start nfs-server
  	mkdir /bbs
	chmod 777 /bbs
	echo "/bbs *(rw)" > /etc/exports
	exportfs -r
	firewall-cmd --permanent --add-service=nfs
	firewall-cmd --permanent --add-service=mountd
	firewall-cmd --permanent --add-service=rpc-bind
	firewall-cmd --reload
	systemctl restart nfs-server
	#client
	ssh root@172.25.250.106 << 'EOF'
yum install httpd -y
systemctl restart httpd
dnf install nfs-utils -y
systemctl start nfs-server
yum install autofs -y
systemctl start autofs
systemctl enable autofs
echo "/var/www/html/  /etc/auto.nfs" >> /etc/auto.master
echo "bbs 172.25.250.104:/bbs" >> /etc/auto.nfs
systemctl restart autofs
EOF
}

6、安装MySQL,并初始化密码。并实现两边都能登录。并且来创建数据库bbs来共享。

mysql(){
	rpm1=`rpm -qa | grep mariadb`
	if [ $? -eq 0 ];then
		echo "existed"
	else
		sudo dnf install mariadb-server -y
	fi
	firewall-cmd --add-service=mysql --permanent
	firewall-cmd --reload
	sudo systemctl start mariadb
	sudo systemctl enable mariadb
	MYSQL_ROOT_PASSWORD="redhat"
	sudo mysql_secure_installation <<'EOF'
Y
$MYSQL_ROOT_PASSWORD
$MYSQL_ROOT_PASSWORD
Y
Y
Y
Y
EOF
}
user(){
        sudo mysql -uroot -predhat << 'EOF'
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'redhat' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit
EOF
}
createdatabase(){
	sudo mysql -uroot -predhat << 'EOF'
create database bbs;
exit;
EOF

}

7、配置论坛服务


luntan(){
cp /root/Discuz_X3.5_SC_UTF8_20230520.zip  /bbs
ssh root@172.25.250.106 << 'EOF'
sudo dnf install mariadb-server -y
yum install httpd -y
yum install php* -y
systemctl restart httpd
cd /var/www/html/bbs
unzip Discuz_X3.5_SC_UTF8_20230520.zip 
chmod 777  /var/www/html/bbs/upload/config/ /var/www/html/bbs/upload/data/ /var/www/html/bbs/upload/uc_client/ /var/www/html/bbs/upload/uc_server/  -R
EOF
}

#cp /root/Discuz_X3.5_SC_UTF8_20230520.zip  /var/www/html/bbs
luntanweb(){

ssh root@172.25.250.106 <<"EOF"
cat>/etc/httpd/conf.d/vhost.conf<<END
<directory /var/www/html>
allowoverride none
require all granted
</directory>
<virtualhost 172.25.250.106:80>
documentroot /var/www/html/bbs
servername 172.25.250.106
</virtualhost>
END

EOF
}

8、配置防火墙SELinux服务,

#防火墙SELinux
fire101(){
	systemctl start firewalld
	firewall-cmd --permanent --add-service=http
	firewall-cmd --permanent --add-service=dns
	firewall-cmd --permanent --add-service=ntp
	firewall-cmd --reload
	setenforce 1
	setsebool -P httpd_use_nfs 1
	setsebool -P httpd_can_network_connect_db on
	chcon -t httpd_sys_content_t /www/exam/index.html -R
	systemctl restart httpd
}
fire106(){
ssh root@172.25.250.106 << 'EOF'
systemctl start firewalld
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=dns
firewall-cmd --permanent --add-service=ntp
firewall-cmd --reload
setenforce 1
setsebool -P httpd_use_nfs 1
setsebool -P httpd_can_network_connect_db on
systemctl restart httpd
sudo systemctl start mariadb
sudo systemctl enable mariadb
EOF
}

所有代码

#!bin/bash

#配置ip
ip(){

nmcli connection modify ens160 ipv4.addresses 172.25.250.101/24
nmcli connection modify ens160 ipv4.gateway 172.25.250.2
nmcli connection modify ens160 ipv4.dns 172.25.250.105
nmcli connection modify ens160 ipv4.method manual
nmcli connection modify ens160 connection.autoconnect yes

nmcli connection modify ens160 +ipv4.addresses 172.25.250.102/24
nmcli connection modify ens160 +ipv4.addresses 172.25.250.103/24
nmcli connection modify ens160 +ipv4.addresses 172.25.250.104/24
nmcli connection modify ens160 +ipv4.addresses 172.25.250.105/24
nmcli connection up ens160
}
#配置本地仓库
bendi(){
	num=`/usr/bin/ls -l /mnt | grep "total" | cut -d" " -f2`
	if [ $num -eq 0 ];then
		echo 'no mount'
		/usr/bin/mount /dev/sr0 /mnt
		echo 'success mounted'
	else
		echo 'is mounted'
	fi
	/usr/bin/cat>/etc/yum.repos.d/myrepo.repo<<"EOF"
[baseOS]
name=baseOS
baseurl=/mnt/BaseOS
gpgcheck=0
[appstream]
name=appstream
baseurl=/mnt/AppStream
gpgcheck=0
EOF
}

#下载httpd,dns

xiazai(){

/usr/bin/yum install httpd  bind -y
systemctl start httpd
systemctl start named

systemctl enable httpd
systemctl enable named
}



#Web服务
web(){
	

/usr/bin/mkdir /www
/usr/bin/mkdir /www/exam
/usr/bin/mkdir /www/exam/yum

host=`grep -o "172.25.250.101 www.exam.com" /etc/hosts`
if [ $? -eq 1 ];then
	echo "172.25.250.101 www.exam.com" >> /etc/hosts
fi
echo "Hello,Welcome to www.exam.com" > /www/exam/index.html
	/usr/bin/cat>/etc/httpd/conf.d/vhost.conf<<"EOF"
<directory /www>
allowoverride none
require all granted
</directory>
<virtualhost 172.25.250.101:80>
documentroot /www/exam
servername www.exam.com
</virtualhost>
<directory /www/exam/yum>
Options Indexes FollowSymLinks
allowoverride none
require all granted
</directory>
EOF
}

#防火墙SELinux
fire101(){
	systemctl start firewalld
	firewall-cmd --permanent --add-service=http
	firewall-cmd --permanent --add-service=dns
	firewall-cmd --permanent --add-service=ntp
	firewall-cmd --reload
	setenforce 1
	setsebool -P httpd_use_nfs 1
	setsebool -P httpd_can_network_connect_db on
	chcon -t httpd_sys_content_t /www/exam/index.html -R
	systemctl restart httpd
}


#配置dns 
dns(){
/usr/bin/cat>/etc/named.conf<<"EOF"
options {
        listen-on port 53 { 172.25.250.105; };
        directory       "/var/named";
};


zone "exam.com" IN {
        type master;
        file "named.exam";
};

zone "250.25.172.in-addr.arpa" IN {
        type master;
        file "named.fanxiang";
};
EOF
/usr/bin/cat>/var/named/named.exam<<"EOF"
$TTL 1d
@       IN      SOA     @       admin.exam.com. (2024071901
                                                             1
                                                             1
                                                             1
                                                             1)
        IN      NS      ns.exam.com.
        IN      MX      10 mail.exam.com.
ns      IN      A       172.25.250.105
www     IN      A       172.25.250.101
content IN      A       172.25.250.101
ntp     IN      A       172.25.250.102
mysql   IN      A       172.25.250.103
nfs     IN      A       172.25.250.104
dns     IN      A       172.25.250.105
bbs     IN      A       172.25.250.106
EOF
/usr/bin/cat>/var/named/named.fanxiang<<"EOF"
$TTL 1d
@       IN      SOA     @       admin.exam.com. (2024071901
                                                             1
                                                             1
                                                             1
                                                             1)
        IN      NS      ns.exam.com.
        IN      MX      10 mail.exam.com.
105     IN 	PTR     ns  
101     IN 	PTR     content.exam.com.  
101     IN 	PTR     www.exam.com.
102     IN 	PTR     ntp.exam.com. 
103     IN 	PTR     mysql.exam.com.
104     IN 	PTR     nfs.exam.com.
105     IN 	PTR     dns.exam.com.
106     IN 	PTR     bbs.exam.com.
EOF
ssh root@172.25.250.106 << 'EOF'
nmcli connection modify ens160 ipv4.dns 172.25.250.105
nmcli connection up ens160
EOF
}
#重启服务
reloa(){
	systemctl restart named
	systemctl restart httpd
}
wangluo(){
#配置网络仓库
umount /dev/sr0
mv /etc/yum.repos.d/myrepo.repo myrepo
mount /dev/sr0 /www/exam/yum
/usr/bin/cat>/etc/yum.repos.d/yum.repo<<"EOF"
[baseOS]
name=baseOS
baseurl=http://content.exam.com/yum/BaseOS
gpgcheck=0
[appstream]
name=appstream
baseurl=http://content.exam.com/yum/AppStream
gpgcheck=0
EOF
}
:<<BLOCK
servercangku(){
	ssh root@172.25.250.106 << 'EOF'
/usr/bin/mount /dev/sr0 /mnt
echo "[baseos]" >> /etc/yum.repos.d/myrepo.repo
echo "name=baseOS" >> /etc/yum.repos.d/myrepo.repo
echo "baseurl=/mnt/BaseOS" >> /etc/yum.repos.d/myrepo.repo
echo "gpgcheck=0" >> /etc/yum.repos.d/myrepo.repo
echo "[appstream]" >> /etc/yum.repos.d/myrepo.repo
echo "name=appstream" >> /etc/yum.repos.d/myrepo.repo
echo "baseurl=/mnt/AppStream" >> /etc/yum.repos.d/myrepo.repo
echo "gpgcheck=0" >> /etc/yum.repos.d/myrepo.repo
exit
EOF
}
BLOCK



serverwangluo(){
ssh root@172.25.250.106 << END
cat>/etc/yum.repos.d/yum.repo<< EOF
[baseOS]
name=baseOS
baseurl=http://172.25.250.101/yum/BaseOS
gpgcheck=0
[appstream]
name=appstream
baseurl=http://172.25.250.101/yum/AppStream
gpgcheck=0
EOF
END
}

serverdns(){
ssh root@172.25.250.106 << 'EOF'
/usr/bin/yum install httpd  bind -y
systemctl start httpd
systemctl start named
systemctl enable httpd
systemctl enable named
EOF
}
#时间服务器 NTP
ntp(){
	
local1=`grep -o "local stratum 3" /etc/chrony.conf`
if [ $? -eq 0 ];then
	echo "existed"
else
	echo "local stratum 3" >> /etc/chrony.conf
fi
allow1=`grep -0 "allow 172.25.250.0/24" /etc/chrony.conf`
if [ $? -eq 0 ];then
        echo "existed"
else
	echo "allow 172.25.250.0/24">>/etc/chrony.conf
fi
	systemctl enable chronyd.service
	systemctl restart chronyd.service

	ssh root@172.25.250.106 << 'EOF'
echo "server 172.25.250.102 iburst" >> /etc/chrony.conf
systemctl enable chronyd.service
systemctl restart chronyd.service
exit
EOF
}

nfs(){

	#server
	dnf install nfs-utils -y
	systemctl start nfs-server
  	mkdir /bbs
	chmod 777 /bbs
	echo "/bbs *(rw)" > /etc/exports
	exportfs -r
	firewall-cmd --permanent --add-service=nfs
	firewall-cmd --permanent --add-service=mountd
	firewall-cmd --permanent --add-service=rpc-bind
	firewall-cmd --reload
	systemctl restart nfs-server
	#client
	ssh root@172.25.250.106 << 'EOF'
yum install httpd -y
systemctl restart httpd
dnf install nfs-utils -y
systemctl start nfs-server
yum install autofs -y
systemctl start autofs
systemctl enable autofs
echo "/var/www/html/  /etc/auto.nfs" >> /etc/auto.master
echo "bbs 172.25.250.104:/bbs" >> /etc/auto.nfs
systemctl restart autofs
EOF
}

mysql(){
	rpm1=`rpm -qa | grep mariadb`
	if [ $? -eq 0 ];then
		echo "existed"
	else
		sudo dnf install mariadb-server -y
	fi
	firewall-cmd --add-service=mysql --permanent
	firewall-cmd --reload
	sudo systemctl start mariadb
	sudo systemctl enable mariadb
	MYSQL_ROOT_PASSWORD="redhat"
	sudo mysql_secure_installation <<'EOF'
Y
$MYSQL_ROOT_PASSWORD
$MYSQL_ROOT_PASSWORD
Y
Y
Y
Y
EOF
}

createdatabase(){
	sudo mysql -uroot -predhat << 'EOF'
create database bbs;
exit;
EOF

}
user(){
        sudo mysql -uroot -predhat << 'EOF'
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'redhat' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit
EOF
}


luntan(){
cp /root/Discuz_X3.5_SC_UTF8_20230520.zip  /bbs
ssh root@172.25.250.106 << 'EOF'
sudo dnf install mariadb-server -y
yum install httpd -y
yum install php* -y
systemctl restart httpd
cd /var/www/html/bbs
unzip Discuz_X3.5_SC_UTF8_20230520.zip 
chmod 777  /var/www/html/bbs/upload/config/ /var/www/html/bbs/upload/data/ /var/www/html/bbs/upload/uc_client/ /var/www/html/bbs/upload/uc_server/  -R
EOF
}

#cp /root/Discuz_X3.5_SC_UTF8_20230520.zip  /var/www/html/bbs
luntanweb(){

ssh root@172.25.250.106 <<"EOF"
cat>/etc/httpd/conf.d/vhost.conf<<END
<directory /var/www/html>
allowoverride none
require all granted
</directory>
<virtualhost 172.25.250.106:80>
documentroot /var/www/html/bbs
servername 172.25.250.106
</virtualhost>
END

EOF
}
fire106(){
ssh root@172.25.250.106 << 'EOF'
systemctl start firewalld
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=dns
firewall-cmd --permanent --add-service=ntp
firewall-cmd --reload
setenforce 1
setsebool -P httpd_use_nfs 1
setsebool -P httpd_can_network_connect_db on
systemctl restart httpd
sudo systemctl start mariadb
sudo systemctl enable mariadb
EOF
}
main(){
#ip
bendi
xiazai
web
fire101
dns
reloa
wangluo
serverwangluo
serverdns
ntp
nfs
mysql
createdatabase
user
luntan
luntanweb
fire106
}
main



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

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

相关文章

模拟ADG主库归档文件丢失,备库出现gap(增量备份解决)

文章目录 一、说明二、环境信息2.1.主备库环境信息2.2.检查主备是否同步正常 三、模拟日志断档3.1.模拟主库归档文件丢失3.2 查看主库状态出现GAP 四、RMAN增量备份恢复备库同步4.1 RMAN增量恢复备库4.2 开启备库redo同步4.3 主备库验证同步 一、说明 模拟Oracle主库归档文件丢…

C++图书管理系统

目录 实现功能 用户管理 图书管理 借阅与归还 未归还图书 部分效果图 结构体 Book 结构体 User 结构体 源代码 编译时在连接器命令行加入 完整代码 实现功能 用户管理 添加用户&#xff1a;输入用户ID、用户名和密码…

简单的git分支mergepush权限设定

简单的git分支merge&push权限设定 1. 需求 公司的分支很多&#xff0c;主要的有master分支&#xff0c;很多的业务需求分支&#xff0c;开发测试分支(uat,uat2,sit,sit2)&#xff0c;这些分支当前是谁都可以进行提交&#xff0c;但是如果在分支上直接修改&#xff0c;或者…

3.1、数据结构-线性表

数据结构 数据结构线性结构线性表顺序存储和链式存储区别单链表的插入和删除练习题 栈和队列练习题 串&#xff08;了解&#xff09; 数据结构 数据结构该章节非常重要&#xff0c;上午每年都会考10-12分选择题下午一个大题 什么叫数据结构&#xff1f;我们首先来理解一下什…

如何查找下载安装安卓APK历史版本?

在安卓设备上&#xff0c;有时候我们可能希望安装某个软件的旧版本&#xff0c;可能是因为新版本不兼容、功能改变不符合需求或是其他原因。 安卓系统并不像iOS那样提供直观的历史版本下载界面。 不过&#xff0c;通过一些第三方市场和网站&#xff0c;我们仍然可以找到并安装…

通信原理实验六:实验测验

实验六 实验测验 一&#xff1a;测验内容和要求 测试需要完成以下几个步骤&#xff1a; 配置好以下网络图&#xff1b;占总分10%&#xff08;缺少一个扣一分&#xff09;根据下面图配置好对应的IP和网关以及路由等相关配置&#xff0c;保证设备之间连通正常&#xff1b;占总…

数据结构经典测试题4

1. #include <stdio.h> int main() { char *str[3] {"stra", "strb", "strc"}; char *p str[0]; int i 0; while(i < 3) { printf("%s ",p); i; } return 0; }上述代码运行结果是什么&#xff1f; A: stra strb strc B: s…

前端面试宝典【Javascript篇】【2】

欢迎来到《前端面试宝典》&#xff0c;这里是你通往互联网大厂的专属通道&#xff0c;专为渴望在前端领域大放异彩的你量身定制。通过本专栏的学习&#xff0c;无论是一线大厂还是初创企业的面试&#xff0c;都能自信满满地展现你的实力。 核心特色&#xff1a; 独家实战案例…

Flink之重启策略

目录 1、固定延迟重启策略 2、失败率重启策略 3、不重启策略 在设置完 CheckPoint() 检查点机制后&#xff0c;不设置重启策略的话&#xff0c;&#xff0c;可以无限重启程序&#xff0c;那么设置的检查点机制也就没有什么意义了。因此&#xff0c;在生产实践中&#xff0c;…

笔记本检测工具 | 爱回收笔记本质检系统 v1.9.6

软件简介 爱回收笔记本质检系统是一款专为笔记本电脑硬件检测而设计的软件。它以其快速的检测速度、简便的操作流程和直观的检测结果&#xff0c;为用户提供了一种高效、易懂的硬件检测解决方案。 这款软件不仅适用于对电脑硬件有一定了解的用户&#xff0c;也特别适合对硬件…

Sentinel隔离、降级、授权规则详解

文章目录 Feign整合Sentinel线程隔离熔断降级授权规则自定义异常结果 上一期教程讲解了 Sentinel 的限流规则&#xff1a; Sentinel限流规则&#xff0c;这一期主要讲述 Sentinel 的 隔离、降级和授权规则 虽然限流可以尽量避免因高并发而引起的服务故障&#xff0c;但服务还…

【玩转C语言】第五讲--->数组-->一维和多维深度理解

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 引言&#xff1a; 大家好&#xff0c;我是坊钰&#xff0c;为了让大家深入了解C语言&#xff0c;我开创了【玩转C语言系列】&#xff0c;将为大家介绍C语言相关知识…

你还在为文件翻译烦恼吗?试试这四款神器,轻松搞定一切!

现如今的信息传播速度不断得加快&#xff0c;无论是中外交流还是学习&#xff0c;也越来越多小语种出现在我们的工作和生活当中来了&#xff0c;其中不伐一些文件批量的形式&#xff0c;所以今天就具体来探讨一下&#xff0c;关于文件翻译的四款辅助工具&#xff1a; 一、福昕在…

openGauss触发器详解

openGauss 是一款开源关系型数据库管理系统&#xff0c;广泛应用于企业级应用中。随着数据量的增长和业务逻辑的复杂化&#xff0c;数据库管理和操作的自动化需求越来越高。触发器&#xff08;Triggers&#xff09;作为数据库中重要的编程工具&#xff0c;能够极大地简化复杂操…

广州机房服务器搬迁布线方案

友力科技&#xff08;广州&#xff09;有限公司&#xff0c;专业从事数据中心机房建设、改造和搬迁工程。友力科技&#xff08;广州&#xff09;有限公司提供的服务内容包括但不限于&#xff1a;原数据中心设备下架准备、沿途运输、新数据中心上架运行、数据迁移等。 友力科技…

前端面试细节重难点(十二)(已工作|做分享)

1、如何区分在react、vue和js中的是否传递e参数&#xff1f;事件对象e都要通过event作为实参显示传递形参才可接收到吗&#xff1f; 答&#xff1a;&#xff08;1&#xff09;在原生JavaScript中&#xff1a;事件对象e需要通过函数参数显式传递。 &#xff08;2&#xff09;在R…

观测云加入华为云「新加坡云联盟」,引领亚太创新潮流

7月19日&#xff0c;「新加坡云联盟」在华为云新加坡峰会2024上正式宣告成立。这一创新的联合不仅是新加坡乃至整个亚太地区云服务领域的重要里程碑&#xff0c;更是全球数字化转型进程中的关键一步。 观测云作为联盟的首批成员之一&#xff0c;在成立仪式上精彩亮相&#xff0…

探索能源管理体系认证的意义与实施

能源管理体系&#xff08;Energy Management System, EnMS&#xff09;是一个综合性的框架&#xff0c;旨在帮助企业系统地管理能源使用&#xff0c;提升能源效率&#xff0c;实现可持续发展的目标。这个体系包括了企业的组织结构、职责分配、惯例、程序、过程以及资源管理。通…

Linux中为qt添加opencv

一. 安装OpenCV库&#xff1a; 打开终端&#xff0c;输入以下命令安装OpenCV&#xff1a; sudo apt-get update sudo apt-get install libopencv-dev二. 配置Qt项目 在Qt Creator中打开项目&#xff0c;然后编辑.pro文件&#xff0c;添加以下内容&#xff1a; INCLUDEPATH …

2024年必备的9大CRM工具选购指南

本文介绍的工具有&#xff1a;纷享销客、Zoho CRM、八百客、红圈通、简道云、简信CRM、Salesforce、HubSpot CRM、Apptivo。 在选择合适的CRM系统时&#xff0c;许多企业面临着功能繁多、选择困难的痛点。对于中小企业来说&#xff0c;找到一个既能提高客户关系管理效率&#x…