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

Nginx 基础使用(2025)

一、Nginx目录结构

[root@localhost ~]# tree /usr/local/nginx
/usr/local/nginx
├── client_body_temp                 # POST 大文件暂存目录
├── conf                             # Nginx所有配置文件的目录
│   ├── fastcgi.conf                 # fastcgi相关参数的配置文件
│   ├── fastcgi.conf.default         # fastcgi.conf的原始备份文件
│   ├── fastcgi_params               # fastcgi的参数文件
│   ├── fastcgi_params.default       
│   ├── koi-utf
│   ├── koi-win
│   ├── mime.types                   # 媒体类型
│   ├── mime.types.default
│   ├── nginx.conf                   #这是Nginx默认的主配置文件,日常使用和修改的文件
│   ├── nginx.conf.default
│   ├── scgi_params                  # scgi相关参数文件
│   ├── scgi_params.default  
│   ├── uwsgi_params                 # uwsgi相关参数文件
│   ├── uwsgi_params.default
│   └── win-utf
├── fastcgi_temp                     # fastcgi临时数据目录
├── html                             # Nginx默认站点目录
│   ├── 50x.html                     # 错误页面优雅替代显示文件,例如出现502错误时会调用此页面
│   └── index.html                   # 默认的首页文件
├── logs                             # Nginx日志目录
│   ├── access.log                   # 访问日志文件
│   ├── error.log                    # 错误日志文件
│   └── nginx.pid                    # pid文件,Nginx进程启动后,会把所有进程的ID号写到此文件
├── proxy_temp                       # 临时目录
├── sbin                             # Nginx 可执行文件目录
│   └── nginx                        # Nginx 二进制可执行程序
├── scgi_temp                        # 临时目录
└── uwsgi_temp                       # 临时目录

