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

Nginx 之Rewrite 使用详解

文章目录
    • 1. 概述
    • 2. Rewrite 指令
      • 2.1 指令语法
      • 2.2 Flag 标记说明
    • 3. Rewrite 与 Location
      • 3.1 Location 分类
      • 3.2 Rewrite 和 Location 比较
    • 4. Rewrite 实际场景
      • 4.1 基于域名的跳转
      • 4.2 基于客户端 IP 访问跳转
      • 4.3 基于参数匹配的跳转
      • 4.4 基于目录下所有 PHP 文件跳转
      • 4.5 基于最普通 URL 请求的跳转
    • 5. Rewrite 执行顺序
    • 6. Rewrite 与 If 指令
    • 7. Rewrite 正则表达式
    • 8. Rewrite 指令的脚本指令
    • 9. Rewrite 配置示例
      • 9.1 301/302 重定向
      • 9.2 非 www 域名重定向到 www 域名
      • 9.3 URL 正则重写:简化 URL 结构
    • 10. 结论

1. 概述

Nginx 的 rewrite 模块是处理 HTTP 请求过程中的一个重要功能,它允许基于 Perl 兼容正则表达式(PCRE)对用户请求的 URI 进行重写,并返回 30x 重定向跳转或按条件执行相关配置。这个模块提供了灵活的 URL 重写和重定向功能,可以用于实现友好 URL、301/302 重定向、条件重写等。

2. Rewrite 指令

2.1 指令语法

Nginx 中的 URL 重写主要依赖于 rewrite 指令,其基本语法如下:

rewrite <regex> <replacement> [flag];
  • regex:用于匹配 URI 的正则表达式。

  • replacement:将匹配到的 URI 替换成的新 URI。

  • flag(可选):控制重写的行为,常见的标志有:

    • last:表示重新搜索新的 location 块(即继续匹配新的规则)。
    • break:停止当前 location 块中的规则匹配,执行后续指令。
    • redirect:执行临时 重定向(302)。
    • permanent:执行永久重定向(301)。
2.2 Flag 标记说明
  • last:重写请求并继续搜索 location 匹配。
  • break:重写请求并停止搜索 location 匹配。
  • redirect:返回 302 临时重定向。
  • permanent:返回 301 永久重定向。

3. Rewrite 与 Location

rewrite 指令可以在 serverlocation 块中配置。location 块只对域名后除去传递参数的字符串起作用,而 rewrite 可以对域名或参数字符串进行匹配和重写。

3.1 Location 分类
  • 普通 location:匹配特定路径。
  • 正则 location:使用正则表达式匹配路径。
  • 优先级:Nginx 会优先匹配带有正则表达式的 location,然后是最长非正则 location。
3.2 Rewrite 和 Location 比较
  • rewrite 用于重写请求 URI。
  • location 用于定义请求的处理方式。

4. Rewrite 实际场景

4.1 基于域名的跳转

将旧域名的访问重定向到新域名,同时保持参数不变。

# 定义一个 server 块,用于处理进来的 HTTP 请求
server {# 监听 80 端口,即 HTTP 默认端口listen 80;# 指定该 server 块响应的域名,这里是 olddomain.comserver_name olddomain.com;# 定义 location 块,匹配所有 URI(/ 表示根路径)location / {# 使用 rewrite 指令将所有请求从 olddomain.com 重定向到 newdomain.com# 并保持原有的请求路径和查询参数不变rewrite ^/(.*)$ http://newdomain.com/$1 permanent;}
}

这段配置的作用是将所有访问 olddomain.com 的请求通过 Nginx 重定向到 newdomain.com,并且保持请求的路径不变。permanent 标志表示这是一个永久重定向(301 状态码),告诉搜索引擎和浏览器该资源已经被永久移动到新的位置。

4.2 基于客户端 IP 访问跳转

只允许特定 IP 访问,其他 IP 重定向到维护页面。

