Apache服务
目录
引言
一、常见的http服务程序
(一)lls
(二)nginx
(三)Apache
(四)Tomcat
二、Apache特点
三、Apache服务的安装
(一)yum安装及配置文件
1.配置文件
(二)编译安装
四、HTTP配置
(一)指定服务器名称
(二)监听端口
(三)包含其它子配置文件
(四)隐藏服务器版本信息
(五)持久连接
(六)DSO
(七)MPM 多路处理模块
1.prefork模块
2.worker和event 模式相关的配置
(八)定义Main server的文档页面路径
(九)虚拟主机
1.基于IP地址
2.基于端口号
3.基于域名
(十)基于客户端 IP 地址实现访问控制
1.黑名单
2.白名单
引言
在互联网世界中,Web服务器扮演着至关重要的角色,它们是连接用户与网站内容的桥梁。其中,Apache HTTP Server(简称Apache)作为全球使用最为广泛的开源Web服务器软件之一,其影响力和普及度不容小觑。本文旨在带你走进Apache的世界,解析其核心功能,并探讨实际应用中的关键配置与优化实践。
一、常见的http服务程序
(一)lls
Windows 系统中默认 Web 服务程序是lIS(Internet Information Services),这是一款图形化的网站管理工具,IIS 程序不光能提供 Web 网站服务,还能够提供FTP、NMTP、SMTP 等服务功能,但只能在 Windows 系统中使用。
(二)nginx
nginx--最初于 2004年 10月4日为俄罗斯知名门户站点而开发的,作为一款轻量级的网站服务软件,因其稳定性和丰富的功能而深受信赖,但最最最被认可的是低系统资源、占用内存少且并发能力强,目前国内如新浪、网易、腾讯等门户站均使用。
(三)Apache
Apache--取自美国印第安人土著语 Apache,寓意着拥有高超的作战策略和无穷的耐性,由于其跨平台和安全性广泛被认可且拥有快速、可靠、简单的 API扩展。目前拥有很高的 Web 服务软件市场占用率,全球使用最多的 Web服务软件,开源、跨平台(可运行于Unix,linux,windows 中)。
·支持基于IP或域名的虚拟主机
·支持多种方式的 HTTP 认证
·集成代理服务器模块
·安全 Socket层(SSL)
·能够实时见识服务状态与定制日志
·多种模块的支持
(四)Tomcat
Tomcat--属于轻量级的Web服务软件,一般用于开发和调试JSP 代码,通常认为Tomcat是 Apache 的扩展程序。
总结来说Nginx程序作为 Web 服务软件届的后起之秀已经通过自身的努力与优势赢得了大批站长的信赖,但是 Apache 程序作为老牌的 Web 服务软件因其卓越的稳定性与安全性成为了红帽 RHEL7 系统中默认的网站服务软件。
二、Apache特点
apache 功能:
提供http协议服务
多个虚拟主机:IP、Port、FQDN
CGI:Common Gateway Interface,通用网关接口,支持动态程序
反向代理
负载均衡
路径别名
丰富的用户认证机制:basic,digest
支持第三方模块
apache特性:
高度模块化:core + modules
DSO:Dynamic Shared Object 动态加载/卸载
MPM:multi-processing module 多路处理模块
MPM multi-processing module 工作模式
prefork:多进程I/O模型,每个进程响应一个请求,CentOS 7 httpd默认模型一个主进程:生成和回收n个子进程,创建套接字,不响应请求多个子进程:工作 work进程,每个子进程处理一个请求;系统初始时,预先生成多个空闲进程,等待请求
Prefork MPM预派生模式,有一个主控制进程,然后生成多个子进程,每个子进程有一个独立的线程响应用户请求,相对比较占用内存,但是比较稳定,可以设置最大和最小进程数,是最古老的一种模式,也是最稳定的模式,适用于访问量不是很大的场景
优点:稳定
缺点:慢,占用资源,不适用于高并发场景
worker:复用的多进程I/O模型,多进程多线程,IIS使用此模型
一个主进程:生成m个子进程,每个子进程负责生个n个线程,每个线程响应一个请求,并发响应请求:m*n
worker MPM是一种多进程和多线程混合的模型,有一个控制进程,启动多个子进程,每个子进程里面包含固定的线程,使用线程程来处理请求,当线程不够使用的时候会再启动一个新的子进程,然后在进程里面再启动线程处理请求,由于其使用了线程处理请求,因此可以承受更高的并发。
优点:相比prefork 占用的内存较少,可以同时处理更多的请求
缺点:使用keep-alive的长连接方式,某个线程会一直被占据,即使没有传输数据,也需要一直等待到超时才会被释放。如果过多的线程,被这样占据,也会导致在高并发场景下的无服务线程可用。(该问题在prefork模式下,同样会发生)
event:事件驱动模型(worker模型的变种),CentOS8 默认模型
一个主进程:生成m个子进程,每个子进程负责生个n个线程,每个线程响应一个请求,并发响应请求:m*n,有专门的监控线程来管理这些keep-alive类型的线程,当有真实请求时,将请求传递给服务线程,执行完毕后,又允许释放。这样增强了高并发场景下的请求处理能力
event MPM是Apache中最新的模式,2012年发布的apache 2.4.X系列正式支持event 模型. 属于事件驱动模型(epoll),每个进程响应多个请求,在现在版本里的已经是稳定可用的模式。它和worker模式很像,最大的区别在于,它解决了keep-alive场景下,长期被占用的线程的资源浪费问题(某些线程因为被keep-alive,空挂在哪里等待,中间几乎没有请求过来,甚至等到超时)。event MPM中,会有一个专门的线程来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。这样增强了高并发场景下的请求处理能力event只在有数据发送的时候才开始建立连接,连接请求才会触发工作线程,即使用了TCP的一个选项,叫做延迟接受连接TCP_DEFER_ACCEPT,加了这个选项后,若客户端只进行TCP连接,不发送请求,则不会触发Accept操作,也就不会触发工作线程去干活,进行了简单的防攻击(TCP连接)
优点:单线程响应多请求,占据更少的内存,高并发下表现更优秀,会有一个专门的线程来管理keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放
缺点:没有线程安全控制
httpd-2.4:event 稳定版,centos7 以后默认
httpd-2.2:event 测试版,centos6 默认
我们在使用yum安装httpd的时候默认的是使用prefork工作模块
可以手动进行工作模式的切换
修改完毕之后,重启服务
可以看到,切换到event模式后,会开启很多线程,而prefork则没有线程
三、Apache服务的安装
(一)yum安装及配置文件
首先来讲解使用yum安装
yum install httpd -y
Apache服务的安装包名称叫做httpd,下载时需要注意
1.配置文件
/etc/httpd/conf/httpd.conf 主配置文件
[root@localhost data]#grep -i "^[a-z]" /etc/httpd/conf/httpd.conf
ServerRoot "/etc/httpd"
#指定了Apache服务器的根目录位置。
Listen 80
#指示Apache监听HTTP请求的端口号为80。
Include conf.modules.d./﹡.conf
#包含conf.modules.d目录下的所有.conf文件,这些通常用来加载和管理模块。
User apache
Group apache
#定义了Apache服务器运行时使用的系统用户和组账号。
ServerAdmin root@localhost
#设置管理员邮箱地址,当服务器发生错误时,可能会通过此地址发送通知邮件。
DocumentRoot "/var/www/html"
#指定网站的根目录(web根目录),网页文件将从这里提供给访问者。
ErrorLog "logs/error_log"
#设置错误日志文件的位置。
LogLevel warn
#定义了记录到日志中的信息级别,这里是“warn”级别,即记录警告及更严重级别的消息。
AddDefaultCharset UTF-8
#设置默认字符集为UTF-8,用于处理未明确声明字符集的文档。
EnableSendfile on
#启用sendfile系统调用,可能提高静态文件传输性能。
IncludeOptional conf.d/﹡.conf
#包含conf.d目录下的所有.conf文件,这些通常包含额外的配置或特定站点的虚拟主机配置。
/etc/httpd/conf.d/*.conf 子配置文件
在/etcs/httpd/conf.d/目录下新建以.conf结尾的文件,都会读取生效,且优先级大于主配置文件
在下面的优化中会进行演示
/etc/httpd/conf.d/conf.modules.d/ 模块加载的配置文件
00-base.conf
#基础模块配置文件,可能包含了启动时默认加载的基本模块配置。
00-dav.conf
#与WebDAV(Web-based Distributed Authoring and Versioning)相关的模块配置,允许用户通过HTTP协议对服务器上的文件进行远程管理。
00-lua.conf
#与Lua脚本语言集成相关的模块配置,如mod_lua,用于在Apache服务器上运行Lua脚本。
00-mpm.conf
#Multi-Processing Module (MPM) 配置文件,定义了Apache如何处理并发连接和多线程/多进程模型。
00-proxy.conf
#代理模块配置,如mod_proxy,用于设置Apache作为反向代理或正向代理,转发来自客户端的请求到其他服务器。
00-systemd.conf
#Systemd系统和服务管理器相关的配置,确保Apache服务与Systemd兼容并正确集成。
01-cgi.conf
#Common Gateway Interface (CGI) 模块配置,允许Apache通过CGI接口执行外部脚本程序(如Perl、Python等)以生成动态内容。
检查命令及配置语法:httpd -t
c | 在读取配置⽂件前,先执⾏选项中的指令 |
C | 在读取配置⽂件后,再执⾏选项中的指令 |
d<服务器根⽬录> | 指定服务器的根⽬录 |
D<设定⽂件参数> | 指定要传⼊配置⽂件的参数 |
f<设定⽂件> | 指定配置⽂件 |
h | 显示帮助 |
l | 显示服务器编译时所包含的模块 |
L | 显示httpd指令的说明 |
S | 显示配置⽂件中的设定 |
t | 测试配置⽂件的语法是否正确 |
v | 显示版本信息 |
V | 显示版本信息以及建⽴环境 |
X | 以单⼀程序的⽅式来启动服务器 |
M | 显示动态模块 |
服务单元文件:
/usr/lib/systemd/system/httpd.service
配置文件:/etc/sysconfig/httpd
站点网页文档根目录:/var/www/html
在访问httpd服务时,访问的目录为/var/www/html下的文件
在配置文件中可以进行修改
DocumentRoot "/path”
<directory /path>
Require all granted
</directory>
DocumentRoot指向的路径为URL路径的起始位置
/path 必须显式授权后才可以访问
这是因为在配置文件中制定了默认的文件名
比如在文件中条件其它自定义名称后,会按顺序进行查找
首先新建一个名为pla.test的文件
使用其它机器访问时就会默认匹配前面的文件名,将没有匹配到的默认文件名忽略
再建一个名为index.txt的文件
再进行访问时就会匹配最前面的自定义名称
模块文件路径:
/etc/httpd/modules
/usr/lib64/httpd/modules
一些模块配置,不需要去关注
(二)编译安装
编译安装可以指定工作模块,可以在官方文档中查看
下面提供几个下载地址,可以自己进行编译安装
https://downloads.apache.org/apr/apr-1.7.0.tar.bz2
https://downloads.apache.org//apr/apr-util-1.6.1.tar.bz2
https://downloads.apache.org//httpd/httpd-2.4.46.tar.bz2
四、HTTP配置
在修改配置文件之前养成好习惯,先进行备份
cp conf/httpd.conf conf/httpd.conf.bak
(一)指定服务器名称
之前在使用httpd -t检查配置文件时出现一条报错信息
可以将95行的注释信息开启,也可以自定义域名
再次进行检查就没有报错信息了,也就是指定域名
重新之后就会生效了
(二)监听端口
httpd默认的监听端口号是80
可以在主配置文件中修改
再次访问的时候会拒绝,因为默认是80,而httpd服务不再监听80端口
可以同时监听多个端口,在设置时,省略IP地址,表示监听本机的所有IP地址
添加一块临时网卡:ifconfig ens33:0 192.168.83.111/24
访问htppd服务时,无论访问哪一个IP地址的9527端口都可以
但是在访问10086端口时,只能访问192.168.83.40的10086端口
(三)包含其它子配置文件
为什么在/etc/httpd/conf.d/下新建一个以.conf结尾的文件,就可以当作配置文件生效?
这是因为,在主配置文件中也规定了
Include 和 IncludeOptional 指令用于包含其他配置文件或目录下的所有匹配的配置文件。
Include和IncludeOptional功能相同,都可以包括其它配置文件
但是当无匹配文件时,include会报错,IncludeOptional将继续加载其余配置,不会导致错误
(四)隐藏服务器版本信息
在Apache HTTP Server中,可以通过配置文件隐藏服务器版本信息以增强安全性,防止攻击者利用已知的软件漏洞。
可以在配置文件中添加ServerTokens字段来设置显示的版本信息
ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full
选项 | 显示信息 |
ServerTokens Prod | Server: Apache |
ServerTokens Major | Server: Apache/2 |
ServerTokens Minor | Server: Apache/2.0 |
ServerTokens Min | Server: Apache/2.0.41 |
ServerTokens OS | Server: Apache/2.0.41 (Unix) |
ServerTokens Full | Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1. |
ServerTokens Prod:只显示服务名称
ServerTokens Major:显示主要版本号
ServerTokens Minor:显示主要和次要版本号
ServerTokens Min:显示最小化但仍然包含具体版本信息的标识
ServerTokens OS:显示服务器软件、主要和次要版本号以及操作系统信息
此为默认值
ServerTokens Full:显示完整的服务器标识,包括服务器软件、完整版本号、操作系统及可能存在的其他模块版本信息
(五)持久连接
Persistent Connection:连接建立,每个资源获取完成后不会断开连接,而是继续等待其它的请求完成,默认开启持久连接。虽然效果比较好,但是对并发访问量大的服务器,持久连接会使有些请求得不到响应。可以通过设置限制条件来主动断开连接。
断开条件:
时间限制:以秒为单位, 默认5s,httpd-2.4 支持毫秒级
请求数量: 请求数达到指定值,也会断开
在客户端使用telnet进行测试
(六)DSO
DSO (Dynamic Shared Object):加载动态模块配置,不需重启即生效动态模块所在路径
查看静态编译的模块:httpd -l
查看静态编译及动态装载的模块:httpd -M
其模块存放位置在vim /etc/httpd/conf.modules.d目录下
想要禁用哪个模块,直接打开文件进行注释就可以,前提是了解好模块的作用再决定是否注释或启用
(七)MPM 多路处理模块
httpd 支持三种MPM工作模式:prefork, worker, event
vim /etc/httpd/conf.modules.d/00-mpm.conf
1.prefork模块
开启prefork模块
开启后重新启动服务:systemctl restart httpd
正常开启进程后,会开启五个子进程
注意:startservers与10之间只能有一个空格,否则会出现语法错误
重启服务后会发现,会同时开启10个子进程
StartServers | 最初始开启进程数 |
MinSpareServers | 空闲时最少预留 |
MaxSpareServers | 空闲时最大预留 |
ServerLimit | 最多进程数,最大值 20000 |
MaxRequestWorkers | 最大的并发连接数,默认256 |
MaxConnectionsPerChild | 子进程最多能处理的请求数量。在处理MaxRequestsPerChild 个请求之后,子进程 将会被父进程终止,这时候子进程占用的内存就会释放(为0时永远不释放) |
MaxRequestsPerChild | 从httpd.2.3.9开始被MaxConnectionsPerChild代替 |
2.worker和event 模式相关的配置
ServerLimit | 这个指令限制了服务器可以同时运行的子进程总数。默认情况下,它会设置为与 MaxRequestWorkers相同的值,但在某些情况下,用户可能需要增加此值以支持 更多的并发连接。注意:修改这个值通常需要重新编译Apache |
processes | 在Apache文档中并没有直接对应的processes配置项。但StartServers与此有关, 表示启动时创建的工作进程数量。 |
StartServers | 在worker或event模式下,StartServers指定了Apache启动时应启动多少个工作进程 。每个工作进程内包含多个线程来处理请求。 |
MaxRequestWorkers | 这个参数定义了Apache可以同时处理的最大请求数量,即最多能有多少个客户端请 求被并行服务。这包括所有正在处理和等待处理的请求总数。 |
simultaneously | 这不是一个Apache配置选项,但确实描述了MaxRequestWorkers的作用,即允许 Apache同时处理的请求数量。 |
MinSpareThreads | 指定在任何时刻系统至少要保持的空闲线程数。如果当前的空闲线程数低于这个值, Apache将会创建新的线程。 |
MaxSpareThreads | 定义了在任何时刻系统最多可以存在的空闲线程数。当达到这个数值时,Apache将 停止创建新的线程,即使有更多空闲。 |
ThreadsPerChild | 在worker或event模式下,每个工作进程中包含的线程数。这意味着每个工作进程能 够并行处理多个请求。 |
重启服务后,查看进程数量
(八)定义Main server的文档页面路径
在上面的配置文件中,已经讲解过文档页面路径以及重新定义的方法,下面说一说别名的定义
注释
因为只是做别名,并不需要重新指明文档默认路径,所以不需要在开头行加DocumentRoot而指向的路径为URL路径的起始位置
准备完毕后重启服务:systemctl restart httpd
使用客户机访问test时就相当于访问/data/http/
(九)虚拟主机
httpd 支持在一台物理主机上实现多个网站,即多虚拟主机
虚拟主机:在一台服务器中分出一定的磁盘空间供用户放置网站、存放数据等,仅提供基础的网站访问、数据存放与传输流量功能,能够极大的降低用户费用,也几乎不需要管理员维护除网站数据以外的服务,适合小型网站。
1.基于IP地址
首先,添加一个临时IP,也可以之间添加网卡
将/usr/share/doc/httpd-2.4.6/httpd-vhosts.conf模板文件中的大约23-38行复制到/etc/httpd/conf.d/目录下新建一个以.conf结尾的子配置文件当中
新建一个子配置文件
vim /etc/httpd/conf.d/vhost.conf
<Directory "/data/http">AllowOverride None# Allow open access:Require all granted
</Directory>
#对/data/http目录进行授权<VirtualHost 192.168.83.40> #定义了这个虚拟主机监听的IP地址ServerAdmin root@localhost
#设置服务器管理员邮箱地址,当发生错误时,可能会向这个邮箱发送通知DocumentRoot "/data/http/nice"
#指定网站根目录的位置。访问者通过域名访问时,网页资源将从此路径提供ServerName www.kysw.com
#设置虚拟主机的域名,任何指向www.accp.com的HTTP请求都将匹配到这个虚拟主机配置ErrorLog "/data/http/nice/nice-error_log"
#配置错误日志文件的位置,所有与该虚拟主机相关的错误信息将被记录在这个文件中CustomLog "/data/http/nice/nice-access_log" common
#设置访问日志文件位置,客户端对网站的所有访问请求都会按common格式记录在此日志文件内。
</VirtualHost><VirtualHost 192.168.83.200>ServerAdmin root@localhostDocumentRoot "/data/http/good"ServerName www.kysw.comErrorLog "/data/http/good/good-error_log"CustomLog "/data/http/good/good-access_log" common
</VirtualHost>
重启服务后进行测试:systemctl restart httpd
使用客户端进行测试
2.基于端口号
不需要添加网卡,只需要在IP地址后面添加不同的端口号即可
重启服务后进行测试:systemctl restart httpd
3.基于域名
将不同的路径的servername换成自定的不同的域名
重启服务后进行测试:systemctl restart httpd
在客户端/etc/hosts文件中添加域名解析,将服务端的IP地址与自定义的不同的域名添加进去,通过不同的域名,获取不同的信息
(十)基于客户端 IP 地址实现访问控制
1.黑名单
黑名单,不能有失效,至少有一个成功匹配才成功,即失败优先
在新建的子配置文件中添加以下内容
#这段配置内容描述了对/opt目录及其资源的访问控制规则,并设置了一个别名指向 /test
<directory /opt> #定义一个虚拟目录,这里的路径是服务器上的实际物理路径/opt
<RequireAll> #在此标签内定义的所有条件都必须满足时,用户才能被允许访问该目录
require all granted #表示允许所有用户访问/opt目录下的资源。
require not ip 192.168.83.100 #拒绝192.168.83.100这个IP地址访问
</RequireAll> #结束<RequireAll>标签块
</directory> #结束<directory /opt>标签块。
alias /test /opt/html #别名
在/opt下建立html目录。并在目录下添加一个index.html文件输入内容
拒绝的IP地址十无法访问的
其它地址都可以访问
2.白名单
白名单,多个语句有一个成功,则成功,即成功优先
将子配置文件中的黑名单信息替换为以下内容
#这段配置内容描述了对/opt目录及其资源的访问控制规则,并设置了一个别名指向 /test
<directory /opt> #定义一个虚拟目录,这里的路径是服务器上的实际物理路径/opt
<RequireAny> #在此标签内定义的所有条件都必须满足时,用户才能被允许访问该目录
require all denied #表示拒绝所有用户访问/opt目录下的资源。
require ip 192.168.83.100 #允许192.168.83.100这个IP地址访问
</RequireAny> #结束<RequireAny>标签块
</directory> #结束<directory /opt>标签块。
alias /test /opt/html #别名
所有IP地址都拒绝访问,只有白名单的IP地址可以访问
相关文章:

Apache服务
目录 引言 一、常见的http服务程序 (一)lls (二)nginx (三)Apache (四)Tomcat 二、Apache特点 三、Apache服务的安装 (一)yum安装及配置文件 1.配置…...

【Spring连载】使用Spring Data访问 MongoDB(二)----Template API
【Spring连载】使用Spring Data访问 MongoDB(二)----Template API 一、方便的方法二、执行回调函数Execute Callbacks三、Fluent API四、异常转换五、域类型映射六、配置6.1 默认读取首选项Read Preference6.2 WriteResultChecking策略6.3 默认写安全Wri…...

手写table表格(一表头多数据)
手写table表格(一表头多数据) <template><div class"table-info"><div class"info-list"><div class"header-wrapper"><div class"columns-title" v-for"(i, k) in columns&q…...

python3 flask 实现对config.yaml文件的内容的增删改查,并重启服务
config.yaml配置文件内容 功能就是userpass下的用户名和密码做增删改查,并重启hy2服务 auth:type: userpassuserpass:csdn: csdnlisten: :443 masquerade:proxy:rewriteHost: trueurl: https://www.bing.com/type: proxy tls:cert: /root/hyst*****马赛克******er…...

ADO世界之“对象”
目录 一、Command 对象 1.Command 对象 2.语法 3.属性 4.方法 5.集合 二、Connection 对象 1.Connection 对象 2.语法 3.属性 4.方法 5.事件 6.集合 三、Error 对象 1.Error 对象 2.语法 3.属性 四、Parameter 对象 1.Field 对象 2.语法 3.属性 4.方法 …...

LeetCode59-螺旋矩阵II
参考链接:代码随想录->螺旋矩阵II 关键是学视频链接里面的编码思想,然后背下来 class Solution { public:vector<vector<int>> generateMatrix(int n) {vector<vector<int>> resvector(n,vector<int>(n,0));int sx0,s…...

MySQL 索引原理以及 SQL 优化
索引 索引:一种有序的存储结构,按照单个或者多个列的值进行排序。索引的目的:提升搜索效率。索引分类: 数据结构 B 树索引(映射的是磁盘数据)hash 索引(快速锁定内存数据)全文索引 …...

C++学习Day08之函数模板和普通函数的区别以及调用规则
目录 一、程序及输出1.1 区别1.1.1 自动类型推导,不可以发生隐式类型转换的1.1.2 普通函数 可以发生隐式类型转换 1.2 调用规则 二、分析与总结 一、程序及输出 1.1 区别 1.1.1 自动类型推导,不可以发生隐式类型转换的 1.1.2 普通函数 可以发生隐式类型…...

Kaggle实践之《Home Credit Default Risk》的逐步优化
记录下每一次的改进及其score。 1、只用训练集的特征简单处理 特征只用训练集的特征,把string型的特征全部进行one-hot转化,然后随机1:4分成测试集训练集,模型也调参直接出结果。 最终的score是训练集80.13%、验证集76.33%、线上74.28%。 …...

django rest framework 学习笔记-实战商城2
01收货地址模型类和视图定义_哔哩哔哩_bilibili 本博客借鉴至大佬的视频学习笔记 地址信息的管理:增删改查的实现 # 序列化器配置 class AddrSerializer(serializers.ModelSerializer):"""收货地址的模型序列化器"""class Meta:mo…...

WEB 3D技术 three.js 3D贺卡(4) 添加鼠标滚轮移动屏幕 改变贺卡文字功能
好,上文 WEB 3D技术 three.js 3D贺卡(3) 点光源灯光动画效果 那么 我们来做一下 鼠标滚动相机和滚动时不同文字的切换 首先 我们要设置多个场景 其实也不能完全叫场景 也可以说多个位置 反正简单说就是多个位置 展现多个场景 我们先在代码的最下面 加上一个对象数…...

爬虫在网页抓取的过程中可能会遇到哪些问题?
在网页抓取(爬虫)过程中,开发者可能会遇到多种问题,以下是一些常见问题及其解决方案: 1. IP封锁: 问题:封IP是最常见的问题,抓取的目标网站会识别并封锁频繁请求的IP地址。 解决方案…...

Eclipse中Run As On Server和Run As Java Application
一、名词释义 run java application (作为Java应用程序运行)是运行 java main方法。 run on server是启动一个web 应用服务器。 二、两者的区别 Eclipse中可以创建java project 也可以创建java web poject 。java project是可以直接在命令行运行,或者…...

【MySQL】库的操作——MySQL数据库 、库的操作、表的操作、字符集和校验规则、备份和恢复
文章目录 MySQL1. 库的操作2. 表的操作3. 字符集和校验规则3.1 查看系统默认字符集以及校验规则3.2 查看数据库支持的字符集3.3 查看数据库支持的字符集校验规则 4. 备份和恢复4.1 备份4.2 还原 MySQL 1. 库的操作 连接服务器 mysql -h 127.0.0.1 -P 3306 -u root -pmysql -u…...

pytorch 用F.normalization的逆归一化如何操作
逆归一化的时候再把这个数乘回去就行了 magnitude a.norm(p2, dim1, keepdimTrue) # NEW atorch.nn.functional.normalize(a, p2, dim1) a_or a* magnitude # NEW print(a_or) Outputs: tensor([]1,2,3)...

LabVIEW多通道压力传感器实时动态检测
LabVIEW多通道压力传感器实时动态检测 介绍了一种基于LabVIEW的多通道压力传感器实时动态检测系统,解决压阻式压力传感器温度补偿过程的复杂度,提高测量的准确性。通过自动轮询检测方法,结合硬件检测模型和多通道检测系统设计,本…...

Jenkins解决Host key verification failed (2)
Jenkins解决Host key verification failed 分析原因情况 一、用OpenSSH的人都知ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,避免…...

C#,数值计算,矩阵的乔莱斯基分解(Cholesky decomposition)算法与源代码
一、安德烈路易斯乔尔斯基 安德烈路易斯乔尔斯基出生于法国波尔多以北的查伦特斯海域的蒙古扬。他在波尔多参加了Lyce e,并于1892年11月14日获得学士学位的第一部分,于1893年7月24日获得第二部分。1895年10月15日,乔尔斯基进入莱科尔理工学院…...

docker 备份 mysql
使用 Docker 执行 MySQL 备份是一个实用的操作,可以帮助你确保数据的安全性和可恢复性。这里有一步步的指导帮你完成: 1. 确定 MySQL 容器名称或 ID 首先,你需要知道运行 MySQL 数据库的容器的名称或 ID。可以通过下面的命令查看所有正在运…...

使用C# Net6连接国产达梦数据库记录
达梦官网:http://www.dameng.com/ 1 下载达梦并进行安装 下载地址:官网首页——服务与合作——下载中心(https://www.dameng.com/list_103.html) 根据需要自行下载需要的版本,测试版本为:x86 win64 DM8版…...

docker (八)-dockerfile制作镜像
一 dockerfile dockerfile通常包含以下几个常用命令: FROM ubuntu:18.04 WORKDIR /app COPY . . RUN make . CMD python app.py EXPOSE 80 FROM 打包使用的基础镜像WORKDIR 相当于cd命令,进入工作目录COPY 将宿主机的文件复制到容器内RUN 打包时执…...

springcloud-网关(gateway)
springcloud-网关(gateway) 概述 \Spring Cloud Gateway旨在提供一种简单而有效的方式来路由到API,并为其提供跨领域的关注,如:安全、监控/指标和容错 常用术语 Route(路由): 网关的基本构件。它由一个ID、一个目的地…...

2.20 day2 QT
自由发挥登录窗口的应用场景,实现一个登录窗口界面 #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//窗口相关设置this->setWindowTitle("登入页面"); //设置 窗口 标题this->setWindowIcon(QIcon("D:…...

【C++语法基础】4.分支和循环结构(✨新手推荐阅读)
前言 在C编程中,分支和循环结构是控制程序流程的基本工具。分支结构允许程序根据特定条件执行不同的代码块,而循环结构则允许程序重复执行某个代码块。 分支结构 if 语句 if 语句是最基本的分支结构,它根据条件的真假来决定是否执行某段代…...

朋友圈程序全开源版源码,附带系统搭建教程
前台一键发布图文,视频,音乐。发布内容支持定位或自定义位置信息。支持将发布内容设为广告模式消息站内通知或邮件通知。支持其他用户注册,支持其他用户发布文章,管理自己的文章。拥有丰富的后台管理功能,一键操作。安装环境 Nginx ≥1.22 …...

思维方式系列文章目录 -《清单革命》实践
思维方式系列文章目录 -《清单革命》 文章目录 思维方式系列文章目录 -《清单革命》前言一、《清单革命》思维导图二、清单制作原则 前言 请记住,现在开始心灵转变,人人都会犯错,而错误分为:无知之错、无能之错。 无知之错&#…...

RAID 创建使用以及ubuntu安装和使用zfs文件系统及Ubuntu软件安装
RAID 创建使用 部署 RAID 10 的学习 1. 搭建 RAID 10 就是 RAID 1 加上 RAID 0,准备四块磁盘,用于创建 RAID 10,配置vmware虚拟机,创建四个虚拟硬盘。 2. 检查磁盘信息 rootubuntu:~# ls /dev/sd* /dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/s…...

yarn常用命令小记
安装 npm install -g yarn查看版本 yarn -v初始化项目与依赖管理 yarn init:与npm init一样通过交互式会话生成一个新的package.jason文件以初始化项目;跳过会话可使用yarn init --yes,简写yarn init -yyarn add <package><versi…...

防御保护---内容保护
文章目录 目录 文章目录 一.防火墙内容安全概述 二.深度识别技术(DFI/DPI) 深度包检测技术(DPI) 深度流检测技术(DFI) 两者区别 三.入侵防御IPS 一.防火墙内容安全概述 防火墙内容安全是防火墙的一个重…...

jquery将网页html文档导出为pdf图片
jquery将网页html文档导出为pdf图片 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&q…...