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

CentOS8.5.2111(7)完整的Apache综合实验

一、实验目标

1.掌握Linux系统中Apache服务器的安装与配置;

2.掌握个人主页、虚拟目录、基于用户和主机的访问控制及虚拟主机的实现方法。

二、实验要求

练习使用linux系统下WEB服务器的配置方法。

三、实验背景

重庆工程学院为筹备“重庆工程大学”特申请了cqie顶级域名,并将为每个员工开通个人网页服务,为教师和学生间建立沟通的平台,域名为www.姓名拼音字头.cqie,以巫正中为例,域名为www.wzz.cqie,网络拓扑图如下:

图7- 1

        

每个人的个人主页要实现如下功能:

         (1)网页文件上传完成后,立即发布,URL为http://www.wzz.cqie/~用户名;

         (2)在web服务器中建立一个名为private的虚拟目录,其对应的物理路径是/data/private。并配置Web服务器对虚拟目录启用用户认证,只允许yun90用户访问。

         (3)在web服务器中建立一个名为test的虚拟目录,其对应的物理路径是/dir1/test,并配置web服务器仅允许来自网络wzz.cqie域和192.168.100.0/24网段的客户机访问该虚拟目录。

         (4)使用192.168.100.172和192.168.100.173两个IP地址,创建基于IP地址的虚拟主机。其中192.168.100.172的虚拟主机对应的主目录为/var/www/ip2,192.168.100.173的虚拟主机对应的主目录为/var/www/ip3。

         (5)创建基于www1.wzz.cqie和www2.wzz.cqie两个虚拟域名的虚拟主机,域名为www1.wzz.cqie虚拟主机对应的目录为/var/www/wzz1,www2.wzz.cqie虚拟主机对应的目录为/var/www/wzz2。

         (6)要求网站目录要部署在nfs存储服务器提供的存储空间上。

四、实验原理/流程

   实验先决条件:DNS服务器、WEB服务器、NFS服务器连接客户端四台虚拟机内网(192.168.100.0/24)连通,并通过NAT与互联网连接。

图7- 2

回顾步骤1:nfs服务器准备网络存储

0.1.1 在nfs存储服务器上添加磁盘

图7- 3

图7- 4

重启系统reboot,查看

[root@nfs ~]# lsblk

……

sdb           8:16   0  1G  0 disk

sr0          11:0    1 1024M  0 rom

0.1.2 安装工具

//nfs服务器端

#yum install -y mdadm nfs-utils.x86_64 rpcbind.x86_64 net-tools

0.1.3 分区、格式化并挂载

[root@nfs ~]# fdisk /dev/sdb2

……

命令(输入 m 获取帮助)n

分区类型

   p   主分区 (0个主分区,0个扩展分区,4空闲)

   e   扩展分区 (逻辑分区容器)

选择 (默认 p)

将使用默认回应 p

分区号 (1-4, 默认  1):

第一个扇区 (2048-209715199, 默认 2048):

上个扇区,+sectors +size{K,M,G,T,P} (2048-209715199, 默认 209715199): +1G

……

[root@nfs ~]# lsblk

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

sda           8:0    0   99G  0 disk

sda1        8:1    0    1G  0 part /boot

└─sda2        8:2    0   98G  0 part

  cl-root 253:0    0 61.2G  0 lvm  /

  cl-swap 253:1    0  6.9G  0 lvm  [SWAP]

  └─cl-home 253:2    0 29.9G  0 lvm  /home

sdb           8:16   0  100G  0 disk

└─sdb2        8:17   0   1G  0 part

sr0          11:0    1 1024M  0 rom

格式化

[root@nfs ~]# mkfs.xfs /dev/sdb1

……

永久挂载(先创建/mnt/sdb2目录)

[root@nfs ~]# vi /etc/fstab

//最后一行添加

/dev/sdb2               /mnt/sdb2                    xfs     defaults        0 0

安装并查看

[root@nfs ~]# mount -a

[root@nfs ~]# df -Th

……

/dev/sdb1           xfs        40G  318M   40G    1% /mnt

开机启动nfs/rpcbind服务

[root@nfs ~]# systemctl enable nfs-server.service

……

[root@nfs ~]# systemctl enable rpcbind

0.1.4 NFS存储服务器共享存储空间

[root@nfs ~]# systemctl enable nfs-server.service

[root@nfs ~]# systemctl enable rpcbind

[root@nfs ~]# vi /etc/exports

/mnt/sdb2 192.168.100.0/24(rw,sync,no_root_squash)         //网络共享出去

[root@nfs ~]# systemctl start nfs-server.service

[root@nfs ~]# systemctl start rpcbind

查看

[root@nfs ~]# netstat -antp| grep rpc

0.1.5 关闭防火墙并查看共享网络

[root@nfs ~]# systemctl stop firewalld.service

[root@nfs ~]# setenforce 0

[root@nfs ~]# showmount -e

Export list for nfs:

/mnt/sdb2 192.168.100.0/24

0.1.5安装应用以验证

[root@www ~]# yum -y install httpd

[root@www ~]# yum install -y nfs-utils.x86_64 net-tools

