Nginx详解 第一部分:编译安装Nginx+Nginx模块

news2024/11/17 10:23:30

Part 1

  • 一 、HTTP 和 Nginx
    • 1.1 套接字Socket
    • 1.2 URL
      • 1.2.1 定义
      • 1.2.1 URL和URN的区别
      • 1.2.3 URL组成
    • 1.3 请求访问完整过程详解
  • 二、I/O模型 处理高并发的时候用
    • 2.1 I/O模型简介
    • 2.2 多路复用I/O型
    • 2.3 异步I/O模型
    • 2.4 事件模型 select poll epoll
  • 三、NGINX概述
    • 3.1 简介
    • 3.2 NGINX和APACHE的区别?
    • 3.3 什么是零拷贝?
  • 四、Nginx模块
    • 4.1 安装方式
      • 4.1.1 方式一 yum安装
      • 4.1.2 方式二 编译安装 (推荐使用)
        • 1)前置准备
        • 2)编译安装nginx
        • 3)nginx开机自启(可选)
    • 4.2 Nginx命令 常用选项
      • 4.2.1 常用选项
      • 4.2.2 信号
    • 4.3 日志分割(Nginx 优化 )
    • 4.4 升级nginx
      • 4.4.1 思路
      • 4.4.2 平滑升级nginx
    • 4.5 退回旧版本(回滚)

一 、HTTP 和 Nginx

1.1 套接字Socket

套接字Socket是进程间通信IPC的一种实现,允许位于不同主机(或同一主机)上不同进程之间进行通信和数据交换

进程间的传输要有两个标志:IP地址和端口号,合称为套接字地址 socket address

  • 客户机套接字地址定义了一个唯一的客户进程
  • 服务器套接字地址定义了一个唯一的服务器进程

1.2 URL

1.2.1 定义

统一资源定位符,用于描述某服务器某特定资源位置

1.2.1 URL和URN的区别

URN定义某事物的身份,仅用于命名,而不指定地址。

URL提供查找该事物的方法。

1.2.3 URL组成

在这里插入图片描述

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
scheme:方案,访问服务器以获取资源时要使用哪种协议
user:用户,某些方案访问资源时需要的用户名
password:密码,用户对应的密码,中间用:分隔
Host:主机,资源宿主服务器的主机名或IP地址
port:端口,资源宿主服务器正在监听的端口号,很多方案有默认端口号
path:路径,服务器资源的本地名,由一个/将其与前面的URL组件分隔
params:参数,指定输入的参数,参数为名/值对,多个参数,用;分隔
query:查询,传递参数给程序,如数据库,用?分隔,多个查询用&分隔
frag:片段,一小片或一部分资源的名字,此组件在客户端使用,用#分隔

在这里插入图片描述

协议(Protocol):该URL的协议部分是 "https://",表示使用HTTPS协议进行数据传输。

用户名和密码(Username and Password):URL中的 "john.doe" 是用户名,表示用于身份验证的用户名。这是可选的,并且很少在实践中使用。密码可以通过 ":" 字符的存在被提供,但在该URL中没有明确提供密码。

主机名(Hostname):主机名部分是 "www.example.com",表示资源所在的主机或服务器的地址。

端口号(Port):该URL中明确指定了端口号 "123",表示用于与服务器建立连接的端口。如果未指定端口号,默认使用协议的默认端口(例如,HTTPS的默认端口是443)。

路径(Path):路径部分是 "/forum/questions/",表示所请求资源的路径。在这个示例中,资源位于主机的 "/forum/questions/" 目录下。

查询参数(Query Parameters):查询参数以 "?" 开始,后跟参数的键值对,用 "&" 分隔。在该URL中,查询参数是 "tag=networking&order=newest",表示请求中附带了两个参数:'tag' 的值是 'networking''order' 的值是 'newest'。这些参数可以被服务器用来进行进一步的处理或筛选。

锚点(Anchor):锚点部分以 "#" 开始,用于在文档内定位到特定的片段。在该URL中,锚点是 "topscheme",它指示浏览器在加载文档后将滚动到名为 "topscheme" 的片段。

1.3 请求访问完整过程详解

在这里插入图片描述

当用户发起http请求 需要请求index.html网页文件;

客户端请求和服务器端建立连接,建立连接后,客户端发送请求报文;

