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

Nginx location静态文件映射配置

遇到问题?

以下这个Nginx的配置,愿意为访问https://abc.com会指向一个动态网站,访问https://abc.com/tongsongzj时会访问静态网站,但是配置之后(注意看后面那个location /tongsongzj/静态文件映射的配置),此时不能通过https://abc.com/tongsongzj/index.html正确访问,显示报错信息如下:
在这里插入图片描述

问:这是为啥?需要如何修改?

已经确认前端代码在宿主机路径/opt/docker-data/nginx/h5下,且对应的docker中nginx容器真实路径为/usr/share/nginx/h5

Nginx配置如下

# ABC官网Nginx配置
# 这里跳转到动态网站
server {listen 80;  # 监听80端口,用于HTTP请求
#     listen 443 ssl;  # 监听443端口,用于HTTPS请求,并启用SSLlisten 443 ssl http2;  # 启用 HTTP/2 的 HTTPS 监听server_name www.abc.com abc.com;  # 绑定的域名root html;index index.html index.htm;# SSL证书和私钥的路径ssl_certificate conf.d/cert/abc.pem;ssl_certificate_key conf.d/cert/abc.key;ssl_session_timeout 5m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;#表示使用的加密套件的类型。ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型。ssl_prefer_server_ciphers on;location / {#root html;  #Web网站程序存放目录。#index index.html index.htm;proxy_set_header HOST $host;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://abc-cms:9999;
#         proxy_pass http://172.19.19.80:8082;}# 静态页面配置,代码传到/opt/docker-data/nginx/h5路径即可location /tongsongzj/ {# 静态网页配置root /usr/share/nginx/h5;  # 静态网页的根目录index index.html;  # 默认打开的文件try_files $uri $uri/ /index.html;  # 尝试查找URI对应的文件,否则返回index.html# 禁用缓存expires off;add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";}
}

问题解决

静态文件无法访问的原因在于路径拼接方式错误

以下是详细分析和解决方案:


问题分析:路径拼接逻辑错误

当前配置中使用了 root 指令:

location /tongsongzj/ {root /usr/share/nginx/h5;  # 最终路径 = root + location...
}

Nginx 会将 location 路径拼接到 root 后面,因此实际访问路径为:

/usr/share/nginx/h5/tongsongzj/index.html

但根据你的描述,静态文件直接存放在容器的 /usr/share/nginx/h5 路径下(对应宿主机 /opt/docker-data/nginx/h5),并未创建 tongsongzj 子目录,导致路径不匹配。


解决方案:改用 alias 指令

root 改为 alias 指令,并直接指向静态文件的实际路径:

location /tongsongzj/ {alias /usr/share/nginx/h5/;  # 直接映射路径,不拼接 locationindex index.html;try_files $uri $uri/ /tongsongzj/index.html;  # 修正回退路径# 禁用缓存配置expires off;add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";
}
  • 关键修改说明

    1. alias 会直接将 /tongsongzj/ 映射到容器内的 /usr/share/nginx/h5/ 目录,不再拼接 location 路径。
    2. 修正 try_files 确保回退到 /tongsongzj/index.html,避免路径错误。

其他注意事项

  1. 确认文件路径
    确保容器内 /usr/share/nginx/h5 路径下直接存在 index.html 等静态文件,而不是嵌套在子目录中。

  2. 检查目录权限
    运行以下命令确保 Nginx 有权限访问该目录:

    docker exec [nginx容器名] ls -l /usr/share/nginx/h5
    

    如果权限不足,尝试在宿主机执行:

    chmod -R 755 /opt/docker-data/nginx/h5
    
  3. 检查 Nginx 日志
    查看错误日志定位具体原因:

    docker logs [nginx容器名] 2>&1 | grep -i error
    

完整修正配置参考

# 静态页面配置
location /tongsongzj/ {alias /usr/share/nginx/h5/;  # 使用 alias 直接映射真实路径index index.html;try_files $uri $uri/ /tongsongzj/index.html;  # 保持前端路由正常# 禁用缓存expires off;add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";
}

