Nginx 实战系列(一)—— Web 核心概念、HTTP/HTTPS协议 与 Nginx 安装

文章目录

  • 前言
  • 一、Web 概念
    • 1.1 Web 的基本概念
      • 1.1.1 Web的特点
    • 1.2 B/S 架构模型
    • 1.3 Web 请求与响应过程(重点)
    • 1.4 静态资源与动态资源
    • 1.5 Web 的发展阶段
    • 1.6 案例:搭建最小 Web 服务
      • 1.6.1 目标
      • 1.6.2 搭建步骤
    • 1.7 小结
  • 二、HTTP 与 HTTPS 协议
    • 2.1 HTTP与HTTPS区别
    • 2.2 HTTPS 握手流程
    • 2.3 HTTP状态码(重点)
      • 2.3.1 HTTP 状态码概览
      • 2.3.2 常用状态码详解
        • 2.3.2.1 2xx 成功
        • 2.3.2.2 3xx 重定向
        • 2.3.2.3 4xx 客户端错误(重点)
        • 2.3.2.4 5xx 服务器错误(重点)
      • 2.3.3 生活中的 HTTP 状态码类比
  • 三、Nginx 概念
    • 3.1 Nginx 介绍
      • 3.1.1 Nginx 官网
    • 3.2 Nginx与Apache的差异
    • 3.3 Nginx 进程结构
  • 四、Nginx安装
    • 4.1 关闭防火墙,将安装nginx所需软件包传到/opt目录下
    • 4.2 安装依赖包
    • 4.3 创建运行用户、组
    • 4.4 编译安装Nginx
    • 4.5 检查、启动、重启、停止 nginx服务
    • 4.6 添加 Nginx 系统服务
      • 4.6.1 方法一
      • 4.6.2 方法二
  • 总结

前言

在互联网技术体系中,Web 作为连接用户与信息的核心载体,其底层逻辑与关键技术是每一位技术学习者、运维工程师及开发人员必须掌握的基础。从用户在浏览器输入 URL 到页面最终呈现,背后涉及 Web 架构模型、请求响应流程、协议交互等一系列复杂机制;而 Nginx 作为当前主流的高性能 Web 服务器,更是支撑海量并发访问、保障服务稳定运行的关键工具。

为帮助读者系统性梳理 Web 技术体系,逐步掌握从理论到实践的完整技能链,特推出《Nginx 实战系列》文章。本系列将以 “概念解析 - 原理深挖 - 实战操作” 为核心逻辑,从基础到进阶,层层递进地讲解 Web 技术栈与 Nginx 的核心能力。

作为系列的第一篇,本文将聚焦 Web 的核心概念、HTTP/HTTPS 协议的关键机制,以及 Nginx 的安装配置,为后续深入学习反向代理、负载均衡、性能优化等内容打下坚实基础,无论是零基础入门还是技术复盘,都能从中获取清晰的知识框架与可落地的操作指南。


一、Web 概念

1.1 Web 的基本概念

Web(World Wide Web,万维网)是运行在互联网之上的一个超文本信息系统,它依赖于 HTTP/HTTPS 协议 实现浏览器与服务器之间的交互。

DNS解析:
生效顺序:1、host文件 2、网卡配置 3、/etc/resolv.conf

1.1.1 Web的特点

  • 分布式:资源分布在世界各地的服务器上。
  • 跨平台:只要有浏览器,就能访问资源。
  • 无状态:每次 HTTP 请求都是独立的,服务器不会记住客户端状态(除非使用 Cookie/Session)。

1.2 B/S 架构模型

Web 采用 B/S 架构(Browser/Server)

  • Browser(浏览器):用户的入口,发送请求、渲染页面。
  • Server(服务器):接收请求,返回所需资源或动态内容。

图 1-1:B/S 架构示意图

用户浏览器 ──> Web服务器(Nginx/Apache)│└─> 应用服务器(PHP/Python/Java)│└─> 数据库(MySQL/Redis)

1.3 Web 请求与响应过程(重点)