服务端网卡收到请求报文,将该报文复制到内核空间(操作系统),内核空间分析报文后交给对应的程序;

nginx分析该报文,对比报文和自己的配置文件,按照配置文件完成请求,分析完成后,发现客户需要index.html文件;

由于程序的权限问题,没有资格直接调用磁盘上的文件,程序会再将这个请求,再次转发给内核;

内核得到请求后,去磁盘中寻找目标文件,找到文件后,复制给程序;
程序构建响应报文,构建好后交给内核空间;

内核空间得到响应报文后,再交给网卡,发给客户。

二、I/O模型 处理高并发的时候用

2.1 I/O模型简介

同步/异步(消息反馈机制):关注的是消息通信机制,即调用者在等待一件事情的处理结果时,被调用者是否提供完成状态的通知。

  • 同步:synchronous,被调用者并不提供事件的处理结果相关的通知消息,需要调用者主动询问事情是否处理完成
  • 异步:asynchronous,被调用者通过状态、通知或回调机制主动通知调用者被调用者的运行状态

在这里插入图片描述

阻塞/非阻塞:关注调用者在等待结果返回之前所处的状态

  • 阻塞:blocking,指IO操作需要彻底完成后才返回到用户空间,调用结果返回之前,调用者被挂起,干不了别的事情。
  • 非阻塞:nonblocking,指IO操作被调用后立即返回给用户一个状态值,而无需等到IO操作彻底完成,在最终的调用结果返回之前,调用者不会被挂起,可以去做别的事情。
    在这里插入图片描述

2.2 多路复用I/O型

在这里插入图片描述
多路复用I/O(I/O multiplexing)模型是一种基于事件驱动的 I/O 处理模式。它利用操作系统提供的多路复用机制(如select、poll、epoll等)来同时监听多个 I/O 事件,当某个事件就绪时,通知应用程序进行处理。

通过多路复用I/O模型,可以在一个线程中同时处理多个客户端连接的 I/O 操作,而不需要为每个连接创建一个线程或进程,避免了资源开销和上下文切换的成本。

常见的多路复用I/O模型有:

  • select:适用于连接数不太多的情况,轮询监听多个文件描述符上的 I/O 事件。
  • poll:与select类似,但没有连接数的限制,并且不会修改传入的描述符集合。
  • epoll:适用于连接数非常多的情况,通过事件驱动机制来处理 I/O 事件,可以在大并发情况下具有较高的性能优势。

2.3 异步I/O模型

在这里插入图片描述
异步 I/O 模型是一种非阻塞的 I/O 处理模式,通过回调函数或事件通知的方式来处理已完成的 I/O 操作,能够提高系统的并发性和处理效率。

2.4 事件模型 select poll epoll

①Nginx服务使用异步非阻塞模式:请求不需要排队,会反馈任务的完成结果。

②Apache服务使用同步阻塞模式:请求需要排队,且不会主动返回结果。

优缺点

模型描述优点缺点
select最古老的模型可以同时监视多个文件描述符效率较低,不适用于大规模并发连接
poll类似于select效率相对更高,可以处理大量并发连接随着文件描述符数量的增加,性能下降较明显
epollLinux特有模型在高并发场景下性能表现更好,使用边缘触发方式,只在状态变化时通知在非Linux系统上不可用,涉及到一些操作系统特定的细节和配置

区别

selectpollepoll
操作方式遍历遍历回调
底层实现数组链表哈希表
IO效率每次调用都进行线性遍历,时间复杂度为0(n)同左事件通知方式,每当fd就绪,系统注册的回调函数就会被调用,将就绪的fd放到rdlllist里,时间复杂度O(1)
最大连接数1024(x86)2048(x64)无上限无上限
fd拷贝每次调用select都需要把fd集合从用户拷贝到内核态每次调用poll,都需要把fd集合从用户态拷贝到内核态调用epoll ctl时拷贝进内核并保存,之后每次epoll wait不拷贝

三、NGINX概述

3.1 简介

①作用:支持七层(应用层)和四层(传输层)反向代理、可做web服务器。

②特性:高可靠性、支持热部署、可扩展性好、高并发高性能、单机部署。

⑤进程:一个主进程master生成多个worker子进程,worker子进程负责处理工作。

