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)。

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

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

相关文章

零基础3分钟快速掌握 ——Linux【终端操作】及【常用指令】Ubuntu

1.为啥使用Linux做嵌入式开发 能广泛支持硬件 内核比较高效稳定 原码开放、软件丰富 能够完善网络通信与文件管理机制 优秀的开发工具 2.什么是Ubuntu 是一个以桌面应用为主的Linux的操作系统&#xff0c; 内核是Linux操作系统&#xff0c; 具有Ubuntu特色的可视…

JVM类加载和垃圾回收算法详解

文章目录 JVM一、JVM运行流程1. JVM执行流程 二、JVM运行时数据区1. 程序计数器&#xff08;线程私有&#xff09;2. 虚拟机栈 &#xff08;线程私有&#xff09;3. 本地方法栈&#xff08;线程私有&#xff09;4. 堆&#xff08;线程共享&#xff09;5. 元空间&#xff08;线程…

iOS 17.4 Not Installed

0x00 系统警告 没有安装 17.4 的模拟器&#xff0c;任何操作都无法进行&#xff01; 点击 OK 去下载&#xff0c;完成之后&#xff0c;依旧是原样&#xff01; 0x01 解决办法 1、先去官网下载对应的模拟器&#xff1a; https://developer.apple.com/download/all/?q17.4 …

day04 企业级Linux安装及远程连接知识实践

1. 使用传统的网卡命名方式 在启动虚拟机时&#xff0c;按tab键进入编辑模式 添加命令&#xff1a; net.ifnames0 biosdevname0 这样linux系统会使用传统的网卡命名&#xff0c;例如eth0、eth1…… 2. 快照 做系统关键操作时&#xff0c;一定要使用快照(先将系统关机) 3.…

人体特定吸收率 (SAR) 分布建模

ANSYS HFSS 提供了一种建模 SAR 分布的方法&#xff01; 2020 年对我们所有人来说都是充满挑战的一年&#xff0c;由于 COVID 19 限制和居家隔离&#xff0c;许多工程师不得不推迟开发时间表。ANSYS HFSS 为所有工程师提供了一种在家安全工作的好方法。隔离期间&#xff0c;您…

.NET9 - Swagger平替Scalar详解(四)

书接上回&#xff0c;上一章介绍了Swagger代替品Scalar&#xff0c;在使用中遇到不少问题&#xff0c;今天单独分享一下之前Swagger中常用的功能如何在Scalar中使用。 下面我们将围绕文档版本说明、接口分类、接口描述、参数描述、枚举类型、文件上传、JWT认证等方面详细讲解。…

计算(a+b)/c的值

计算&#xff08;ab&#xff09;/c的值 C语言代码C语言代码Java语言代码Python语言代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 给定3个整数a、b、c&#xff0c;计算表达式(ab)/c的值&#xff0c;/是整除运算。 输入 输入仅一行&…

PICO 获取设备号 SN码

