web基础+HTTP协议+httpd详细配置
目目录录
- 一、Web基础
- 1.1 HTML概述
- 1.1.1 HTML的文件结构
- 1.1.2 HTML中的部分基本标签
- 1.3 MIME
- 1.4 URI 和 URL
- 1.4 定义
- 1.4.2 URI 和 URL 的区别
- 二、静态资源和动态资源
- 2.1 静态资源
- 2.2 动态资源
- 三、HTTP协议
- 3.1 HTTP协议简介
- 3.2 HTTP协议版本
- 3.2 HTTP方法
- 3.3 HTTP请求访问的完整过程
- 3.4 HTTP状态码
- 3.5 HTTP的请求报文和响应报文
- 3.5.1 请求报文
- 3.5.2 响应报文
- 3.6 HTTP连接优化
- 四、httpd概述
- 4.1 安装
- 4.2 httpd相关文件
- 4.2.1 配置文件
- 4.2.2 服务单元文件和主服务器程序文件
- 4.2.3 模块文件
- 4.3 httpd服务控制和启动(命令部分)
- 五、httpd配置
- 5.1 虚拟主机
- 5.1.1 基于ip地址
- 5.1.1.1 原理
- 5.1.1.2 模拟实现
- 5.1.2 基于端口地址
- 5.1.2.1 原理
- 5.1.2.2 模拟实现
- 5.1.3 基于域名
- 5.1.3.1 原理
- 5.1.3.2 模拟实现
- 5. 2 三种工作模式
- 5.2.1 Worker模式
- 5.2.2 Event模式
- 5.2.3 Pre-Fork模式
- 六、Cookie和Session
- 6.1 Cookie
- 6.2 Session
一、Web基础
1.1 HTML概述
HTML(全称为Hypertext Markup Language)是一种标记语言,用于创建和组织Web页面的结构和内容。
HTML是构建Web页面的基础,定义了页面的结构和内容,通过标记和元素来实现。
1.1.1 HTML的文件结构
<html><head>网页的头部信息</head><body>网页内容</body></html>
1.1.2 HTML中的部分基本标签
基本标签 | 含义 |
---|---|
<html> | HTML文档的根元素,包含文档的全部内容 |
<head> | 文档的头部,通常用于引入样式表、脚本以及设置文档的元信息 |
<title> | 文档的标题,显示在浏览器的标题栏或标签页上 |
<body> | 文档的主体部分,包含页面上的可见内容 |
<h1> 到<h6> | 标题标签,用于表示不同级别的标题,<h1> 是最高级别的标题 |
<p> | 段落标签,用于表示一个段落 |
<a> | 链接标签,用于创建一个超链接,并指定链接的目标URL |
<img> | 图像标签,用于插入图像到页面中,并指定图像的源文件路径 |
<ul> 和<li> | 无序列表标签,用于创建一个无序列表和列表项 |
<ol> 和<li> | 有序列表标签,用于创建一个有序列表和列表项 |
<div> | 通用的容器标签,用于分组和组织页面中的内容 |
<span> | 内联容器标签,用于对文本的一部分进行特殊处理,如应用样式或事件 |
1.3 MIME
MIME是一种互联网标准,是一种用于标识文件类型的方法。
MIME类型由一个主类型和一个子类型组成,用斜杠(/)分隔,MIME类型的作用是告诉接收方如何解释和处理接收到的文件。
#常见的MIME类型text/html HTML网页
text/plain 纯文本文件
image/jpeg JPEG图像
image/png PNG图像
audio/mpeg MP3音频
video/mp4 MP4视频
#举个例子
通过指定MIME类型为text/html,服务器可以告诉浏览器接收到的数据是HTML格式的网页,浏览器会相应地解析和显示该网页
1.4 URI 和 URL
1.4 定义
URI(Uniform Resource Identifier):统一资源标识,分为URL 和 URN。
URL(Uniform Resorce Locator):统一资源定位符,用于描述某服务器某特定资源位置
1.4.2 URI 和 URL 的区别
-
定义范围:URI是一个广义的概念,用于标识和命名互联网上的资源,可以是URL、URN或其他形式。URL是URI的一种具体实现形式,用于资源的定位和访问。
-
功能重点:URI强调资源的标识性,用于唯一标识和命名资源。URL则更注重资源的位置性,其中包含了定位和访问资源所需的详细信息。
二、静态资源和动态资源
静态资源和动态资源是两种常见的网络资源类型。
静态资源和动态资源的区别在于内容是否固定不变。
2.1 静态资源
静态资源指的是在服务器上保存的文件,其内容在请求和传输过程中不发生变化。
静态资源可以是图片、CSS样式表、JavaScript文件、HTML文件等。
静态资源的请求一般是通过URL直接访问,当客户端发送请求时,服务器直接将这些文件返回给客户端,不进行任何处理。
2.2 动态资源
动态资源则是在服务器端通过执行脚本或程序生成的内容,需要占用服务器的资源。
服务器会根据请求中的参数和数据,执行相应的脚本或程序来生成动态内容,然后将生成的内容返回给客户端。
动态资源可以是动态网页、API接口等。
三、HTTP协议
3.1 HTTP协议简介
HTTP协议采用了请求/响应模型。
客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。
服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错误编码加上服务器信息、实体元信息以及可能的实体内容。
3.2 HTTP协议版本
http 0.9 功能简陋,仅支持GET方法
http 1.0 相较以前版本可以支持POST、HEAD方法,支持HTML文件以外的其他类型,但不支持持久连接
http 1.1 支持持久连接,即在一个TCP连接里面完成多个http请求和响应,但是每个请求和响应是按照顺序一一对应的
http 2.0 支持完全多路复用,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应( 也支持压缩,服务端主动推送)。
3.2 HTTP方法
HTTP定义了一组请求方法,用于指定客户端对资源的操作方式,这些请求命令称为HTTP方法。
方法 | 作用 |
---|---|
GET | 对服务器资源获取的简单请求 |
PUT | 向服务器上传指定的资源,如果资源已存在,则替换为新的内容 |
POST | 向服务器提交数据 |
DELETE | 删除服务器上的某些资源 |
HEAD | 请求页面的首部,获取资源的元信息 |
CONNECT | 用于ssl隧道的基于代理的请求 |
OPTIONS | 返回所有可用的方法,常用于跨域 |
TRACE | 追踪 请求–响应的传输路径 |
1、GET请求会向数据库发索取数据的请求,从而来获取信息,该请求不会产生副作用。无论进行多少次操作,结果都是一样的。2、与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,无论进行多少次PUT操作,其结果并没有不同。3、POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,几乎目前所有的提交操作都是用POST请求的。4、DELETE请求顾名思义,就是用来删除某一个资源的。
3.3 HTTP请求访问的完整过程
3.4 HTTP状态码
HTTP状态码是服务器在处理请求时返回给客户端的数字代码,用于表示请求的处理结果。
HTTP协议状态码分类
状态码首位 | 范围 | 含义 |
---|---|---|
1xx | 100-101 | 信息提示,表示请求已被接收,需要进一步处理 |
2xx | 200-206 | 成功,表示请求已成功处理 |
3xx | 300-305 | 重定向,表示需要进一步的操作以完成请求 |
4xx | 400-415 | 客户端错误,表示客户端发送的请求有错误 |
5xx | 500-505 | 服务器错误,表示服务器在处理请求时发生了错误 |
HTTP协议常用的状态码
状态码 | 含义 |
---|---|
200 | 一切正常 |
301 | 永久重定向 |
302 | 临时重定向 |
307 | 浏览器内部重定向 |
401 | 用户名或密码错误 |
403 | 禁止访问(客户端IP地址被拒绝) |
404 | 请求的资源在服务器上不存在 |
414 | 请求URL头部过长 |
500 | 服务器内部错误。比如脚本错误,编程语言语法错误 |
502 | 无效网关 |
503 | 服务器暂时无法处理请求,通常用于服务器维护或过载 |
504 | 网关请求超时。程序执行时间过长导致响应超时,例如程序需要执行20秒,而nginx最大响应等待时间为10秒,这样就会出现超时。 |
#产生502(无效网关)的原因:数据包没有送到网卡,网络问题;数据包送进去了(交换机能抓到包),但是网卡没收到,网卡问题或防火墙问题;网卡接收到了,处理不了,服务问题。(比如服务器当前连接太多,响应太慢;页面素材太多,带宽不够。)
3.5 HTTP的请求报文和响应报文
3.5.1 请求报文
#request 报文格式 <method> <request-URL> <version>
<headers><entity-body>第一行为请求行,包含请求方法、请求目标和HTTP协议版本号
第二行为请求头部,包含与请求相关的各种元数据信息空行用于分隔头部和请求体的空行
第四行为请求体,可选项,包含实际的请求数据
#举个例子curl 192.168.2.100 |head #从此服务器获取内容
#状态行
> GET / HTTP/1.1
#HTTP GET请求,即获取指定路径的内容,请求的路径为根路径("/"),表示请求服务器的默认页面#头部字段
> User-Agent: curl/7.29.0
#指定客户端使用的User-Agent,该请求由curl/7.29.0发送
> Host: 192.168.2.100
#指定了要访问的服务器的主机地址
> Accept: */*
#指定了客户端可以接受的响应内容的类型,表示客户端可以接受任何类型的内容
3.5.2 响应报文
#response报文格式<version> <status> <reason-phrase>
<headers><entity-body>第一行为状态行,状态行由协议版本,状态码,状态码描述三部分组成。第二行为响应头部,响应头包含与响应相关的各种元数据信息。第三行为空行,用于分隔头部和响应体的空行。第四行为响应体,可选项,包含实际的响应数据。
#举个例子curl 192.168.2.100 |head #从此服务器获取内容
#响应状态行
< HTTP/1.1 403 Forbidden
#表示请求被拒绝,状态码403表示禁止访问#头部字段
< Date: Mon, 21 Aug 2023 11:00:34 GMT
#表示响应的日期和时间
< Server: Apache/2.4.6 (CentOS)
#表示服务器正在使用的软件名称和版本
< Last-Modified: Thu, 16 Oct 2014 13:20:58 GMT
#表示所请求资源的最后修改日期和时间
< ETag: "1321-5058a1e728280"
#表示所请求资源的实体标签
< Accept-Ranges: bytes
#服务器是否支持断点续传。
< Content-Length: 4897
#响应实体主体的长度。
< Content-Type: text/html; charset=UTF-8
#实体主体的类型和字符编码,表示响应内容是以UTF-8编码的HTML文本。
3.6 HTTP连接优化
1)并行连接:并行连接通过同时建立多个连接 ,使得客户端可以并发地发送多个请求,以提高并发性和响应速度。
2)持久连接 :持久连接允许客户端和服务器之间在单个连接上发送多个HTTP请求和响应 ,而不是每个请求都要重新建立连接。
3) 管道化连接:管道化连接是一种在持久连接上发送多个请求而无需等待服务器响应 的机制。
四、httpd概述
4.1 安装
yum install -y httpd #安装
4.2 httpd相关文件
4.2.1 配置文件
#主配置文件
/etc/httpd/conf/httpd.conf #子配置文件
/etc/httpd/conf.d/*.conf #模块加载的配置文件
/etc/httpd/conf.d/conf.modules.d/
检查配置语法:httpd -t
或 apache2 -t
站点网页文档根目录:/var/www/html
4.2.2 服务单元文件和主服务器程序文件
服务单元文件
/usr/lib/systemd/system/httpd.service配置文件:/etc/sysconfig/httpd
主服务器程序文件
/usr/sbin/httpd
4.2.3 模块文件
/etc/httpd/modules/usr/lib64/httpd/modules
4.3 httpd服务控制和启动(命令部分)
#开启自启动/开机自动关闭 httpd服务
systemctl enable|disable httpd.service
开启httpd服务
systemctl start httpd.service
or
apachectl start
or
service httpd start
重启httpd服务
systemctl start httpd.service
or
apachectl restart
or
service httpd restart
停止httpd服务
systemctl stop httpd.service
or
apachectl stop
or
service httpd stop
查看httpd服务的运行状态
systemctl status httpd
配置文件语法检查
apachectl configtest
or
service httpd configtest
五、httpd配置
5.1 虚拟主机
httpd虚拟主机的作用是通过一个物理服务器来托管多个域名或网站,实现资源共享、个性化配置和多域名指向不同网站的功能,提高服务器资源利用率和降低成本。
5.1.1 基于ip地址
5.1.1.1 原理
每个虚拟主机分配一个唯一的IP地址,并通过服务器软件来指定每个虚拟主机使用的IP地址。
5.1.1.2 模拟实现
systemctl stop firewalld
setenforce 0rpm -q httpd #没安装就装一下systemctl start httpdcd /var/www/html/ #进入httpd站点文件目录
vim index.html #设定默认主页,默认主页名字必须为index.htmlsystemctl restart httpd //重启httpd服务
mkdir ipv1 #创建虚拟机 所需目录vim ipv1/index.html #测试页面主页
vim /etc/httpd/conf.d/ipv.conf #新建配置文件 除了IP地址不同
httpd -t #语法检查
#有报错时
vim /etc/httpd/conf/httpd.conf ServerName www.example.com:80 #添加到主配置文件中
#配置IP地址为192.168.2.103的虚拟机,以此为例
vim /etc/httpd/conf/httpd.confmkdir /var/www/html/ipv1 #创建所需目录httpd -tvim /var/www/html/ipv1/index.html #编辑主页
在浏览器中输入 192.168.2.103:80
5.1.2 基于端口地址
5.1.2.1 原理
每个虚拟主机使用同一个IP地址,但使用不同的端口号来区分。
5.1.2.2 模拟实现
cp ip.conf port.confvim port.conf #修改配置文件 除了端口不同
#修改192.168.2.103对应主机的httpd.confvim /etc/httpd/conf/httpd.conf
#测试是否成功
curl 192.168.2.103:8080curl 192.168.2.103:80
5.1.3 基于域名
5.1.3.1 原理
服务器软件根据请求头中的主机名(域名)来区分虚拟主机。
这种方法不需要分配额外的IP地址或端口,可以在同一个IP地址上承载多个虚拟主机。
5.1.3.2 模拟实现
cp ip.conf dns.conf
vim dns.conf #修改配置文件 除了域名不同
mkdir ipv2 #创建所需目录
vim /var/www/html/ipv2/index.html #编辑主页
httpd -t #语法检查
#编辑本地hosts文件,添加地址映射vim /etc/hosts
#切换到目标地址为192.168.2.103的虚拟机
#具体操作不再演示cd /etc/www/html mkdir ipv1
mkdir ipv2vim ./ipv1/index.html
vim ./ipv2/index.htmlecho "<h1>www.ipv1.com</h1>" /var/www/html/ipv1/index.htmlecho "<h1>www.ipv1.com</h1>" /var/www/html/ipv1/index.htmlsystemctl start httpd
打开虚拟机的内置浏览器,输入www.ipv1.com 和 www.ipv2.com,观察结果
5. 2 三种工作模式
5.2.1 Worker模式
工作线程(Worker)模式适用于资源利用率高的场景
- Apache在启动时会创建一组预定义数量的线程池。
- 每个线程都可以处理多个请求,线程之间共享服务器的内存和资源。
- 当一个请求到达服务器时,一个空闲的线程将被选择来处理该请求。
- 线程可能会处理多个请求,通过线程池重用来更高效地处理请求。
- 这种模式下需要注意线程安全的问题,以确保多个线程间的数据访问不会导致冲突。
5.2.2 Event模式
事件驱动(Event MPM)模式适用于高并发场景
- 在事件驱动模式下,Apache使用I/O多路复用(如epoll或kqueue)来监听多个连接。
- 当一个连接有数据到达时,Apache将发出事件通知,表示该连接有可读数据。
- Apache将事件分发给一个空闲的工作线程来处理请求。
- 工作线程处理请求的过程通常是非阻塞的,通过事件驱动方式读取数据和发送响应。
- 这种模式下可以处理大量的并发请求,因为它不需要为每个请求创建一个新的进程或线程。
5.2.3 Pre-Fork模式
预产生(Pre-Fork)模式适用于稳定性要求高的场景
- Apache在启动时会创建一组预定义数量的子进程(称为工作进程)。
- 每个工作进程都是独立的,有自己的内存空间和资源。
- 当一个请求到达服务器时,主进程选择一个空闲的工作进程来接受该请求。
- 选中的工作进程处理该请求,生成响应并将其发送回客户端。
- 这种模式下每个工作进程只能处理一个请求,处理完请求后会继续等待下一个请求。
六、Cookie和Session
Cookie和Session用于解决http协议无状态。
6.1 Cookie
Cookie是服务器在用户的浏览器中存储的小型文本文件。当用户访问一个网站时,服务器可以通过HTTP响应的Set-Cookie标头将一个或多个Cookie发送给浏览器。浏览器会将这些Cookie存储在用户的计算机上,并在以后的请求中将它们发送回服务器。
每个Cookie都包括一个名称、一个值和一些可选的属性,如过期时间、域名、路径等。服务器可以使用Cookie来存储用户的偏好设置、会话标识符、购物车数据等。浏览器会在每次请求中自动发送与特定域名相关联的Cookie,使得服务器能够识别用户。
6.2 Session
Session是在服务器端存储用户状态的一种机制。当用户首次访问一个网站时,服务器会为该用户创建一个唯一的会话标识符(Session ID)。这个标识符通常被存储在Cookie中,但也可以通过其他方式(如URL参数)进行传递。
服务器使用Session来存储用户信息和其他相关数据。在每个请求中,浏览器会将Session ID作为Cookie发送给服务器,使得服务器能够识别并恢复与该用户相关联的会话数据。Session数据通常存储在服务器的内存或持久化存储中。
相关文章:

web基础+HTTP协议+httpd详细配置
目目录录 一、Web基础1.1 HTML概述1.1.1 HTML的文件结构1.1.2 HTML中的部分基本标签 1.3 MIME1.4 URI 和 URL1.4 定义1.4.2 URI 和 URL 的区别 二、静态资源和动态资源2.1 静态资源2.2 动态资源 三、HTTP协议3.1 HTTP协议简介3.2 HTTP协议版本3.2 HTTP方法3.3 HTTP请求访问的完…...

【sql】MongoDB的增删改查分页条件等
【sql】MongoDB的增删改查分页条件等 //增 //新增数据2种方式 db.msg.save({"name":"springboot😀"}); db.msg.insert({"name":"mango good"}); db.msg.save({"name":"springboot",type:"工具书&…...

我的动态归纳(便于搜索)
linux dns配置文件是“/etc/resolv.conf”,该配置文件用于配置DNS客户,它包含了主机的域名搜索顺序和DNS/服务器的地址,每一行包括一个关键字和一个或多个空格隔开的参数。 /etc/resolv.conf (不配置就不能域名解析) 可…...

langchain ChatGPT AI私有知识库
企业知识库 原理就是把文档变为向量数据库,然后搜索向量数据库,把相似的数据和问题作为prompt, 输入到大模型,再利用GPT强大的自然语言处理、推理和分析等方面的能力将答案返回给用户 什么是langchain? langchain是一个强大的…...

API接口常用数据格式Json,Json的定义和XML的区别
现在程序员还有谁不知道 JSON 吗?无论对于前端还是后端,JSON 都是一种常见的数据格式。那么 JSON 到底是什么呢? JSON 的定义 JSON (JavaScript Object Notation) ,是一种轻量级的数据交换格式。它的使用…...

密码学学习笔记(二十一):SHA-256与HMAC、NMAC、KMAC
SHA-256 SHA-2是广泛应用的哈希函数,并且有不同的版本,这篇博客主要介绍SHA-256。 SHA-256算法满足了哈希函数的三个安全属性: 抗第一原像性 - 无法根据哈希函数的输出恢复其对应的输入。抗第二原像性 - 给定一个输入和它的哈希值…...

操作系统-笔记-第四章-文件管理
目录 四、第四章——文件管理 1、文件管理——基础概念 (1)文件结构 (2)操作系统提供的接口 (3)总结 2、文件的逻辑结构 (1)有结构文件(类似SQL表文件)…...

【MiniGUI】文字颜色实现透明度变化
在MiniGUi中,输出文字时有时候希望文字带有透明度信息, 即文字能够透出下面的图像来。 很自然地想到,设置颜色时,将颜色设置为带有透明度的颜色: SelectFont(hdc, mg_font);SetTextColor(hdc, RGBA2Pixel(HDC_SCREEN, …...

css中元素加定位之后到一定距离元素会变小
css中元素加定位之后到一定距离元素会变小 主要原因:元素没有加宽高 .swiperWrapper .active{bottom: 380px;left: 215px;z-index: 10; } .swiperWrapper .next{bottom: 170px;left: 7%;z-index: 20; } .swiperWrapper .prev{bottom: 360px;left: 0%;z-index: 30;…...

Java 语言实现冒泡排序
Java 语言实现冒泡排序 介绍 冒泡排序是一种简单直观的排序算法,它重复地比较相邻的两个元素,如果顺序错误就交换它们,直到没有需要交换的元素为止。冒泡排序的思路是通过每一轮的比较将最大(或最小)的元素逐渐“冒泡…...

面向对象单选题
下列选项中不属于面向对象的特征的是(B) A、封装性 B、安全性 C、继承性 D、多态性 在Java中,关于继承,类只支持(A) A、单继承 B、多继承 C、两个都可以 D、两个都不可以 用于定义成员的访问控制权的一组关键字…...

微服务-Fegin
在之前我们两服务之间调用的时候用的是restTemplate,但是这个方式调用存在很多的问题 String url "http://userservice/user/" order.getUserId(); 代码可读性差,编码体验不统一参数复杂的url难以维护 所以我们大力推出我们今天的主角--Fegin Feign是…...

[oneAPI] 使用字符级 RNN 生成名称
[oneAPI] 使用字符级 RNN 生成名称 oneAPI特殊写法使用字符级 RNN 生成名称Intel Optimization for PyTorch数据下载加载数据并对数据进行处理创建网络训练过程准备训练训练网络 结果 参考资料 比赛:https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0517…...

【ROS】参数服务器--理论模型与参数操作(C++)
一、概念介绍 参数服务器在ROS中主要用于实现不同节点之间的数据共享。参数服务器相当于是独立于所有节点的一个公共容器,可以将数据存储在该容器中,被不同的节点调用,当然不同的节点也可以往其中存储数据。 作用:存储一些多节点…...

[oneAPI] 基于BERT预训练模型的英文文本蕴含任务
[oneAPI] 基于BERT预训练模型的英文文本蕴含任务 Intel DevCloud for oneAPI 和 Intel Optimization for PyTorch基于BERT预训练模型的英文文本蕴含任务语料介绍数据集构建 模型训练 结果参考资料 比赛:https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0…...

【洛谷】P1163 银行贷款
原题链接:https://www.luogu.com.cn/problem/P1163 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 这题需要注意的是利率按月累计这句话,也就是相当于“利滚利”。 我们定义sum变量表示贷款原值,money表示每月支付…...

Java版工程行业管理系统源码-专业的工程管理软件-提供一站式服务 em
鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工…...

kafka--技术文档--基本docker中安装<单机>-linux
安装zookeeper 阿丹小科普: Kafka在0.11.0.0版本之后不再依赖Zookeeper,而是使用基于Raft协议的Kafka自身的仲裁机制来替代Zookeeper。具体来说,Kafka 2.8.0版本是第一个不需要Zookeeper就可以运行Kafka的版本,这被称为Kafka Raf…...

回归预测 | MATLAB实现WOA-RF鲸鱼优化算法优化随机森林算法多输入单输出回归预测(多指标,多图)
回归预测 | MATLAB实现WOA-RF鲸鱼优化算法优化随机森林算法多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现WOA-RF鲸鱼优化算法优化随机森林算法多输入单输出回归预测(多指标,多图)效果一览…...

Linux系统安全——NAT(SNAT、DNAT)
目录 NAT SNAT SNAT实际操作 DNAT DNAT实际操作 NAT NAT: network address translation,支持PREROUTING,INPUT,OUTPUT,POSTROUTING四个链 请求报文:修改源/目标IP, 响应报文:修改源/目标…...

uniapp项目添加人脸识别功能,可用作登录,付款,流程审批前的安全校验
本案例使用了hbuilder插件商城中的活体检验插件,可自行前往作者处下载查看, 效果图如下 此插件需要在manifest.json中勾选 实现流程 1:前往hbuilder插件市场下载插件 2:在页面中导入import face from "/uni_modules/mcc-…...

SpringBoot面试题
Spring Boot的启动流程主要分为以下几个步骤: 加载Spring Boot配置文件,初始化Spring Boot环境和核心组件,如ApplicationContext上下文环境、自动装配机制等。 执行SpringApplication.run()方法,执行所有Spring Boot自动配置的Be…...

Git相关命令
SSH密钥文件 Github里面S设置SH公钥有两者选择方式 账号下的每个仓库都设置一个公钥,因为GitHub官方要求每个仓库的公钥都不能相同,所以每个账号都要搞一个密钥(很麻烦)给账号分配一个公钥,然后这个公钥就可以在这个…...

《HeadFirst设计模式(第二版)》第八章代码——模板方法模式
代码文件目录: CaffeineBeverage package Chapter8_TemplateMethodPattern;/*** Author 竹心* Date 2023/8/17**/public abstract class CaffeineBeverage {final void prepareRecipe(){boilWater();brew();pourInCup();//这里使用钩子customerWantsCondiments()来…...

RESTful API,以及如何使用它构建 web 应用程序
RESTful API是一种基于HTTP协议的API设计风格,它的核心思想是将资源作为 API 的核心,使用 HTTP 的 GET、POST、PUT、DELETE 等方法对这些资源进行操作,并通过 URL 来定位资源。 RESTful API的特点包括: 资源是 API 的核心使用 H…...

Git+Gitee使用分享
GitGitee快速入门 创建仓库 初始化本地仓库 验证本地git是否安装好 打开cmd窗口,输入git 这样就OK。 Git 全局设置:(只需要设置一次) 这台电脑如果是第一次使用git,就需要这样初始化一下,这样才知道是谁提交到仓库了。 git confi…...

【3D激光SLAM】LOAM源代码解析--transformMaintenance.cpp
系列文章目录 【3D激光SLAM】LOAM源代码解析–scanRegistration.cpp 【3D激光SLAM】LOAM源代码解析–laserOdometry.cpp 【3D激光SLAM】LOAM源代码解析–laserMapping.cpp 【3D激光SLAM】LOAM源代码解析–transformMaintenance.cpp 写在前面 本系列文章将对LOAM源代码进行讲解…...

DiscuzQ 二开教程(7)——二次开发版本部署文档
DiscuzQ 二开教程(7)——二次开发版本部署文档 源码:Discuz-Q-V3: 本仓库为Discuz-Q V3.0.211111 版本的二次开发版本,是将DiscuzQ官方仓库进行合并代码(All in One)整理后的仓库,使用更方便。…...

u盘数据丢失但占内存如何恢复?不要着急,这里有拯救方案
U盘数据丢失但占内存如何恢复?数据丢失是一种让人非常头疼的问题,尤其是当我们的U盘数据丢失了,但内存仍然被占用时,更令人困惑和焦虑。然而,不要慌张!在本文中,将为大家介绍一些有效的方法来恢…...

springboot日志文件名称为什么叫logback-spring.xml
如题,为什么springboot日志配置文件叫logback-spring.xml? 在整个项目中搜索 logback-spring.xml 并没有搜索到。 先看一下 org.springframework.boot.context.logging.LoggingApplicationListener#initialize protected void initialize(ConfigurableEn…...