# 定义一个 server 块,用于处理进来的 HTTP 请求
server {# 监听 80 端口,即 HTTP 默认端口listen 80;# 指定该 server 块响应的域名,这里是 example.comserver_name example.com;# 定义 location 块,匹配所有 URI(/ 表示根路径)location / {# 使用 if 指令进行条件判断,$remote_addr 是客户端的 IP 地址if ($remote_addr != '192.168.1.100') {# 如果客户端 IP 地址不是 '192.168.1.100',则返回 302 状态码# 并将请求重定向到 /maintenance.html,表示网站正在维护中return 302 /maintenance.html;}}
}

这段配置的作用是限制对 example.com 的访问,只允许 IP 地址为 192.168.1.100 的客户端访问所有资源,其他所有 IP 地址的访问都会被重定向到 /maintenance.html 页面,通常用于网站维护期间。这里使用的是临时重定向(302 状态码),意味着浏览器会显示新的 URL(即 /maintenance.html),但搜索引擎和缓存可能会保留原始请求的 URL。

4.3 基于参数匹配的跳转

根据请求参数进行跳转。

# 定义一个 server 块,用于处理进来的 HTTP 请求
server {# 监听 80 端口,即 HTTP 默认端口listen 80;# 指定该 server 块响应的域名,这里是 example.comserver_name example.com;# 定义 location 块,匹配所有 URI(/ 表示根路径)location / {# 使用 rewrite 指令进行 URL 重写# 正则表达式 ^/(.*)?param=value$ 匹配任何以 / 开头,后面跟着任意字符# 并且以 ?param=value 结尾的请求 URIrewrite ^/(.*)?param=value$ /new-path/$1 last;# last 标志表示重写完成后,继续搜索匹配的 location 块# 这里的 $1 是正则表达式中括号内匹配到的部分,即任意字符的部分}
}

这段配置的作用是将所有匹配特定模式的请求重写到一个新的路径。具体来说,它会查找所有以 / 开头,后面跟着任意内容,并且以 ?param=value 结尾的请求,并将这些请求重写到 /new-path/ 开头的路径下,同时保留原始请求中的路径部分(不包括查询参数)。last 标志意味着在重写后,Nginx 将继续检查其他 location 块以找到最合适的匹配项。

4.4 基于目录下所有 PHP 文件跳转

将特定目录下的所有 PHP 文件请求重写到新路径。

# 定义一个 server 块,用于处理进来的 HTTP 请求
server {# 监听 80 端口,即 HTTP 默认端口listen 80;# 指定该 server 块响应的域名,这里是 example.comserver_name example.com;# 定义一个 location 块,使用 ~ 表示这是一个正则表达式匹配# 正则表达式 .php$ 匹配以 .php 结尾的请求 URIlocation ~ .php$ {# 使用 rewrite 指令进行 URL 重写# 正则表达式 ^/(.*).php$ 匹配任何以 / 开头,后面跟着任意字符,以 .php 结尾的请求 URIrewrite ^/(.*).php$ /new-path/$1.php last;# last 标志表示重写完成后,继续搜索匹配的 location 块# 这里的 $1 是正则表达式中括号内匹配到的部分,即除去 .php 后缀的文件名部分}
}

这段配置的作用是将所有请求 URI 以 .php 结尾的请求重写到 /new-path/ 下的相同文件名。例如,请求 /example.com/about.php 会被重写为 /example.com/new-path/about.phplast 标志意味着在重写后,Nginx 将继续检查其他 location 块以找到最合适的匹配项,而不是立即停止处理当前 location 块。

4.5 基于最普通 URL 请求的跳转

将普通 URL 请求重写到新路径。

