Nginx 核心功能之正反代理
目录
一、Nginx
二、正向代理
三、反向代理
四、Nginx 缓存
1. 缓存功能的核心原理和缓存类型
2. 代理缓存功能设置
五、Nginx rewrite和正则
(1)Nginx 正则
(2)nginx location
(3)Rewrite
(4)实例:
一、Nginx
概述:Nginx 是一款高性能的 开源 Web 服务器 和 反向代理服务器,以高并发处理、低内存消耗和模块化架构著称。
核心功能:
功能 | 说明 |
---|---|
静态资源服务 | 高效处理 HTML、CSS、JS、图片等静态文件,支持 Gzip 压缩和缓存优化。 |
反向代理 | 将客户端请求转发到后端服务器集群,实现负载均衡和高可用。 |
SSL/TLS 终止 | 处理 HTTPS 加密和解密,减轻后端服务器压力。 |
限流与防护 | 支持请求速率限制、IP 黑白名单、防 DDoS 攻击。 |
动态内容处理 | 通过 FastCGI 协议与 PHP、Python 等后端语言交互(需配合 PHP-FPM 等工具)。 |
注意:配置代理前提 nginx的版本必须高些
二、正向代理
概述:正向代理是 客户端与目标服务器之间的中间服务器,代表客户端向外部服务器发送请求。
工作流程:
-
客户端配置代理服务器(如浏览器设置代理 IP 和端口)。
-
客户端发送请求到代理服务器。
-
代理服务器转发请求到目标服务器。
-
目标服务器返回响应到代理服务器。
-
代理服务器将响应返回给客户端。
配置步骤:
#正向代理
vim /usr/local/nginx/conf/nginx.conf
......省略部分信息server {listen 8080;resolver 114.114.114.114 8.8.8.8;proxy_connect;proxy_connect_allow 80 443;proxy_connect_connect_timeout 10s;proxy_connect_read_timeout 10s;proxy_connect_send_timeout 10s;server_name localhost;location / {# root html;# index index.html index.htm;proxy_pass $scheme://$http_host$request_uri;proxy_set_header Host $http_host;proxy_buffers 256 4k;proxy_max_temp_file_size 0;proxy_http_version 1.1;proxy_set_header Connection "";}nginx -t ##检查文件配置
三、反向代理
概述:反向代理是 客户端与后端服务器之间的中间服务器,代表后端服务器接收客户端请求,隐藏真实服务器信息。
-
核心优势:
-
负载均衡:分发请求到多个后端服务器。
-
安全防护:隐藏后端服务器 IP,防止直接暴露。
-
缓存加速:缓存静态内容,减少后端压力。
-
配置步骤:
#反向代理(七层代理)
进行反向代理的配置,写在server外面(准备两台httpd网站,两个网站,两个网站内容不同,记得关防火墙,启动httpd)vim /usr/local/nginx/conf/nginx.confupstream myhttp {server 192.168.10.103:80;server 192.168.10.104:80;}#下面这个修改server里面的location location / {# root html;# index index.html index.htm;proxy_pass http://myhttp;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}nginx -t ##检查文件配置(四层反向代理)并不在http里面写,在ecents下面写
vim /usr/local/nginx/conf/nginx.confstream {upstream myssh{server 192.168.10.102:22;}server {listen 2222;proxy_pass myssh;proxy_connect_timeout 10s;proxy_timeout 1h;}
}nginx -t ##检查文件配置
四、Nginx 缓存
Nginx 缓存通过存储响应内容(静态或动态)减少后端服务器负载,提升响应速度和并发能力。
1. 缓存功能的核心原理和缓存类型
(1)代理缓存
-
核心作用:通过缓存后端服务器的响应内容,减少重复请求对后端的压力,加快客户端访问速度。
-
缓存类型:
-
代理缓存(Proxy Cache):针对反向代理场景,缓存后端服务器的响应(如动态接口、静态页面)。
-
静态资源缓存:直接缓存静态文件(如 CSS、JS、图片),通过
expires
或Cache-Control
头控制浏览器缓存。
-
(2)代理缓存原理
-
缓存键(Cache Key):根据请求的 URL、HTTP 方法、请求头(如
Host
)生成唯一标识,用于判断是否命中缓存。 -
缓存存储:将响应内容以文件形式存储在磁盘(或内存),并通过
proxy_cache_path
配置管理。 -
缓存有效性:
-
基于 HTTP 响应头(如
Cache-Control
、Expires
)自动判断缓存过期时间。 -
可手动设置缓存有效期(如
proxy_cache_valid
)。
-
-
缓存更新:当缓存过期或无效时,向后端服务器重新请求并更新缓存。
2. 代理缓存功能设置
(1)反向代理配置
upstream backend {server 10.0.0.1:80;server 10.0.0.2:80;
}server {listen 80;server_name example.com;location / {proxy_pass http://backend;proxy_set_header Host $host;}
}
(2)设置缓存功能
分两步:定义缓存路径和启用缓存规则。
-
定义缓存路径(在
http
块中配置):http {proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;# 参数说明:# - `/var/cache/nginx`: 缓存文件存储路径# - `levels=1:2`: 目录层级结构(1层子目录,2位哈希字符)# - `keys_zone=my_cache:10m`: 定义缓存区域名称和共享内存大小(10MB)# - `max_size=1g`: 最大磁盘缓存空间# - `inactive=60m`: 60分钟内未被访问的缓存自动删除# - `use_temp_path=off`: 禁用临时文件路径,直接写入缓存目录 }
-
启用缓存规则(在
location
块中配置):server {location / {proxy_pass http://backend;proxy_cache my_cache; # 关联缓存区域proxy_cache_valid 200 302 10m; # 状态码200/302缓存10分钟proxy_cache_valid 404 1m; # 状态码404缓存1分钟proxy_cache_key "$scheme$request_method$host$request_uri"; # 定义缓存键add_header X-Cache-Status $upstream_cache_status; # 添加响应头显示缓存状态} }
(3)验证缓存功能
-
查看响应头:
-
通过浏览器开发者工具或
curl
检查响应头是否包含X-Cache-Status
:curl -I http://example.com
-
可能的取值:
-
HIT
:缓存命中 -
MISS
:未命中,从后端获取 -
EXPIRED
:缓存已过期 -
BYPASS
:绕过缓存
-
-
-
检查缓存文件:
-
到
/var/cache/nginx
目录查看是否生成缓存文件(文件名基于哈希值)。
-
-
压力测试:
-
使用工具(如
ab
或wrk
)模拟高并发请求,观察后端服务器的负载是否降低。
-
五、Nginx rewrite和正则
Rewrite 功能通过正则表达式实现 URL 重写、跳转和逻辑控制,是 SEO 优化和路由管理的核心工具。
Rewrite的应用场景:
- 路径美化:将/product/123 转换为 /index.php?id=123
- 旧链接迁移:将过期URL永久重定向(301)到新地址
- 强制HTTPS/域名统一:自动跳转http://到https://,或合并www与非www域名
- 动态路由:适配单页应用(SPA),RESTful API 路由
- 灰度发布:按规则将部分流量导向新版本服务
(1)Nginx 正则
符号 | 含义 | 示例 |
---|---|---|
^ | 匹配字符串开头 | ^/admin 匹配以 /admin 开头的路径 |
$ | 匹配字符串结尾 | .html$ 匹配以 .html 结尾的 URL |
. | 匹配任意单个字符(除换行符) | a.c 匹配 abc 、aac |
\d | 匹配数字(等价于 [0-9] ) | user/\d+ → user/123 |
\w | 匹配字母、数字、下划线 | \w+ 匹配 user_123 |
() | 分组捕获,替换时用 $1 、$2 引用 | ^/(\w+)/(\d+)$ → /$1?id=$2 |
* | 匹配前一个字符 0 次或多次 | a* 匹配空、a 、aa |
+ | 匹配前一个字符 1 次或多次 | \d+ 匹配 1 、123 |
? | 匹配前一个字符 0 次或 1 次 | https? 匹配 http 或 https |
{n,m} | 匹配前一个字符 n 到 m 次 | a{2,4} 匹配 aa 、aaa 、aaaa |
[abc] | 匹配括号内任意一个字符 | [aeiou] 匹配元音字母 |
[^abc] | 匹配不在括号内的任意字符 | [^0-9] 匹配非数字字符 |
(2)nginx location
- location 的语法:
location [匹配模式] {# 处理逻辑 (如 root, proxy_pass, rewrite 等) }
常用修饰符:
修饰符 作用 =
精确匹配(完全相等) ^~
前缀匹配(优先于正则匹配) ~
正则匹配(区分大小写) ~*
正则匹配(不区分大小写) 无修饰符 普通前缀匹配(优先级最低) -
location 的优先级规则:精确匹配 > 精确前缀匹配 > 正则匹配 (~ 和 ~* 同时存在时,文件中物理位置靠上的优先)> 普通前缀匹配 > 通用匹配
-
Location 匹配流程
精确匹配:检查是否有
location =
精确匹配当前 URI,若有则立即使用。前缀匹配:
查找最长匹配的普通前缀(无修饰符)。
检查是否有
^~
前缀匹配,若有则停止后续正则匹配。正则匹配:按配置文件中的顺序依次匹配,首次匹配成功后停止。
默认处理:若未匹配任何规则,使用普通前缀匹配的最长路径
-
location 验证:
(3)Rewrite
rewrite :
语法:rewrite <regex> <replacement> [flag];
regex:正则匹配URL字符串(只能对域名后边的除去传递的参数外的字符串起作用)
replacement: 重写跳转后的地址
-
正则表达式:匹配请求 URI(如
^/old/(.*)
)。 -
替换规则:生成新 URI(如
/new/$1
)。 -
Flag 类型:
Flag 作用 last
重写后重新匹配新 URL 的 location 块(类似循环,最多 10 次) break
立即停止处理后续规则,直接返回结果 redirect
返回 302 临时重定向(浏览器地址栏显示新 URL) permanent
返回 301 永久重定向(SEO 友好,浏览器缓存跳转)
Nginx 跳转:
- 1. server{ } 块中的 rewrite
执行顺序:在请求进入server块后、匹配location前执行。
作用域:影响该server块下所有请求(全局生效)。
- 2. location{ } 块中的 rewrite
执行顺序:在请求匹配到该 location 后执行。
作用域:仅对该 location 匹配的请求生效(局部生效)。
- 3. if{ } 块中的 rewrite
执行顺序:在满足 if 条件时触发。
作用域:依赖 if 表达式所在的上下文(如在server中或location中)
-
rewrite flag 验证
验证方法:查看响应头:curl -I http://example.com/old-path # 输出示例(301 重定向): # HTTP/1.1 301 Moved Permanently # Location: http://example.com/new-path 检查 Nginx 日志:rewrite_log on; error_log /var/log/nginx/error.log notice; # 查看重写过程日志
-
rewrite 中的捕获组
小括号()用于定义正则表达式的捕获组捕获组“( )” 在正则表达式中, (pattern) 会匹配 pattern 并捕获内容,按顺序存入 $1, $2, $3 等变量中。引用方式 在 rewrite 的替换字符串中,通过 $1 表示第一个捕获组,$2 表示第二个,依此类推。[root@ localhost ~]# vim /usr/local/nginx/conf/nginx.conf location / category/ {#匹配 / category/ tech/123, 捕获 tech 到 $1,123 到 $2rewrite ^/ category/(.+)/(\d+)$ /archive/$1/$2 last; ) location /archive/ {#返回捕获的分类和 IDreturn 200" Category: $1, ID: $2";测试访问 [root@ localhost~]# curl http://localhost/category/tech/456 Category: tech, ID: 456
-
nginx 中的set指令
语法: set $variable valuevim /usr/local/nginx/conf/nginx.conflocation /demo {set $name "Nginx"; #定义变量 $namereturn 200 "Hello, $name!"; #输出:Hello,Nginx! }测试: curl http://localhost/demo Hello,Nginx!
(4)实例:
1. 基于域名的跳转
vim /usr/local/nginx/conf/nginx.conf
if ($host = 'www.kgc.com')
{
rewrite ^/(.*)$ http://www.newkgc.com/$1 permanent;
}
2. 基于客户端IP访问跳转
vim /usr/local/nginx/conf/nginx.conf
set $rewrite true;
if ($remote_addr = "192.168.6.125") {
set $rewrite false;
}
if ($rewrite = true {
rewrite (.+) /maintenance.html;
}
location = /maintenance.html {
root /usr/share/nginx/html;
}
相关文章:
Nginx 核心功能之正反代理
目录 一、Nginx 二、正向代理 三、反向代理 四、Nginx 缓存 1. 缓存功能的核心原理和缓存类型 2. 代理缓存功能设置 五、Nginx rewrite和正则 (1)Nginx 正则 (2)nginx location (3)Rewrite &…...
function包装器的意义
一:function包装器的概念 function包装器 也叫作适配器。C中的function本质是一个类模板,也是一个包装器。 二:需要function包装器的场景 那么我们来看看,我们为什么需要function呢? 一个需要包装器的场景:…...
【ThinkBook 16+ 电脑重做系统type-c接口部分功能失效解决方案】
ThinkBook 16 电脑重做系统type-c接口部分功能失效解决方案 问题回顾:重做电脑后,type-c接口部分功能失效,充电正常,连接外置硬盘正常,无法连接外拓显示器,显示usbc无信号(不同设备可能显示不同…...
【言语理解】中心理解题目之选项分析
front:中心理解题目之结构分析 4.1两出处六有误 两出处 背景、例子、分析论证中提炼的选项出处有误,一般不选但是和因此之前、不是而是 的不是部分、被指代部分提炼的选项出处有误,一般不选。 六有误 片面:原文并列谈论两方面,只…...
[原创](现代Delphi 12指南):[macOS 64bit App开发]: [1]如何加载动态链接库, 并无缝支持原生底层开发?
[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、…...
VTK入门指南
什么是VTK VTK (Visualization Toolkit) 是一个开源的、跨平台的计算机图形学、图像处理和可视化系统。它提供了丰富的算法和高级工具,用于3D计算机图形学、图像处理和可视化。 安装VTK Windows平台 下载预编译版本: 从VTK官网或GitHub发布页面下载 …...
开始一个vue项目-day2
这次新增的功能有: 1、使用cookie存储token 参考网站:https://vueuse.org/ 安装包: npm i vueuse/integrations npm i universal-cookie^7 2、cookie的设置读取和删除,代码:composables/auth.js import { useCookies } from …...
Baklib驱动企业知识管理AI升级
Baklib如何实现知识AI化 Baklib通过构建企业级知识中台的核心能力,将人工智能技术深度融入知识管理的全生命周期。其底层架构采用自然语言处理(NLP)与机器学习算法,实现对企业文档的智能分类与语义解析。例如,系统可自…...
Linux线程同步机制深度解析:信号量、互斥锁、条件变量与读写锁
Linux线程同步机制深度解析:信号量、互斥锁、条件变量与读写锁 一、线程同步基础 在多线程编程中,多个线程共享进程资源(如全局变量、文件描述符)时,若对共享资源的访问不加控制,会导致数据不一致或竞态条…...
js逆向绕过指纹识别
一、兼容性说明 官方支持 curl_cffi 明确支持 Windows 平台,并提供了预编译的安装包。其核心功能(如浏览器指纹模拟、HTTP/2 支持)在 Windows 上与 Linux/macOS 表现一致。 版本要求 • Python 3.8 及以上版本(推荐 Pyth…...
笔记整理六----OSPF协议
OSPF 动态路由的分类: 1.基于网络范围进行划分--将网络本身划分为一个个AS(自治系统---方便管理和维护) 内部网关协议---负责AS内部用户之间互相访问使用的协议 IGP--RIP EIGRP ISIS OSPF 外部网关协议--负责AS之间(整个互联网&…...
USB Type-C是不是全方位优于其他USB接口?
首先,USB TypeC接口内部引脚呈中心对称分布,正插、反插都能用,所以可以肓插,使用起来非常方便顺手。 其次,USB TypeC接口体积很小,特别是很薄,几乎适用于所有设备。而USB TypeA就是因为不方便应…...
信息系统监理师第二版教材模拟题第一组(含解析)
信息系统监理基础 信息系统监理的核心目标是( ) A. 降低项目成本 B. 确保项目按合同要求完成 C. 提高开发人员技术水平 D. 缩短项目周期答案:B 解析:信息系统监理的核心目标是确保信息系统工程项目按照合同要求、技术标准和规范完成,保障项目质量、进度和投资控制。 下列哪…...
NPP库中libnppist模块介绍
1. libnppist 模块简介 libnppist 是 NPP 库中专注于 图像统计分析与直方图计算 的模块,提供 GPU 加速的统计操作,适用于计算机视觉和图像处理中的特征提取与分析。 核心功能包括: 直方图计算(支持单通道/多通道) 统…...
k230摄像头初始化配置函数解析
通过 csi id 和图像传感器类型构建 Sensor 对象。 在图像处理应用中,用户通常需要首先创建一个 Sensor 对象。CanMV K230 软件可以自动检测内置的图像传感器,无需用户手动指定具体型号,只需设置传感器的最大输出分辨率和帧率。有关支持的图像…...
Spring的循环依赖问题
文章目录 一、什么是循环依赖?二、Spring 是如何解决循环依赖的?1.三级缓存2.解决循环依赖的流程 三、三级缓存机制可以解决所有的循环依赖问题吗?1. 为什么三级缓存在这里无效?2. 如何解决构造器循环依赖? 四、循环依…...
华为鸿蒙PC:开启国产操作系统自主化新纪元
——全栈自研、生态重构与未来挑战 2025年5月,一个值得中国科技界铭记的时间点。华为正式推出首款搭载鸿蒙操作系统(HarmonyOS)的PC产品。乍一听这像是又一款新电脑的发布,但它背后的意义远比表面更深远——这是中国首次推出从操…...
【LeetCode Hot100】动态规划篇
前言 本文用于整理LeetCode Hot100中题目解答,因题目比较简单且更多是为了面试快速写出正确思路,只做简单题意解读和一句话题解方便记忆。但代码会全部给出,方便大家整理代码思路。 70. 爬楼梯 一句话题意 每次爬1or2,问爬到n的路…...
【Java JUnit单元测试框架-60】深入理解JUnit:Java单元测试的艺术与实践
在当今快节奏的软件开发环境中,保证代码质量的同时又要快速交付成为了开发者面临的主要挑战。单元测试作为软件测试金字塔的基石,为我们提供了一种高效的解决方案。而在Java生态系统中,JUnit无疑是单元测试框架的代名词。本文将全面探讨JUnit…...
Java运算符学习笔记
运算符 -运算符介绍 运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。 算数运算符赋值运算符关系运算符[比较运算符]逻辑运算符位运算符[需要二进制基础]三元运算符 -算数运算符 介绍 算数运算符是对数值类型的变量进行运算的,在Java程…...
shell编程补充内容(Linux课程实验3)
一、求前五个偶数的和 1.这里先介绍要用到的expr 1. 整数计算 # 加法(注意运算符两侧空格) $ expr 10 20 30# 带括号的运算(需要转义) $ expr \( 10 20 \) \* 2 60# 取模运算 $ expr 15 % 4 注意:仅支持整数&…...
iview table组件 自定义表头
在实际项目开发中,我们经常会用到各种各样的表格,比如在表格表头中填加按钮,下拉菜单,图标等等,在网上搜了一段时间发现比较少,所以写好之后就想着分享出来给有需要的人参考参考,例如下面这种表…...
二叉搜索树实现删除功能 Java
在开始编写删除功能之前,先要编写好searchParent()(寻找父节点)和min()(查找树中最小值)两个函数,后期会在删除功能中使用到。 searchParent()的编写 /*** * param value* return Node*/public Node searchParent(int value){if(rootnull) return null;…...
Android Framework学习三:zygote剖析
文章目录 Zygote工作内容起始点初始化步骤启动 ZygoteInitZygoteInit.main () 函数内部操作 Zygote如何启动SystemServer参与的类和文件流程步骤进程创建完成后的处理 Framework学习之系列文章 在 Android 系统中,Zygote 是一个非常关键的进程,有 “App …...
LLM-Based Agent及其框架学习的学习(三)
文章目录 摘要Abstract1. 引言2. 推理与规划2.1 推理2.2 规划2.2.1 计划指定2.2.2 计划反思 3. 迁移与泛化3.1 未知任务的泛化3.2 情景学习3.3 持续学习 4. 学习Crewai和LangGraph4.1 Crewai4.2 LangGraph 参考总结 摘要 本文系统阐述了基于大语言模型的智能体在认知架构中的核…...
修复笔记:获取 torch._dynamo 的详细日志信息
一、问题描述 在运行项目时,遇到与 torch._dynamo 相关的报错,并且希望获取更详细的日志信息以便于进一步诊断问题。 二、相关环境变量设置 通过设置环境变量,可以获得更详细的日志信息: set TORCH_LOGSdynamo set TORCHDYNAM…...
阿里云服务器全栈技术指导手册(2025版)
阿里云服务器全栈技术指导手册(2025版) 一、基础配置与核心架构设计 1. 精准实例选型策略 • 通用计算场景:选择ECS通用型(如ecs.g7)实例,搭载第三代Intel Xeon处理器,适合Web应用、中小型数…...
llfc项目笔记客户端TCP
一、整体架构流程图(简洁版) 复制代码 【客户端启动】 |--- 初始化TcpMgr(单例)|--- 连接信号初始化:连接成功、断开、错误、发数据| 【用户操作:登录成功】|--- 触发发起跳转:发起连接(sig_connect_tcp)| 【TcpMgr收到连接请求】|--- 连接到服务器(connectToHost)…...
基于python的task--时间片轮询
目录 前言 utf-8 chinese GB2312 utf-8 排除task.c chinese GB2312 排除task.c 运行结果 前言 建议是把能正常工作的单个功能函数放到一起(就和放while函数里的程序一样),程序会按顺序自动配置。 不同的格式已经对应给出。 utf-8 impo…...
《前端秘籍:SCSS阴影效果全兼容指南》
在前端开发的旅程中,为网页元素添上阴影效果,就像为一幅画作点缀光影,能让页面瞬间生动起来,赋予元素层次感与立体感。可当我们满心欢喜地在SCSS中写下阴影代码,满心期待着在各种浏览器中都呈现出完美效果时࿰…...
强化学习机器人模拟器——RobotApp:一个交互式强化学习模拟器
RobotApp 是一个基于 Python 和 Tkinter 的交互式强化学习(Reinforcement Learning, RL)模拟器,集成了 GridWorld 环境和 QAgent 智能体,支持 Q-learning、SARSA 和 SARSA(λ) 算法。本博客将详细解析 robot_app.py 的功能、架构和使用方法,展示其如何通过直观的 GUI 界面…...
2025-04-26-利用奇异值重构矩阵-美团
2025-04-26-利用奇异值重构矩阵-美团 题目内容 在一家致力于图像处理的科技公司,你被分配到一个新项目,目标是开发一种图像压缩算法,以减少存储空间并加速传输。团队决定使用奇异值分解( S V D SVD SVD)对图像进行降…...
《解锁SCSS算术运算:构建灵动样式的奥秘》
SCSS作为CSS预处理器,算术运算功能犹如一颗璀璨明珠,赋予我们动态计算样式属性值的强大能力,让网页样式不再是一成不变的刻板呈现,而是能够根据各种条件和需求灵动变化。 在SCSS的世界里,算术运算绝非孤立的存在&…...
STM32Cube-FreeRTOS任务管理工具函数-笔记
STM32Cube-FreeRTOS任务管理工具函数-笔记 一、获取任务句柄的函数1. 创建任务并获取句柄2. 获取当前任务句柄3. 获取空闲任务句柄4. 根据任务名称获取句柄 二、单个任务操作相关函数1. 程序在运行时可以获取或改变一个任务的优先级3. 获取任务信息4. 获取任务信息5. 获取任务名…...
【第三十四周】多模态大模型调研
多模态大模型调研 摘要Abstract引言多模态技术的主要方向视觉-语言大模型(Vision-Language Large Models, VLLMs)语音-语言大模型(Speech-Language Large Models, SLLMs)音乐 - 语言大模型(Music-Language Large Model…...
【2025最新】Baichuan-M1-instruct部署教程
首先机器至少要A100、4090、3090 这里选AutoDL的4090D,运行至少要20G显存。这里镜像选基础镜像11.8【更新!!!!!!!!!24G带不动!显存不够】 有时候…...
Unity与Unreal Engine(UE)的深度解析及高级用法
以下是Unity与Unreal Engine(UE)的深度解析及高级用法对比,结合技术特性、行业应用与未来发展进行综合阐述: 一、核心差异与适用场景对比 1. 技术架构与编程模式 Unity 语言与脚本:主要使用C#,语法简洁且易于学习,适合快速原型开发和中小型项目。支持可视化脚本工具(如…...
网络:TCP三次握手、四次挥手
目录 深刻理解三次握手 深刻理解四次挥手 深刻理解三次握手 三次握手时,如果最后一个ACK包,服务器没有收到,此时: 客户端:认为已经建立链接 服务器:认为没有建立链接,还在超时等待。 而此时…...
spdlog自定义formatter
用了之后发现,spdlog的默认日志记录格式为: [2014-10-31 23:46:59.678] [my_loggername] [info] Some message 但是这个格式不是我想要的,怎么办,这个也简单,上面的内容也就是几个标签的组合而已,spdlog自定…...
Spring AI 实战:第四章、Spring AI多模态之看图说话
引言:从"码农"到"多媒体魔术师" “曾经,我们的代码核心擅长处理文本,就像餐厅里只会做炒饭的厨师。现在有了Spring AI多模态支持,我们突然拥有满汉全席的烹饪技巧!” 作为一名常年与String打交道的开发者,当第一次看到Spring AI可以同时处理图片、音…...
ES6入门---第二单元 模块五:模块化
js不支持模块化 注意: 需要放到服务器环境 1、如何定义模块? export 东西 例:1.js文件中 console.log(1模块加载了);//显示是否加载了 export const a 12; export const b 5; export let c 101; const a12; const b5; const c101;ex…...
Python 函数装饰器和闭包(变量作用域规则)
本章内容: Python 如何计算装饰器句法 Python 如何判断变量是不是局部的 闭包存在的原因和工作原理 nonlocal 能解决什么问题 掌握这些基础知识后,我们可以进一步探讨装饰器: 实现行为良好的装饰器 标准库中有用的装饰器 实现一个参数化装饰器…...
什么是constexpr?
什么是constexpr? 简单来说,constexpr就是告诉编译器:“我这个变量或函数的值可以在编译时算出来,请帮我提前算好,运行时直接用结果,不用再算了。” • **传统const**只表示变量不可修改,但不…...
如何在 PowerEdge 服务器上设置 NIC 分组
以下文章提供了有关 Windows、VMware 和 Linux 中的 NIC 分组的信息。 什么是网络适配器分组?设置 NIC 分组 Windows设置 NIC 分组 VMware设置 NIC 分组 Linux 什么是网络适配器分组(绑定)? 网络适配器分组是一个术语࿰…...
ES6入门---第三单元 模块四:Set和WeakSet
set数据结构: 类似数组,但是里面不能有重复值,如果有,只显示一个 set用法: let setArr new Set([a,b]); setArr.add(a); 往setArr里面添加一项 let setArr new Set().add(a).add(b).add(c); setArr.delete(b); 删除一项 setArr.ha…...
架构进阶:75页架构规划方法课件 【附全文阅读】
本文概述了一个关于架构规划方法的目录及其目的,重点介绍了基于联邦企业架构(FEAF)的架构建模方法,并提及了不同层面的架构建模方法以及培训的目的。以下是对该内容的简洁总结: **架构规划方法目录及其目的** 本文旨在…...
前端面经-VUE3篇(三)--vue Router(二)导航守卫、路由元信息、路由懒加载、动态路由
一、导航守卫 vue Router 中的 导航守卫(Navigation Guards) 是一个非常重要的功能,用于在路由切换过程中,拦截、控制、检查或延迟页面跳转。 你可以理解为: 🔐 “进门前的保安”,控制哪些页面…...
RTX-3090 Qwen3-8B Dify RAG环境搭建
RTX-3090 Qwen3-8B Dify RAG环境搭建 一、环境配置二、操作步骤1、创建容器2、下载`Qwen3-8B`和embedding模型3、安装`transformers`4、安装`vllm`5、安装`flash-attention`6、启动兼容OpenAI API的服务1、方案一:启动`vllm`服务【不支持多任务】2、方案二:Flask和PyTorch实现的…...
Circular Plot系列(三):【视频教程】复现NCS图表之高大上的单细胞UMAP环形图
高端复杂的UMAP复现: 这又是一个高大上且炫酷的单细胞UMAP图,展示的信息很多,有大类细胞和亚群,以及marker基因和cell count信息,还可以增加其他的分组信息等等。没错,看这个图就是circlize一层层画的。我们…...
MCP智能体多Agent协作系统设计(Multi-Agent Cooperation)
目录 🚀 MCP智能体多Agent协作系统设计(Multi-Agent Cooperation) 🌟 为什么需要多Agent协作? 🧠 多Agent协作系统架构设计 🛠️ 1. 构建基础智能体基类(Agent Base)…...