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

http协议工具:apache详解

目录

一、常见的http服务程序

1、 Apache HTTP Server 介绍

1.1 apache 概念

1.2 apache 功能

1.3 apache 特性

2、MPM(multi-processing module)工作模式

2.1 prefork

2.2 worker

2.3 event

二、Apache HTTP Server安装和相关文件

1、安装方式

1.1 yum安装

1.2 编译安装

2、 httpd-2.4 相关文件

3、httpd服务控制

4、httpd命令使用

三、Apache HTTP Server常用的配置

1、指定服务器名

2、包含其他配置文件

3、隐藏服务器版本信息

4、监听地址

5、持久连接

6、DSO (Dynamic Shared Object)

7、 MPM  (Multi-Processing Module)多路处理模块

7.1 MPM模块的工作类型

7.2 Prefork模块相关配置

7.3 Worker与event模块相关配置

8、定义Main server的文档页面路径

8.1 修改文档页面的默认路径

8.2 设置文档页面路径的别名alias

9、定义站点默认主页面文件

10、针对目录和URL实现访问控制

11、配置虚拟主机

11.1 基于IP地址

11.2 基于端口号

11.3 基于域名

 12、基于客户端IP地址实现控制访问

12.1 设置黑名单

​12.2 设置白名单


一、常见的http服务程序

  • Apache HTTP Server:也称为Apache,是一个开源的HTTP服务器,目前是全球使用最广泛的Web服务器

  • Nginx:Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器

  • Microsoft Internet Information Services (IIS):IIS是由微软开发的一种Web服务器软件,用于在Windows操作系统上提供服务

  • Lighttpd:Lighttpd是一个开源的Web服务器,具有低内存占用和高并发处理能力

  • Node.js:Node.js本身并不是一个HTTP服务器,但它可以通过HTTP模块创建一个HTTP服务器,因此也可以用作HTTP服务程序

  • Tomcat:Tomcat是一个开源的Java Servlet容器,用于在Java平台上提供HTTP服务

  • Jetty:Jetty是一个开源的Java HTTP服务器和Servlet容器,具有高性能和低内存占用的特点

  • Caddy:Caddy是一个现代的,易于使用的HTTP/2服务器,具有自动HTTPS功能

1、 Apache HTTP Server 介绍

1.1 apache 概念

Apache HTTP Server,通常简称为Apache,是一个开源的HTTP服务器软件,由Apache软件基金会开发和维护。它是全球使用最广泛的Web服务器,其市场份额最高

apache官网: www.apache.org

1.2 apache 功能

  • 提供http协议服务

  • 多个虚拟主机:IP、Port、FQDN

  • CGI:Common Gateway Interface,通用网关接口,支持动态程序

  • 反向代理

  • 负载均衡

  • 路径别名

  • 丰富的用户认证机制:basic,digest

  • 支持第三方模块

1.3 apache 特性

  • 高度模块化:core + modules

  • DSO:Dynamic Shared Object 动态加载/卸载

  • MPM:multi-processing module 多路处理模块

2、MPM(multi-processing module)工作模式

2.1 prefork

多进程I/O模型,每个进程响应一个请求,CentOS 7 httpd默认模型一个主进程:生成和回收n个子进程,创建套接字,不响应请求多个子进程:工作 work进程,每个子进程处理一个请求;系统初始时,预先生成多个空闲进程,等待请求

Prefork MPM预派生模式,有一个主控制进程,然后生成多个子进程,每个子进程有一个独立的线程响应用户请求,相对比较占用内存,但是比较稳定,可以设置最大和最小进程数,是最古老的一种模式,也是最稳定的模式,适用于访问量不是很大的场景

  • 优点:
    • 稳定性高,即使某个请求出现问题也不会影响其他请求
    • 适合处理非常稳定的工作负载,因为每个请求都有独立的进程
  • 缺点:
    • 消耗更多的内存,因为每个进程都需要一定量的内存
    • 处理高并发请求时效率稍低

2.2 worker

复用的多进程I/O模型,多进程多线程,IIS使用此模型

一个主进程:生成m个子进程,每个子进程负责生个n个线程,每个线程响应一个请求,并发响应请求:m*n