# 定义一个 server 块,用于处理进来的 HTTP 请求
server {# 监听 80 端口,即 HTTP 默认端口listen 80;# 指定该 server 块响应的域名,这里是 example.comserver_name example.com;# 定义 location 块,匹配所有 URI(/ 表示根路径)location / {# 使用 rewrite 指令进行 URL 重写# 正则表达式 ^/(.*)$ 匹配任何以 / 开头,后面跟着任意字符的请求 URIrewrite ^/(.*)$ /new-path/$1 permanent;# permanent 标志表示这是一个永久重定向(301 状态码)# 告诉浏览器和搜索引擎该资源已经被永久移动到新的位置# $1 是正则表达式中括号内匹配到的部分,即除去第一个斜杠后的整个请求路径}
}

这段配置的作用是将所有访问 example.com 的请求重定向到 /new-path/ 下的相同路径。例如,请求 /example.com/about 会被永久重定向到 /example.com/new-path/aboutpermanent 标志意味着这是一个永久重定向,浏览器会更新收藏夹中的 URL,搜索引擎也会更新其索引。

5. Rewrite 执行顺序

rewrite 指令的执行顺序如下:

  1. 执行 server 块里面的 rewrite 指令。
  2. 执行 location 匹配。
  3. 执行选定 location 中的 rewrite 指令。

6. Rewrite 与 If 指令

if 指令用于条件判断,可以与 rewrite 结合使用,但需要注意 if 是邪恶的,因为它可能导致 Nginx 配置变得复杂和难以维护。推荐使用 rewrite 来实现条件重写。

7. Rewrite 正则表达式

Nginx 的 rewrite 模块支持 PCRE 正则表达式,以下是一些常用的正则表达式元字符:

  • .:匹配任意单个字符。
  • ^:匹配字符串的开始。
  • $:匹配字符串的结束。
  • *:匹配前面的元素 0 次或多次。
  • +:匹配前面的元素 1 次或多次。
  • ?:匹配前面的元素 0 次或 1 次。
  • []:匹配括号内的任意一个字符。
  • |:逻辑或操作符。

8. Rewrite 指令的脚本指令

rewrite 模块提供了类似脚本语言的指令,可以在 HTTP 请求处理过程中对 URI 进行更灵活的操作控制。

9. Rewrite 配置示例

以下是一些 rewrite 配置的示例:

9.1 301/302 重定向
# 定义一个 server 块,用于处理 HTTP 请求
server {# 监听 80 端口,这是 HTTP 协议的默认端口listen 80;# 指定 server 块服务的域名,这里是 olddomain.comserver_name olddomain.com;# 定义 location 块,用于匹配所有请求的 URI(/ 表示根路径)location / {# 使用 rewrite 指令进行 URL 重写# 正则表达式 ^/(.*)$ 匹配所有以 / 开头的请求 URIrewrite ^/(.*)$ http://newdomain.com/$1 permanent;# 将匹配到的请求重写到 newdomain.com 的相同路径# $1 表示正则表达式中括号内匹配到的部分,即除了根斜杠外的路径部分# permanent 标志表示这是一个永久重定向(301 状态码)# 告诉浏览器和搜索引擎该资源已经被永久移动到新域名}
}

这段配置的作用是将所有访问 olddomain.com 的请求永久重定向到 newdomain.com 的相同路径。例如,如果用户访问 olddomain.com/about,他们将被重定向到 newdomain.com/about。这个重定向是永久的,意味着搜索引擎和浏览器会更新相应的链接,并且用户浏览器的地址栏也会显示新的 URL。

9.2 非 www 域名重定向到 www 域名
# 第一个 server 块,用于处理对 example.com 的非 www 前缀域名的请求
server {# 监听 80 端口,这是 HTTP 协议的默认端口listen 80;# 指定 server 块服务的域名,这里是 example.com(没有 www 前缀)server_name example.com;# 对于所有请求,返回一个 301 永久重定向响应# 这会将用户从 http://example.com 重定向到 http://www.example.com,并保留原始请求的 URIreturn 301 http://www.example.com$request_uri;
}# 第二个 server 块,用于处理对 www.example.com 的请求
server {# 监听 80 端口,这是 HTTP 协议的默认端口listen 80;# 指定 server 块服务的域名,这里是 www.example.com(带有 www 前缀)server_name www.example.com;# 定义 location 块,用于匹配所有请求的 URI(/ 表示根路径)location / {# 这里可以放置处理 www.example.com 域名请求的配置# 例如,可以配置 proxy_pass 来代理请求,或者 root 指令来指定文件根目录等# 正常站点配置}
}

