【Nginx指南】从核心原理到生产实践

目录

  • Nginx指南:从核心原理到生产实践
    • 引言:Nginx在现代架构中的核心地位
    • 一、Nginx核心能力与应用场景
      • 1.1 多场景适配的全能型中间件
      • 1.2 技术优势:Nginx成为行业标准的关键
    • 二、Nginx安装部署:源码编译与包管理方案
      • 2.1 源码编译:按需定制的灵活方案
        • 前置依赖
        • 源码获取与编译
        • 服务管理
      • 2.2 YUM安装:快速部署的生产级方案
        • 配置官方源
        • 安装与管理
    • 三、Nginx配置体系:从全局到虚拟主机
      • 3.1 核心配置文件解析
      • 3.2 虚拟主机配置:多站点隔离
        • 基于域名的虚拟主机(同一端口80)
        • 基于端口的虚拟主机(不同端口)
      • 3.3 关键指令解析
        • location匹配规则
        • 匹配优先级
        • root指令
        • alias指令
    • 四、进阶配置:反向代理、负载均衡与HTTPS
      • 4.1 反向代理配置
      • 4.2 负载均衡配置
      • 4.3 HTTPS配置(SSL/TLS)
    • 五、域名与DNS:从URL到服务器的映射
      • 5.1 域名体系与DNS解析
      • 5.2 本地测试技巧
    • 六、监控与运维:保障服务稳定运行
      • 6.1 关键监控指标
      • 6.2 日志轮转

Nginx指南:从核心原理到生产实践

引言:Nginx在现代架构中的核心地位

在云原生与微服务时代,Nginx已从传统Web服务器演变为连接用户与后端服务的"流量中枢"。凭借其异步非阻塞的事件驱动架构,Nginx在高并发场景下表现卓越(单机支持10万级并发,资源消耗仅为同类产品的1/5)。无论是静态资源托管、反向代理、负载均衡,还是API网关和流量控制,Nginx都已成为企业架构的核心组件。

本指南将全面解析Nginx的技术原理、配置实践与优化技巧,既适合初学者构建知识体系,也能满足进阶开发者的深度需求,帮助读者打造高性能、高可用的服务架构。

一、Nginx核心能力与应用场景

1.1 多场景适配的全能型中间件

Nginx凭借其多样化应用场景,可覆盖从边缘到后端的全链路流量处理需求:

  • 静态资源服务器
    采用sendfile零拷贝技术与高效文件描述符管理,Nginx处理静态资源(HTML、CSS、JS、图片等)的效率较Apache提升3-5倍。搭配gzip压缩和expires缓存控制,可显著降低带宽消耗,优化用户体验。

  • 反向代理服务器
    作为客户端与后端服务的中介层,Nginx支持请求转发(proxy_pass)、协议转换(HTTP→HTTPS、HTTP→WebSocket)和请求改写(rewrite)等功能。典型应用包括:将动态请求转发至Tomcat/Node.js,同时由Nginx直接处理静态资源(实现动静分离)。

  • 负载均衡器
    通过upstream模块定义后端集群,结合轮询、权重、IP哈希、最少连接等策略实现流量分发,避免单点过载。内置健康检查机制(max_failsfail_timeout),可自动隔离异常节点。

  • TCP/UDP代理
    除HTTP协议外,Nginx还可代理TCP(如MySQL、Redis)和UDP(如DNS)流量,为数据库、缓存等关键服务提供负载均衡与访问控制。

  • API网关
    借助OpenResty(集成Lua脚本)扩展,可实现请求鉴权、限流、日志收集、灰度发布等高级功能,有效降低微服务架构的治理复杂度。

1.2 技术优势:Nginx成为行业标准的关键

  • 卓越性能
    基于epoll(Linux)/kqueue(BSD)的异步非阻塞架构,规避了传统多进程/线程模型的资源消耗,单机支持10万+并发连接,延迟稳定在毫秒级。

  • 高可靠性
    采用master-worker进程架构:master负责配置加载与进程管理,worker处理请求(数量通常与CPU核心数匹配)。当worker异常退出时,master会自动重启,确保服务持续可用。

  • 模块化设计
    由核心模块(如httpevent)和可选模块(如sslgzipproxy)构成,支持按需编译,最小安装包约1MB。丰富的第三方模块(如ngx_cache_purgengx_http_geoip2_module)进一步扩展了功能边界。

  • 完善生态
    官方商业版Nginx Plus提供增强监控与技术支持;阿里Tengine优化了动态模块与缓存机制;OpenResty通过集成LuaJIT实现高性能脚本扩展。