主要的目录包含conf,html,logs和sbin:

            ① conf目录用来存放配置文件相关

            ② html目录用来存放静态文件的默认目录 ,如前端包、htmlcss

            ③ logs目录用来存放日志信息

            ④ sbin目录用于存放可执行文件,可以用 ./nginx启动nginx:

    二、基本运行原理

    Nginx 是一种高性能的 HTTP 和反向代理服务器,它采用了经典的「Master-Worker」模型来运行。以下是 Nginx 基本运行原理的介绍:

    1. 启动过程

      • 当 Nginx 启动时,首先会创建一个 Master 进程。

      • Master 进程负责读取和验证配置文件(如 /conf/nginx.conf),确保配置的正确性。

    2. 配置文件

      • 配置文件中定义了 Nginx 的各种设置,包括监听的端口、处理请求的方式等。

    3. Worker 进程

      • Master 进程会根据配置文件中的设置,启动多个 Worker 进程。

      • 这些 Worker 进程是实际处理客户端请求的进程。

      • 每个 Worker 进程独立运行,平等地竞争来自客户端的请求。

    4. 请求处理

      • 客户端通过浏览器或其他方式向 Nginx 发送请求(如访问 http://192.168.44.101/index.html)。

      • 请求首先到达 Master 进程,然后由 Master 进程分发给一个 Worker 进程。

      • Worker 进程解析请求,并根据请求内容读取相应的文件(如 /html/index.html)。

      • Worker 进程处理完请求后,将响应返回给客户端。

    5. 进程管理

      • Master 进程负责管理 Worker 进程,包括接收外界信号、向 Worker 进程发送信号、监控 Worker 进程的运行状态等。

      • 如果某个 Worker 进程异常退出,Master 进程会自动重新启动一个新的 Worker 进程,以确保服务的连续性。

    6. 性能优化

      • 通常,Worker 进程的数量会设置为与机器的 CPU 核心数一致,以充分利用多核 CPU 的性能。

      • Nginx 的事件处理模型(如 epoll)使得 Worker 进程能够高效地处理大量并发连接。

    通过这种「Master-Worker」模型,Nginx 能够实现高性能、高并发的 Web 服务处理。

    三、Nginx配置与应用场景

    3.1 nginx.conf

    刚安装好的nginx.conf如下:

    #user  nobody;
    worker_processes  1;#error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
    }http {include       mime.types;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##server {#    listen       443 ssl;#    server_name  localhost;#    ssl_certificate      cert.pem;#    ssl_certificate_key  cert.key;#    ssl_session_cache    shared:SSL:1m;#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;#    ssl_prefer_server_ciphers  on;#    location / {#        root   html;#        index  index.html index.htm;#    }#}}
    

    去掉注释的简单版如下:

    worker_processes  1; #允许进程数量,建议设置为cpu核心数或者auto自动检测,
    #注意Windows服务器上虽然可以启动多个processes,但是实际只会用其中一个events {#单个进程最大连接数(最大连接数=连接数*进程数)#根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。worker_connections  1024;
    }http {#文件扩展名与文件类型映射表(是conf目录下的一个文件)include       mime.types;#默认文件类型,如果mime.types预先定义的类型没匹配上,默认使用二进制流的方式传输default_type  application/octet-stream;#sendfile指令指定nginx是否调用sendfile 函数(zero copy 方式)来输出文件,
    #对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,
    #可设置为off,以平衡磁盘与网络IO处理速度。sendfile        on;#长连接超时时间,单位是秒keepalive_timeout  65;#虚拟主机的配置server {#监听端口listen       80;#域名,可以有多个,用空格隔开server_name  localhost;#配置根目录以及默认页面location / {root   html;index  index.html index.htm;}#出错页面配置error_page   500 502 503 504  /50x.html;#/50x.html文件所在位置location = /50x.html {root   html;}}}
    

    配置介绍:

    worker_processes
    worker_processes 1 ; 默认为 1,表示开启一个业务进程( Worker 进程 )。
    worker_connections
    worker_connections 1024 ; 单个业务进程可接受连接数。
    include mime.types;
    include mime.types ; 引入 http mime类型,文件包含了各种文件扩展名与 MIME 类型之间的映射关系。
    default_type application/octet-stream;
    default_type application/octet - stream ; 如果 mime类型没匹配上,默认将使用二进制流的方式传输文件。
    sendfile on;
    sendfile on ; 使用 linux sendfile(socket, file, len) 高效网络传输,也就是数据 0 拷贝。
    • sendfile 可以实现数据的零拷贝(zero-copy),即数据直接从文件系统传输到网络缓冲区,而不需要经过用户空间的拷贝,从而提高传输效率。

    未开启sendfile:

    开启sendfile:

    keepalive_timeout 65;

    keepalive_timeout 是 Nginx 配置中的一个指令,它用于设置保持连接打开状态的时间,也就是长连接的超时时间。

    • time:可以是指定的秒数,也可以是小数点表示的秒数(例如,65、65.5)。

    3.2 server_name匹配规则

    我们需要注意的是 servername 匹配分先后顺序,写在前面的匹配上就不会继续往下匹配了。

    3.2.1完整匹配

    可以配置多个域名,例如:

    server_name  test81.xzj520520.cn  test82.xzj520520.cn;
    

    3.2.2通配符匹配

    使用通配符的方式如下

    ①通配符开始匹配:
    server_name  *.xzj520520.cn;
    
    ②通配符结束匹配:
    server_name  www.xzj520520.*;
    

    需要注意的是精确匹配的优先级大于通配符匹配和正则匹配。

    3.2.3正则匹配

    采用正则的匹配方式如下:

    server_name ~^[0-9]+\.mmban\.com$;

    正则匹配格式,必须以~开头,比如:server_name ~^www\d+\.example\.net$;。如果开头没有~,则nginx认为是精确匹配。在逻辑上,需要添加^$锚定符号。注意,正则匹配格式中.为正则元字符,如果需要匹配.,则需要反斜线转义。如果正则匹配中含有{}则需要双引号引用起来,避免nginx报错,如果没有加双引号,则nginx会报如下错误:directive "server_name" is not terminated by ";" in ...

    3.2.4 匹配顺序

    1. 精确匹配

         Nginx 首先查找是否有完全匹配的域名。例如,如果配置了 server_name example.com;,则该服务器块会匹配直接请求 example.com 的请求。
    2. 最长通配符匹配(以 * 开头)

         如果没有精确匹配,Nginx 会查找以星号(*)开头的最长通配符匹配。例如,server_name *.example.com; 会匹配任何以 .example.com 结尾的域名,如 sub.example.com
    3. 最长通配符匹配(以 * 结尾)

         如果没有找到以 * 开头的通配符匹配,Nginx 会查找以星号(*)结尾的最长通配符匹配。例如,server_name example.*; 会匹配任何以 example. 开头的域名,如 example.sub
    4. 正则表达式匹配

         如果上述匹配都未找到,Nginx 会查找正则表达式匹配。正则表达式必须以 ~ 开头(区分大小写)或 ~* 开头(不区分大小写)。例如,server_name ~^www\.example\.com$; 会匹配 www.example.com
    5. 特殊匹配

       server_name ""; 用于匹配 Host 请求头不存在的情况。
    6. 默认服务器块

          如果以上所有匹配都未找到,Nginx 会使用没有 server_name 指令的服务器块(如果有的话)作为默认服务器块来处理请求。

    3.3反向代理

    在 Nginx 中配置反向代理时,proxy_pass 指令用于指定客户端请求将被转发到的目标服务器地址。

    • 假设我们要将域名example.com的请求代理到后端服务器192.168.1.1008080端口。

    server {listen 80; // 监听 80 端口server_name example.com; // 指定域名location / {proxy_pass http://192.168.1.100:8080; // 将请求转发到后端服务器proxy_set_header Host $host; // 传递原始请求的 Host 头部proxy_set_header X-Real-IP $remote_addr; // 传递客户端的真实 IP 地址proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; // 添加 X - Forwarded - For 头部,用于记录请求经过的代理服务器proxy_set_header X-Forwarded-Proto $scheme; // 传递原始请求的协议(如 HTTP 或 HTTPS)}
    }
    • 在这个配置中,proxy_pass指令是核心,它指定了后端服务器的地址和端口。proxy_set_header指令用于设置转发请求时添加的头部信息,这对于后端服务器正确处理请求很重要。例如,X - Real - IP头部可以让后端服务器知道客户端的真实 IP 地址,而不是 Nginx 服务器的 IP 地址。

    3.4负载均衡

    3.4.1 如何配置负载均衡

    可以通过upstream模块定义一组后端服务器,然后在proxy_pass中引用这个upstream来实现负载均衡。

    upstream backend {server 192.168.1.100:8080;server 192.168.1.101:8080;server 192.168.1.102:8080;
    }server {listen 80;server_name example.com;location / {proxy_pass http://backend; // 引用 upstream 中定义的服务器组proxy_set_header Host $host;proxy_set_header X - Real - IP $remote_addr;proxy_set_header X - Forwarded - For $proxy_add_x_forwarded_for;proxy_set_header X - Forwarded - Proto $scheme;}
    }

    默认情况下,Nginx 使用轮询的方式将请求分发到upstream中的服务器。也可以通过least_conn(最少连接)或ip_hash(基于 IP 哈希)等指令来指定其他负载均衡策略

    3.4.2 负载均衡策略

    1. 轮询(默认策略)
    • 工作原理:默认情况下,Nginx 使用轮询策略,按照顺序依次将请求分配给后端服务器。

    • 适用场景:适用于后端服务器性能相近且请求量相对均匀的场景。

    • 配置示例

      upstream backend {server 127.0.0.1:8050;server 127.0.0.1:8060;server 127.0.0.1:8070;
      }

    2. 权重(Weight)
    • 工作原理:通过weight指令为每台服务器分配权重。权重越高,分配到的请求越多。权重默认为1。

    • 适用场景:适用于后端服务器性能不均的情况,高性能服务器可以分配更高的权重。

    • 配置示例

    upstream backend {server 127.0.0.1:8050 weight=10;  # 高性能服务器server 127.0.0.1:8060 weight=1;   # 低性能服务器server 127.0.0.1:8070 weight=5;   # 中等性能服务器
    }

    3. 禁用服务器(Down)
    • 工作原理:使用down指令可以将某台服务器标记为暂时不参与负载均衡。

    • 适用场景:当某台服务器需要维护或出现故障时,可以将其标记为down

    • 配置示例

      upstream backend {server 127.0.0.1:8050;server 127.0.0.1:8060 down;  # 暂时禁用这台服务器server 127.0.0.1:8070;
      }

    4. 备用服务器(Backup)
    • 工作原理:使用backup指令可以将某台服务器标记为备用服务器。只有当其他所有非备用服务器都不可用(如宕机或繁忙)时,才会将请求转发到备用服务器。

    • 适用场景:用于提高系统的可用性,确保在部分服务器故障时仍然可以提供服务。

    • 配置示例

    upstream backend {server 127.0.0.1:8050;server 127.0.0.1:8060;server 127.0.0.1:8070 backup;  # 备用服务器
    }

    5. IP 哈希(IP Hash)
    • 工作原理:根据客户端的IP地址进行哈希计算,将请求分配到特定的服务器。同一个客户端的请求总是被分配到同一台服务器。

    • 适用场景:适用于需要会话保持的应用场景,例如在线购物车系统。

    • 配置示例

    upstream backend {ip_hash;server 127.0.0.1:8050;server 127.0.0.1:8060;
    }

    6. 最少连接(Least Conn)
    • 工作原理:将新的请求分配给当前连接数最少的服务器。

    • 适用场景:适用于请求量波动较大且服务器性能相近的场景。

    • 配置示例

    upstream backend {least_conn;server 127.0.0.1:8050;server 127.0.0.1:8060;
    }

    7. URL 哈希(URL Hash)
    • 工作原理:根据请求的URL进行哈希计算,将请求分配到特定的服务器。适用于静态资源的负载均衡。

    • 适用场景:适用于静态资源的分配,例如图片、CSS 文件等。

    • 配置示例

    upstream backend {hash $request_uri consistent;  # 使用请求的 URI 进行哈希server 127.0.0.1:8050;server 127.0.0.1:8060;
    }

    8. 响应时间(Fair)
    • 工作原理:根据后端服务器的响应时间来分配请求。响应时间越短的服务器,分配到的请求越多。

    • 适用场景:适用于对响应时间敏感的应用场景。

    • 配置示例

    upstream backend {fair;server 127.0.0.1:8050;server 127.0.0.1:8060;
    }

    3.4.3 综合配置示例

    以下是一个综合了多种策略的配置示例:

    upstream backend {ip_hash;  # 保持会话least_conn;  # 最少连接server 127.0.0.1:8050 weight=10;server 127.0.0.1:8060 weight=5;server 127.0.0.1:8070 weight=1 backup;  # 备用服务器server 127.0.0.1:8080 down;  # 禁用服务器
    }server {listen 80;server_name example.com;location / {proxy_pass http://backend;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
    }

    3.4.3 总结

    • 轮询:适用于服务器性能相近的场景。

    • 权重:适用于服务器性能不均的场景。

    • 最少连接:适用于请求量波动较大的场景。

    • IP 哈希:适用于需要会话保持的场景。

    • URL 哈希:适用于静态资源的负载均衡。

    • 响应时间:适用于对响应时间敏感的场景。

    • 备用服务器:用于提高系统的可用性。

    • 禁用服务器:用于维护或故障处理。

    根据实际需求选择合适的策略和配置,可以有效提升系统的性能和可用性。

     

    相关文章:

    Nginx 基础使用(2025)

    一、Nginx目录结构 [rootlocalhost ~]# tree /usr/local/nginx /usr/local/nginx ├── client_body_temp # POST 大文件暂存目录 ├── conf # Nginx所有配置文件的目录 │ ├── fastcgi.conf # fastcgi相…...

    Docker基础1

    本篇文章我将从系统的知识体系讲解docker的由来和在linux中的安装下载 随后的文章会介绍下载镜像、启动新容器、登录新容器 如需转载,标记出处 docker的出现就是为了节省资本和服务器资源 当企业需要一个新的应用程序时,需要为它买台全新的服务器。这样…...

    【奇点时刻】GPT4o新图像生成模型底层原理深度洞察报告

    个人最近一直在关注openai的新图像生成特性,以下内容基于现阶段社区及研究者们对 GPT-4O 图像生成功能的公开测试、逆向分析与技术推测综合而成,OpenAI 并未正式发布完整的技术报告,因此本文为非官方推断总结。但从多方信息与技术背景出发&am…...

    Java的Selenium的特殊元素操作与定位之模态框

    Modal Dialogue Box,又叫做模式对话框,是指在用户想要对对话框以外的应用程序进行操作时,必须首先对该对话框进行响应。如单击【确定】或【取消】按钮等将该对话框关闭。 alert(警告) //访问本地的HTML文件 chromeDr…...

    回归预测 | Matlab实现NRBO-Transformer-LSTM多输入单输出回归预测

    回归预测 | Matlab实现NRBO-Transformer-LSTM多输入单输出回归预测 目录 回归预测 | Matlab实现NRBO-Transformer-LSTM多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【JCR一区级】Matlab实现NRBO-Transformer-LSTM多输入单输出回归预测&#xf…...

    Python菜鸟教程(小程序)

    目录 一.简易计算器 二.学生成绩分级 三.密码设置 四.作业选择 点赞收藏,评论支持 一.简易计算器 print(-------使用的运算符-------\n) print(1.加号) print(2.减号) print(3.乘号) print(4.除号) Aint(input(请输入第一个数: )) Bint(input(请输入第二个数: )) Fi…...

    类的(多态性、虚函数)基础练习

    练习1&#xff1a;&#xff08;简单&#xff09; #include <iostream> using namespace std; class Vehicle { public: virtual void run() const0; }; class Car: public Vehicle { public: void run() const { cout << "run a car. "<<…...

    特殊的质数肋骨--dfs+isp

    1.dfs全排列组数&#xff0c;an记得还原 2.如果范围确定且只比较质数&#xff0c;isp比线性筛快&#xff0c;主要这个范围太大了 https://www.luogu.com.cn/problem/P1218 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typed…...

    智能体开发实战指南:提示词设计、开发框架与工作流详解

    在大语言模型&#xff08;LLM&#xff09;驱动的智能体&#xff08;Agent&#xff09;快速发展的今天&#xff0c;构建一个实用、智能的Agent已不再遥不可及。无论你是开发法律助手、租房合同分析器&#xff0c;还是通用办公自动化助手&#xff0c;理解提示词工程&#xff08;P…...

    jetson orin nano学习(torch+OpenCV+yolov5+)

    一&#xff1a;入门第一件事&#xff1a;跟着商家教程配置哈哈 指令&#xff1a;nvidia-smi -h 帮助命令 sudo jtop --查看nvidia的gpu状态 Tip:教程下载的pytorth,cuda,cudnn版本不一定是你项目符合的&#xff0c;要提前想好 1.2 安装虚拟环境包&#xff08;要安…...

    client-go如何监听自定义资源

    如何使用 client-go 监听自定义资源 在 Kubernetes 中使用 client-go 监听自定义资源&#xff08;Custom Resource&#xff0c;简称 CR&#xff09;需要借助 Dynamic Client 或 Custom Informer&#xff0c;因为 client-go 的标准 Clientset 只支持内置资源&#xff08;如 Pod…...

    【51单片机】3-3【定时器/计数器/中断】超声波测距模块测距

    1.硬件 51最小系统超声波测距模块 2.软件 #include "reg52.h"//距离小于10cm,D5亮&#xff0c;D6灭&#xff0c;反之相反现象sbit D5 P3^7;//根据原理图&#xff08;电路图&#xff09;&#xff0c;设备变量led1指向P3组IO口的第7口 sbit D6 P3^6;//根据原理图&…...

    C语言求3到100之间的素数

    一、代码展示 二、运行结果 三、感悟思考 注意: 这个题思路他是一个试除法的一个思路 先进入一个for循环 遍历3到100之间的数字 第二个for循环则是 判断他不是素数 那么就直接退出 这里用break 是素数就打印出来 在第一个for循环内 第二个for循环外...

    金仓数据库KCM认证考试介绍【2025年4月更新】

    KCM&#xff08;金仓认证大师&#xff09;认证是金仓KES数据库的顶级认证&#xff0c;学员需通过前置KCA、KCP认证才能考KCM认证。 KCM培训考试一般1-2个月一次&#xff0c;KCM报名费原价为1.8万&#xff0c;当前优惠价格是1万&#xff08;趋势是&#xff1a;费用越来越高&…...

    leetcode每日一题:替换子串得到平衡字符串

    引言 今天的每日一题原题是1863. 找出所有子集的异或总和再求和&#xff0c;比较水&#xff0c;直接对于集合中的每一个元素&#xff0c;都有取或者不取2种情况&#xff0c;直接递归进去求和即可。更换成前几天遇到的更有意思的一题来写这个每日一题。 题目 有一个只含有 Q,…...

    2025年数字化社会与智能计算国际学术会议 (ICDSIC 2025)

    基本信息 官网&#xff1a;www.icdsic.net 时间&#xff1a;2025年4月18-20日 地点&#xff1a;中国-深圳 主题 数字化社会 智能计算 数字化制造、经济 数字化政务、转型 数字化农业、水利、管理 数字化医疗、学习、社区 数字基建、通信、交通 数字…...

    BN测试和训练时有什么不同, 在测试时怎么使用?

    我们来彻底搞懂 Batch Normalization&#xff08;BN&#xff09; 在训练和测试阶段的区别&#xff0c;以及 测试时怎么用。 &#x1f9e0; 一句话总结&#xff1a; 训练时&#xff1a;使用 当前 mini-batch 的均值和方差 测试时&#xff1a;使用 整个训练集估计的“滑动平均均值…...

    为什么卷积神经网络适用于图像和视频?

    我们常听说“卷积神经网络&#xff08;CNN&#xff09;擅长图像和视频”&#xff0c;但其实 CNN 的核心本质远不止图像领域。我们先搞懂它为啥适合图像/视频。 &#x1f9e0;CNN 为什么适用于图像和视频&#xff1f; 主要因为 图像/视频具有空间局部性和结构平移性&#xff0c…...

    python爬虫:DrissionPage实战教程

    如果本文章看不懂可以看看上一篇文章&#xff0c;加强自己的基础&#xff1a;爬虫自动化工具&#xff1a;DrissionPage-CSDN博客 案例解析&#xff1a; 前提&#xff1a;我们以ChromiumPage为主&#xff0c;写代码工具使用Pycharm&#xff08;python环境3.9-3.10&#xff09; …...

    【Python爬虫高级技巧】BeautifulSoup高级教程:数据抓取、性能调优、反爬策略,全方位提升爬虫技能!

    大家好&#xff0c;我是唐叔&#xff01;上期我们聊了 BeautifulSoup的基础用法 &#xff0c;今天带来进阶篇。我将分享爬虫老司机总结的BeautifulSoup高阶技巧&#xff0c;以及那些官方文档里不会告诉你的实战经验&#xff01; 文章目录 一、BeautifulSoup性能优化技巧1. 解析…...

    【动手学深度学习】卷积神经网络(CNN)入门

    【动手学深度学习】卷积神经网络&#xff08;CNN&#xff09;入门 1&#xff0c;卷积神经网络简介2&#xff0c;卷积层2.1&#xff0c;互相关运算原理2.2&#xff0c;互相关运算实现2.3&#xff0c;实现卷积层 3&#xff0c;卷积层的简单应用&#xff1a;边缘检测3.1&#xff0…...

    IPSG 功能协议

    IPSG&#xff08;IP Source Guard&#xff09;即 IP 源保护&#xff0c;是一种基于 IP 地址和 MAC 地址绑定的安全功能&#xff0c;用于防止 IP 地址欺骗和非法的 IP 地址访问。以下是配置 IPSG 功能的一般步骤&#xff1a; 基于端口的 IPSG 配置 进入接口配置模式&#xff1…...

    19.go日志包log

    核心功能与接口 基础日志输出 Print 系列&#xff1a;支持 Print()、Println()、Printf()&#xff0c;输出日志不中断程序。 log.Print("常规日志") // 输出: 2025/03/18 14:47:13 常规日志 log.Printf("格式化: %s", "数据") Fatal…...

    横扫SQL面试——TopN问题

    横扫SQL面试 电商平台的"销量Top10商品"&#x1f6cd;️&#xff0c;内容社区的"热度Top5文章“”&#x1f525;&#xff0c;还是金融领域的"交易额Top3客户"&#x1f4b0;——TopN问题无处不在&#xff01; 无论是日常业务分析&#x1f4ca;&#x…...

    高级:微服务架构面试题全攻略

    一、引言 在现代软件开发中&#xff0c;微服务架构被广泛应用于构建复杂、可扩展的应用程序。面试官通过相关问题&#xff0c;考察候选人对微服务架构的理解、拆分原则的掌握、服务治理的能力以及API网关的运用等。本文将深入剖析微服务架构相关的面试题&#xff0c;结合实际开…...

    使用MATIO库读取Matlab数据文件中的cell结构数据

    使用MATIO库读取Matlab数据文件中的cell结构数据 MATIO是一个用于读写Matlab数据文件(.mat)的C/C库。下面我将展示如何使用MATIO库来读取Matlab文件中的cell结构数据。 示例程序 #include <stdio.h> #include <stdlib.h> #include <matio.h>int main(int …...

    pyTorch框架使用CNN进行手写数字识别

    目录 1.导包 2.torchvision数据处理的方法 3.下载加载手写数字的训练数据集 4.下载加载手写数字的测试数据集 5. 将训练数据与测试数据 转换成dataloader 6.转成迭代器取数据 7.创建模型 8. 把model拷到GPU上面去 9. 定义损失函数 10. 定义优化器 11. 定义训练…...

    新能源汽车电子电气架构设计中的功能安全

    我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…...

    使用binance-connector库获取Binance全市场的币种价格,然后选择一个币种进行下单

    一个完整的示例,展示如何使用 api 获取Binance全市场的币种价格,然后选择一个最便宜的币种进行下单操作 代码经过修改,亲测可用,目前只可用于现货,合约的待开发 获取市场价格:使用client.ticker_price()获取所有交易对的当前价格 账户检查:获取账户余额,确保有足够的资…...

    HikariCP 源码核心设计解析与 ZKmall开源商城场景调优实践

    HikariCP 作为 Spring Boot 默认数据库连接池&#xff0c;其高性能源于独特的无锁设计、轻量级数据结构和精细化生命周期管理。以下从源码解析与 ZKmall开源商城性能调优两个维度展开&#xff1a; 一、HikariCP 源码核心设计解析 ​无锁并发控制与 ConcurrentBag 容器 ​Concur…...

    P1036 [NOIP 2002 普及组] 选数(DFS)

    题目描述 已知 n 个整数 x1​,x2​,⋯,xn​&#xff0c;以及 1 个整数 k&#xff08;k<n&#xff09;。从 n 个整数中任选 k 个整数相加&#xff0c;可分别得到一系列的和。例如当 n4&#xff0c;k3&#xff0c;4 个整数分别为 3,7,12,19 时&#xff0c;可得全部的组合与它…...

    自然语言处理

    自然语言处理基础 什么是自然语言处理&#xff1a;让计算机来理解人类所说的一种语言。自然语言处理实际就是让计算机理解人类说的话&#xff0c;然后像人一样进行交互&#xff0c;去进行对话&#xff0c;去生成自然语言。 自然语言处理的基本任务 词性标注&#xff1a;把给…...

    LeetCode刷题常见的Java排序

    1. 字符串排序(字母排序) 首先,你的代码实现了根据字母表顺序对字符串中的字母进行排序,忽略了大小写并且保留了非字母字符的位置。关键点是: 提取和排序字母:通过 Character.isLetter() 判断是否为字母,并利用 Character.toLowerCase() 来忽略大小写进行排序。保留非字…...

    # 利用OpenCV和Dlib实现疲劳检测:守护安全与专注

    利用OpenCV和Dlib实现疲劳检测&#xff1a;守护安全与专注 在当今快节奏的生活中&#xff0c;疲劳和注意力不集中是许多人面临的常见问题&#xff0c;尤其是在驾驶、学习等需要高度集中精力的场景中。疲劳不仅影响个人的健康和安全&#xff0c;还可能导致严重的事故。为了应对…...

    python基础-16-处理csv文件和json数据

    文章目录 【README】【16】处理csv文件和json数据【16.1】csv模块【16.1.1】reader对象【16.1.2】在for循环中&#xff0c; 从reader对象读取数据【16.1.3】writer对象【16.1.5】DictReader与DictWriter对象 【16.4】json模块【16.4.1】使用loads()函数读取json字符串并转为jso…...

    Mysql 数据库编程技术01

    一、数据库基础 1.1 认识数据库 为什么学习数据库 瞬时数据&#xff1a;比如内存中的数据&#xff0c;是不能永久保存的。持久化数据&#xff1a;比如持久化至数据库中或者文档中&#xff0c;能够长久保存。 数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长…...

    基于SSM的车辆管理系统的设计与实现(代码+数据库+LW)

    摘要 当下&#xff0c;正处于信息化的时代&#xff0c;许多行业顺应时代的变化&#xff0c;结合使用计算机技术向数字化、信息化建设迈进。以前企业对于车辆信息的管理和控制&#xff0c;采用人工登记的方式保存相关数据&#xff0c;这种以人力为主的管理模式已然落后。本人结…...

    BugKu Simple_SSTI_2

    这个题很简单&#xff0c;主要是记录一下&#xff0c;做题的原理&#xff1a; 打开环境&#xff0c;提示我们用flag传参&#xff0c;然后我们需要判断是什么模板&#xff1a; 这里有一张图片&#xff0c;可以帮助我们轻松判断是什么模板类型&#xff1a;这个图片找不到出处了&…...

    浙考!【触发器逻辑方程推导(电位运算)】

    RS触发器是浙江高考通用技术一大考点。“对角线原则”、“置1置0”、“保持”、“不使用”、“记忆功能”…经常让考生云里雾里&#xff0c;非常反直觉。 这篇文章&#xff0c;我想以高中生的视角诠释一下触发器。 1、触发器逻辑方程推导&#xff08;以或非门触发器为例&…...

    二叉树的前序中序后序遍历

    一、前序遍历 144. Binary Tree Preorder Traversal 递归代码实现&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* …...

    es中节点类型有哪些

    Elasticsearch 节点类型有哪些 在 Elasticsearch 中&#xff0c;节点类型&#xff08;或角色&#xff09;定义了每个节点在集群中的职责。不同版本的 Elasticsearch 对节点角色的定义和管理方式有所不同&#xff0c;尤其在 7.9.0 版本引入 node.roles 后&#xff0c;配置方式更…...

    【学习笔记】深度学习环境部署相关

    文章目录 [AI硬件科普] 内存/显存带宽&#xff0c;从 NVIDIA 到苹果 M4[工具使用] tmux 会话管理及会话持久性[A100 02] GPU 服务器压力测试&#xff0c;gpu burn&#xff0c;cpu burn&#xff0c;cuda samples[A100 01] A100 服务器开箱&#xff0c;超微平台&#xff0c;gpu、…...

    游戏引擎学习第206天

    回顾并为当天的工作定下目标 接着回顾了前一天的进展。之前我们做了一些调试功能&#xff0c;并且已经完成了一些基础的工作&#xff0c;但是还有一些功能需要继续完善。其中一个目标是能够展示实体数据&#xff0c;以便在开发游戏逻辑系统时&#xff0c;可以清晰地查看和检查…...

    Rust所有权详解

    文章目录 Rust所有权所有权规则作用域 内存和分配移动与克隆栈空间堆空间 关于函数的所有权机制作为参数作为返回值 引用与租借垂悬引用 Rust所有权 C/C中我们对于堆内存通常需要自己手动管理&#xff0c;手动申请和释放&#xff0c;即便有了智能指针&#xff0c;对于效率的影…...

    贪心算法的使用条件

    1. 算法原理 贪心算法是一种在每一步选择中都采取当前状态下最优&#xff08;局部最优&#xff09;的策略&#xff0c;从而希望最终得到全局最优解的算法。其核心思想是&#xff1a;“目光短浅” 地选择当前最优解&#xff0c;不回溯、不瞻前顾后。 示例&#xff1a;活动选择问…...

    网络性能优化参数关系解读 | TCP Nagle / TCP_NODELAY / TCP_QUICKACK / TCP_CORK

    注&#xff1a;本文为 “网路性能优化” 相关文章合辑。 未整理去重。 如有内容异常&#xff0c;请看原文。 TCP_NODELAY 详解 lenky0401 发表于 2012-08-25 16:40 在网络拥塞控制领域&#xff0c;Nagle 算法&#xff08;Nagle algorithm&#xff09;是一个非常著名的算法&…...

    《打破SQL与AI框架对接壁垒,解锁融合新路径》

    在当今科技飞速发展的浪潮中&#xff0c;SQL作为管理和处理关系型数据的经典语言&#xff0c;与代表前沿技术的人工智能框架之间的融合&#xff0c;正逐渐成为推动数据驱动型应用发展的重要力量。这种融合所带来的接口实现&#xff0c;不仅是技术上的突破&#xff0c;更是为众多…...

    虚拟Ashx页面,在WEB.CONFIG中不添加handlers如何运行

    https://localhost:44311/webapi.ashx 虚拟ASHX页面,在WEB.CONFIG中添加handlers&#xff0c;如何不添加节点&#xff0c;直接运行?把页面直接保存ASHX名称&#xff1f;现在是.VB 如果你不想通过在 web.config 里添加 handlers 节点来配置处理程序&#xff0c;而是直接让 .as…...

    【ssrf漏洞waf绕过】

    SSRF绕过方法 SSRF对于防御方式(waf)绕过方法 SSRF攻击内网的redis 题目一 基于java 的一个 WEBLOGIC 框架 首先我们要知道它内网有什么服务&#xff0c;我们正常给8888端口发送请求是能接受到的&#xff0c;那么我们把8888端口给关闭了&#xff0c;再次请求发现后有一个错误…...

    BEVFormer v2(CVPR2023)

    文章目录 AbstractIntroductionRelated WorksBEV 3D Object DetectorAuxiliary Loss in Camera 3D Object DetectionTwo-stage 3D Object Detector BEVFormer v2Overall ArchitecturePerspective SupervisionPerspective LossRavamped Temporal EncoderTwo-stage BEV DetectorD…...