3.2 NGINX和APACHE的区别?

特点NginxApache
并发处理高并发处理能力,轻量级且低内存消耗对静态文件处理高效,但在高并发情况下内存消耗较大
资源占用占用更少的系统资源和内存占用较多的系统资源和内存
事件驱动使用事件驱动模型,可在较少的线程上同时处理多个连接使用多线程模型,会为每个连接创建一个线程
配置灵活性配置简单明了,易于阅读和维护配置相对复杂,需要更多的配置项指定
扩展性支持动态模块和第三方扩展,可自定义功能支持动态模块和第三方扩展,但相对Nginx更少
虚拟主机支持无限个虚拟主机配置,每个虚拟主机独立配置支持无限个虚拟主机配置,但每个虚拟主机使用同一套配置
模块支持支持反向代理、负载均衡、HTTP缓存等支持反向代理、负载均衡、SSL等
用户群体更适合高并发、网络应用场景,如反向代理、负载均衡更适合传统Web服务器应用,如静态内容和PHP

核心区别
1)apache 是同步多进程模型,一个连接对应一个进程,而 nginx 是异步的,多个
连接(万级别)可以对应一个进程;
2)需要稳定用apache,需要高性能用nginx。

3.3 什么是零拷贝?

在Nginx中,使用零拷贝技术可以将数据从文件系统直接发送到网络套接字中,而不需要中间的内存拷贝。

这可以减少CPU的使用量,减少内存带宽的消耗,并且可以更快地将数据发送到客户端

四、Nginx模块

4.1 安装方式

4.1.1 方式一 yum安装

#安装依赖包
yum install -y epel-releas
#yum方式安装
yum install -y nginx

4.1.2 方式二 编译安装 (推荐使用)

1)前置准备

#安装依赖包
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel
#新建nginx用户便于管理
useradd -M -s /sbin/nologin nginx
#官网下载包
wget http://nginx.org/download/nginx-1.18.0.tar.gz

在这里插入图片描述

2)编译安装nginx

tar xf nginx-1.18.0.tar.gz 
mkdir /apps/nginx -p
cd nginx-1.18.0/

./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module

在这里插入图片描述

make -j2 && make install

chown -R nginx.nginx /apps/nginx#加权限

ln -s /apps/nginx/sbin/nginx /usr/sbin/ #直接启动 不需要绝对路径

在这里插入图片描述
在这里插入图片描述

3)nginx开机自启(可选)

vim /usr/lib/systemd/system/nginx.service
#建立文件
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/logs/nginx.pid
#注意文件位置,如果不对 启动不了
ExecStart=/apps/nginx/sbin/nginx
#注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
systemctl daemon-reload 
#重新加载配置
systemctl enable --now nginx
#开机自启并立即启动    如果卡主是应为logs下有 nginx.pid  文件  删除即可

chown -R nginx.nginx /apps/nginx
#修改权限

在这里插入图片描述

###如果需要修改pid文件可以执行以下操作#################
mkdir /apps/nginx/run/
#创建目录
vim /apps/nginx/conf/nginx.conf
#修改配置文件
pid   /apps/nginx/run/nginx.pid;
#找到 pid的位置修改  

4.2 Nginx命令 常用选项

#基本格式
nginx [选项] [参数]

4.2.1 常用选项

选项功能
-c <配置文件>指定一个自定义的配置文件路径
-g <全局配置>在命令行中指定全局配置选项
-p <工作目录>设置工作目录,用于存放日志文件和临时文件
-s <信号>向nginx发送信号,常用的有stop(停止nginx进程)和reload(重新加载配置文件)
-t测试配置文件语法是否正确
-q在测试配置文件时,以静默模式运行,只输出关键信息
-V显示nginx的版本、编译信息和配置参数
-h显示帮助信息,包括所有可用的命令行选项
-s <文件>启动nginx并将master进程的PID写入指定的文件
-e <错误日志文件>设置错误日志文件的路径
-g <配置指令>设置全局配置指令。可以在命令行中设置多个全局配置指令,用分号分隔
-T测试配置文件,并打印出解析后的配置内容
-q <文件>检查配置文件,并打印出解析后的配置内容,但不启动nginx

4.2.2 信号