一次完整的 Web 访问过程包括以下步骤:

  1. 输入 URL:用户在浏览器输入 http://www.example.com
  2. DNS 解析:浏览器将域名解析为 IP 地址。
  3. 建立连接:浏览器与 Web 服务器建立 TCP 连接(3 次握手)。
  4. 发送请求:浏览器发起 HTTP 请求(GET/POST)。
  5. 服务器处理
    • Web 服务器处理静态资源请求
    • 动态请求转发到应用服务器(如 Tomcat、Django)
    • 应用服务器可能再查询数据库
  6. 返回响应:Web 服务器将结果打包成 HTTP 响应报文返回浏览器。
  7. 渲染页面:浏览器解析 HTML、加载 CSS/JS、渲染最终页面。

图 1-2:Web 请求-响应流程

浏览器 ----> Web服务器 ----> 应用服务器 ----> 数据库<----       <----             <---- 

1.4 静态资源与动态资源

  • 静态资源:不需要服务器额外处理,直接返回即可。

    • HTML、CSS、图片、视频、JS 文件
    • 优点:速度快,压力小
  • 动态资源:需要服务器端代码计算生成,再返回客户端。

    • PHP 脚本、Python Flask/Django、Java Servlet、Ruby

    • 优点:个性化内容,支持交互

图 1-3 静态与动态资源对比图

静态资源:用户请求 → Web服务器直接返回
动态资源:用户请求 → Web服务器 → 应用服务器运行代码 → 返回结果

1.5 Web 的发展阶段

  • Web 1.0(只读):以静态网页为主,用户仅能被动浏览内容
  • Web 2.0(交互式):支持用户生成内容,AJAX等前端技术广泛应用
  • Web 3.0(智能化):引入语义网、区块链技术,推动去中心化网络发展

1.6 案例:搭建最小 Web 服务

注意后面安装nginx之后再创建一个静态页面

1.6.1 目标

体验一次最简单的 Web 请求与响应过程 Wireshark 并且抓包。
三次握手与四次挥手
在这里插入图片描述
在这里插入图片描述

1.6.2 搭建步骤

创建一个静态页面:

<!-- index.html -->
<html>
<head><title>My First Web</title></head>
<body>
<h1>Hello Web!</h1>
<p>This is my first web page.</p>
</body>
</html>HTML 文档结构
<!-- index.html -->
<html(标签)> 
<head(头部)><title>My First Web</title></head>    
<body(主体)>
<h1(一级标题)>Hello Web!</h1>
<p(段落标签)>This is my first web page.</p>
</body>
</html>

1.7 小结

  • Web 是基于 B/S 架构 的信息交互方式。
  • 核心是 请求-响应模型,通过 HTTP/HTTPS 协议传输数据。
  • Web 可提供 静态资源动态资源

二、HTTP 与 HTTPS 协议

2.1 HTTP与HTTPS区别

  • HTTP:明文传输,不安全。
  • HTTPS:在 HTTP 上加入 SSL/TLS 加密,防止中间人攻击。

2.2 HTTPS 握手流程

TLS 握手过程:客户端发起请求 → 服务端返回证书 → 双方协商加密算法 → 建立安全通道。
客户端 Hello → 服务端 Hello + 证书 → 客户端验证 → 加密通信

TLS 握手过程(建立安全通道)

流程

  1. 客户端 Hello

    • 浏览器发起请求,告诉服务器自己支持哪些加密算法。
  2. 服务端 Hello + 证书

    • 网站返回 SSL 证书(证明身份),选择一种加密算法。
  3. 客户端验证证书

    • 浏览器检查证书是否可信(CA 颁发、没过期、域名匹配)。
  4. 协商密钥

    • 双方生成一个临时密钥,用于对称加密后续通信。
  5. 加密通信开始

    • 后续 HTTP 数据都通过加密通道传输。

2.3 HTTP状态码(重点)

2.3.1 HTTP 状态码概览

HTTP 状态码都是 三位数字,按首位分为五类:

