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

实验拓扑要求

在这里插入图片描述

主机环境描述

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

  • 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 ];thenecho 'no mount'/usr/bin/mount /dev/sr0 /mntecho 'success mounted'elseecho '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 namedsystemctl 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 ];thenecho "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. (20240719011111)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. (20240719011111)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 namedsystemctl 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 ];thenecho "existed"
elseecho "local stratum 3" >> /etc/chrony.conf
fi
allow1=`grep -0 "allow 172.25.250.0/24" /etc/chrony.conf`
if [ $? -eq 0 ];thenecho "existed"
elseecho "allow 172.25.250.0/24">>/etc/chrony.conf
fisystemctl enable chronyd.servicesystemctl restart chronyd.servicessh 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(){#serverdnf install nfs-utils -ysystemctl start nfs-servermkdir /bbschmod 777 /bbsecho "/bbs *(rw)" > /etc/exportsexportfs -rfirewall-cmd --permanent --add-service=nfsfirewall-cmd --permanent --add-service=mountdfirewall-cmd --permanent --add-service=rpc-bindfirewall-cmd --reloadsystemctl restart nfs-server#clientssh 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 ];thenecho "existed"elsesudo dnf install mariadb-server -yfifirewall-cmd --add-service=mysql --permanentfirewall-cmd --reloadsudo systemctl start mariadbsudo systemctl enable mariadbMYSQL_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>
ENDEOF
}

8、配置防火墙SELinux服务,

#防火墙SELinux
fire101(){systemctl start firewalldfirewall-cmd --permanent --add-service=httpfirewall-cmd --permanent --add-service=dnsfirewall-cmd --permanent --add-service=ntpfirewall-cmd --reloadsetenforce 1setsebool -P httpd_use_nfs 1setsebool -P httpd_can_network_connect_db onchcon -t httpd_sys_content_t /www/exam/index.html -Rsystemctl 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 yesnmcli 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 ];thenecho 'no mount'/usr/bin/mount /dev/sr0 /mntecho 'success mounted'elseecho '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,dnsxiazai(){/usr/bin/yum install httpd  bind -y
systemctl start httpd
systemctl start namedsystemctl enable httpd
systemctl enable named
}#Web服务
web(){/usr/bin/mkdir /www
/usr/bin/mkdir /www/exam
/usr/bin/mkdir /www/exam/yumhost=`grep -o "172.25.250.101 www.exam.com" /etc/hosts`
if [ $? -eq 1 ];thenecho "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 firewalldfirewall-cmd --permanent --add-service=httpfirewall-cmd --permanent --add-service=dnsfirewall-cmd --permanent --add-service=ntpfirewall-cmd --reloadsetenforce 1setsebool -P httpd_use_nfs 1setsebool -P httpd_can_network_connect_db onchcon -t httpd_sys_content_t /www/exam/index.html -Rsystemctl 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. (20240719011111)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. (20240719011111)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 namedsystemctl 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
}
BLOCKserverwangluo(){
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 ];thenecho "existed"
elseecho "local stratum 3" >> /etc/chrony.conf
fi
allow1=`grep -0 "allow 172.25.250.0/24" /etc/chrony.conf`
if [ $? -eq 0 ];thenecho "existed"
elseecho "allow 172.25.250.0/24">>/etc/chrony.conf
fisystemctl enable chronyd.servicesystemctl restart chronyd.servicessh 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(){#serverdnf install nfs-utils -ysystemctl start nfs-servermkdir /bbschmod 777 /bbsecho "/bbs *(rw)" > /etc/exportsexportfs -rfirewall-cmd --permanent --add-service=nfsfirewall-cmd --permanent --add-service=mountdfirewall-cmd --permanent --add-service=rpc-bindfirewall-cmd --reloadsystemctl restart nfs-server#clientssh 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 ];thenecho "existed"elsesudo dnf install mariadb-server -yfifirewall-cmd --add-service=mysql --permanentfirewall-cmd --reloadsudo systemctl start mariadbsudo systemctl enable mariadbMYSQL_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>
ENDEOF
}
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.mzph.cn/pingmian/49880.shtml

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

相关文章

Kafka系列之如何提高消费者消费速度

前言 在实际开发过程中&#xff0c;如果使用Kafka处理超大数据量(千万级、亿级)的场景&#xff0c;Kafka消费者的消费速度可能决定系统性能瓶颈。 实现方案 为了提高消费者的消费速度&#xff0c;我们可以采取以下措施&#xff1a; 将主题的分区数量增大&#xff0c;如 20&…

A Comprehensive Study of Knowledge Editing for Large Language Models

大型语言模型&#xff08;LLMs&#xff09;在理解和生成与人类交流密切相关的文本方面表现出了非凡的能力。然而&#xff0c;一个主要的限制在于训练期间的大量计算需求&#xff0c;这是由于它们的广泛参数化而产生的。世界的动态性质进一步加剧了这一挑战&#xff0c;需要经常…

10 ES6的模板字符串

ES6模板字符串&#xff08;Template Literals&#xff09;是一种新的字符串表示方式&#xff0c;它提供了一种更为强大和灵活的方式来构建字符串。以下是ES6模板字符串的详细介绍&#xff1a; 基本语法 模板字符串使用反引号&#xff08;&#xff09;包围&#xff0c;而不是传…

Unity UGUI 之Text 控件

本文仅作学习笔记与交流&#xff0c;不作任何商业用途 本文包括但不限于unity官方手册&#xff0c;唐老狮&#xff0c;麦扣教程知识&#xff0c;引用会标记&#xff0c;如有不足还请斧正 1.Text是什么 UI里面写文本的&#xff08;注意是legacy Text&#xff0c;而不是TextmeshP…