0.1.6 (web服务器)客户端上挂载共享卷(如果没有/var/www/html就自行创建)

临时挂载

[root@www ~]# mount 192.168.100.69:/mnt/sdb2 /var/www/html

[root@www ~]# df -Th

文件系统            类型      容量  已用  可用 已用% 挂载点

……

192.168.100.69:/mnt/sdb2 nfs4       40G  318M   40G    1% /var/www/html

永久挂载

[root@www ~]# vi /etc/fstab

……

192.168.100.69:/mnt/sdb2     /var/www/html           nfs     defaults,_netdev 0 0

挂载并查看

[root@nfs ~]# mount -a

[root@www ~]# df -Th

……

/dev/sdb2           nfs        1G  39M   909M    1% /mnt

回顾步骤2:DNS服务器准备

0.2.1 在DNS服务器上安装工具

yum install -y bind bind-utils dnsmasq

0.2.2 DNS初始配置

一)修改全局配置文件/etc/named.conf

说明:养成良好的习惯,在修改任何配置文件前,先进行备份,然后再修改

[root@DNS ~]# cp /etc/named.conf  /etc/named.conf.bak

[root@DNS ~]# vi /etc/named.conf

a. 将“BIND侦听的DNS查询请求本机IP地址127.0.0.1修改为任一主机any,端口53不变指定接收DNS查询请求的客户端也修改为任一any:如下所示:

……

options {

        listen-on port 53 { any; };

        listen-on-v6 port 53 { ::1; };

        directory       "/var/named";

        dump-file       "/var/named/data/cache_dump.db";

        statistics-file "/var/named/data/named_stats.txt";

        memstatistics-file "/var/named/data/named_mem_stats.txt";

        secroots-file   "/var/named/data/named.secroots";

        recursing-file  "/var/named/data/named.recursing";

        allow-query     { any; };

……

b. 继续修改dnssec-validation no;(设置为yes则需关闭 SElinux(linux安全增强特性),改为no可以忽略SELinux影响。)

……

recursion yes;

        dnssec-enable yes;

        dnssec-validation no;

……

c. 根区域文件保持不变(13个根域服务不能动,根域文件名为named.ca)

zone "." IN {

        type hint;

        file "named.ca";

};

d. 将主配置文件目录改成/etc/named.zone,原文件/etc/named.rfc1912.zones。最后保存退出。

二)修改主配置文件 (用于指定正向、反向的区域名等信息)

a.将/etc/named.rfc1912.zones复制为全局配置文件中指定的主配置文件/etc/named.zones)

[root@DNS ~]# cp -p /etc/named.rfc1912.zones /etc/named.zones

说明:-p 参数是复制是保留原文件的属性,拥有者及所属的组不变。

b.修改主配置文件vi /etc/named.zones,在最后编辑增加以下内容,最后保存退出。

……

zone "wzz.cqie" IN {

        type master;

        file "wzz.cqie.zone";

        allow-update { none; };

};

zone "100.168.192.in-addr.arpa" IN {

        type master;

        file "100.168.192.zone";

        allow-update { none; };

};

三)修改正、反向解析区域申明文件

a.进入区域配置文件目录,并查看该目录下的文件,包含根域文件named.ca

b.复制named.localhost 为正向解析区域文件wzz.cqie.zone

养成良好的习惯:不要在样板上直接修改。

[root@DNS ~]# cd /var/named

[root@DNS ~ named]#cp -p named.localhost wzz.cqie.zone

c.编辑正向区域文件wzz.cqie.zone

$TTL 1D

@       IN SOA  @ root.wzz.cqie. (

                                        0       ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum

@       IN      NS              dns.wzz.cqie.

@       IN      MX      10      mail.wzz.cqie.

dns             A               192.168.100.66

……

ftp             A               192.168.100.68

nfs             A               192.168.100.69

samba           A               192.168.100.70

www             A               192.168.100.71

web             CNAME           www.wzz.cqie

mail            A               192.168.100.72

……

d. 复制named.loopback 为反向解析区域文件100.168.192.zone

e. 编辑反向区域文件100.168.192.zone

[root@DNS  named]# cp -p named.loopback 100.168.192.zone

[root@DNS named]# vi 100.168.192.zone

$TTL 1D

@       IN SOA  @ root.wzz.cqie. (

                                        0       ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum

@       IN      NS              dns.wzz.cqie.

@       IN      MX      10      mail.wzz.cqie.

66              PTR             dns.wzz.cqie.

……

68              PTR             ftp.wzz.cqie.

69              PTR             nfs.wzz.cqie.

70              PTR             samba.wzz.cqie.

71              PTR             www.wzz.cqie.

72              PTR             mail.wzz.cqie.

……

 四)配置防火墙,允许DNS服务通过,重新加载防火墙(如果firewall开启)

[root@DNS ~]# firewall-cmd --permanent --add-service=dns

success

[root@DNS ~]# firewall-cmd --reload

success

五)启动DNS服务,系统启动自动加载DNS服务

[root@DNS ~]# systemctl start named

[root@DNS ~]# systemctl enable named