类型范围含义大白话理解
1xx100–199信息性状态码“我收到了请求,还在处理中”
2xx200–299成功“请求成功,服务器给你东西了”
3xx300–399重定向“你要的东西搬家了,去新地址找”
4xx400–499客户端错误“你请求有问题(URL错、权限不够)”
5xx500–599服务器错误“服务器出问题,暂时拿不到东西”

2.3.2 常用状态码详解

2.3.2.1 2xx 成功
状态码含义类比
200 OK请求成功“东西拿到了”
201 Created创建成功“你提交的表单/资源已创建”
204 No Content成功,但没有内容“操作成功,但没有额外东西返回”
2.3.2.2 3xx 重定向
状态码含义类比
301 Moved Permanently永久搬家“这个页面永久换地址了”
302 Found临时搬家“暂时换地址,下一次还用旧地址”
304 Not Modified内容未改“东西没变,你可以用缓存”
2.3.2.3 4xx 客户端错误(重点)
状态码含义类比
400 Bad Request请求格式错“你写的请求我看不懂”
401 Unauthorized未认证“先登录,再访问”
403 Forbidden禁止访问“你没权限”
404 Not Found找不到页面“东西搬走或根本没这东西”
2.3.2.4 5xx 服务器错误(重点)
状态码含义类比
500 Internal Server Error服务器内部出错“服务器崩了”
502 Bad Gateway网关错误“我去找别的服务器,结果那边挂了”
503 Service Unavailable服务不可用“服务器忙不过来了,稍后再试”
504 Gateway Timeout网关超时“找别的服务器太慢,超时了”

2.3.3 生活中的 HTTP 状态码类比

场景状态码对应情况
打开网页正常200成功拿到网页
点链接页面搬家301/302浏览器自动跳到新地址
输入错网址404“没找到这个页面”
登录需要权限401“先登录才能看”
网站挂了500“服务器出问题了”

HTTP 状态码就是服务器对你请求的“回话信息”,告诉你请求成功没、东西搬没搬、你有没有权限、或者服务器出问题了。


三、Nginx 概念

3.1 Nginx 介绍

Nginx (“engine x”) 是一个高性能的 HTTP 和反向代理服务器。Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。其将源代码以类 BSD 许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011 年 6 月 1 日,Nginx 1.0.4 发布。企业中一般使用1.20版本。

Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,单台物理服务器可支持30 000~50 000个并发请求。并在一个 BSD-like 协议下发行。由俄罗斯的程序设计师 Igor Sysoev 所开发,供俄国大型的入口网站及搜索引擎 Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用 Nginx 网站用户有:百度 BWS、新浪、网易、腾讯等。

Nginx 是一个 高性能 Web 服务器,它可以做很多事情:

  • 静态资源服务:可以直接把网页、图片、视频这些文件发给用户。
  • 反向代理:用户访问你的服务器,Nginx 可以帮你把请求转发到后端真正处理请求的服务器。
  • 负载均衡:Nginx 能够智能地将访问流量分配到多台后端服务器,确保每台服务器都能均衡处理请求,避免过载情况发生。
  • 高并发处理:用事件驱动的方式处理请求,能同时处理成千上万的用户请求,而不会占用太多资源。

优势

  • 轻量级,占用内存小
  • 支持百万级并发访问
  • 稳定可靠,开源且社区活跃

3.1.1 Nginx 官网

RamBler:http://www.rambler.ru/ 
nginx: http://nginx.org/Mainline version 主线版本
Stable version 稳定版本
Legacy versions 老版本,遗产版本旧版本下载:http://mirrors.sohu.com/nginx/
Nginx 中文参考地址: http://www.nginx.cn/doc/

3.2 Nginx与Apache的差异

  • Nginx是一个基于事件的Web服务器,Apache是一个基于流程的服务器;
  • Nginx避免子进程的概念,Apache是基于子进程的;
  • Nginx在内存消耗和连接方面更好,Apache在内存消耗和连接方面一般;
  • Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于CPU和内存等硬件;
  • Nginx支持热部署,Apache不支持热部署;
  • Nginx对于静态文件处理具有更高效率,Apache相对一般;
  • Nginx在反向代理场景具有明显优势,Apache相对一般。