这段配置的作用是将所有对 example.com(没有 www 前缀)的 HTTP 请求永久重定向到 www.example.com(带有 www 前缀)。第一个 server 块监听 example.com 并返回一个 301 状态码,将请求重定向到 www.example.com,同时保留请求的 URI。第二个 server 块则处理对 www.example.com 的请求,可以在这里进行进一步的配置,比如设置代理、静态文件服务等。

关于您提到的网址 http://www.example.com$request_uri,由于网络原因,解析并没有成功。这可能是由于链接格式不正确或者网络连接问题。请检查网页链接的合法性,并在确保网络连接正常的情况下适当重试。如果问题依旧存在,可能需要进一步的网络诊断或联系网站管理员。如果您有其他问题或需要帮助,请随时告知。

9.3 URL 正则重写:简化 URL 结构
# 定义一个 server 块,用于处理进来的 HTTP 请求
server {# 监听 80 端口,即 HTTP 默认端口listen 80;# 指定该 server 块响应的域名,这里是 example.comserver_name example.com;# 定义一个 location 块,匹配请求 URI 路径以 /category/id/ 开头的请求location /category/id/ {# 使用 rewrite 指令进行 URL 重写# 正则表达式 ^/category/id/(d+)$ 匹配以 /category/id/ 开头,接着是数字的请求 URIrewrite ^/category/id/(d+)$ /category/$1 last;# last 标志表示重写完成后,继续搜索匹配的 location 块# $1 是正则表达式中括号内匹配到的部分,即 URI 中的数字部分}
}

这段配置的作用是将所有匹配 /category/id/ 路径并且后面跟着数字的请求重写到 /category/ 路径下。例如,请求 /category/id/123 会被重写为 /category/123last 标志意味着在重写后,Nginx 将继续检查其他 location 块以找到最合适的匹配项。这样做可以允许 Nginx 在重写请求后,根据新的 URI 再次检查是否有更具体的 location 匹配,从而应用更具体的配置。

10. 结论

Nginx 的 rewrite 模块提供了强大的 URL 重写和重定向功能,可以用于实现各种复杂的 URL 处理需求。通过合理配置 rewrite 指令,可以提高网站的可用性、改善 SEO、实现域名迁移等。本手册详细介绍了 rewrite 的命令、语法、含义、环境和示例,希望能够帮助用户更好地理解和使用 Nginx 的 rewrite 功能。

相关文章:

Nginx 之Rewrite 使用详解

文章目录 1. 概述2. Rewrite 指令 2.1 指令语法2.2 Flag 标记说明 3. Rewrite 与 Location 3.1 Location 分类3.2 Rewrite 和 Location 比较 4. Rewrite 实际场景 4.1 基于域名的跳转4.2 基于客户端 IP 访问跳转4.3 基于参数匹配的跳转4.4 基于目录下所有 PHP 文件跳转4.5 基于…...

注册Gmail如何跳过手机验证环节?

很多小伙伴在注册Gmail的时候都会遇到一个难题&#xff1a;手机号码验证&#xff0c;有可能包括了“手机号无法验证” “国内手机号验证失败” “收不到验证码”等等问题&#xff0c;但 根据真实案例&#xff0c;还有部分人则是“幸运地”没有手机号验证环节&#xff0c;那么今…...

WordPress自助建站全攻略

一、基础概念与核心优势 WordPress自助建站是一种无需编程即可搭建网站的平台&#xff0c;基于开源CMS系统&#xff0c;支持高度定制化。其核心优势主要体现在&#xff1a; 易用性&#xff1a;拖拽式编辑器和直观的后台操作&#xff0c;适合零基础用户快速上手。低成本&#x…...