worker MPM是一种多进程和多线程混合的模型,有一个控制进程,启动多个子进程,每个子进程里面包含固定的线程,使用线程程来处理请求,当线程不够使用的时候会再启动一个新的子进程,然后在进程里面再启动线程处理请求,由于其使用了线程处理请求,因此可以承受更高的并发

  • 优点:
    • 相比Prefork,内存消耗更低,因为线程共享同一进程的资源
    • 能够更高效地处理并发请求
  • 缺点:
    • 稳定性较差,如果某个线程崩溃,可能会影响整个进程,导致其他请求受到影响
    • 使用keep-alive的长连接方式,某个线程会一直被占据,即使没有传输数据,也需要一直等待到超时才会被释放。如果过多的线程,被这样占据,也会导致在高并发场景下的无服务线程可用

2.3 event

Event模式是在Worker模式的基础上改进而来,它引入了异步事件处理机制,可以更有效地处理大量并发连接

事件驱动模型(worker模型的变种),CentOS8 默认模型

一个主进程:生成m个子进程,每个子进程负责生个n个线程,每个线程响应一个请求,并发响应请求:m*n,有专门的监控线程来管理这些keep-alive类型的线程,当有真实请求时,将请求传递给服务线程,执行完毕后,又允许释放。这样增强了高并发场景下的请求处理能力

  • 优点:
    • 单线程响应多请求,占据更少的内存,高并发下表现更优秀,会有一个专门的线程来管理keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放
    • 在高并发情况下表现更出色,因为采用了异步事件处理
    • 内存消耗更低
  • 缺点:
    • 可能会引入一些复杂性,需要更仔细地处理事件驱动的编程模型
    • 没有线程安全控制

二、Apache HTTP Server安装和相关文件

#版本说明:
CentOS 7 以上,默认系统是httpd 2.4,CentOS 6 版默认为httpd 2.2
Ubuntu 18.04 默认 Apache/2.4.29

1、安装方式

1.1 yum安装

centos发行版,稳定,建议使用

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

1.2 编译安装

有定制或特殊需求

前提:安装httpd-2.4,依赖于apr-1.4+, apr-util-1.4+