3.3 Nginx 进程结构

Web请求处理机制:

  • 多进程方式:服务器每接收到一个客户端请求就有服务器的主进程生成一个子进程响应客户端,直到用户关闭连接,这样的优势是处理速度快,子进程之间相互独立,但是如果访问过大会导致服务器资源耗尽而无法提供请求。
  • 多线程方式:与多进程方式类似,但是每收到一个客户端请求会有服务进程派生出一个线程来个客户方进行交互,一个线程的开销远远小于一个进程,因此多线程方式在很大程度减轻了web服务器对系统资源的要求,但是多线程也有自己的缺点,即当多个线程位于同一个进程内工作的时候,可以相互访问同样的内存地址空间,所以他们相互影响,一旦主进程挂掉则所有子线程都不能工作了,IIS服务器使用了多线程的方式,需要间隔一段时间就重启一次才能稳定。

工作进程(worker process)的功能

所有 Worker 进程都是平等的
实际处理:网络请求,由 Worker 进程处理
Worker进程数量:一般设置为核心数,充分利用CPU资源,同时避免进程数量过多,导致进程竞争CPU资源,增加上下文切换的损耗
接受处理客户的请求
将请求依次送入各个功能模块进行处理
I/O调用,获取响应数据
与后端服务器通信,接收后端服务器的处理结果
缓存数据,访问缓存索引,查询和调用缓存数据
发送请求结果,响应客户的请求
接收主程序指令,比如重启、升级和退出等

四、Nginx安装

4.1 关闭防火墙,将安装nginx所需软件包传到/opt目录下

cd /opt
wget https://nginx.org/download/nginx-1.20.2.tar.gz
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

在这里插入图片描述

4.2 安装依赖包

nginx的配置及运行需要pcre、zlib等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件。

yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel

4.3 创建运行用户、组

Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限

#-M:不创建用户的主目录
#-s /sbin/nologin:将用户的登录shell设置为/sbin/nologin,禁止交互式登录
useradd -M -s /sbin/nologin nginx

在这里插入图片描述

4.4 编译安装Nginx

cd /opt
tar zxvf nginx-1.20.2.tar.gz -C /opt/
cd nginx-1.20.2/
./configure \
--prefix=/usr/local/nginx \							#指定nginx的安装路径
--user=nginx \											#指定用户名
--group=nginx \										#指定组名
--with-http_stub_status_module				#启用 http_stub_status_module 模块以支持状态统计
--with-http_ssl_module							# 启用 HTTPS 模块   

执行以下代码:

./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_module

在这里插入图片描述

make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/	#让系统识别nginx的操作命令

在这里插入图片描述
在这里插入图片描述
企业中常用的模块:

./configure
–prefix=/usr/local/nginx \ # 安装目录
–user=nginx \ # 运行用户(后续会创建)
–group=nginx \ # 运行用户组
–with-http_ssl_module \ # 启用 HTTPS 模块
–with-http_v2_module \ # 启用 HTTP/2 协议(提升性能)
–with-http_gzip_static_module \ # 启用静态 gzip 压缩
–with-http_stub_status_module \ # 启用状态监控模块
–with-pcre \ # 启用 PCRE 正则支持(rewrite 依赖)
–with-stream \ # 启用 TCP 代理模块(如反向代理数据库)
–with-stream_ssl_module \ # 启用 TCP 代理的 SSL 支持
–http-log-path=/var/log/nginx/access.log \ # 访问日志路径
–error-log-path=/var/log/nginx/error.log \ # 错误日志路径
–pid-path=/var/run/nginx/nginx.pid \ # PID 文件路径
–lock-path=/var/lock/nginx.lock # 锁文件路径
注意:
可根据需求增减模块(如 --without-xxx 禁用不需要的模块)
企业若需特殊模块(如第三方缓存模块),可通过 --add-module 引入