TreeSet(单列集合)

TreeSet 是 Java 集合框架中的一种实现了 Set 接口的类&#xff0c;它通过一个红黑树&#xff08;Red-Black Tree&#xff09;来存储元素。由于使用了树结构&#xff0c;TreeSet 保证了元素的有序性&#xff0c;并且不允许重复元素。 1. TreeSet 的基本特性 有序性&#xff1…...

Elasticsearch:同义词在 RAG 中重要吗?

作者&#xff1a;来自 Elastic Jeffrey Rengifo 及 Toms Mura 探索 RAG 应用程序中 Elasticsearch 同义词的功能。 同义词允许我们使用具有相同含义的不同词语在文档中搜索&#xff0c;以确保用户无论使用什么确切的词语都能找到他们所寻找的内容。你可能会认为&#xff0c;由于…...

Docker安装分布式vLLM

Docker安装分布式vLLM 1 介绍 vLLM是一个快速且易于使用的LLM推理和服务库&#xff0c;适合用于生产环境。单主机部署会遇到显存不足的问题&#xff0c;因此需要分布式部署。 分布式安装方法 https://docs.vllm.ai/en/latest/serving/distributed_serving.html2 安装方法 …...

可视化实操记录(自用)

流程 读取数据 original_data pd.read_csv(“Penguins.csv”) original_data.head() 评估和清理数据 cleaned_data original_data.copy() #备份 结构 original_data.sample(5) 数据符合“每个变量为一列&#xff0c;每个观察值为一行&#xff0c;每种类型的观察单位为一…...

二叉树的遍历方式和子问题思路

目录 二叉树的遍历&#xff1a; 前序遍历&#xff1a; 中序遍历&#xff1a; 后序遍历&#xff1a; 二叉树的基本操作&#xff1a; 求树的结点个数&#xff08;递归遍历思路&#xff09;&#xff1a; 求树的结点个数&#xff08;子问题思路&#xff09;&#xff1a; 求树的…...

运用Deek Seeker协助数据分析

我的数据源有两张表&#xff0c;一个是每日销售表(字段有日期、产品名称、实际销量)&#xff0c;一个是每月目标表(字段有年度月份、产品名称、目标销量);我的需求是&#xff0c;按月、按年来统计每个产品的目标完成情况请问用PowerBl进行分析&#xff0c;应该如何建立数据模型…...

服务器之连接简介(Detailed Explanation of Server Connection)

一台服务器最大能支持多少连接&#xff1f;一台客户端机器最多能发起多少条连接&#xff1f;&#xff1f; 我们知道TCP连接&#xff0c;从根本上看其实就是client和server端在内存中维护的一组【socket内核对象】&#xff08;这里也对应着TCP四元组&#xff1a;源IP、源端口、…...

低空经济:开启未来空中生活的全新蓝海

引言 随着科技的进步&#xff0c;我们不再仅仅依赖地面交通和传统物流。你是否曾幻想过&#xff0c;未来的某一天&#xff0c;快递、外卖可以像魔法一样直接从空中送到你手中&#xff1f;或者&#xff0c;你能乘坐小型飞行器&#xff0c;快速穿梭于城市之间&#xff0c;告别拥堵…...

主动视觉可能就是你所需要的:在双臂机器人操作中探索主动视觉

AV-ALOHA 系统使用用于 AV 的 VR 耳机实现直观的数据收集&#xff0c;并且 用于作的 VR 控制器或引线臂。这有助于捕捉全身和头部 远程作我们的真实和模拟系统的运动&#xff0c;记录来自 6 个的视频 不同的摄像头&#xff0c;并为我们的 AV 仿制学习策略提供训练数据。 加州大…...

洛谷 P6419 COCI2014/2015 #1 Kamp 题解