#基本格式
nginx  -s 信号
信号描述
stop快速停止nginx进程,可能会中断现有连接。
quit优雅地停止nginx进程,等待现有连接完成后再停止。
reload重新加载配置文件,优雅地应用新配置,不中断现有连接。
reopen重新打开日志文件,用于日志切割或日志重定向。
term快速停止nginx进程,可能会中断现有连接,与stop信号类似。
usr1重新打开日志文件,用于日志切割或日志重定向,与reopen信号类似。
usr2平滑地升级nginx可执行文件。
hup重新加载配置文件,优雅地应用新配置,与reload信号类似。
winch当nginx以master/worker工作模式运行时,重新生成worker进程以适应新的配置。
usr3向worker进程发送自定义信号。

4.3 日志分割(Nginx 优化 )

cd /apps/nginx/logs #移动到日志所在目录下,此目录为指定安装目录,默认目录为/var/log/nginx

mv access.log access.log.bak #备份日志文件
touch access.log #建空的日志文件

pid=`cat /apps/nginx/logs/nginx.pid` #查看nginx的pid

在这里插入图片描述

kill -s USR1 $pid 
或者
nginx -s reopen  #重新打开Nginx进程以重新加载配置文件

会发送信号给Nginx主进程,告诉它重新加载配置文件而不停止正在处理的连接(不停止Nginx服务)

在这里插入图片描述

4.4 升级nginx

4.4.1 思路

  1. 将旧Nginx文件换成新Nginx文件(注意备份)
  2. 向master进程发送USR2信号
  3. master进程修改pid文件名,加后缀.oldbin
  4. master进程用新Nginx文件启动新master进程,系统中将有新旧两个Nginx主进程共同提供Web服务
  5. 向旧的Nginx服务进程发送WINCH信号,使旧的Nginx worker进程平滑停止,并删除Nginx.pid.oldbin文件
  6. 向旧master进程发送QUIT信号,关闭老master
  7. 如果发现升级有问题,可以回滚向老master发送HUP,向新master发送QUIT

4.4.2 平滑升级nginx

nginx1.18---->nginx1.20
#关闭防火墙
systemctl stop firewalld 
setenforce 0
#启动服务
systemctl start nginx
#下载安装包到src目录
wget https://nginx.org/download/nginx-1.20.2.tar.gz -P \
/usr/local/src/

cd /usr/local/src/;ls

在这里插入图片描述

tar xf nginx-1.20.2.tar.gz 
cd nginx-1.20.2/;ls

在这里插入图片描述

重新编译安装

#检测编译环境 加模块
./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module

#安装
make -j2 && make install 

在这里插入图片描述

nginx -V#查看版本

在这里插入图片描述

mv /apps/nginx/sbin/nginx   /apps/nginx/sbin/nginx.bak
#将低版本的nginx主程序改名
cp /usr/local/src/nginx-1.20.2/objs/nginx /apps/nginx/sbin
#将新版本 拷入进去
/apps/nginx/sbin/nginx -t
#语法检查

在这里插入图片描述

kill -USR2 `cat /apps/nginx/logs/nginx.pid`

ps auxf|grep nginx
#会生成新的master进程,需要结束旧的

在这里插入图片描述

#创建一个无用的填充文件,用于让测试客户端下载
dd if=/dev/zero of=/apps/nginx/html/m.img bs=1G count=10

cd /apps/nginx/html;ls

在这里插入图片描述

切换到客户端下载测试包

#192.168.2.100为服务端IP地址
#从服务端下载m.img,观察进程
wget --limit-rate=1M http://192.168.2.100/m.img 

在这里插入图片描述

返回服务端

#查看master process pid文件路径 
ls /apps/nginx/logs/

在这里插入图片描述

cat /apps/nginx/los/nginx.pid #1.20.2版本的

cat /apps/nginx/los/nginx.pid.oldbin  #1.18版本的

在这里插入图片描述

kill -WINCH `cat /apps/nginx/logs/nginx.pid.oldbin`
#优雅关闭 旧版本的master process
开启新的客户机,从服务端获取测试包
wget --limit-rate=1M http://192.168.2.100/m.img 
然后返回服务端查看是否使用新进程
ss -natp | grep 80

在这里插入图片描述

pstree -p |grep nginx 

在这里插入图片描述