4.5 检查、启动、重启、停止 nginx服务

#检查配置文件是否配置正确
nginx -t							
#启动
nginx

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

nginx拓展

#停止
cat /usr/local/nginx/logs/nginx.pid		#先查看nginx的PID号
kill -3 <PID号>
kill -s QUIT <PID号>
killall -3 nginx
killall -s QUIT nginx
#重载
kill -1 <PID号>
kill -s HUP <PID号>
killall -1 nginx
killall -s HUP nginx
#日志分割,重新打开日志文件
kill -USR1 <PID号>
#平滑升级
kill -USR2 <PID号>
信号编号信号名含义
0EXIT程序退出时收到该信息。
1HUP挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。
2INT表示结束进程,但并不是强制性的,常用的 “Ctrl+C” 组合键发出就是一个 kill -2 的信号。
3QUIT退出。
9KILL杀死进程,即强制结束进程。
11SEGV段错误。
15TERM正常结束进程,是 kill 命令的默认信号

4.6 添加 Nginx 系统服务

4.6.1 方法一

vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: 35 99 20    // 这是固定格式,2345表示运行级别,之后为开机执行顺序和关机执行顺序
#description:Nginx Service Control Script    //这也是必须的 
COM="/usr/local/nginx/sbin/nginx" 
PID="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)$COM
;;stop)kill -s QUIT $(cat $PID)
;;restart)$0 stop$0 start
;;reload)kill -s HUP $(cat $PID)
;;*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1esac
exit 0

在这里插入图片描述

chmod +x /etc/init.d/nginx
chkconfig --add nginx				 #添加为系统服务
systemctl stop nginx   
systemctl start nginx

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

4.6.2 方法二

vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[Unit]:服务的说明
Description:描述服务
After:依赖,当依赖的服务启动之后再启动自定义的服务[Service]服务运行参数的设置
Type=forking是后台运行的形式,使用此启动类型应同时指定
PIDFile以便systemd能够跟踪服务的主进程。
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径[Install]服务安装的相关设置,可设置为多用户
chmod 754 /lib/systemd/system/nginx.servicesystemctl start nginx.service
systemctl enable nginx.service

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


总结

本文作为《Nginx 实战系列》的开篇,围绕 Web 技术体系的 “基础层” 与 “工具层” 展开,完成了从理论到实践的初步衔接。在 Web 概念部分,我们明确了 Web 作为超文本信息系统的本质,梳理了 B/S 架构的组成、一次完整 Web 请求 - 响应的 7 个关键步骤,并区分了静态资源与动态资源的差异,同时回顾了 Web 从 1.0 到 3.0 的发展脉络,帮助读者建立对 Web 技术的整体认知。

HTTP/HTTPS 协议部分,重点对比了两者的安全性差异,拆解了 TLS 握手的 5 个核心流程,并系统梳理了 HTTP 状态码的分类与常用场景 —— 尤其是 4xx 客户端错误与 5xx 服务器错误的典型状态码,为后续问题排查提供了关键依据。

Nginx 实战部分,我们从环境准备、依赖安装、用户创建,到编译配置、服务启停与系统服务注册,完整呈现了 Nginx 1.20 版本的安装流程,同时补充了 Nginx 的进程结构、核心功能(静态资源服务、反向代理等)及与 Apache 的差异,让读者不仅能完成安装操作,更能理解背后的设计逻辑。

后续系列文章将在此基础上,进一步深入 Nginx 的核心配置(如反向代理、负载均衡)、性能优化、日志分析与故障排查等内容,持续完善 Web 技术与 Nginx 实战的知识体系,助力读者将理论转化为实际应用能力。

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

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

相关文章

一种用geoserver发布复杂样式矢量服务的方法

最近因为系统需要在国产系统中部署&#xff0c;遇见了国产系统不支持ArcGIS的尴尬局面&#xff0c;好在geoserver还是可以支持的&#xff0c;遂用geoserver解决服务问题。 在发布过程中&#xff0c;遇到比较难受的点就是矢量数据的样式配图&#xff0c;在我用QGIS配好导出sld后…