Unity版本 2020.3.42f1c1PICO SDK版本PICO Unity Integration SDK-3.0.5-20241105Pico设备pico 4ultra 注意 此api暂时只测试企业版本 pico 4ultra 代码 using Unity.XR.PICO.TOBSupport;private void Awake() {bool result PXR_Enterprise.InitEnterpriseService();Debug.L…

【大数据技术基础】 课程 第8章 数据仓库Hive的安装和使用 大数据基础编程、实验和案例教程(第2版)

第8章 数据仓库Hive的安装和使用 8.1 Hive的安装 8.1.1 下载安装文件 访问Hive官网&#xff08;http://www.apache.org/dyn/closer.cgi/hive/&#xff09;下载安装文件apache-hive-3.1.2-bin.tar.gz 下载完安装文件以后&#xff0c;需要对文件进行解压。按照Linux系统使用的…

[STM32]从零开始的STM32 FreeRTOS移植教程

一、前言 如果能看到这个教程的话&#xff0c;说明大家已经学习嵌入式有一段时间了。还记得嵌入式在大多数时候指的是什么吗&#xff1f;是的&#xff0c;我们所说的学习嵌入式大部分时候都是在学习嵌入式操作系统。从简单的一些任务状态机再到复杂一些的RTOS&#xff0c;再到最…

DAY133权限提升-Windows权限提升篇溢出漏洞土豆家族通杀全系补丁对比EXP筛选

知识点 1、Web到Win-系统提权-土豆家族 2、Web到Win-系统提权-人工操作 章节点&#xff1a; 1、Web权限提升及转移 2、系统权限提升及转移 3、宿主权限提升及转移 4、域控权限提升及转移 Windows提权&#xff1a; 1、内核溢出漏洞提权 2、数据库类型提权 3、第三方软件…

web day03 Maven基础 Junit

目录 Maven坐标&#xff1a; 依赖排除&#xff1a; 依赖范围&#xff1a; Maven生命周期&#xff1a; 单元测试&#xff1a; Junit入门&#xff1a; 断言&#xff1a; Junit中的常见注解&#xff1a; 概念&#xff1a;Maven 是一款用于管理和构建 Java项目的工具&#…

day18 结构体

有参宏和函数的区别 1.展开时机&#xff1a;有参宏而言&#xff0c;在预处理阶段展开&#xff0c;而函数在调用时才展开 2.内存使用&#xff1a;有参宏而言&#xff0c;占用的是所在函数的空间&#xff0c;而函数在调用时会单独开辟空间 3.效率上&#xff1a;有参宏的效率比…

44.扫雷第二部分、放置随机的雷,扫雷,炸死或成功 C语言

按照教程打完了。好几个bug都是自己打出来的。比如统计周围8个格子时&#xff0c;有一个各自加号填成了减号。我还以为平移了&#xff0c;一会显示是0一会显示是2。结果单纯的打错了。debug的时候断点放在scanf后面会顺畅一些。中间多放一些变量名方便监视。以及mine要多显示&a…

docker 通过Dockerfile自定义的镜像部署Springboot项目

一、镜像结构介绍&#xff1a; 镜像&#xff1a;层&#xff08;Layer&#xff09;添加安装包、依赖、配置等&#xff0c;每一次操作都形成新的一层&#xff1b;基础镜像&#xff08;BaseImage&#xff09;应用依赖的系统函数库、环境、配置、文件等&#xff1b;入口&#xff0…

全网最早Towards Generalizable Multi-Object Tracking—通用跟踪器的点跟踪CVPR2024

Towards Generalizable Multi-Object Tracking—迈向可推广的多目标跟踪 原标题&#xff1a;Towards Generalizable Multi-Object Tracking 论文链接&#xff1a;https://arxiv.org/pdf/2406.00429 代码链接&#xff1a;https://github.com/qinzheng2000/GeneralTrack.git 作者…

MyBatis框架-动态SQL-XML中的常用标签+特殊字符在XML中的显示

一、if标签、where标签、trim标签、choose标签、set标签、foreach标签 1、问题引入&#xff1a;where关键字和and关键字在动态SQL里面应该如何添加&#xff1f; &#xff08;1&#xff09;if标签&#xff1a; test属性的值是判断条件 if标签里面的内容是条件成立时添加到SQ…

探秘嵌入式位运算:基础与高级技巧

目录 一、位运算基础知识 1.1. 位运算符 1.1.1. 与运算&#xff08;&&#xff09; 1.1.2. 或运算&#xff08;|&#xff09; 1.1.3. 异或运算&#xff08;^&#xff09; 1.1.4. 取反运算&#xff08;~&#xff09; 1.1.5. 双重按位取反运算符&#xff08;~~&#xf…

渗透测试笔记—shodan(7完结)

声明&#xff1a; 学习视频来自B站up主 【泷羽sec】有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&am…

2024年最新版Java八股文复习

最新版本Java八股文复习&#xff0c;每天更新一篇&#xff0c;博主正在持续努力更新中~~~ 一、Java基础篇1、怎么理解面向对象&#xff1f;简单说说封装、继承、多态三大特性&#xff1f;2、多态体现在哪几个方面&#xff1f;3、面向对象的设计原则你知道有哪些吗&#xff1f;4…