4.5 退回旧版本(回滚)

#唤起旧版本的主进程
kill -HUP `cat /apps/nginx/logs/nginx.pid.oldbin`
#观察进程
ps aux|grep nginx

在这里插入图片描述

#结束新版本的master进程
kill -QUIT `cat /apps/nginx/logs/nginx.pid`

ps aux | grep nginx 

在这里插入图片描述

curl -I 127.1 
#通过 curl 发送一个 HEAD 请求到本地服务器并返回响应头信息

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java并发】聊聊对象内存布局和syn锁升级过程

对象存储解析&#xff1a;一个空Object对象到底占据多少内存&#xff1f; 对象内存布局 Mark Word占用8字节&#xff0c;类型指针占用8个字节&#xff0c;对象头占用16个字节。 好了&#xff0c;我们来看一下一个Object对占用多少空间&#xff0c; 因为java默认是开启压缩…

帆软只是一个BI厂商?答案是“No”!

大数据产业创新服务媒体 ——聚焦数据 改变商业 2023年&#xff0c;8月17-19日&#xff0c;帆软智数大会落子花城广州&#xff0c;邀请了1200海内外CIO和数字化专家&#xff0c;共同探讨数字化转型新机遇。 值得关注的是&#xff0c;这也是帆软首次以BI和零代码双赛道第一的身…

django开发流程

设计model django采用ORM映射&#xff0c;可以在代码中描述数据库的布局 只需要导入from django.db import models 并使类继承models.Model&#xff0c;models中的一个类对应数据库中的一个表&#xff0c;类的变量对应表字段。 创建数据库 $ python manage.py makemigration…

Ubuntu【系统环境下】【编译安装OpenCV】【C++调用系统opencv库】

Ubuntu【系统环境下】【编译安装OpenCV】【C调用系统opencv库】 前言&#xff1a; 本人需要用C写代码&#xff0c;调用OpenCV库&#xff0c;且要求OpenCV版本号大于4.1.0 由于使用的是18.04的版本&#xff0c;所以apt安装OpenCV的版本始终是3.2.0&#xff0c;非常拉胯&#…

python爬虫的js逆向入门到进阶教程文章分享汇总~持续更新

目录 一、内容介绍二 、专栏内容-持续更新1、JS逆向入门2、Js逆向进阶3、爬虫基础知识4、工具与安装5、漫星内容分享 三、星球使用四、b站up主视频推荐 一、内容介绍 二 、专栏内容-持续更新 1、JS逆向入门 2023-08-25》11.常见加密>xx音乐RSA加密 https://articles.zsxq.c…

电视乱收费致200元电视也无人买,广电总局出手了,用户拍手欢迎

各个互联网企业盯着电视用户&#xff0c;将用户当韭菜&#xff0c;收费太狠&#xff0c;导致国内市场的电视销量暴跌&#xff0c;消费者怨声载道&#xff0c;日前国家广播电视台联合其他部门开展专项整治&#xff0c;狠杀这类乱收费的乱象&#xff0c;或许将有望挽回用户。 近几…

报错处理:MySQL数据库连接超时

具体报错&#xff1a; ERROR 2002 (HY000): Cant connect to local MySQL server through socket /var/run/mysqld/mysqld.sock (2) 报错环境&#xff1a;该报错一般发生在Linux服务器上运行MySQL数据库时&#xff0c;尝试连接MySQL时出现连接超时的情况。 排错思路&#xff1a…

VIOOVI分享:什么是动作分析?动作分析的方法有哪些?

动作分析是由吉尔布雷斯夫妇始创的&#xff0c;是根据操作者实施的动作顺序观察动作&#xff0c;用特定的标记记录以手和眼睛为中心的人体各部位的动作内容&#xff0c;掌握实际情况&#xff0c;并将上述记录制成图表的一套分析方法&#xff0c;在此基础上判断动作质量&#xf…

Docker容器学习:Dockerfile制作Web应用系统nginx镜像

目录 编写Dockerfile 1.文件内容需求&#xff1a; 2.编写Dockerfile&#xff1a; 3.开始构建镜像 4.现在我们运行一个容器&#xff0c;查看我们的网页是否可访问 推送镜像到私有仓库 1.把要上传的镜像打上合适的标签 2.登录harbor仓库 3.上传镜像 编写Dockerfile 1.文…