为什么神经网络网络算法比机器学习模型算法更加强大?

神经网络&#xff08;尤其是深度神经网络&#xff09;相比传统机器学习模型&#xff08;如线性回归、决策树、支持向量机等&#xff09;的“强大”主要体现在其更强的表达能力、自适应特征学习能力以及对复杂模式的建模能力。但这种“强大”并非绝对&#xff0c;而是有特定条件…

中国移动浪潮云电脑CD1000-系统全分区备份包-可瑞芯微工具刷机-可救砖

中国移动浪潮云电脑CD1000-系统全分区备份包-可瑞芯微工具刷机-可救砖 开启ADB教程&#xff1a; 可查看&#xff1a;浪潮CD1000-移动云电脑-RK3528芯片-232G-安卓9-开启ADB ROOT破解教程 可轻松打开了wifi adb和USB调试。 往期详细内容-文章&#xff1a;浪潮CD1000-移动云电脑…

C++两个字符串的结合

这段代码实现字符串拼接功能。用户输入两个字符串a和b后&#xff0c;使用append()方法将b追加到a后面&#xff0c;然后输出拼接后的结果。代码简洁但存在改进空间&#xff1a;1. 缺少输入验证 2. 直接修改原字符串a可能不符合某些场景需求 3. 可考虑更高效的拼接方式。适合基础…

UE4 Rider调试时添加自定义命令行参数

1、打开 Rider 右上角&#xff0c;针对你的项目&#xff08;例如叫做“Mini”&#xff09;打开 Edit 2、输入自定义的参数&#xff0c;如下图的例子是输入 -dx12 -norhithread &#xff0c;然后Apply并OK。3、开始调试&#xff08;虫子按钮&#xff09;

混合架构大型语言模型(Jamba)

Jamba是由AI21 Labs开发的混合架构大型语言模型&#xff08;LLM&#xff09;&#xff0c;结合了Transformer的语义理解能力和Mamba结构化状态空间模型&#xff08;SSM&#xff09;的高效性&#xff0c;旨在解决长文本处理中的计算瓶颈。 一、技术特点 1.混合架构设计 Jamba采用…

2025 年高教社杯全国大学生数学建模竞赛C 题 NIPT 的时点选择与胎儿的异常判定详解(一)

基于胎儿Y染色体浓度的孕周与BMI建模分析摘要本文利用某竞赛提供的胎儿Y染色体浓度数据&#xff0c;建立了以孕周和孕妇BMI为自变量的多项式回归模型&#xff0c;探讨了其对Y染色体浓度的影响。通过数据清洗与筛选&#xff0c;共获得1082条有效男胎样本。结果显示&#xff1a;Y…

PyTorch DDP 随机卡死复盘:最后一个 batch 挂起,NCCL 等待不返回

PyTorch DDP 随机卡死复盘&#xff1a;最后一个 batch 挂起&#xff0c;NCCL 等待不返回&#xff0c;三步修复 Sampler & drop_last很多人在接触深度学习的过程往往都是从自己的笔记本开始的&#xff0c;但是从接触工作后&#xff0c;更多的是通过分布式的训练来模型。由于…

计算机专业考研备考建议

对于全国硕士研究生招生考试&#xff08;考研&#xff09;&#xff0c;考试科目主要由两大部分组成&#xff1a;全国统一命题的公共课 和 由招生单位自主命题的专业课。具体的考试科目取决于你报考的专业和学校。下面我为你详细拆解&#xff1a;一、考试科目构成&#xff08;绝…

关于嵌入式学习——单片机1

基础整体概念以应用为中心:消费电子(手机、蓝牙耳机、智能音响)、医疗电子(心率脉搏、呼吸机)、无人机(大疆D)、机器人(人形四足机器人) 计算机技术:计算机五大组成:运算器(数据运算)、控制器(指令控制)、存储器(内存外存)、输入设备(鼠标、键盘、摄像头)、输出设备(显示器)软件…