六)验证(此处验证www、nfs、dns三台主机域名)

[root@www www]# ping www.wzz.cqie -c 1

PING www.wzz.cqie (192.168.100.71) 56(84) bytes of data.

64 bytes from www.wzz.cqie (192.168.100.71): icmp_seq=1 ttl=64 time=0.025 ms

--- www.wzz.cqie ping statistics ---

1 packets transmitted, 1 received, 0% packet loss, time 0ms

rtt min/avg/max/mdev = 0.025/0.025/0.025/0.000 ms

[root@www www]# ping dns.wzz.cqie -c 1

PING dns.wzz.cqie (192.168.100.66) 56(84) bytes of data.

64 bytes from dns.wzz.cqie (192.168.100.66): icmp_seq=1 ttl=64 time=0.270 ms

--- dns.wzz.cqie ping statistics ---

1 packets transmitted, 1 received, 0% packet loss, time 0ms

rtt min/avg/max/mdev = 0.270/0.270/0.270/0.000 ms

[root@www www]# ping nfs.wzz.cqie -c 1

PING nfs.wzz.cqie (192.168.100.69) 56(84) bytes of data.

64 bytes from nfs.wzz.cqie (192.168.100.69): icmp_seq=1 ttl=64 time=0.252 ms

--- nfs.wzz.cqie ping statistics ---

1 packets transmitted, 1 received, 0% packet loss, time 0ms

rtt min/avg/max/mdev = 0.252/0.252/0.252/0.000 ms

步骤1:给web服务器内网卡(我的机器是ens37)再添加两个内网(192.168.100.0/24)IP

[root@www www]# ip addr add 192.168.100.172/24 dev ens37

[root@www www]# ip addr add 192.168.100.173/24 dev ens37

[root@www www]# ip a

……

4: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

    link/ether 00:50:56:37:98:a7 brd ff:ff:ff:ff:ff:ff

    inet 192.168.100.71/24 brd 192.168.100.255 scope global noprefixroute ens37

       valid_lft forever preferred_lft forever

    inet 192.168.100.172/24 scope global secondary ens37

       valid_lft forever preferred_lft forever

    inet 192.168.100.173/24 scope global secondary ens37

       valid_lft forever preferred_lft forever

    inet6 fe80::250:56ff:fe37:98a7/64 scope link noprefixroute

       valid_lft forever preferred_lft forever

……

步骤2:为了满足功能(5),编辑正向区域文件cd /var/named,将www1和www2添加到

$TTL 1D