[机缘参悟-102] :IT人 - 管理的本质?管理人与从事技术的本质区别?人性、冰山模型、需求层次模型

感悟&#xff1a; 管理的本质是&#xff1a;学习各种管理理论、方法、技能&#xff0c;克服自身的人性缺点、预防他人人性的恶点、利用他人的人性特点拿到结果&#xff0c;从而完成组织、管理者的上司、管理者自身、管理者下属的目标。管理中的问题&#xff0c;80%以上都人性问…

基于实例的学习方法

基于实例的学习方法 动机基本概念基于实例的学习基于实例的概念表示 1. 最近邻最近邻的例子理论结果最近邻&#xff08;1- NN&#xff09;:解释问题 K-近邻(KNN)KNN讨论1 &#xff1a;距离度量KNN 讨论2&#xff1a;属性KNN:属性归一化KNN:属性加权 KNN讨论3:连续取值目标函数K…

数据结构(Java实现)LinkedList与链表(上)

链表 逻辑结构 无头单向非循环链表&#xff1a;结构简单&#xff0c;一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构&#xff0c;如哈希桶、图的邻接表等等。 无头双向链表&#xff1a;在Java的集合框架库中LinkedList底层实现就是无头双向循环链表。 链表的…

Stylet框架

Stylet框架 编辑时间:2023/8/25 1.Stylet简介 Stylet是一个小巧但功能强大的MVVM框架&#xff0c;灵感来自Caliburn.Micro。其目的是进一步降低复杂性和魔力&#xff08;译者注&#xff1a;Caliburn.Micro有很多让人抓狂的约定&#xff0c;看起来像魔法&#xff0c;这对新手…

项目进度管理(4-2)关键链法和关键路径法的区别和联系

1 关键链法和关键路径法的主要区别 1.1 关键链法和关键路径法的关注焦点不同 关键路径法&#xff08;CPM&#xff09;&#xff1a;关注项目中最长的路径&#xff0c;也就是所需时间最长的路径&#xff0c;这被称为关键路径。关键路径决定了项目的最早完成时间。关键链法&…

Jetbrains IDE新UI设置前进/后退导航键

背景 2023年6月&#xff0c;Jetbrains在新发布的IDE&#xff08;Idea、PyCharm等&#xff09;中开放了新UI选项&#xff0c;我们勾选后重启IDE&#xff0c;便可以使用这一魔性的UI界面了。 但是前进/后退这对常用的导航键却找不到了&#xff0c;以前的设置方式&#xff08;Vi…

【2022年电赛】有人开摆,有人跑路,有人5秒不识数

前言&#xff1a;该作品是2022年四川省电子设计竞赛一等奖作品&#xff0c;其能稳定完成全部四个问题&#xff0c;但存在停车距离的精度问题。该文章将会介绍该作品的整体设计思路&#xff0c;关键控制算法等技术相关问题&#xff0c;也会给出工程的下载链接。同时本人参加过20…

考研408 | 【操作系统】 内存管理

内存的基础 内存和内存的作用&#xff1a; 几个常用的数量单位&#xff1a; 指令的工作原理&#xff1a; 问题&#xff1a;如何将指令中的逻辑地址转换为物理地址&#xff1f; 解决办法&#xff1a;装入的三种方式 1.绝对装入 2.可重定位装入 3.动态重定位 从写程序到程…

分布式事务篇-2.2 Seata存储模式,配置模式,注册模式

文章目录 前言一、存储模式:1.1 存储模式的作用&#xff1a;1.2 File 存储模式&#xff1a;1.2.1 映射数据存储文件&#xff1a;1.2.3 file存储优缺点&#xff1a; 1.3 db 存储模式&#xff1a;1.3.1 application.yml 配置db 信息&#xff1a;1.3.1 拷贝驱动jar&#xff1a;1.3…

实验室信息化建设都包括哪些方面?

在现代的计算机通信系统、信息安全系统和自动控制等系统中&#xff0c;软件开发工作占了相当大的比重&#xff0c;而与这些系统有关的软件一般十分庞大&#xff0c;也相当复杂。这些软件还要大量地与操作系统核作深层次的交互&#xff0c;以进行信息的传输、控制和实现各种通信…