或者

    # 静态页面配置,代码传到 /opt/docker-data/nginx/h5/tongsongzj 路径即可# 说明:使用root指令,Nginx 会将 location 路径拼接到 root 后面,因此实际访问路径为:/usr/share/nginx/h5/tongsongzj/index.htmllocation /tongsongzj/ {# 静态网页配置root /usr/share/nginx/h5;  # 静态网页的根目录 【最终路径 = root + location】index index.html;  # 默认打开的文件try_files $uri $uri/ /index.html;  # 尝试查找URI对应的文件,否则返回index.html# 禁用缓存expires off;add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";}

修改后重启 Nginx 服务即可生效:

docker exec [nginx容器名] nginx -s reload

root alias 的核心区别

Nginx 的 rootalias 指令都用于定义静态文件的路径映射,但它们的路径拼接逻辑完全不同。理解它们的区别是避免配置错误的关键。


1. root 指令

定义
  • 路径拼接逻辑root 会将 location 的 URI 路径拼接到 root 指定的路径后面。
  • 适用场景:当 URI 路径和文件系统的目录结构完全一致时(例如 /static/ 对应 /var/www/static/)。
示例
location /static/ {root /var/www;
}

当访问 /static/image.jpg 时,Nginx 会查找文件:
/var/www/static/image.jpg
(路径 = root + location 的 URI)

优点
  • 简单直观:URI 路径和文件路径一一对应,适合标准目录结构。
  • 自动处理子路径:支持嵌套路径(如 /static/css/style.css)。
缺点
  • 路径强制拼接:无法灵活映射到与 URI 不匹配的目录结构。
  • 冗余路径:如果 URI 路径和实际目录结构不匹配,会导致路径错误。
注意事项
  • 确保 root 路径的末尾没有斜杠(例如 /var/www,而不是 /var/www/)。
  • 如果 location 路径是 /static/,实际文件必须存放在 root 路径下的 static 子目录中。

2. alias 指令

定义
  • 路径拼接逻辑alias 会用指定的路径完全替换 location 的 URI 路径。
  • 适用场景:当 URI 路径和实际文件路径不一致时(例如将 /docs/ 映射到 /usr/share/nginx/html)。
示例
location /docs/ {alias /usr/share/nginx/html/;
}

当访问 /docs/readme.html 时,Nginx 会查找文件:
/usr/share/nginx/html/readme.html
(路径 = alias 路径 + URI 去除 location 前缀后的部分)

优点
  • 灵活映射:可以自由将 URI 映射到任意目录结构。
  • 无冗余路径:URI 路径和文件路径完全解耦。
缺点
  • 路径易错:必须严格处理斜杠(/),否则会导致路径拼接错误。
  • 不支持自动子路径:需要手动处理嵌套路径。
注意事项
  • alias 路径的末尾必须带斜杠(例如 /usr/share/nginx/html/)。
  • location 的路径末尾必须带斜杠(例如 /docs/ 而不是 /docs),否则路径替换可能不完整。

关键对比表格