题意 一颗树 n n n 个点&#xff0c; n − 1 n-1 n−1 条边&#xff0c;经过每条边都要花费一定的时间&#xff0c;任意两个点都是联通的。 有 k k k 个人&#xff08;分布在 k k k 个不同的点&#xff09;要集中到一个点举行聚会。 聚会结束后需要一辆车从举行聚会的这点…...

在 Vue 项目中使用 SQLite 数据库的基础应用

目录 一、环境准备二、数据库连接与操作1. 创建数据库连接2. 创建表3. 插入数据4. 查询数据5. 更新数据6. 删除数据 三、在 Vue 组件中使用 SQLite 一、环境准备 安装 Node.js 和 npm&#xff1a;确保已安装 Node.js 和 npm。 创建 Vue 项目&#xff1a;使用 Vue CLI 创建一个…...

AI会话问答的页面滚动处理(参考deepseek页面效果)

近期在接入deepseekR1的深度思考&#xff0c;研究了下deepseek官网的滚动效果&#xff0c;大概如下&#xff1a;用户发出消息后&#xff0c;自动滚动到页面最底部&#xff0c;让最新消息展示在视野中&#xff0c;这时候&#xff0c;我们先处理一次滚动&#xff1a; const scrol…...

GRN前沿:DGCGRN:基于有向图卷积网络的基因调控网络推理

1.论文原名&#xff1a;Inference of gene regulatory networks based on directed graph convolutional networks 2.发表日期&#xff1a;2024 DGCGRN框架 中心节点和节点的构建 局部增强策略 1. 问题背景 在基因调控网络中&#xff0c;许多节点的连接度较低&#xff08;即…...

MongoDB 入门操作指南

文章目录 MongoDB 入门操作指南1. 连接到 MongoDB 数据库2. 查看当前数据库3. 显示所有数据库4. 切换或创建数据库5. 查看当前数据库中的所有集合6. 创建集合7. 插入文档插入单个文档插入多个文档 8. 查询文档查询所有文档查询匹配条件的文档格式化查询输出 9. 更新文档更新单个…...

共享设备管理难?MDM助力Kiosk模式一键部署

目录 1. 简化设备部署与配置&#xff1a;实现一键式部署 2. 自动化应用更新与内容推送&#xff1a;确保设备始终保持最新状态 3. 权限控制与设备安全&#xff1a;防止滥用与数据泄露 4. 远程管理与故障诊断&#xff1a;保障设备长期稳定运行 5. 数据分析与报告&#xff1a…...

HttpClient-Java程序中发送Http请求

配置 <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version> </dependency> ps:aliyun-sdk-oss中已引入上述配置 HttpClient的核心API&#xff1a; Htt…...

硬件-电源-隔离与非隔离的区别

文章目录 一&#xff1a;隔离电源与非隔离电源1.1 充电器触电新闻1.2 电路拓扑1.3 隔离电源与非隔离电源的优缺点1.3 隔离电源与非隔离电源的选择1.3.1 隔离电源1.3.2 非隔离电源 二&#xff1a;注意事项2.1 隔离电源结构图2.1 隔离耐压测试方法 三&#xff1a;感悟道友&#x…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

算法打卡第18天

从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7…...

2025-05-08-deepseek本地化部署

title: 2025-05-08-deepseek 本地化部署 tags: 深度学习 程序开发 2025-05-08-deepseek 本地化部署 参考博客 本地部署 DeepSeek&#xff1a;小白也能轻松搞定&#xff01; 如何给本地部署的 DeepSeek 投喂数据&#xff0c;让他更懂你 [实验目的]&#xff1a;理解系统架构与原…...

算法刷题-回溯

今天给大家分享的还是一道关于dfs回溯的问题&#xff0c;对于这类问题大家还是要多刷和总结&#xff0c;总体难度还是偏大。 对于回溯问题有几个关键点&#xff1a; 1.首先对于这类回溯可以节点可以随机选择的问题&#xff0c;要做mian函数中循环调用dfs&#xff08;i&#x…...