二、Nginx安装部署:源码编译与包管理方案

2.1 源码编译:按需定制的灵活方案

源码编译适合需要自定义模块(如SSL、缓存)或追求特定版本的场景,步骤如下:

前置依赖
# 安装编译工具与依赖库
yum install -y gcc make libtool \pcre pcre-devel \          # 正则表达式支持(location匹配依赖)openssl openssl-devel \    # SSL/TLS支持(HTTPS必备)zlib zlib-devel            # gzip压缩支持
源码获取与编译
# 下载稳定版源码(建议从官网获取,避免第三方镜像篡改)
wget https://nginx.org/download/nginx-1.24.0.tar.gz
tar zxf nginx-1.24.0.tar.gz && cd nginx-1.24.0# 配置编译参数(核心参数解析)
./configure \--prefix=/opt/nginx \                  # 安装目录--user=nginx --group=nginx \           # 运行用户/组(需提前创建:useradd -r nginx)--with-http_ssl_module \               # 启用HTTPS支持--with-http_gzip_static_module \       # 启用静态gzip压缩(预压缩文件优先)--with-http_stub_status_module \       # 启用状态监控模块(/nginx_status)--with-stream \                        # 启用TCP/UDP代理模块--with-threads                         # 启用线程池(处理磁盘IO密集场景)# 编译安装(-j4表示4线程并行编译,加速过程)
make -j4 && make install
服务管理
# 验证配置(任何修改后必做,避免语法错误导致服务中断)
/opt/nginx/sbin/nginx -t# 启动/停止/重载
/opt/nginx/sbin/nginx                # 启动
/opt/nginx/sbin/nginx -s reload      # 平滑重载(新配置生效,不中断连接)
/opt/nginx/sbin/nginx -s stop        # 快速停止
/opt/nginx/sbin/nginx -s quit        # 优雅停止(处理完现有请求后退出)# 查看编译参数(新增模块时需基于此扩展)
/opt/nginx/sbin/nginx -V

2.2 YUM安装:快速部署的生产级方案

对于标准化环境,推荐使用官方YUM源,兼顾便捷性与稳定性:

配置官方源
cat > /etc/yum.repos.d/nginx.repo << 'EOF'
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOFyum makecache fast  # 刷新缓存
安装与管理
yum install -y nginx# 系统服务管理(推荐,符合Systemd规范)
systemctl start nginx        # 启动
systemctl enable nginx       # 开机自启
systemctl reload nginx       # 重载配置
systemctl status nginx       # 查看状态# 核心路径(YUM安装默认路径)
# 主程序:/usr/sbin/nginx
# 配置文件:/etc/nginx/nginx.conf、/etc/nginx/conf.d/*.conf
# 日志:/var/log/nginx/
# 网站根目录:/usr/share/nginx/html/

三、Nginx配置体系:从全局到虚拟主机

Nginx的配置采用"层级化结构",核心分为全局配置、事件配置、HTTP配置、虚拟主机配置四个层级,每个层级包含若干指令。

3.1 核心配置文件解析

以YUM安装的/etc/nginx/nginx.conf为例,关键配置如下:

# 1. 全局配置(影响整个Nginx服务)
user  nginx;                  # 运行用户(低权限用户增强安全性)
worker_processes  auto;       # worker进程数(建议设为CPU核心数,auto自动适配)
error_log  /var/log/nginx/error.log warn;  # 错误日志(级别:debug < info < warn < error < crit)
pid        /var/run/nginx.pid;            # 主进程PID文件# 2. 事件模块配置(网络事件处理)
events {worker_connections  1024;    # 单个worker最大连接数(总并发≈worker_processes×worker_connections/2,因HTTP连接为双向)use epoll;                   # 事件驱动模型(Linux推荐epoll,性能最优)multi_accept on;             # 允许worker一次性接受多个新连接
}# 3. HTTP核心配置(Web服务基础配置)
http {include       /etc/nginx/mime.types;     # MIME类型映射(如text/html、image/jpeg)default_type  application/octet-stream;  # 未知类型默认值(触发浏览器下载)# 日志格式定义(main为格式名称,可自定义)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  /var/log/nginx/access.log  main;  # 访问日志路径# 性能优化参数sendfile        on;        # 启用零拷贝(直接在内核态传输文件,减少用户态/内核态切换)tcp_nopush      on;        # 与sendfile配合,合并小包发送,减少TCP报文数tcp_nodelay     on;        # 禁用Nagle算法,降低交互性应用(如SSH)延迟keepalive_timeout  65;     # 长连接超时时间(客户端65秒无活动则断开)types_hash_max_size 2048;  # 类型哈希表大小(提升MIME类型查找效率)# 引入虚拟主机配置(推荐将虚拟主机配置拆分到conf.d目录)include /etc/nginx/conf.d/*.conf;
}

3.2 虚拟主机配置:多站点隔离

虚拟主机(Virtual Host)允许单台Nginx托管多个网站,通过域名端口区分,其中基于域名的配置最常用。

基于域名的虚拟主机(同一端口80)
# /etc/nginx/conf.d/example1.conf(网站1)
server {listen 80;server_name www.example.com example.com;  # 绑定多个域名(空格分隔)# 网站根目录与首页root /var/www/example.com;index index.html index.php;  # 支持PHP(需配合fastcgi配置)# 字符集设置(避免中文乱码)charset utf-8;# 访问日志(独立日志便于分析)access_log /var/log/nginx/example.com-access.log main;error_log  /var/log/nginx/example.com-error.log warn;
}# /etc/nginx/conf.d/example2.conf(网站2)
server {listen 80;server_name blog.example.com;  # 不同域名root /var/www/blog.example.com;index index.html;
}
基于端口的虚拟主机(不同端口)
server {listen 8080;  # 端口区分server_name www.test.com;root /var/www/test;index index.html;
}

3.3 关键指令解析

location匹配规则

location指令用于定义URI匹配规则,支持以下匹配方式:

location = /login { ... }  # 精确匹配(仅匹配/login路径)
location /admin { ... }    # 前缀匹配(匹配/admin开头的所有路径)
location ~ ^/user/\d+$ { ... }  # 区分大小写的正则匹配(如/user/123)
location ~* \.(jpg|png|gif)$ { ... }  # 不区分大小写的正则匹配(如图片文件)
匹配优先级

匹配规则按以下优先级执行:

  1. 精确匹配=):最高优先级,完全匹配时立即生效
  2. 正则匹配~~*):次优先级,按配置顺序匹配,首个命中的规则生效
  3. 前缀匹配:最低优先级,匹配最长前缀的规则生效
root指令

root指令用于设置请求路径对应的文件系统根目录。

路径组合规则root路径 + location匹配路径 + 剩余请求路径

示例:

location /static {root /var/www;
}

请求/static/css/style.css将访问:
/var/www/static/css/style.css

alias指令

alias指令用于将location路径映射到指定目录。

路径组合规则alias路径 + 剩余请求路径

示例:

location /static/ {alias /var/www/assets/;  # 建议alias路径以/结尾
}

请求/static/css/style.css将访问:
/var/www/assets/css/style.css

常见错误

location /static {alias /var/www/static/;  # 错误:会导致双斜杠路径
}

正确写法:

location /static {alias /var/www/static;  # 保持路径一致性
}
或者
location /static/ {alias /var/www/static/;  # 保持路径一致性}

四、进阶配置:反向代理、负载均衡与HTTPS

4.1 反向代理配置

反向代理是Nginx的核心功能,通过proxy_pass指令将请求转发至后端服务:

server {listen 80;server_name api.example.com;location / {# 转发至后端API服务proxy_pass http://127.0.0.1:8080;# 关键代理参数(避免后端获取错误的客户端信息)proxy_set_header Host $host;                # 传递原始Host头proxy_set_header X-Real-IP $remote_addr;    # 传递客户端真实IPproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 传递代理链IPproxy_set_header X-Forwarded-Proto $scheme; # 传递协议(http/https)# 超时设置(避免后端无响应导致连接挂起)proxy_connect_timeout 30s;    # 连接后端超时proxy_read_timeout 60s;       # 读取后端响应超时proxy_send_timeout 60s;       # 向后端发送请求超时}
}

4.2 负载均衡配置

通过upstream模块定义后端集群,实现流量分发:

# 定义后端服务集群
upstream backend_servers {server 10.0.0.10:8080 weight=3;  # 权重3(接收3/6的流量)server 10.0.0.11:8080 weight=2;  # 权重2server 10.0.0.12:8080 weight=1;  # 权重1# 健康检查(5秒内2次失败则标记为不可用,30秒后重试)server 10.0.0.13:8080 max_fails=2 fail_timeout=30s;# 负载策略(默认轮询,可选:ip_hash、least_conn)ip_hash;  # 基于客户端IP哈希,保证同一客户端访问同一后端(适用于会话绑定场景)
}# 反向代理到集群
server {listen 80;server_name app.example.com;location / {proxy_pass http://backend_servers;  # 转发至集群proxy_set_header Host $host;# 其他代理参数...}
}

4.3 HTTPS配置(SSL/TLS)

HTTPS是现代网站的标配,需配置SSL证书(可通过Let’s Encrypt免费获取):

server {listen 443 ssl;server_name www.secure.com;# SSL证书路径(公钥+私钥)ssl_certificate /etc/nginx/ssl/secure.com.crt;ssl_certificate_key /etc/nginx/ssl/secure.com.key;# SSL优化参数ssl_protocols TLSv1.2 TLSv1.3;  # 禁用不安全的SSLv3、TLSv1.0/1.1ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;  # 强加密套件ssl_prefer_server_ciphers on;  # 优先使用服务器端加密套件ssl_session_cache shared:SSL:10m;  # 会话缓存(提升复用率,减少握手开销)ssl_session_timeout 10m;       # 会话超时时间# 自动将HTTP重定向至HTTPS(可选)location / {root /var/www/secure;index index.html;}
}# HTTP跳转HTTPS
server {listen 80;server_name www.secure.com;return 301 https://$host$request_uri;  # 永久重定向
}

五、域名与DNS:从URL到服务器的映射

5.1 域名体系与DNS解析

  • 域名结构:由根域(.)、顶级域(.com/.cn)、二级域(example.com)、子域(www.example.com)组成,层级间用"."分隔。

  • DNS解析流程

    1. 客户端查询本地DNS缓存(浏览器/操作系统)。
    2. 缓存未命中时,向本地DNS服务器(如运营商DNS)发起查询。
    3. 本地DNS递归查询根域→顶级域→权威DNS,最终获取IP。
    4. 结果返回客户端并缓存,客户端通过IP访问服务器。
  • 核心DNS记录

    • A记录:域名→IPv4地址(如www.example.com → 1.2.3.4)
    • AAAA记录:域名→IPv6地址
    • CNAME记录:域名→另一个域名(如cdn.example.com → example.cdn.com)
    • TXT记录:文本信息(常用于域名验证,如SPF反垃圾邮件)

5.2 本地测试技巧

开发环境可通过hosts文件跳过公网DNS,直接绑定域名与IP:

# Linux/macOS:/etc/hosts
# Windows:C:\Windows\System32\drivers\etc\hosts
127.0.0.1 www.test.com  # 本地域名映射

六、监控与运维:保障服务稳定运行

6.1 关键监控指标

  • 连接数:通过stub_status模块监控(需编译时启用--with-http_stub_status_module):

    location /nginx_status {stub_status on;allow 127.0.0.1;  # 仅允许本地访问deny all;
    }
    

    访问/nginx_status可获取:活跃连接数、接受/处理/请求数等。

  • 日志分析:通过goaccessELK等工具分析access.log,识别热点路径、异常IP、状态码分布。

  • 系统资源:监控CPU(worker进程占用)、内存(通常稳定在几十MB)、磁盘IO(日志写入)、网络带宽。

6.2 日志轮转

避免日志文件过大(占用磁盘空间),通过logrotate配置自动轮转:

# /etc/logrotate.d/nginx(YUM安装默认存在)
/var/log/nginx/*.log {daily                   # 每日轮转missingok               # 日志不存在时不报错rotate 7                # 保留7天日志compress                # 压缩旧日志delaycompress           # 延迟压缩(保留当天日志不压缩)notifempty              # 空日志不轮转create 0640 nginx nginx # 新建日志文件权限postrotate              # 轮转后重载Nginx(确保日志写入新文件)if [ -f /var/run/nginx.pid ]; thenkill -USR1 `cat /var/run/nginx.pid`fiendscript
}

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

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

相关文章

物体检测

目录 1 目标定位 2 地标检测 3 目标检测 4 在卷积网络上实现滑动窗口 5 边界框预测 6 交并比 7 非极大值抑制 8 锚框 9 YOLO算法 10 用u-net进行语义分割 11 转置卷积 12 u-net 结构灵感 1 目标定位 你已经对图片分类有所了解。例如通过这张图片可以识…

es7.x es的高亮与solr高亮查询的对比对比说明

一 solr&es高亮1.1 solr与es高亮功能解释说明&#xff1a;1)高亮配置&#xff1a;fragmentSize(1000) 设置片段长度numOfFragments(1) 指定返回的片段数量preTags() 和 postTags() 设置高亮标记2)字段处理差异&#xff1a;在 ES 中&#xff0c;使用 matchQuery 而非 termQ…

DSP音频算法工程师技能2

一、核心知识准备1. 算法原理3A算法&#xff08;AGC自动增益控制/AEC回声消除/ANS降噪&#xff09;&#xff1a;掌握AEC的NLMS/双讲检测原理&#xff0c;ANS的谱减法/维纳滤波&#xff0c;AGC的压缩曲线设计。熟悉Speex/WebRTC等开源实现。EQ音效&#xff1a;IIR/FIR滤波器设计…

第4章-04-用WebDriver页面元素操作

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年CSDN全站百大博主。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于专栏:Web爬虫入门与实战精讲,后续完整更新内容如下。 文章…

【计算机视觉与深度学习实战】04基于K-Means聚类的图像分割系统设计与实现

摘要 图像分割作为计算机视觉领域的基础任务,在目标检测、医学影像分析、自动驾驶等众多应用中发挥着关键作用。本文基于K-Means聚类算法设计并实现了一个完整的图像分割系统,该系统集成了多种颜色空间转换、自定义初始化策略、空间特征融合等先进技术。通过Python和Tkinter…

Android Studio常用知识总结

一、运行方式1.运行 (Run)当您选择“运行”时&#xff0c;Android Studio 会编译您的应用并将其安装到目标设备或模拟器上。这通常用于&#xff1a;快速部署: 您只想看看应用是否能正常启动并运行&#xff0c;或者进行一些基础的用户界面测试。性能测试: 在正常运行模式下测试应…

设计模式笔记_行为型_访问者模式

1. 访问者模式介绍访问者模式&#xff08;Visitor Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许你在不改变对象结构的前提下&#xff0c;定义作用于这些对象的新操作。访问者模式将操作的逻辑从对象结构中分离出来&#xff0c;使得你可以在运行时动态地添加新的…

数学建模 14 中心对数比变换

用途&#xff1a;是处理成分数据的核心预处理方法&#xff0c;核心目标是解决成分数据的和为常数100% &#xff0c; 导致的维度冗余&#xff0c;非线性相关问题。使得数据满足传统的统计/建模方法&#xff1b;举例子&#xff1a;食品比例中 面粉(50%),糖(30%),水(20%)原理&…

【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day7

&#x1f525;个人主页&#xff1a;草莓熊Lotso &#x1f3ac;作者简介&#xff1a;C研发方向学习者 &#x1f4d6;个人专栏&#xff1a; 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言&#xff1a;生活是默默的坚持&#xff0c;毅力是永久的…

污水处理行业的 “智能革命”:边缘计算网关如何重塑传统运维模式?

污水处理行业的 “智能革命”&#xff1a;边缘计算网关如何重塑传统运维模式&#xff1f;在污水处理这一关乎生态环境与可持续发展的关键领域&#xff0c;蓝蜂网关正凭借其先进技术与强大功能&#xff0c;发挥着无可替代的重要作用。作为工业级物联网解决方案的核心组件&#x…

ASP.NET Core 中的多租户 SaaS 应用程序

介绍随着软件即服务 (SaaS) 持续主导技术领域&#xff0c;构建能够高效地从单一代码库服务于多位客户&#xff08;租户&#xff09;的应用程序变得至关重要。ASP.NET Core 凭借其模块化和可扩展的架构&#xff0c;是实现多租户 SaaS 应用程序的强大框架。本文将指导您了解构建多…

JUC之CompletableFuture【中】

文章目录四、CompletableFuture基本使用4.1 默认线程池、无返回值4.2 默认线程池、有返回值4.3 自定义线程池、有返回值4.4 CompletableFuture 获取结果五、对结果进行处理5.1 方法说明5.2 示例5.3 thenApply vs thenApplyAsync5.3.1 核心区别: 执行线程不同5.3.2 thenApply: 同…

环境变量不生效?

目录 添加环境变量 解决不生效 不生效场景 解决办法 大家都知道Windows系统对于开发者来说并不友好&#xff0c;尤其是新手&#xff0c;当然这是相比于linux和MacOS相比&#xff0c;因为开发工具、项目脚本等环境配置要为复杂&#xff0c;注意事项也更多一些。而这篇文章将…

小迪安全v2023学习笔记(六十六讲)—— Java安全SQL注入SSTISPELXXE

文章目录前记WEB攻防——第六十六天Java安全&SPEL表达式&SSTI模板注入&XXE&JDBC&MyBatis注入环境搭建Hello-Java-SecJavaSecJava安全 - SQL注入-JDBC&MyBatisJDBC注入原理语句拼接预编译的错误使用JdbcTemplate正则过滤MyBatis注入原理Like注入Order B…

把 AI 变成「图书馆管理员」——基于检索增强的离线图书语音导航小盒子

标签&#xff1a;检索增强、语音导航、离线 LLM、RAG、ESP32-S3、低功耗、TTS、BLE ---- 1. 背景&#xff1a;读者找不到书的痛苦 高校图书馆每天 5000 人次&#xff0c;高频问题&#xff1a; • “《深度学习》在哪个书架&#xff1f;” • “有没有类似《三体》的科幻&…

架构思维:在AI时代为产品“减负”的终极武器——用结构化智慧破解数字化复杂困局

摘要 数字化产品的复杂度飙升已成为企业发展的核心瓶颈。本文基于架构思维的本质&#xff08;元素、连接、演进&#xff09;&#xff0c;结合5A架构体系&#xff08;业务/信息/应用/技术/治理架构&#xff09;&#xff0c;系统阐述如何通过分而治之、共性沉淀、AI赋能三大策略降…

黎阳之光:以数字之力,筑牢流域防洪“智慧防线”

当洪水来袭&#xff0c;每一分精准的预报、每一次及时的预警、每一轮科学的预演、每一套完善的预案&#xff0c;都可能关系到江河安澜与万家平安。在水利现代化建设的浪潮中&#xff0c;黎阳之光凭借数字孪生、视频孪生等核心技术&#xff0c;打造流域防洪“四预”管理平台&…

transformer模型初理解

模型介绍 在 Transformer 之前&#xff0c;主流的序列模型是 **RNN&#xff08;循环神经网络&#xff09;** 工作方式类似「逐字阅读」&#xff1a;处理序列时&#xff0c;必须从第一个词开始&#xff0c;一个接一个往后算&#xff08;比如翻译时&#xff0c;先看 “我”&#…

驱动开发系列66 - glCompileShader实现 - GLSL中添加内置函数

一&#xff1a;概述 本文介绍如何为 GLSL 语言中增加一个内置函数&#xff0c;以https://registry.khronos.org/OpenGL/extensions/ARB/ARB_shader_texture_image_samples.txt扩展为例&#xff0c;介绍下添加textureSamples内置函数的过程。

指针的应用学习日记

Git常见的命令&#xff1a;%h 简化哈希 %an 作者名字 %ar 修订日期(距今) %ad修订日期 %s提交说明指针简介指针(Pointer)是C语言的一个重要知识点&#xff0c;其使用灵活、功能强大&#xff0c;是C语言的灵魂。 指针与底层硬件联系紧密&#xff0c;使用指针可操作数据的地址&am…