特性rootalias
路径拼接逻辑root + location URIalias 完全替换 location URI
斜杠处理root 路径末尾不带斜杠alias 路径末尾必须带斜杠
适用场景URI 与文件路径一致URI 与文件路径不一致
嵌套路径支持自动支持(如 /static/css/需手动处理(依赖 try_files
常见错误文件路径多了一层子目录路径拼接错误(斜杠问题)

常见错误场景与修复

错误 1:路径多了一层子目录
  • 错误配置(使用 root):

    location /tongsongzj/ {root /usr/share/nginx/h5;index index.html;
    }
    
    • 预期路径:/usr/share/nginx/h5/index.html
    • 实际路径:/usr/share/nginx/h5/tongsongzj/index.html(多了一层 tongsongzj
  • 修复方法:改用 alias

    location /tongsongzj/ {alias /usr/share/nginx/h5/;  # 注意末尾斜杠index index.html;
    }
    
错误 2:斜杠缺失导致路径拼接错误
  • 错误配置

    location /docs {alias /usr/share/nginx/html;  # 缺少末尾斜杠
    }
    
    • 访问 /docs/readme.html 时,路径变为 /usr/share/nginx/htmlreadme.html(斜杠缺失导致拼接错误)。
  • 修复方法

    location /docs/ {                # location 末尾加斜杠alias /usr/share/nginx/html/;  # alias 末尾加斜杠
    }
    

最佳实践

  1. 优先使用 root
    如果 URI 路径和文件目录结构完全一致(例如 /static/ 对应 /var/www/static/),使用 root 更简单。

  2. 必须用 alias 的场景
    当需要将 URI 映射到一个与 URI 路径不匹配的目录时(例如将 /legacy/ 映射到 /old-site/)。

  3. 严格处理斜杠

    • locationalias 的路径末尾必须同时带斜杠或不带斜杠,且逻辑一致。
    • 推荐统一在 locationalias 路径末尾加斜杠。
  4. 结合 try_files 处理前端路由
    如果是单页应用(如 Vue/React),需配置 try_files 回退到入口文件:

    location /tongsongzj/ {alias /usr/share/nginx/h5/;try_files $uri $uri/ /tongsongzj/index.html;  # 回退到 index.html
    }
    
  5. 检查文件权限
    确保 Nginx 进程有权限读取目录和文件:

    chmod -R 755 /opt/docker-data/nginx/h5  # 宿主机路径
    

总结

  • root:路径拼接简单,适合标准目录结构。

  • alias:路径替换灵活,适合自定义映射。

  • 核心区别在于路径拼接逻辑,务必通过实际文件路径验证配置。

  • 配置完成后,使用 nginx -t 测试语法,并通过日志排查错误:

    tail -f /var/log/nginx/error.log
    

相关文章:

Nginx location静态文件映射配置

遇到问题? 以下这个Nginx的配置,愿意为访问https://abc.com会指向一个动态网站,访问https://abc.com/tongsongzj时会访问静态网站,但是配置之后(注意看后面那个location /tongsongzj/静态文件映射的配置)&…...

四、Hive DDL表定义、数据类型、SerDe 与分隔符核心

在理解了 Hive 数据库的基本操作后,本篇笔记将深入到数据存储的核心单元——表 (Table) 的定义和管理。掌握如何创建表、选择合适的数据类型、以及配置数据的读写方式 (特别是 SerDe 和分隔符),是高效使用 Hive 的关键。 一、创建表 (CREATE TABLE)&…...

每日脚本 5.11 - 进制转换和ascii字符

前置知识 python中各个进制的开头 二进制 : 0b 八进制 : 0o 十六进制 : 0x 进制转换函数 : bin() 转为2进制 oct() 转换为八进制的函数 hex() 转换为16进制的函数 ascii码和字符之间的转换 : chr(97) 码转为字符 …...

cookie和session的区别

一、基本概念 1. Cookie 定义​​:Cookie 是服务器发送到用户浏览器并保存在本地的一小块数据(通常小于4KB),浏览器会在后续请求中自动携带该数据。作用​​:用于跟踪用户状态(如登录状态)、记…...

Kotlin Multiplatform--03:项目实战

Kotlin Multiplatform--03:项目实战 引言配置iOS开发环境配置项目环境运行程序 引言 本章将会带领读者进行项目实战,了解如何从零开始编译一个能同时在Android和iOS运行的App。开发环境一般来说需要使用Macbook,笔者没试过Windows是否能开发。…...

图形学、人机交互、VR/AR领域文献速读【持续更新中...】

(1)笔者在时间有限的情况下,想要多积累一些自身课题之外的新文献、新知识,所以开了这一篇文章。 (2)想通过将文献喂给大模型,并向大模型提问的方式来快速理解文献的重要信息(如基础i…...

opencascade.js stp vite 调试笔记

Hello, World! | OpenCascade.js cnpm install opencascade.js cnpm install vite-plugin-wasm --save-dev 当你不知道文件写哪的时候trae还是有点用的 ‘’‘ import { defineConfig } from vite; import wasm from vite-plugin-wasm; import rollupWasm from rollup/plugi…...

openharmony系统移植之gpu mesa3d适配

openharmony系统移植之gpu mesa3d适配 文章目录 openharmony系统移植之gpu mesa3d适配1. 环境说明2. gpu内核panfrost驱动2.1 使能panfrost驱动2.2 panfrost dts配置 3. buildroot下测试gpu驱动3.1 buildroot配置编译 4. ohos下mesa3d适配4.1 ohos下mesa3d编译调试4.1.2 编译4.…...

Java开发经验——阿里巴巴编码规范经验总结2

摘要 这篇文章是关于Java开发中阿里巴巴编码规范的经验总结。它强调了避免使用Apache BeanUtils进行属性复制,因为它效率低下且类型转换不安全。推荐使用Spring BeanUtils、Hutool BeanUtil、MapStruct或手动赋值等替代方案。文章还指出不应在视图模板中加入复杂逻…...

Linux中常见开发工具简单介绍

目录 apt/yum 介绍 常用命令 install remove list vim 介绍 常用模式 命令模式 插入模式 批量操作 底行模式 模式替换图 vim的配置文件 gcc/g 介绍 处理过程 预处理 编译 汇编 链接 库 静态库 动态库(共享库) make/Makefile …...

深入理解深度Q网络DQN:基于python从零实现

DQN是什么玩意儿? 深度Q网络(DQN)是深度强化学习领域里一个超厉害的算法。它把Q学习和深度神经网络巧妙地结合在了一起,专门用来搞定那些状态空间维度特别高、特别复杂的难题。它展示了用函数近似来学习价值函数的超能力&#xf…...

使用lldb看看Rust的HashMap

目录 前言 正文 读取桶的状态 获取键值对 键值对的指针地址 此时,读取数据 读取索引4的键值对 多添加几个键值对 使用i32作为键,&str作为值 使用i32作为键,String作为值 前言 前面使用ldb看了看不同的类型,这篇再使用…...

Vue3简易版购物车的实现。

文章目录 一、话不多说&#xff0c;直接上代码&#xff1f; 一、话不多说&#xff0c;直接上代码&#xff1f; <template><div><input type"text" placeholder"请输入内容" v-model"keywords"><button click"addGood…...

比亚迪全栈自研生态的底层逻辑

比亚迪全栈自研生态的底层逻辑&#xff1a;汽车工程师必须理解的闭环技术革命 引言&#xff1a;当技术壁垒成为护城河 2023年比亚迪销量突破302万辆的震撼数据背后&#xff0c;隐藏着一个更值得工程师深思的事实&#xff1a;其全栈自研体系覆盖了新能源汽车83%的核心零部件。这…...

[Java实战]Spring Boot 快速配置 HTTPS 并实现 HTTP 自动跳转(八)

[Java实战]Spring Boot 快速配置 HTTPS 并实现 HTTP 自动跳转(八) 引言 在当今网络安全威胁日益严峻的背景下&#xff0c;为 Web 应用启用 HTTPS 已成为基本要求。Spring Boot 提供了简单高效的方式集成 HTTPS 支持&#xff0c;无论是开发环境测试还是生产环境部署&#xff0…...

5.1.1 WPF中Command使用介绍

WPF 的命令系统是一种强大的输入处理机制,它比传统的事件处理更加灵活和可重用,特别适合 MVVM (Model, View, ViewModel)模式开发。 一、命令系统核心概念 1.命令系统基本元素: 命令(Command): 即ICommand类,使用最多的是RoutedCommand,也可以自己继承ICommand使用自定…...

设计模式简述(十九)桥梁模式

桥梁模式 描述基本组件使用 描述 桥梁模式是一种相对简单的模式&#xff0c;通常以组合替代继承的方式实现。 从设计原则来讲&#xff0c;可以说是单一职责的一种体现。 将原本在一个类中的功能&#xff0c;按更细的粒度拆分到不同的类中&#xff0c;然后各自独立发展。 基本…...

常用设计模式

一、什么是设计模式 设计模式&#xff08;Design Pattern&#xff09;是一套被反复使用、多数人知晓的、经过分类编目的代码设计经验总结&#xff0c;旨在解决面向对象设计中反复出现的问题&#xff0c;提升代码的可重用性、可理解性和可靠性。以下从多个维度详细讲解&#xff…...

20242817-李臻-课下作业:Qt和Sqlite

实验内容 阅读附件内容&#xff0c;编译运行附件中第一章&#xff0c;第三章的例子。 实验过程 第一章 t1实践 #include <QApplication> #include <QWidget> #include <QPushButton> #include <QVBoxLayout>int main(int argc, char *argv[]) {QA…...

嵌入式机器学习平台Edge Impulse图像分类 – 快速入门

陈拓 2025/05/08-2025/05/11 1. 简介 官方网址 https://edgeimpulse.com/ 适用于任何边缘设备的人工智能&#xff1a; Gateways - 网关 Sensors & Cameras - 传感器和摄像头 Docker Containers - Docker容器 MCUs, NPUs, CPUs, GPUs 构建数据集、训练模型并优化库以…...

JavaWeb, Spring, Spring Boot

出现时间 JavaWeb - Spring - Spring Boot 一、JavaWeb 的发展历程 Servlet 和 JSP&#xff1a; Servlet&#xff1a;1997 年首次发布&#xff0c;用于处理 HTTP 请求和响应。 JSP&#xff1a;1999 年首次发布&#xff0c;用于动态生成 HTML 页面。 特点&#xff1a;提供了基…...

upload-labs靶场通关详解:第五关

一、分析源代码 $is_upload false; $msg null; if (isset($_POST[submit])) {if (file_exists(UPLOAD_PATH)) {$deny_ext array(".php",".php5",".php4",".php3",".php2",".html",".htm",".ph…...

【问题】Watt加速github访问速度:好用[特殊字符]

前言 GitHub 是全球知名的代码托管平台&#xff0c;主要用于软件开发&#xff0c;提供 Git 仓库托管、协作工具等功能&#xff0c;经常要用到&#xff0c;但是国内用户常因网络问题难以稳定访问 。 Watt Toolkit&#xff08;原名 Steam&#xff09;是由江苏蒸汽凡星科技有限公…...

GitHub打开缓慢甚至失败的解决办法

在C:\Windows\System32\drivers\etc的hosts中增加如下内容&#xff1a; 20.205.243.166 github.com 199.59.149.236 github.global.ssl.fastly.net185.199.109.153 http://assets-cdn.github.com 185.199.108.153 http://assets-cdn.github.com 185.199.110.153 http://asset…...

【25软考网工】第六章(3)数字签名和数字证书

博客主页&#xff1a;christine-rr-CSDN博客 ​专栏主页&#xff1a;软考中级网络工程师笔记 ​​ 大家好&#xff0c;我是christine-rr !目前《软考中级网络工程师》专栏已经更新二十多篇文章了&#xff0c;每篇笔记都包含详细的知识点&#xff0c;希望能帮助到你&#xff01…...

Android Native 函数 Hook 技术介绍

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 前言 Android Native 函数 Hook 技术是一种在应用运行时拦截或替换系统或自身函数行为的手段&#xff0c;常见实现包括 PLT Hook、Inline Hook。 PLT Hook 和…...

代码随想录算法训练营第60期第三十二天打卡

大家好&#xff0c;今天是我们贪心算法章节的第三阶段&#xff0c;前面我们讲过的几道题不知道大家理解的情况如何&#xff0c;还是那句话&#xff0c;贪心算法没有固定的套路与模板&#xff0c;一道题一个思路&#xff0c;我们要多思考这样慢慢地我就就可以水到渠成。今天我们…...

Problem C: 异常1

1.题目描述 检测年龄&#xff0c;其中若为负数或大于等于200岁皆为异常&#xff0c;请将下列代码补充完整。 // 你的代码将被嵌入这里 class Main{ public static void main(String[] args){ Person p1new Person("John",80); Person p2new Pers…...

Ollama部署使用以及模型微调和本地部署

ollama是一款开源的本地大语言模型管理工具&#xff0c;专注于简化大语言模型&#xff08;LLM&#xff09;的本地部署和使用。以下是关于 Ollama 应用的详细介绍&#xff1a; Ollama 的主要功能 本地化部署&#xff1a; Ollama 支持在本地运行模型&#xff0c;无需依赖外部云…...

汇编学习——iOS开发对arm64汇编的初步了解

汇编学习——iOS开发对arm64汇编的初步了解 文章目录 汇编学习——iOS开发对arm64汇编的初步了解前言栈 指令 寄存器寄存器指令运算指令寻址指令前变基 与 后变基 栈堆&#xff08;Heap&#xff09;内存机制三、栈&#xff08;Stack&#xff09;内存机制 3. 多级调用示例 例子A…...

前端代理问题

在前后端联调的时候&#xff0c;有一次因为前端项目代理配置有问题&#xff0c;导致请求接口对不上&#xff0c; transpileDependencies: true,devServer: {hot: true,port: 8081,proxy: {/api: {target: http://localhost:8080,changeOrigin: true,ws: true,pathRewrite: {^/a…...

E+H流量计通过Profibus DP主站转Modbus TCP网关与上位机轻松通讯

EH流量计通过Profibus DP主站转Modbus TCP网关与上位机轻松通讯 在现代工业自动化的广阔舞台上&#xff0c;Profibus DP与Modbus TCP这两种通信协议各领风骚&#xff0c;它们在不同的应用场景中发挥着举足轻重的作用。但工业生产的复杂性往往要求不同设备、系统之间能够顺畅沟…...

TCP/IP 模型每层的封装格式

TCP/IP 模型是一个四层网络架构&#xff0c;每一层在数据传输时都会对数据进行封装&#xff0c;添加相应的头部&#xff08;和尾部&#xff09;信息。以下是各层的封装格式及关键字段说明&#xff1a; 1. 应用层&#xff08;Application Layer&#xff09; 封装格式&#xff1a…...

openjdk底层汇编指令调用(一)——汇编指令及指令编码基础

汇编指令 计算机在执行过程时只识别代表0或者1的电信号。因此为了让计算机能够执行则须向计算机输入一系列01构成的指令。 例如在x64平台下&#xff0c;0x53&#xff0c;二进制为01010011&#xff0c;表示将rbx寄存器中的值压栈。 但是&#xff0c;对于程序员而言&#xff0c;…...

5G-A来了!5G信号多个A带来哪些改变?

5G-A来了&#xff01;5G信号多个A带来哪些改变&#xff1f; 随着科技不断进步&#xff0c;通信网络的迭代升级也在加速。自4G、5G的推出以来&#xff0c;我们见证了通信技术的飞跃式发展。最近&#xff0c;越来越多的用户发现自己手机屏幕右上角的5G标识已经变成了“5G-A”。那…...

探索虚拟化:云计算时代的资源优化之道

前言 如果您想知道云提供商如何在全球范围内运行无数应用程序&#xff0c;而每个应用程序都没有机架服务器&#xff0c;那么答案就在于虚拟化。 它是为云提供支持的核心技术之一&#xff0c;在幕后悄悄工作&#xff0c;使现代计算高效、可扩展且具有成本效益。 在本文中&#x…...

用户登录构件示例

目录 一、登录构件概述 二、构件内部结构 1. 构件组成元素(表格形式) 2. 组件连接件设计...

【软件测试】基于项目驱动的功能测试报告

目录 一、项目的介绍 1.1 项目背景 二、测试目标 2.1 用户服务模块 2.1.1 用户注册模块 2.1.1.1 测试点 2.1.1.2 边界值分析法(等价类+边界值) 2.1.1.2.1 有效等价类 2.1.1.2.2 无效等价类 2.1.1.2.3 边界值 2.1.1.2.4 测试用例设计 2.2 文章标签模块 2.3 文章模…...

【QT】UDP通讯本地调试

qt已经写好了udp通讯代码&#xff0c;现在要进行测试。 1、终端输入ipconfig查看本机网卡的ipv4地址 2、 用udpBind函数&#xff0c;绑定到此ip和自定义的端口号。 3、 打开网络调试助手&#xff0c;自动检测到本机的ip地址&#xff0c;输入任意一个和程序里不一样的端口号。 …...

web animation API 锋利的css动画控制器 (更新中)

什么是web animation api 以及为什么要使用web animation api&#xff1f; web animation API 是web页面中控制DOM元素动画效果的javascript原生API。 它能够逐个关键帧控制动画效果&#xff0c;具有Timeline 机制‌能通过javascript来实现动画的暂停&#xff0c;播放&#x…...

Nginx的增强与可视化!OpenResty Manager - 现代化UI+高性能反向代理+安全防护

以下是对OpenResty Manager的简要介绍&#xff1a; OpenResty Manager &#xff08;Nginx 增强版&#xff09;&#xff0c;是一款容易使用、功能强大且美观的反向代理工具 &#xff0c;可以作为OpenResty Edge 的开源替代品基于 OpenResty 开发&#xff0c;支持并继承 OpenRes…...

Spring Boot 中的重试机制

Retryable 注解简介 Retryable 注解是 Spring Retry 模块提供的&#xff0c;用于自动重试可能会失败的方法。在微服务架构和分布式系统中&#xff0c;服务之间的调用可能会因为网络问题、服务繁忙等原因失败。使用 Retryable 可以提高应用的稳定性和容错能力 1。 使用步骤 &…...

[Java实战]Spring Boot 整合 Freemarker (十一)

[Java实战]Spring Boot 整合 Freemarker (十一) 引言 Apache FreeMarker 作为一款高性能的模板引擎&#xff0c;凭借其简洁语法、卓越性能和灵活扩展性&#xff0c;在 Java Web 开发中占据重要地位。结合 Spring Boot 的自动化配置能力&#xff0c;开发者能快速构建动态页面、…...

现有预测式外呼系统如何接入AI系统,使用AI辅助,判断出意向客户再转人工

很多用户还在使用老旧的预测式外呼系统&#xff0c;只能外呼接通后播放一个提示音&#xff0c;播放完提示音后在转给人工坐席&#xff0c; 如果重新部署一套AI外呼系统&#xff0c;涉及到业务系统的迁移&#xff0c;非常不方便。 现在我就做一个如何让现有外呼系统&#xff0c…...

实战项目3(04)

​​​​​​目录 ​​​​​​任务场景一 【r1配置】 【sw1配置】 任务场景二 【r1配置】 【sw1配置】 【sw2配置】 任务场景一 某公司网络为了减少广播包对网络的影响&#xff0c;网络管理员对网络进行了VLAN划分&#xff0c;完成VLAN划分后&#xff0c;为了不影响VL…...

[Java实战]Spring Boot 静态资源配置(十三)

[Java实战]Spring Boot 静态资源配置&#xff08;十三&#xff09; 引言 静态资源&#xff08;如 HTML、CSS、JavaScript、图片等&#xff09;是 Web 应用的基石。Spring Boot 通过自动化配置简化了静态资源管理&#xff0c;但面对复杂场景&#xff08;如多模块项目、CDN 集成…...

ESP-ADF wifi_service子模块wifi_ssid_manager凭证管理函数详解

目录 ESP-ADF wifi_service子模块wifi_ssid_manager凭证管理函数详解WiFi凭证管理函数分析wifi_ssid_manager_savewifi_ssid_manager_erase_all 内部实现机制存储策略分析内部数据流向关键辅助函数分析重要的内部辅助函数详解get_stored_id_by_ssidnvs_get_write_idnvs_set_cou…...

数据分析预备篇---NumPy数组

NumPy是数据分析时常用的库,全称为Numerical Python,是很多数据或科学相关Python包的基础,包括pandas,scipy等等,常常被用于科学及工程领域。NumPy最核心的数据结构是ND array,意思是N维数组。 #以下是一个普通列表的操作示例:arr = [5,17,3,26,31]#打印第一个元素 prin…...

解决VirtualBox中虚拟机(ubuntu)与主机(windows)之间互相复制粘贴(文本)

一.开始的设置 1.在VirtualBox中打开设置&#xff0c;常规中修改主机与虚拟机交互设置 2.虚拟机关闭状态下&#xff0c;存储中选中控制器SATA&#xff0c;勾选‘使用主机输入输出’ 3.选中操作系统对应的虚拟文件&#xff0c;.vdi文件&#xff0c;勾选右边的固态驱动器。 4.启…...

单细胞RNA测序数据分析与可视化:从基础原理到高级应用

引言 单细胞RNA测序&#xff08;scRNA-seq&#xff09;技术的出现彻底改变了我们研究复杂生物系统的方式&#xff0c;使科学家能够在前所未有的精细水平上解析细胞异质性。传统的bulk RNA测序只能捕获细胞群体的平均表达特征&#xff0c;而单细胞转录组测序允许我们检测每个细…...