leetcode-136. 只出现一次的数字

题目描述 给你一个 非空 整数数组 nums &#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题&#xff0c;且该算法只使用常量额外空间 示例 1 &#xff1a; 输入&…

搞懂Java继承,这样写代码轻松又高效!

大家好&#xff0c;我是小欧&#xff01; 今天我们来聊聊Java中的一个重要概念——继承。初学者常常觉得继承复杂&#xff0c;但掌握了它之后&#xff0c;代码写起来会更轻松高效。接下来&#xff0c;我会用大白话、简单易懂的例子&#xff0c;帮你彻底搞懂Java继承。 什么是继…

前端网页打开PC端本地的应用程序实现方案

最近开发有一个需求&#xff0c;网页端有个入口需要跳转三维大屏&#xff0c;而这个大屏是一个exe应用程序。产品需要点击这个入口&#xff0c;并打开这个应用程序。这个就类似于百度网盘网页跳转到PC端应用程序中。 这里我们采用添加自定义协议的方式打开该应用程序。一开始可…

Spring 系列

SpringBoot 实体类&#xff08;Entity&#xff09;层 实体类&#xff08;Entity&#xff09;通常属于模型层&#xff08;Model Layer&#xff09;或领域层&#xff08;Domain Layer&#xff09;。它们代表应用程序中的核心业务数据结构&#xff0c;与数据库表结构紧密对应。在…

springboot项目从jdk8升级为jdk17过程记录

背景&#xff1a;公司有升级项目jdk的规划&#xff0c;计划从jdk8升级到jdk11 开始 首先配置本地的java_home 参考文档&#xff1a;Mac环境下切换JDK版本及不同的maven-CSDN博客 将pom.xml中jdk1.8相关的版本全部改为jdk17&#xff0c;主要是maven编译插件之类的&#xff0c…

mysql定时备份

为什么写这篇文章 最近项目里面需要定时备份mysql的数据&#xff0c;网上找了下&#xff0c;找到了一些比较好的解决方案。但是发现有几个地方与自己不匹配&#xff0c;我期望有如下 备份过程不能锁表&#xff0c;网上很多都是会锁表备份定时任务无法执行&#xff0c;但是手动…

【如何在Jenkins的从节点切换NPM镜像源查看和切换】

【问题】 Jenkins打包时&#xff0c;前端npm构建时很慢&#xff0c;所有需要更换镜像源 【自查】 找到Jenkins从节点上的nodejs安装的路径&#xff0c;进入bin目录 执行./npm -v查看是不能正常查看&#xff0c; [rootlocalhost bin]# ./npm -v /usr/bin/env: ‘node’: No su…

redis 基础命令

1.数据库命令 select 库名&#xff1b;切换库 flushdb 清空库 flushall 清空所有库 redis支持的数据类型有很多&#xff0c;使用最频繁的有String 字符串类型&#xff0c;List队列&#xff0c;Hash&#xff0c;Zset有序集合&#xff0c;Set集合。 2.字符串类型命令 表示k…

【Python机器学习】k-近邻算法简单实践——电影分类

k-近邻算法&#xff08;KNN&#xff09;的工作原理是&#xff1a;存在一个样本数据集合&#xff0c;也被称为训练样本集&#xff0c;并且样本集中每个数据都存在标签&#xff0c;即我们知道样本集中每一数据与所属分类的对应关系&#xff0c;输入没有标签的数据后&#xff0c;将…

解决Java模块系统下的InaccessibleObjectException

前言 随着Java平台的演进&#xff0c;模块系统&#xff08;Project Jigsaw&#xff09;的引入为Java生态系统带来了更高级别的封装性和安全性。然而&#xff0c;这一进步也带来了新的挑战&#xff0c;特别是在处理反射和依赖于内部类实现的场景中。本文旨在深入解析java.lang.…

如何在Linux上使用Ansible自动化部署

Ansible是一个开源的自动化工具&#xff0c;可以帮助开发人员和系统管理员对大规模的服务器进行自动化部署和管理。它使用SSH协议来在远程服务器上执行任务&#xff0c;并通过模块化的方式提供了丰富的功能&#xff0c;可以轻松地管理服务器配置、软件部署和应用程序运行。 在…

Flink之重启策略

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

android手势监听

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 未经允许不得转载 目录 一、导读二、概览三、使用四、 如何实…

昇思25天学习打卡营第17天 | CycleGAN图像风格迁移互换

通过深入学习CycleGAN模型&#xff0c;我对无监督图像到图像的转换技术有了更深的理解。CycleGAN不仅能在没有成对训练样本的情况下实现域之间的转换&#xff0c;而且在保持内容结构的同时成功转换图像风格&#xff0c;这在许多应用中都非常有用&#xff0c;如艺术风格转换、季…

面向RDF的三元组数据库

文章目录 开源RDF三元组数据库RDF4J开源RDF三元组数据库RDF-3X开源RDF三元组数据库gStore商业RDF三元组数据库Virtuoso商业RDF三元组数据库AllegroGraph商业RDF三元组数据库GraphDB商业RDF三元组数据库Blazegraph商业RDF三元组数据库Stardog由于RDF是W3C推荐的表示语义网上关联…

VAE、GAN与Transformer核心公式解析

VAE、GAN与Transformer核心公式解析 VAE、GAN与Transformer&#xff1a;三大深度学习模型的异同解析 【表格】VAE、GAN与Transformer的对比分析 序号对比维度VAE&#xff08;变分自编码器&#xff09;GAN&#xff08;生成对抗网络&#xff09;Transformer&#xff08;变换器&…