@       IN SOA  @ root.wzz.cqie. (

                                        0       ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum

@       IN      NS              dns.wzz.cqie.

@       IN      MX      10      mail.wzz.cqie.

dns             A               192.168.100.66

dns1            A               192.168.100.67

ftp             A               192.168.100.68

nfs             A               192.168.100.69

samba           A               192.168.100.70

www             A               192.168.100.71

www1            A               192.168.100.172

www2            A               192.168.100.173

web             CNAME           www.wzz.cqie

mail            A               192.168.100.72

squid           A               192.168.100.73

重启named服务

[]#systemctl restart named

测试

[root@DNS named]# ping www1.wzz.cqie -c 1

PING www1.wzz.cqie (192.168.100.172) 56(84) bytes of data.

64 bytes from 192.168.100.172 (192.168.100.172): icmp_seq=1 ttl=64 time=0.443 ms

--- www1.wzz.cqie ping statistics ---

1 packets transmitted, 1 received, 0% packet loss, time 0ms

rtt min/avg/max/mdev = 0.443/0.443/0.443/0.000 ms

[root@DNS named]# ping www2.wzz.cqie -c 1

PING www2.wzz.cqie (192.168.100.173) 56(84) bytes of data.

64 bytes from 192.168.100.173 (192.168.100.173): icmp_seq=1 ttl=64 time=0.586 ms

--- www2.wzz.cqie ping statistics ---

1 packets transmitted, 1 received, 0% packet loss, time 0ms

rtt min/avg/max/mdev = 0.586/0.586/0.586/0.000 ms

步骤3:开通个人主页

[root@www www]# cd /etc/httpd/conf.d

[root@www conf.d]# ls

autoindex.conf  README  userdir.conf  welcome.conf

a.设置用户首页地址文件userdir.conf(红色的为模板变动除)

[root@www conf.d]# vi userdir.conf

……

<IfModule mod_userdir.c>

  ……

# UserDir disabled

#……

    UserDir public_html

</IfModule>

#

# Control access to UserDir directories.  The following is an example

# for a site where these directories are restricted to read-only.

#

<Directory "/home/*/public_html">

    AllowOverride FileInfo AuthConfig Limit Indexes

    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

    Require method GET POST OPTIONS

</Directory>

保存退出,重启服务

[root@www conf.d]# systemctl restart httpd

b.新建harry用户,创建public_html目录,在该目录下创建html

保存退出。

[root@www harry]# cd ..

[root@www home]# chmod o+x harry/

到客户端打开:

图7- 5

我好好的头像,被浏览器搞得乱七八糟的☹

功能(1)到此,已经完成。

**************************************************************************************

步骤4:虚拟目录用户认证

web服务器中建立一个名为private的虚拟目录,其对应的物理路径是/data/private。并配置Web服务器对虚拟目录启用用户认证,只允许yun90用户访问。

配置httpd

[]# vi /etc/httpd/conf/httpd.conf

……

#

# Relax access to content within /var/www.

#

<Directory "/var/www">

    AllowOverride None

    # Allow open access:

    Require all granted

</Directory>

……

复制上面带底色部分代码,紧挨着粘贴到下面,并修改

……

#

# Relax access to content within /var/www.

#

<Directory "/var/www">

    AllowOverride None

    # Allow open access:

    Require all granted

</Directory>

Alias /private   /data/private

<Directory "/data/private">

    AllowOverride None

AuthType Basic

AuthName “请输入用户姓名:”

AuthUserFile /etc/httpd/conf/.htpasswd

Require valid-user

</Directory>

……

安装htpasswd

[root@www home]# yum install httpd-devel.x86_64 -y

……

完毕!

[root@www home]# htpasswd -c /etc/httpd/conf/.htpasswd yun90

New password:

Re-type new password:

Adding password for user yun90

查看一下:

[root@www home]# cat /etc/httpd/conf/.htpasswd

yun90:$apr1$ktPXvXj3$3m41frZuIpsLf3iDCHDxk0

重启

[root@www home]# chmod o+x /data

[root@www home]# systemctl restart httpd

图7- 6

图7- 7

至此,完成了虚拟目录的用户认证设置。

步骤5:放过特定域名和IP地址的客户端访问虚拟目录

在web服务器中建立一个名为test的虚拟目录,其对应的物理路径是/dir1/test,并配置web服务器仅允许来自网络wzz.cqie域和192.168.100.0/27网段的客户机访问该虚拟目录。

a. 在/etc/httpd/conf/httpd.conf添加下面部分内容

[root@www home]# vi /etc/httpd/conf/httpd.conf

……

Alias /test   /dir1/test

<Directory "/dir1/test">

AllowOverride None

Require all granted

    Order allow,deny

    Allow from wzz.cqie

    Allow from 192.168.100.0/27

</Directory>

……

b.在/dir1/test下创建index.html,修改默认文件的权限

[root@www home]# mkdir -p /dir1/test

[root@www home]#vi /dir1/test/index.html

我是test,等的就是你!

[root@www ~]# chmod o+x /dir1/test/index.html

重启httpd

[root@www home]# systemctl restart httpd

我在192.168.100.100的客户端访问

图7- 8

改变ip地址为192.168.100.25再试:

图7- 9

刷新ip

图7- 10

图7- 11

在dns.wzz.cqie(192.168.100.66)上访问:

[root@DNS ~]# wget -O - -q http://www.wzz.cqie/test

我是test,等的就是你!

Gosh!

可见,当地址范围不在192.168.100.0/27范围内的客户端,且不是wzz.cqie域里面的用户无法访问test,192.168.100.66虽然不在192.168.100.0/27内,但是它是wzz.cqie域内用户,也能访问。

步骤6:创建基于IP地址的虚拟主机

         使用192.168.100.172和192.168.100.173两个IP地址,创建基于IP地址的虚拟主机。其中192.168.100.172的虚拟主机对应的主目录为/var/www/ip2,192.168.100.173的虚拟主机对应的主目录为/var/www/ip3。

a.创建虚拟主机。

进入/etc/httpd/conf.d目录创建vhost.conf文件

[root@www ~]# cd /etc/httpd/conf.d

[root@www conf.d]# ls

autoindex.conf  README  userdir.conf  welcome.conf

[root@www conf.d]# vi vhost.conf

创建两个基于ip地址的虚拟主机

<VirtualHost 192.168.100.172>

        DocumentRoot /var/www/ip2

</VirtualHost>

<VirtualHost 192.168.100.173>

        DocumentRoot /var/www/ip3

</VirtualHost>

c.创建虚拟主机数据目录及文件

[root@www conf.d]# mkdir -p /var/www/ip2

[root@www conf.d]# mkdir -p /var/www/ip3

[root@www conf.d]# cd /var/www/ip2

[root@www ip2]# vi index.html

[root@www ip2]# cd ..

[root@www www]# cd ip3

[root@www ip3]# vi index.html

两个index.html的内容是:

[root@www ip3]# cat index.html

我是192.168.100.173的主页!

[root@www ip3]# cat index.html

我是192.168.100.173的主页!

重启httpd

[root@www ip3]#systemctl restart httpd

d.验证

Linux上验证

[root@DNS ~]# wget -O - -q http://192.168.100.172

我是192.168.100.172的主页!

[root@DNS ~]# wget -O - -q http://192.168.100.173

我是192.168.100.173的主页!

Windows下验证

图7- 12

至此,完成了任务(4)基于IP的虚拟主机的部署。

步骤7:创建基于虚拟域名的虚拟主机

a.虚拟主机数据目录创建

[root@www conf.d]# mkdir -p /var/www/wzz1

[root@www conf.d]# mkdir -p /var/www/wzz2

[root@www conf.d]# vi /var/www/wzz1/index.html

[root@www conf.d]# vi /var/www/wzz2/index.html

index.html内容为

I'm homepage of www1.wzz.cqie.

b.在虚拟主机配置文件中vhost.conf文件,添加虚拟主机(红色部分为指定的基于虚拟域名的虚拟主机)

<VirtualHost 192.168.100.172>

        DocumentRoot /var/www/ip2

</VirtualHost>

<VirtualHost 192.168.100.173>

        DocumentRoot /var/www/ip3

</VirtualHost>

<VirtualHost 192.168.100.172>

        DocumentRoot /var/www/wzz1

        ServerName   www1.wzz.cqie

</VirtualHost>

<VirtualHost 192.168.100.173>

        DocumentRoot /var/www/wzz2

        ServerName   www2.wzz.cqie

</VirtualHost>

保存退出并重启httpd

[root@www]#systemctl restart httpd

c.验证

Linux下验证

[root@DNS ~]# wget -O - -q http://www1.wzz.cqie

I'm homepage of www1.wzz.cqie.

[root@DNS ~]# wget -O - -q http://www2.wzz.cqie

I'm homepage of www2.wzz.cqie.

Windows下验证

图7- 13

至此,完成了任务(5)。

相关文章:

CentOS8.5.2111(7)完整的Apache综合实验

一、实验目标 1.掌握Linux系统中Apache服务器的安装与配置&#xff1b; 2.掌握个人主页、虚拟目录、基于用户和主机的访问控制及虚拟主机的实现方法。 二、实验要求 练习使用linux系统下WEB服务器的配置方法。 三、实验背景 重庆工程学院为筹备“重庆工程大学”特申请了c…...

flink学习(3)——方法的使用—对流的处理(map,flatMap,filter)

map 数据 86.149.9.216 10001 17/05/2015:10:05:30 GET /presentations/logstash-monitorama-2013/images/github-contributions.png 83.149.9.216 10002 17/05/2015:10:06:53 GET /presentations/logstash-monitorama-2013/css/print/paper.css 83.149.9.216 10002 17/05/20…...

Feed流系统重构:架构篇

重构对我而言&#xff0c;最大的乐趣在于解决问题。我曾参与一个C#彩票算奖系统的重构&#xff0c;那时系统常因超时引发用户投诉。接手任务时&#xff0c;我既激动又紧张&#xff0c;连续两天几乎废寝忘食地编码。结果令人振奋&#xff0c;算奖时间从一小时大幅缩短至十分钟。…...

YOLOv11融合[NeurlS2022]递归门控卷积gnconv模块及相关改进思路

YOLOv11v10v8使用教程&#xff1a; YOLOv11入门到入土使用教程 YOLOv11改进汇总贴&#xff1a;YOLOv11及自研模型更新汇总 《HorNet: Efficient High-Order Spatial Interactions with Recursive Gated Convolutions》 一、 模块介绍 论文链接&#xff1a;https://arxiv.org…...

java: itext 5.5 create pdf

/*** encoding: utf-8* 版权所有 2024 ©涂聚文有限公司* 许可信息查看&#xff1a; https://github.com/itext/itext-publications-examples-java/blob/develop/src/main/java/com/itextpdf/samples/sandbox/fonts/FreeSansBold.java* 描述&#xff1a;https://mvnreposit…...

EF Core学习笔记二

一、新建.net core的控制台项目 二、安装Entity Framework Core 我们使用的数据库是Sqlite,所以我们需要的程序包是Microsoft.EntityFrameworkCore.Sqlite。 如果想了解更多EF Core NuGet包,请参考:EF Core NuGet 包 | Microsoft Learn Install-Package Microsoft.Entit…...

快速排序【hoare版】

目录 介绍 算法思路 函数实现 函数声明 确定基准值 创建新函数 创建循环找数据&#xff08;right&#xff0c;left&#xff09; 交换左右数据 交换条件设置 外部循坏条件设置 初步总结代码 循环条件完善 内层循环的完善 外层循环的完善 相遇值大于keyi 相遇值等于k…...

day03(单片机高级)RTOS

目录 RTOS(实时操作系统) 裸机开发模式 轮询方式 前后台&#xff08;中断方式&#xff09; 改进&#xff08;前后台&#xff08;中断&#xff09;&#xff09;定时器 裸机进一步优化 裸机的其他问题 RTOS的概念 什么是RTOS 为什么要使用 RTOS RTOS的应用场景 RTOS的…...

vue中v-if和v-show的区别

文章为本菜鸡学习过程中遇到的问题记录&#xff0c;不是专业的&#xff0c;如有问题和不足还请大佬指正 >参考文章 文章目录 前言1、v-if2、v-show3、v-if和v-show的区别 前言 问题描述&#xff1a; 在完成表单验证任务的学习过程中&#xff0c;发现在使用v-show隐藏元素后…...

MacOS通过VMware Fusion安装windows 11问题汇总

环境 虚拟机&#xff0c;VMware Fusion 13.6.1本地机器&#xff0c;ARM芯片的Mac&#xff0c;系统版本14.5Windows系统镜像&#xff0c;Window11 ARM 64 bit 安装卡在WiFi连接界面 适合我本地环境的解决步骤为&#xff1a; 1、系统设置网络共享 我开启的是en5&#xff0c;这…...

Stable Diffusion的解读(二)

Stable Diffusion的解读&#xff08;二&#xff09; 文章目录 Stable Diffusion的解读&#xff08;二&#xff09;摘要Abstract一、机器学习部分1. 算法梳理1.1 LDM采样算法1.2 U-Net结构组成 2. Stable Diffusion 官方 GitHub 仓库2.1 安装2.2 主函数2.3 DDIM采样器2.4 Unet 3…...

十五届蓝桥杯赛题-c/c++ 大学b组

握手问题 很简单&#xff0c;相互牵手即可&#xff0c;但是要注意&#xff0c;第一个人只能与其他49个人牵手&#xff0c;所以开头是加上49 #include <iostream> using namespace std; int main() {int cnt0;for(int i49;i>7;i--){cnti;//cout<<i<<&quo…...

NFS搭建

NFS搭建 单节点安装配置服务器安装配置启动并使NFS服务开机自启客户端挂载查看是否能发现服务器的共享文件夹创建挂载目录临时挂载自动挂载 双节点安装配置服务器安装配置服务端配置NFS服务端配置Keepalived编辑nfs_check.sh监控脚本安装部署RsyncInofity 客户端 单节点安装配置…...

【贪心算法第二弹——2208.将数组和减半的最小操作数】

1.题目解析 题目来源 2208.将数组和减半的最小操作数——力扣 测试用例 2.算法原理(贪心策略) 3.实战代码 class Solution { public:int halveArray(vector<int>& nums) {priority_queue<double> hash;double sum 0.0;for(auto e : nums){hash.push(e);sum …...

ByteBuffer 与 ByteBuf 的对比与优缺点分析

在 Java 网络编程和高性能 I/O 场景中&#xff0c;ByteBuffer 和 ByteBuf 是两种重要的缓冲区处理工具。ByteBuffer 是 Java NIO 标准库的一部分&#xff0c;而 ByteBuf 是由 Netty 框架提供的增强缓冲区工具。在实际开发中&#xff0c;选择哪一种取决于场景需求和性能目标。 …...

SpringBoot 集成 html2Pdf

一、概述&#xff1a; 1. springboot如何生成pdf&#xff0c;接口可以预览可以下载 2. vue下载通过bold如何下载 3. 一些细节&#xff1a;页脚、页眉、水印、每一页得样式添加 二、直接上代码【主要是一个记录下次开发更快】 模板位置 1. 导入pom包 <dependency><g…...

【IDEA】插件篇

环境&#xff1a;Mac M &#xff0c;IDEA 2024.2.4 一、汉化 & 汉化后转回英文 1、汉化 IntelliJ IDEA -> Preferences -> Plugins -> MarketPlace&#xff0c;输入 chinese&#xff0c;点击 安装&#xff0c;安装完成后 重启IDE 2、汉化后转回英文 IntelliJ …...

librdns一个开源DNS解析库

原文地址&#xff1a;librdns一个开源DNS解析库 – 无敌牛 欢迎参观我的个人博客&#xff1a;无敌牛 – 技术/著作/典籍/分享等 介绍 librdns是一个开源的异步多功能插件式的解析器&#xff0c;用于DNS解析。 源代码地址&#xff1a;GitHub - vstakhov/librdns: Asynchrono…...

数据结构 【带环单链表】

在单链表中可能会存在一种情况&#xff0c;某一结点在经过几次转移之后回到了自己本身&#xff0c;这种情况就称之为带环链表。对于带环链表&#xff0c;我们不能轻易对其进行遍历&#xff0c;遍历可能会导致产生死循环。 带环链表的逻辑图如下所示&#xff1a;&#xff08;这…...

CodiMD导出pdf失败或无中文

CodiMD导出pdf失败&#xff0c;弹出文件保存窗口&#xff0c;有个pdf文件能下载&#xff0c;但是保存的时候提示“网站出问题了”&#xff0c;实际到服务器上看会发现docker崩溃了。 解决办法&#xff1a; 使用最新的CodiMD镜像&#xff0c;如nabo.codimd.dev/hackmdio/hackmd:…...

基于Java Springboot高校教务管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…...

大数据调度组件之Apache DolphinScheduler

Apache DolphinScheduler 是一个分布式易扩展的可视化 DAG 工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系&#xff0c;使调度系统在数据处理流程中开箱即用。 主要特性 易于部署&#xff0c;提供四种部署方式&#xff0c;包括Standalone、Cluster、Docker和…...

Python 快速入门(上篇)❖ Python基础知识

Python 基础知识 Python安装**运行第一个程序:基本数据类型算术运算符变量赋值操作符转义符获取用户输入综合案例:简单计算器实现Python安装** Linux安装: yum install python36 -y或者编译安装指定版本:https://www.python.org/downloads/source/ wget https://www.pyt…...

JAVA实现将PDF转换成word文档

POM.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.…...

Python学习29天

二分查找 # 定义函数冒泡排序法从大到小排列 def bbble_sort(list):# i控制排序次数for i in range(len(list) - 1):# j控制每次排序比较次数for j in range(len(list) - 1 - i):if list[j] < list[j 1]:list[j], list[j 1] list[j 1], list[j] # 定义二分查找函数 def…...

FreeSWITCH 简单图形化界面35 - 使用python脚本

FreeSWITCH 简单图形化界面35 - 使用python脚本 测试环境1、mod_python编译2、Python编写拨号规则(dialplan)测试一下不带参数带参数 3、使用Python执行freeSWITCH的API测试一下 4、Python执行session API测试一下 5、Python编写聊天规则(chatplan)测试一下 6、Python执行messa…...

基于AIRTEST和Jmeter、Postman的自动化测试框架

基于目前项目和团队技术升级&#xff0c;采用了UI自动化和接口自动化联动数据&#xff0c;进行相关测试活动&#xff0c;获得更好的测试质量和测试结果。...

web-03

CSS回顾 选择器 标签选择器 标签{}ID选择器 标签中定义ID属性。 #ID值{}类选择器 标签中使用class属性 .类名{}关于DIV/span div任意的大小的长方形&#xff0c;大小css&#xff1a; width, height控制。—换行 span-- 一行内 CSS常用属性 width/height 宽度/高度 定义&…...

MySQL 死锁

一、引言 在 MySQL 数据库的使用过程中&#xff0c;死锁问题就像一颗隐藏在暗处的 “定时炸弹”&#xff0c;平时可能感觉不到它的存在&#xff0c;但一旦触发&#xff0c;就可能导致数据库事务无法正常推进&#xff0c;严重影响系统的性能和可用性。对于开发人员和数据库管理员…...

M|大脑越狱

rating: 7.0 豆瓣: 7.6 上映时间: “2015” 类型: M悬疑 导演: 约瑟夫怀特 Joseph White 主演: 亚历山大欧文 Alexander Owen爱德华富兰克林 Edward Franklin 国家/地区: 英国 片长/分钟: 20分钟 M&#xff5c;大脑越狱 想法不错&#xff0c;但是逻辑比较一般。属于…...

CSS3_媒体查询(十一)

CSS3_响应式布局 1、媒体样式 在不同媒体上显示不同的样式。 常用阈值&#xff1a; 小于768px&#xff1a;小屏幕&#xff1b;768px-992px&#xff1a;中等屏幕&#xff1b;992px-1200px&#xff1a;大屏幕&#xff1b;大于1200px&#xff1a;超大屏幕。 <!DOCTYPE html>…...

Spring |(四)IoC/DI配置管理第三方bean

文章目录 &#x1f4da;数据源对象管理&#x1f407;环境准备&#x1f407;实现Druid管理&#x1f407;实现C3P0管理 &#x1f4da;加载properties文件&#x1f407;第三方bean属性优化&#x1f407;读取单个属性 学习来源&#xff1a;黑马程序员SSM框架教程_SpringSpringMVCMa…...

Qt桌面应用开发 第六天(鼠标事件 定时器事件 定时器类 事件分发器 事件过滤器)

目录 1.1鼠标进入和离开enterEvent\leaveEvent 1.2鼠标按下释放和移动mousePressEvent\mouseReleaseEvent\mouseMoveEvent 1.3定时器事件timerEvent 1.4定时器类QTimer 1.5事件分发器event 1.6事件过滤器eventFilter 1.1鼠标进入和离开enterEvent\leaveEvent 事件&#x…...

MySQL-存储过程

目录 一、存储过程定义 二、存储过程创建 1、变量的定义 2、存储过程的分支语句 2.1 双分支IF语句 2.2 多分支IF语句 3、存储过程的循环语句 三、存储过程调用 四、存储过程显示和删除 一、存储过程定义 存储过程&#xff08;Stored Procedure&#xff09;是一种在数…...

数据指标与标签在数据分析中的关系与应用

导读&#xff1a;分享数据指标体系的文章很多&#xff0c;但讲数据标签的文章很少。实际上&#xff0c;标签和指标一样&#xff0c;是数据分析的左膀右臂&#xff0c;两者同样重要。实际上&#xff0c;很多人分析不深入&#xff0c;就是因为缺少对标签的应用。今天系统的讲解下…...

LWE详细介绍

LWE问题&#xff0c;即学习误差问题&#xff08;Learning With Errors problem&#xff09;&#xff0c;是密码学中一个重要的硬问题&#xff0c;尤其在后量子密码学中占有核心地位。LWE问题由Regev在2005年提出&#xff0c;其设计基于格理论&#xff0c;被认为是一个在平均情况…...

Linux系统Docker部署开源在线协作笔记Trilium Notes与远程访问详细教程

目录 ⛳️推荐 前言 1. 安装docker与docker-compose 2. 启动容器运行镜像 3. 本地访问测试 4.安装内网穿透 5. 创建公网地址 6. 创建固定公网地址 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下…...

【Spring MVC】初步了解Spring MVC的基本概念与如何与浏览器建立连接

前言 &#x1f31f;&#x1f31f;本期讲解关于SpringMVC的基础概念&#xff0c;以及如何实现与浏览器的连接&#xff0c;参数的传递~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 …...

游戏AI实现-决策树

代码实现&#xff1a; 定义一个决策树节点 class DecisionTreeNode{public DecisionTreeNode(){} } 定义一个行为类&#xff1a; class Action : DecisionTreeNode{ } 定义一个决策类&#xff1a; class Decision : DecisionTreeNode{ } 应用&#xff1a; 参考书…...

9个最佳WordPress PDF插件(查看器、嵌入和下载)

在过去的几年里&#xff0c;我们一直在使用不同的 PDF 插件在我们的网站上创建、编辑和嵌入文档。 然而&#xff0c;经过多次尝试和错误&#xff0c;我们意识到并不是每个插件都是相同的。事实上&#xff0c;为您的企业或电子商务网站选择合适的 PDF 插件可能是一项艰巨的任务…...

odoo18中模型的常用字段类型

字段的公共属性: Char 字符类型&#xff0c;对应数据库中varchar类型&#xff0c;除了通用类型外接收另外两个参数&#xff1a; size: 字符长度&#xff0c;超出的长度将被截断 trim: 默认True&#xff0c;是否字段值应该被去空白。 Text 文本类型&#xff0c;对应数据库…...

VUE 指令 事件绑定,.stop阻止冒泡

1、VUE 的模板语法和指令 目的增强html的功能 所有的指令以自定义属性的方式去写 v-xxx ,指令就是vue提供给我们能够更方便将数据和页面展示出来的操作&#xff0c;具体就是以数据去驱动DOM ,简化DOM操作的行为。 2、内容渲染指令 ① {{}} 模板渲染&#xff08;模板引擎&am…...

在Excel中处理不规范的日期格式数据并判断格式是否正确

有一个Excel表&#xff0c;录入的日期格式很混乱&#xff0c;有些看着差不多&#xff0c;但实际多一个空格少一个字符很难发现&#xff0c;希望的理想格式是 1980-01-01&#xff0c;10位&#xff0c;即&#xff1a;“YYYY-mm-dd”&#xff0c;实际上数据表中这样的格式都有 19…...

webpack基础配置

文章目录 一、默认入口和默认出口二、资源配置三、输出文件3.1 多文件入口3.2 HtmlWebpackPlugin插件 四、环境4.1 环境变量4.2 热更新 五、代码分离5.1 公共模块5.2 懒加载5.3 预获取/预加载模块 六、缓存七、Tree Shaking八、公共路径 webpack 是一个用于现代 JavaScript 应用…...

stm32利用LED配置基础寄存器+体验滴答定时器+hal库环境配置

P1 LED控制与流水灯效果实现 概述 大家好&#xff0c;今天我们来学习一下如何在STM32上控制LED灯&#xff0c;并且实现一个流水灯的效果。这不仅是一个基础的实践&#xff0c;也是嵌入式开发中非常常见的需求。 LED控制 1. LED初始化 首先&#xff0c;我们需要对LED灯对应…...

Spark RDD sortBy算子执行时进行数据 “采样”是什么意思?

一、sortBy 和 RangePartitioner sortBy 在 Spark 中会在执行排序时采用 rangePartitioner 进行分区&#xff0c;这会影响数据的分区方式&#xff0c;并且这一步骤是通过对数据进行 “采样” 来计算分区的范围。不过&#xff0c;重要的是&#xff0c;sortBy 本身仍然是一个 tr…...

Ubuntu24.04下的docker问题

按官网提示是可以安装成功的&#xff0c;但是curl无法使用https下载&#xff0c;会造成下述语句执行失败 # Add Dockers official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https…...

Tri Mode Ethernet MAC IP核详解

本文对 Vivado 的三速 MAC IP 核&#xff08;Tri Mode Ethernet MAC&#xff0c;TEMAC&#xff09;进行介绍。 在自行实现三速以太网 MAC 控制器时&#xff0c;GMII/RGMII 接口可以通过 IDDR、ODDR 原语实现&#xff0c;然而实际使用中自己实现的模块性能不是很稳定&#xff08…...

【U盘车载音乐】某宝198的3068首车载专用音乐合集【高音质】24G

「【U盘车载音乐】某宝198的3068首车载专用音乐合集【高音质】24G」 复制下方口令&#xff0c;打开最新版「夸克APP」即可获取保存&#xff08;防止和谐&#xff01;&#xff01;&#xff01;&#xff09; 口令&#xff1a; 动作懿范鉴真渡多好备用口令&#xff1a; /~19dc35…...

android 实现答题功能

一、效果 二、实现思路 1、界面实现 实现起来其实不难&#xff0c;首先我们可以看到&#xff0c;界面是由答题进度、题目、选项ABCD组成&#xff0c;现在就是要考虑实现方式&#xff0c;答题进度可以使用Textviewprogressbar实现&#xff0c;题目直接使用Textview&#xff0c;…...