#安装相关包:
[root@centos7 ~]#yum -y install gcc make pcre-devel openssl-devel expat-devel
#下载源代码并解压缩:
[root@centos7 ~]#wget https://downloads.apache.org/apr/apr-1.7.0.tar.bz2
[root@centos7 ~]#wget https://downloads.apache.org//apr/apr-util-1.6.1.tar.bz2
[root@centos7 ~]#wget https://downloads.apache.org//httpd/httpd-2.4.46.tar.bz2
[root@centos7 ~]#ls
httpd-2.4.46.tar.bz2,apr-1.7.0.tar.bz2,apr-util-1.6.1.tar.bz2
[root@centos7 ~]#tar xvf apr-1.7.0.tar.bz2
[root@centos7 ~]#tar xvf apr-util-1.6.1.tar.bz2
[root@centos7 ~]#tar xvf httpd-2.4.46.tar.bz2
[root@centos7 ~]#mv apr-1.7.0 httpd-2.4.46/srclib/apr
[root@centos7 ~]#mv apr-util-1.6.1 httpd-2.4.46/srclib/apr-util
[root@centos7 ~]#ls httpd-2.4.46/srclib/
[root@centos7 ~]#apr apr-util Makefile.in
#脚本运行编译安装
[root@localhost ~]#vim apaz.sh
#!/bin/bash
#Description: httpd source code install
#下载源码包
target_dir=/usr/local/src
install_dir=/usr/local/httpd
download_url=https://mirror.bit.edu.cn/apache/httpd/httpd-2.4.46.tar.bz2
file_name=${download_url##*/}
uncompress_dir=${file_name%.tar*}
rpm -q wget || yum install -y wget
wget -O $target_dir/$file_name $download_url
#安装依赖包
yum install -y gcc make apr-devel apr-util-devel pcre-devel openssl-devel 
redhat-rpm-config
#添加apache用户
id apache &> /dev/null || useradd -r -u 80 -d /var/www -s /sbin/nologin apache
#解压源码包
tar xf $target_dir/$file_name -C $target_dir
cd $target_dir/$uncompress_dir
#编译安装
./configure --prefix=$install_dir --sysconfdir=/etc/httpd --enable-ssl
make -j`lscpu | grep "^CPU(s)" | awk '{print $NF}'` && make install
#设置环境变量
echo 'PATH='$install_dir'/bin:$PATH' > /etc/profile.d/httpd.sh
source /etc/profile.d/httpd.sh
#修改配置文件
sed -ri 's#(User )daemon#\1apache#' /etc/httpd/httpd.conf
sed -ri 's#(Group )daemon#\1apache#' /etc/httpd/httpd.conf
#启动httpd服务
cat > /lib/systemd/system/httpd.service << EOF
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=man:httpd(8)
Documentation=man:apachectl(8)
[Service]
Type=forking
ExecStart=/usr/local/httpd/bin/apachectl start
ExecReload=/usr/local/httpd/bin/apachectl graceful
ExecStop=/usr/local/httpd/bin/apachectl stop
KillSignal=SIGCONT
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable httpd.service
systemctl start httpd.service

2、 httpd-2.4 相关文件

主要配置文件
/etc/httpd/conf/httpd.conf主配置文件
/etc/httpd/conf.d/*.conf子配置文件
/etc/httpd/conf.d/conf.modules.d/模块加载的配置文件
/usr/lib/systemd/system/httpd.service服务单元文件
/etc/sysconfig/httpd服务器的配置文件,包含了一些环境变量和选项
/etc/httpd/modules/usr/lib64/httpd/modules模块文件路径
/usr/sbin/httpd主服务器程序文件
/var/www/html站点网页文档根目录

3、httpd服务控制

  • systemctl enable|disable httpd.service

  • systemctl {start|stop|restart|status|reload} httpd.service

  • apachectl start|stop|restart|configtest

  • service httpd start|stop|restart|configtest

4、httpd命令使用

#检查配置语法
httpd -t

#查看当前系统httpd版本信息
httpd -v

三、Apache HTTP Server常用的配置

前提:下面将修改httpd的主配置文件:/etc/httpd/conf/httpd.conf,可能在修改的过程中会出现很多错误,为避免错误无法挽回,先备份一下配置文件

[root@localhost ~]#cd /etc/httpd/conf
[root@localhost conf]#cp httpd.conf httpd.bak

1、指定服务器名

[root@localhost ~]#httpd -t      #查看httpd配置文件是否出错
[root@localhost ~]#vim /etc/httpd/conf/httpd.conf 
ServerName www.example.com:80            #开启ServerName配置
[root@localhost ~]#httpd -t

 2、包含其他配置文件

#指令
Include file-path|directory-path|wildcard
IncludeOptional file-path|directory-path|wildcard

注:

  • Include和IncludeOptional功能相同,都可以包括其它配置文件

  • 但是当无匹配文件时,include会报错,IncludeOptional会忽略错误

include子配置文件:

总目录: 

3、隐藏服务器版本信息

#相关语法
ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full#相关指令
ServerTokens Prod[uctOnly] :Server: Apache
ServerTokens Major: Server: Apache/2
ServerTokens Minor: Server: Apache/2.0
ServerTokens Min[imal]: Server: Apache/2.0.41
ServerTokens OS: Server: Apache/2.0.41 (Unix)
ServerTokens Full (or not specified): Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2 此为默认值
#在服务器上修改主配置文件或者子配置文件
[root@localhost ~]#vim /etc/httpd/conf/httpd.conf
servertokens prod
#或者
[root@localhost ~]#vim /etc/httpd/conf.d/dh.conf
servertokens prod
[root@localhost ~]#systemctl restart httpd

4、监听地址

#省略IP表示监听本机所有IP地址的特定端口
Listen PORT#指定IP地址表示监听该IP地址的特点端口
Listen IP:PORT#主:Listen指令至少一个,可重复出现多次
#服务器httpd配置
[root@localhost ~]#vim /etc/httpd/conf/httpd.conf
Listen 80
Listen 9527
[root@localhost ~]#systemctl restart httpd
[root@localhost ~]#ifconfig ens33:0 172.16.12.100
#客户端测试操作
[root@localhost ~]#curl 172.16.12.10
[root@localhost ~]#curl 172.16.12.100
[root@localhost ~]#curl 172.16.12.10:9527
[root@localhost ~]#curl 172.16.12.10:9527

httpd服务器配置: 

客户端测试: 

#服务器httpd配置
[root@localhost ~]#vim /etc/httpd/conf/httpd.conf
Listen 172.16.12.10:80
Listen 172.16.12.10:9527
[root@localhost ~]#systemctl restart httpd
[root@localhost ~]#ifconfig ens33:0 172.16.12.100
#客户端测试操作
[root@localhost ~]#curl 172.16.12.10
[root@localhost ~]#curl 172.16.12.10:9527
[root@localhost ~]#curl 172.16.12.100
[root@localhost ~]#curl 172.16.12.100:9527

5、持久连接

Persistent Connection:连接建立,每个资源获取完成后不会断开连接,而是继续等待其它的请求完成,默认开启持久连接

断开条件:

  • 时间限制:以秒为单位, 默认5s,httpd-2.4 支持毫秒级
  • 请求数量: 请求数达到指定值,也会断开

副作用:对并发访问量大的服务器,持久连接会使有些请求得不到响应

折衷:使用较短的持久连接时间

#持久连接相关配置语句
KeepAlive On|Off         #开启或关闭持久连接
KeepAliveTimeout 300     #连接持续300s,可以以ms为单位,默认值为5s
MaxKeepAliveRequests 2   #持久连接最大接收的请求数,默认值100

6、DSO (Dynamic Shared Object)

Dynamic Shared Object,一种在运行时加载并链接到应用程序的库。这种库在Linux系统中通常以.so文件扩展名结尾,可加载动态模块配置,无需重启即生效动态模块所在路径

#查看静态编译的模块
[root@localhost ~]#httpd -l

#查看静态编译及动态装载的模块
[root@localhost ~]#httpd -M

7、 MPM  (Multi-Processing Module)多路处理模块

7.1 MPM模块的工作类型

Prefork MPM:这是Apache的默认MPM。它使用多个独立的进程来处理请求,每个进程都有自己的内存空间,这样可以确保一个进程的崩溃不会影响到其他进程。然而,由于进程之间的切换开销较大,Prefork MPM的性能相对较低。

Worker MPM:这种MPM使用多个线程来处理请求,每个线程都可以处理一个请求。由于线程之间的切换开销较小,Worker MPM的性能相对较高。然而,由于线程共享同一内存空间,一个线程的崩溃可能会影响到其他线程。

Event MPM:这种MPM是Worker MPM的改进版本。它使用了更高效的事件驱动模型,可以进一步提高服务器的性能。Event MPM在处理长连接(如HTTP Keep-Alive)时特别有效,因为它可以在一个连接上处理多个请求

7.2 Prefork模块相关配置

#httpd关于prefork模式相关配置语句
StartServers      100
MinSpareServers   50
MaxSpareServers   80
ServerLimit       2560         #最多进程数,最大值 20000
MaxRequestWorkers  2560        #最大的并发连接数,默认256
MaxConnectionsPerChild  4000   #子进程最多能处理的请求数量。在处理MaxRequestsPerChild 个
请求之后,子进程将会被父进程终止,这时候子进程占用的内存就会释放(为0时永远不释放)
MaxRequestsPerChild 4000       #从httpd.2.3.9开始被MaxConnectionsPerChild代替
[root@localhost ~]#cd /etc/httpd/conf.modules.d/
[root@localhost conf.modules.d]#vim 00-mpm.conf
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
startservers 10
[root@localhost ~]#pstree -p | grep httpd
[root@localhost ~]#systemctl restart httpd
[root@localhost ~]#pstree -p | grep httpd

7.3 Worker与event模块相关配置

#httpd关于Worker和event模式相关配置语句
ServerLimit         16  #最多worker进程数 Upper limit on configurable number of 
processes
StartServers        10  #Number of child server processes created at startup
MaxRequestWorkers  150  #Maximum number of connections that will be processed 
simultaneously
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25   #Number of threads created by each child process

8、定义Main server的文档页面路径

8.1 修改文档页面的默认路径

#说明:DocumentRoot指向的路径为URL路径的起始位置,/path必须显式授权后才可以访问
DocumentRoot   "/path”
<directory /path>Require all granted
</directory>
#httpd服务器配置
[root@localhost ~]#vim /etc/httpd/conf/httpd.conf
DocumentRoot "/opt/html"
<Directory "/opt/html">AllowOverride None# Allow open access:Require all granted
</Directory>
[root@localhost ~]#mkdir /opt/html
[root@localhost ~]#cd /opt/html
[root@localhost html]#echo "nihao"> index.html
[root@localhost html]#echo "hello">/var/www/html/index.html
[root@localhost html]#systemctl restart httpd
#客户端检测
[root@localhost ~]#curl 172.16.12.10

httpd服务器配置: 

客户端测试: 

 8.2 设置文档页面路径的别名alias

#httpd服务器配置
[root@localhost ~]#vim /etc/httpd/conf.d/dh.conf
DocumentRoot "/opt/html"
<Directory "/opt/html">AllowOverride None# Allow open access:Require all granted
</Directory>
alias /mnt /opt/html
[root@localhost html]#systemctl restart httpd
#客户端检测
[root@localhost ~]#curl 172.16.12.10/mnt/

httpd服务器配置: 

客户端测试: 

9、定义站点默认主页面文件

#httpd服务器配置
[root@localhost html]#vim /etc/httpd/conf/httpd.conf
<IfModule dir_module>DirectoryIndex xzf.txt index.html
</IfModule>
[root@localhost html]#systemctl restart httpd
[root@localhost ~]#cd /opt/html
[root@localhost html]#echo "yyyyy"> xzf.txt
[root@localhost html]#cat index.html
#客户端测试
[root@localhost ~]#curl 172.16.12.10

httpd服务器配置: 

客户端测试: 

10、针对目录和URL实现访问控制

Options 指令

后跟1个或多个以空白字符分隔的选项列表,在选项前的+,-表示增加或删除指定选项

常用选项说明
Indexes指明的URL路径下不存在与定义的主页面资源相符的资源文件时,返回索引列表给用户
FollowSymLinks允许访问符号链接文件所指向的源文件
None全部禁用
AIl

全部允许

Options 可以写在 目录里<>  也可以写在外面
#指明的URL路径下不存在与定义的主页面资源相符的资源文件时,返回索引列表给用户
options Indexes

httpd服务器配置: 

客户端测试: 

#允许访问符号链接文件所指向的源文件
options Indexes FollowSymLinks

httpd服务器配置:

客户端测试: 

11、配置虚拟主机

httpd 支持在一台物理主机上实现多个网站,即多虚拟主机

网站的唯一标识:

  • IP相同,但端口不同
  • IP不同,但端口均为默认端口
  • FQDN不同, IP和端口都相同

多虚拟主机有三种实现方案:

  • 基于ip:为每个虚拟主机准备至少一个ip地址
  • 基于port:为每个虚拟主机使用至少一个独立的port
  • 基于FQDN:为每个虚拟主机使用至少一个FQDN,请求报文中首部

基于ip地址:

172.16.12.10 ---------> jd

172.16.12.100  ---------> taobao

基于端口:

172.16.12.10:80 ---------> jd

172.16.12.10:9527 ---------> taobao

基于域名:

www.lucky.com  --------> ji

www.cloud.com  ---------> taobao

11.1 基于IP地址

#httpd服务器配置
[root@localhost html]#vim /etc/httpd/conf.d/dh.conf
DocumentRoot "/opt/html"
<Directory "/opt/html">AllowOverride None# Allow open access:Require all grantedoptions Indexes FollowSymLinks
</Directory>
alias /mnt /opt/html<VirtualHost 172.16.12.10>ServerAdmin support@jfedu.netDocumentRoot "/opt/html/10"ServerName www.accp.comErrorLog "logs/10_error_log"CustomLog "logs/10_access_log" common
</VirtualHost><VirtualHost 172.16.12.100>ServerAdmin support@jfedu.netDocumentRoot "/opt/html/100"ServerName www.accp.comErrorLog "logs/100_error_log"CustomLog "logs/100_access_log" common
</VirtualHost>
[root@localhost html]#systemctl restart httpd
[root@localhost html]#ifconfig ens33:0 172.16.12.100
[root@localhost html]#rm -rf *
[root@localhost html]#mkdir 10 100
[root@localhost html]#echo jd > 10/index.html
[root@localhost html]#echo taobao > 100/index.html
#客户端测试
[root@localhost ~]#curl 172.16.12.10
[root@localhost ~]#curl 172.16.12.100

测试:

11.2 基于端口号

[root@localhost html]#vim /etc/httpd/conf.d/dh.conf
Listen 9527
DocumentRoot "/opt/html"
<Directory "/opt/html">AllowOverride None# Allow open access:Require all grantedoptions Indexes FollowSymLinks
</Directory>
alias /mnt /opt/html<VirtualHost 172.16.12.10:80>ServerAdmin support@jfedu.netDocumentRoot "/opt/html/10"ServerName www.accp.com
</VirtualHost><VirtualHost 172.16.12.10:9527>ServerAdmin support@jfedu.netDocumentRoot "/opt/html/100"ServerName www.accp.com
</VirtualHost>
[root@localhost html]#systemctl restart httpd

httpd服务器配置: 

客户端测试: 

11.3 基于域名

[root@localhost html]#vim /etc/httpd/conf.d/dh.conf
Listen 80
DocumentRoot "/opt/html"
<Directory "/opt/html">AllowOverride None# Allow open access:Require all grantedoptions Indexes FollowSymLinks
</Directory>
alias /mnt /opt/html<VirtualHost 172.16.12.10>ServerAdmin support@jfedu.netDocumentRoot "/opt/html/10"ServerName www.lucky.com
</VirtualHost><VirtualHost 172.16.12.10>ServerAdmin support@jfedu.netDocumentRoot "/opt/html/100"ServerName www.cloud.com
</VirtualHost>
[root@localhost html]#vim /etc/httpd/conf.d/dh.conf

httpd服务器操作: 

客户端测试: 

 12、基于客户端IP地址实现控制访问

12.1 设置黑名单

拒绝黑名单内的IP地址访问服务器

[root@localhost html]#vim /etc/httpd/conf.d/mingdan.conf
DocumentRoot "/opt/html"
<Directory "/opt/html">
<RequireAll>Require all grantedRequire not ip 172.16.12.12  #拒绝特定ip
</RequireAll>
</directory>
[root@localhost html]#systemctl restart httpd

httpd服务器配置:

客户端测试: 

12.2 设置白名单

只允许白名单内的ip访问服务器

[root@localhost html]#vim /etc/httpd/conf.d/mingdan.conf
DocumentRoot "/opt/html"
<Directory "/opt/html">
<RequireAny>Require all deniedRequire ip 172.16.12.12  #只允许特定ip访问
</RequireAny>
</directory>
[root@localhost html]#systemctl restart httpd

客户端测试:

相关文章:

http协议工具:apache详解

目录 一、常见的http服务程序 1、 Apache HTTP Server 介绍 1.1 apache 概念 1.2 apache 功能 1.3 apache 特性 2、MPM&#xff08;multi-processing module&#xff09;工作模式 2.1 prefork 2.2 worker 2.3 event 二、Apache HTTP Server安装和相关文件 1、安装方…...

我的NPI项目之Android Camera (二) -- 核心部件之 Camera Sensor

说到Camera模组&#xff0c;我们比较关心的是用的什么样的sensor&#xff1f; sensor的分辨率多少&#xff0c;sensor的像素多大&#xff0c;sensor是哪家生产的等等一些问题。今天&#xff0c;我们就穿越时间&#xff0c;将sensor的历史扒一扒。 Wikipedia先看一下&#xff1…...

【四】3D Object Model之测量Features——get_object_model_3d_params()算子

&#x1f60a;&#x1f60a;&#x1f60a;欢迎来到本博客&#x1f60a;&#x1f60a;&#x1f60a; &#x1f31f;&#x1f31f;&#x1f31f; Halcon算子太多&#xff0c;学习查找都没有系统的学习查找路径&#xff0c;本专栏主要分享Halcon各类算子含义及用法&#xff0c;有…...

C++学习Day09之系统标准异常

目录 一、程序及输出1.1 系统标准异常示例1.2 标准异常表格 二、分析与总结 一、程序及输出 1.1 系统标准异常示例 #include<iostream> using namespace std; #include <stdexcept> // std 标准 except 异常class Person { public:Person(int age){if (age <…...

企业计算机服务器中了crypt勒索病毒怎么办,crypt勒索病毒解密数据恢复

计算机服务器设备为企业的生产运营提供了极大便利&#xff0c;企业的重要核心数据大多都存储在计算机服务器中&#xff0c;保护企业计算机服务器免遭勒索病毒攻击&#xff0c;是一项艰巨的工作任务。但即便很多企业都做好的了安全运维工作&#xff0c;依旧免不了被勒索病毒攻击…...

npm详解:掌握package.json配置

package.json 文件中的 scripts 配置允许你定义一系列脚本命令&#xff0c;这些命令可以通过 npm run <script-name> 来执行。下面是一些常见的 scripts 配置&#xff0c;以及它们的详解和举例。 常见的 scripts 配置 start 这是最常用的脚本&#xff0c;通常用于启动应…...

Git基础操作

1、git 基础命令 //克隆远端仓库 git clone http://dddddd.git //初始化仓库 git init //查看状态 git status //添加所有文件到缓存区 git add . //查看版本日志 git reflog //将更新提交到本地仓库 git commit -m "日志摘要" //将当前版本回退到某个版本 git rese…...

怎么卸载Nvidia显卡驱动

在Ubuntu 22.04上卸载Nvidia显卡驱动并手动重新安装的步骤可以分为几个主要部分。请确保在执行这些步骤之前&#xff0c;你已经备份了重要的数据&#xff0c;以防出现任何问题。 卸载当前的Nvidia驱动 打开终端&#xff1a;你可以通过按CtrlAltT快捷键来打开终端。 查找安装的…...

JS进阶——解构赋值

数组解构 基本&#xff1a; let [a, b, c] [1, 2, 3]; // a 1 // b 2 // c 3 可嵌套 let [a, [[b], c]] [1, [[2], 3]]; // a 1 // b 2 // c 3 可忽略 let [a, , b] [1, 2, 3]; // a 1 // b 3 不完全解构 let [a 1, b] []; // a 1, b undefined 剩余运…...

[Flask]SSTI1 buuctf

声明&#xff1a;本篇文章csdn要我一天发两篇所以我来水的 跟ssti注入的详细知识我这里写了 https://blog.csdn.net/weixin_74790320/article/details/136154130 上面链接我复现了vulhub的SSTI&#xff0c;其实本质上是一道题 然后我们就用{{.__class__}}看类的类型&#xf…...

k8s学习整理文档

整理文档 ‍ ‍ 实验环境 服务器 最低配置要求: 2 核虚拟 CPU4 GB 内存20 GB 储存空间X 4 台 (三台集群,一台镜像仓库服务器) 网络环境 由于搭建网络需要,同时要让各个主机互通,因此这里需要对云服务器设置专门的网络(同时也需要开放服务器对应的公网 IP) 在云…...

git----->git pull和git fetch区别

git pull 和 git fetch 是 Git 中两个常用的命令&#xff0c;它们都用于从远程仓库获取最新的内容。然而&#xff0c;它们的行为有所不同&#xff1a; git fetch: git fetch 命令用于从远程仓库获取最新的历史记录和数据&#xff0c;但它不会自动合并或修改你当前的工作。它只是…...

如何使用Docker部署MongoDB并结合内网穿透实现远程访问本地数据库

文章目录 前言1. 安装Docker2. 使用Docker拉取MongoDB镜像3. 创建并启动MongoDB容器4. 本地连接测试5. 公网远程访问本地MongoDB容器5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 …...

适用于 Windows 的 12 个最佳 PDF 编辑器

PDF文档的普遍存在按理说&#xff0c;PDF文档的可读性和可移植性受到专业文档的青睐。 然而&#xff0c;PDF格式的可食用性是一大缺陷。幸运的是&#xff0c;各种 PDF 编辑工具和软件使 PDF 的编辑变得更加容易&#xff0c;这篇文章旨在帮助我们的读者找到其中最好的工具和软件…...

C++面试:SQL注入、web shell攻击的危害和规避方法

目录 SQL注入 工作原理 危害 规避方法 示例背景 Web Shell攻击 工作原理 危害 规避方法 SQL注入和Web Shell攻击是两种常见的网络安全威胁&#xff0c;它们可以对系统造成严重的危害。了解它们的工作原理、危害以及如何规避是网络安全防护的基本要求。下面将详细介绍这…...

计算机网络基础之计算机网络组成与分类

计算机网络基础 计算机网络是计算机技术与通信技术发展相结合的产物&#xff0c;并在用户需求的促进下得到进一步的发展。通信技术为计算机之间的数据传输和交换提供了必需的手段&#xff0c;而计算机技术又渗透到了通信领域&#xff0c;提高了通信网络的性能。 计算机网络的…...

怎么使用Git进行版本恢复

场景 在实际工作过程中&#xff0c;有时候会出现以下问题&#xff1a; 1.在使用git对代码进行远程仓库托管时&#xff0c;会出现误操作&#xff0c;怎么恢复上一个版本或指定历史版本&#xff1f; 2.git 误操作&#xff0c;将代码提交到 master 主分支&#xff0c;怎么恢复 …...

三防平板电脑丨亿道工业三防平板丨三防平板定制丨机场维修应用

随着全球航空交通的增长和机场运营的扩展&#xff0c;机场维护的重要性日益凸显。为确保机场设施的安全和顺畅运行&#xff0c;采取适当的措施来加强机场维护至关重要。其中&#xff0c;三防平板是一种有效的工具&#xff0c;它可以提供持久耐用的表面保护&#xff0c;使机场维…...

基于深度学习的红肉新鲜过期判决系统matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 系统构成与流程 4.2 模型训练与优化 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 ...............................................…...

mysql 锁详解

目录 前言 一、全局锁 二、表级锁 三、行锁 前言 为什么要设计锁&#xff0c;锁设计初衷是为了解决多线程下并发问题。出现并发的时候用锁进行数据同步&#xff0c;避免因并发造成了数据错误(数据覆盖)。可见锁的重要性&#xff0c;并不是所有的数据库都有锁。比如Redis&a…...

【PX4-AutoPilot教程-TIPS】PX4控制无人机在Gazebo中飞行时由于视角跟随无人机在画面中心导致视角乱晃的解决方法

PX4控制无人机在Gazebo中飞行时由于视角跟随无人机在画面中心导致视角乱晃的解决方法 问题描述解决方法 问题描述 无人机在Gazebo中飞行时&#xff0c;无人机始终处于画面中央&#xff0c;会带着视角乱晃&#xff0c;在Gazebo中进行任何操作视角都无法固定。 观察Gazebo左侧Wo…...

五种多目标优化算法(NSGA2、MOPSO、MSSA、MOGWO、NSWOA)求解9个测试函数,包含6种评价指标(提供MATLAB代码)

一、5种多目标优化算法简介 1.1NSGA2 1.2MOPSO 1.3MSSA 1.4MOGWO 1.5NSWOA 二、5种多目标优化算法性能对比 为了测试5种算法的性能将其求解9个多目标测试函数&#xff08;zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3&#xff09;&#xff0…...

Sora--首个大型视频生成模型

Sora--首个大型视频生成模型 胡锡进于2024年2月20日认为&#xff1a;台当局怂了 新的改变世界模拟器视觉数据转换视频压缩时空补丁&#xff08;Spacetime Laten Patches&#xff09;视频生成扩展变压器算法和模型架构结语 胡锡进于2024年2月20日认为&#xff1a;台当局怂了 **T…...

关于 Reflect 的笔记

背景&#xff1a;Reflect 为了操作对象而提供的新Api 和 Proxy对象一样 特点 将object 对象的一些明显属于语言内部的方法&#xff0c;放到Reflect 上处理&#xff1b;修改某些object返回的异常结果&#xff0c;让其变得更合理&#xff1b;让object操作都变成函数行为&#xf…...

week04day02(爬虫02)

<span>: 通常用于对文本的一部分进行样式设置或脚本操作。<a>: 定义超链接&#xff0c;用于创建链接到其他页面或资源的文本。<img>: 用于插入图像。<br>: 用于插入换行。 姓名&#xff1a;<input type"text" value"lisi">…...

【C++初阶】类和对象(中)

目录 一.类的6个默认成员函数 1.知识引入 ​编辑 2.构造函数 (1)概念 (2)语法特性 (3)特征 ①问题引入1 ②问题引入2 &#xff08;缺少默认构造函数&#xff09; 3.析构函数 (1)概念 (2)特性 4.拷贝构造函数 (1)概念 (2)特征 ①拷贝构造函数是构造函数的一…...

Python爬虫知识图谱

下面是一份详细的Python爬虫知识图谱&#xff0c;涵盖了从基础入门到进阶实战的各个环节&#xff0c;涉及网络请求、页面解析、数据提取、存储优化、反爬策略应对以及法律伦理等多个方面&#xff0c;并配以关键点解析和代码案例&#xff0c;以供读者深入学习和实践。 一、Pyth…...

安宝特AR汽车行业解决方案系列1-远程培训

在汽车行业中&#xff0c;AR技术的应用正悄然改变着整个产业链的运作方式&#xff0c;应用涵盖培训、汽修、汽车售后、PDI交付、质检以及汽车装配等&#xff0c;AR技术为多个环节都带来了前所未有的便利与效率提升。 安宝特AR将以系列推文的形式为读者逐一介绍在汽车行业中安宝…...

微服务篇之分布式系统理论

一、CAP定理 1.什么是CAP 1998年&#xff0c;加州大学的计算机科学家 Eric Brewer 提出&#xff0c;分布式系统有三个指标&#xff1a; 1. Consistency&#xff08;一致性&#xff09;。 2. Availability&#xff08;可用性&#xff09;。 3. Partition tolerance &#xff0…...

MLflow【部署 01】MLflow官网Quick Start实操(一篇学会部署使用MLflow)

一篇学会部署使用MLflow 1.版本及环境2.官方步骤Step-1 Get MLflowStep-2 Start a Tracking ServerStep 3 - Train a model and prepare metadata for loggingStep 4 - Log the model and its metadata to MLflowStep 5 - Load the model as a Python Function (pyfunc) and us…...