LightDock.server liunx 双跑比较

LightDock: a new multi-scale approach to protein–protein docking The LightDock server is free and open to all users and there is no login requirement server 1示例 故去除约束 next step 结果有正有负合理 2.常见警告⚠ Structure contains HETATM entries. P…

SQL面试题及详细答案150道(61-80) --- 多表连接查询篇

《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,MySQL,Linux… 。 前后端面试题-专栏总目录 文章目录 一、本文面试题目录 61. 什么是内连接(INNE…

【实操】Noej4图数据库安装和mysql表衔接实操

目录 一、图数据库介绍 二、安装Neo4j 2.1 安装java环境 2.2 安装 Neo4j&#xff08;社区版&#xff09; 2.3 修改配置 2.4 验证测试 2.5 卸载 2.6 基本用法 2.7 windows连接服务器可视化 三、neo4j和mysql对比 3.1 场景对比 3.2 Mysql和neo4j的映射对比 3.3 mys…

【mysql】SQL查询全解析:从基础分组到高级自连接技巧

SQL查询全解析&#xff1a;从基础分组到高级自连接技巧详解玩家首次登录查询的多种实现方式与优化技巧在数据库查询中&#xff0c;同一个需求往往有多种实现方式。本文将通过"查询每个玩家第一次登录的日期"这一常见需求&#xff0c;深入解析SQL查询的多种实现方法&a…

MySQL常见报错分析及解决方案总结(9)---出现interactive_timeout/wait_timeout

关于超时报错&#xff0c;一共有五种超时参数&#xff0c;详见&#xff1a;MySQL常见报错分析及解决方案总结(7)---超时参数connect_timeout、interactive_timeout/wait_timeout、lock_wait_timeout、net等-CSDN博客 以下是当前报错的排查方法和解决方案&#xff1a; MySQL 中…

第13章 Jenkins性能优化

13.1 性能优化概述 性能问题识别 常见性能瓶颈&#xff1a; Jenkins性能问题分类&#xff1a;1. 系统资源瓶颈- CPU使用率过高- 内存不足或泄漏- 磁盘I/O瓶颈- 网络带宽限制2. 应用层面问题- JVM配置不当- 垃圾回收频繁- 线程池配置问题- 数据库连接池不足3. 架构设计问题- 单点…

Python+DRVT 从外部调用 Revit:批量创建梁

今天让我们继续&#xff0c;看看如何批量创建常用的基础元素&#xff1a;梁。 跳过轴线为直线段形的&#xff0c;先从圆弧形的开始&#xff1a; from typing import List, Tuple import math # drvt_pybind 支持多会话、多文档&#xff0c;先从简单的单会话、单文档开始 # My…

水上乐园票务管理系统设计与开发(代码+数据库+LW)

摘 要 随着旅游业的蓬勃发展&#xff0c;水上乐园作为夏日娱乐的重要组成部分&#xff0c;其票务管理效率和服务质量直接影响游客体验。然而&#xff0c;传统的票务管理模式往往面临信息更新不及时、服务响应慢等问题。因此&#xff0c;本研究旨在通过设计并实现一个基于Spri…

【前端教程】JavaScript DOM 操作实战案例详解

案例1&#xff1a;操作div子节点并修改样式与内容 功能说明 获取div下的所有子节点&#xff0c;设置它们的背景颜色为红色&#xff1b;如果是p标签&#xff0c;将其内容设置为"我爱中国"。 实现代码 <!DOCTYPE html> <html> <head><meta ch…

qiankun+vite+react配置微前端

微前端框架&#xff1a;qiankun。 主应用&#xff1a;react19vite7&#xff0c;子应用1&#xff1a;react19vite7&#xff0c;子应用2 &#xff1a;react19vite7 一、主应用 1. 安装依赖 pnpm i qiankun 2. 注册子应用 (1) 在src目录下创建个文件夹&#xff0c;用来存储关于微…