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

Nginx正反向代理与正则表达式

目录

一:正向代理

1.编译安装nginx

2.配置正向代理

二:反向代理

1.配置nginx七层代理

2.配置nginx四层代理

三:nginx 缓存

1.缓存功能的核心原理和缓存类型

2.代理缓存功能设置

四:nginx rewrite 和正则表达式

1.Nginx正则

2.nginx location

3.Rewrite 语法

Nginx作为一款高性能的开源Web服务器和反向代理工具,凭借其轻量级、高并发处理能力和灵活的模块化设计,已成为现代Web架构的基石。从全球顶尖网站到微服务架构,Nginx在负载均衡、缓存加速、安全防护等场景中扮演着关键角色。

一:正向代理

正向代理(Forward Proxy)是一种位于客户端和原始服务器之间的代理服务器,其主要作用是将客户端的请求转发给目标服务器,并将响应返回给客户端Nginx 的 正向代理 充当客户端的“中间人”,代表用户访问外部资源并隐藏真实 IP。它是企业内网管控、安全审计与加速访问的核心工具。用于场景一般是:

  • 内网访问空制:限制员工访问特定网站
  • 匿名访问:通过代理服务器隐藏用户真实身份
  • 资源缓存加速:缓存公共资源,减少外网带宽消耗

1.编译安装nginx

(1)安装支持软件

Nginx 的配置及运行需要 pcre、zlib 等软件包的支持,因此应预先安装这些软件的开发包(devel),以便提供相应的库和头文件,确保 Nginx 的安装顺利完成。

(2)创建运行用户,组和日志目录

(3)编译安装nginx

参数说明:

  • --user=nginx    指定nginx运行用户
  • --group=nginx    指定nginx运行组
  • --with-http _ssl module    支持https://
  • --with-http v2 module    支持http版本2
  • --with-http realip_module    支持ip透传
  • --with-http stub status module   支持状态页面
  • --with-http_gzip_static module   支持压缩
  • --with-pcre    支持正则
  • --with-stream      支持tcp反向代理
  • --with-stream ssl module     支持tcp的ssl加密
  • --with-stream realip module    支持tcp的透传ip
  • --add-module=./ngx http proxy connect module #支持https转发(默认nginx不支持https转发,需要添加第三方模块)

2.配置正向代理

(2)验证正向代理

用一台新主机,使用curl命令,并指定代理服务器进行测试

二:反向代理

Nginx的七层(应用层)反向代理基于 HTTP/HTTPS 协议,深度解析应用层内容(如 URL、Header、Cookie),将客户端请求精准转发至后端服务器。作为企业级架构的“智能调度器”,它实现了负载均衡、安全隔离与性能优化的核心能力。应用场景一般是:

  • 负载均衡:将流量分发至多台后端服务器,避免单点故障。
  • 动静分离:静态资源(图片、CSS/JS)由Nginx直接响应,动态请求(PHP、API)转发至 Apache/Tomcat。
  • SSL 终端:统一处理 HTTPS 加密/解密,降低后端服务器计算压力。
  • 灰度发布:根据请求特征(如IP、Header)将部分流量导向新版本服务。

Nginx的四层(网络层)反向代理基于 TCP/UDP 协议,直接转发原始数据流不解析应用层内容。它专为高性能、低延迟的传输层场景设计,是数据库、游戏服务器等非 HTTP 服务的理想选择。应用场景一般是:

  • 数据库代理:对外暴露统一端口,内部转发至 MySQL、Redis 集群。
  • 游戏服务器:代理 UDP 协议,实现实时数据包负载均衡
  • SSH 跳板机:通过端口映射安全访问内网服务器
  • 高可用服务:TCP服务(如 MQTT)的主备切换与健康检查。

反向代理,指的是浏览器/客户端并不知道自己要访问具体哪台目标服务器只知道去访问代理服务器 ,代理服务器再通过反向代理 +负载均衡实现请求分发到应用服务器的一种代理服务。

反向代理服务的特点是代理服务器 代理的对象是应用服务器,也就是对于浏览器/客户端 来说应用服务器是隐藏的。

操作系统配置ip服务
OpenEuler2C4G192.168.10.101Nginx
OpenEuler2C4G192.168.10.102Httpd

1.配置nginx七层代理

(1)环境安装

192.168.102上操作:

(2)配置nginx七层代理转发

192.168.10.101上操作:

上述配置中,使用upstream定义后端应用服务器的地址池“backend”,在1ocation块中,使用proxy_pass,转发请求至后端地址池,proxyset headerHost $host:将请求中的Host头部设置为客户端请求的主机名,proxy_set header X-Real-IP $remote addr:将请求中的 X-Real-IP 头部设置为客户端的真实 IP 地址。

验证转发效果

2.配置nginx四层代理

192.168.10.101上操作:

(2)验证四层代理

通过101的2222端口登陆后,实际登陆的是102的服务器

三:nginx 缓存

Nginx的缓存功能是其核心能力之一,主要用于加速内容响应和降低后端服务器负载。它的缓存功能主要基于反向代理(Proxy Cache),但也可用于其他场景(如 FastCGI 缓存)。以下是详细解析:

1.缓存功能的核心原理和缓存类型

缓存类型作用场景
代理缓存反向代理模式下缓存后端服务器(如 Tomcat、Apache)的响应内容。
FastCGI 缓存缓存 PHP/Python 等通过 FastCGI 协议处理的动态内容(需配FastCGI 缓存合 PHP-FPM 使用)。
uWSGI/SCGI 缓存似 FastCGI,用于其他后端协议。
静态资源缓存通过 expires指令设置客户端浏览器缓存(非服务端缓存)

代理缓存:

代理缓存原则:

第一步:客户端第一次向Nginx请求数据A;

第二步:当Nginx发现缓存中没有数据A时,会向服务端请求数据A;

第三步:服务端接收到Nginx发来的请求,则返回数据A到Nginx,并且缓存在Nginx;

第四步:Nginx返回数据A给客户端应用;

第五步:客户端第二次向Nginx请求数据A;

第六步:主当Nginx发现缓存中存在数据A时,则不会请求服务端:

第七步:Nginx把缓存中的数据A返回给客户端应用。

2.代理缓存功能设置

因代理缓存功能需在反向代理模式下缓存后端服务器(如 Tomcat、Apache)的响应内容。需要先配置七层反向代理

(2)设置缓存能

进入/usr/local/nginx/conf/nginx.conf 配置文件

(3)验证缓存功能

四:nginx rewrite 和正则表达式

在云计算与分布式架构的时代,Nginx凭借其高性能、高并发处理能力以及模块化设计,已成为现代Web服务的核心组件之一。它不仅是负载均衡、反向代理的首选工具,更是实现流量调度、安全防护和动态路由的关键枢纽。而在这其中,Rewrite模块作为Nginx的“规则引擎”,扮演着至关重要的角色--它赋子开发者精准控制URL的能力,让请求的流转不再受限于物理路径,而是通过逻辑规则灵活适配业务需求。

Rewrite的应用场景:

路径美化:将/product/123 转换为/index.php?id=123

旧链接迁移:将过期URL永久重定向(301)到新地址

强制HTTPS/域名统一:自动跳转http://到https://,或合并www与非www域

动态路由:适配单页应用(SPA)、RESTfu1API路由

灰度发布:按规则将部分流量导向新版本服务

1.Nginx正则

字符描述
^匹配输入字符串的起始位置
$匹配输入字符串的结束位置
*匹配前面的字符零次或多次。如“ol*"能匹配"o”及“ol”、“ol!”
+匹配前面的字符一次或多次。如“ol+”能匹配"o|"及“o|!”、“ol”,但不能匹配"o”
?匹配前面的字符零次或一次,例如“do(es)?"能匹配“do"或者“does","?"等效于”{0,1}”
.匹配除“n"之外的任何单个字符,若要匹配包括“"n"在内的任意字符,请使用诸如“[.\n]”之类的模式
\将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。如“\n"匹配一个换行符,而“S"则匹配“S”
\d匹配纯数字
{n}重复n次
{n,}重复n次或更多次
{c}匹配单个字符c
{a-z}匹配 a-z 小写字母的任意一个
{a-zA-Z}匹配 a-z 小写字母或 A-Z 大写字母的任意一个

2.nginx location

在学习rewrite前还要了解下location,因为rewrite 通常会与 location结合使用,但并非绝对。

二者的协作能实现更精细的路径控制,location是Nginx中用于匹配请求URI(路径:只能对域名后边的除去传递的参数外的字符串起作用,例如 http://www.kgc.com/index.php?id=1 只匹配/index.php )的核心指令,用于根据请求路径定义不同的处理逻辑(如静态资源服务、反向代理、重定向等)

模式说明
llocation = /      精确匹配:仅匹配完全相同的URI(优先级最高)。
location ~正则匹配:区分大小写的正则表达式匹配。
location ~*正则匹配:不区分大小写的正则表达式匹配。
location ~~精确前缀匹配:匹配前缀路径后,不再检查正则匹配(优先级高于正则)
location /通用匹配:默认方式,优先级最低,其他方式匹配不到时匹配

location 的优先级规则:

精确匹配 >精确前缀匹配 >正则匹配( 和~*同时存在时,文件中物理位置靠上的优先)>普通前缀匹配 >通用匹配。

3.Rewrite 语法

regex:正则匹配URL字符串

只能对域名后边的除去传递的参数外的字符串起regex:作用,例如 http://www.kgc.com/index.php?id=1 只对/index.php 重写)

replacement:重写跳转后的地址

flag类型:

last:重写后的 URI 会重新触发location 匹配,并执行新匹配到的location块中的指令,是默认类型

break:重写后的 URI 不会重新匹配location,直接在当前 location 中处理,且后续的rewrite 指令不再执行

redirect:返回302临时重定向,浏览器地址会显示跳转后的URL地址,爬虫不会更新url(因为是临时)

permanent:返回301永久重定向,浏览器地址栏会显示跳转后的URL地址:爬虫更新url。

在实际工作的应用中,Nginx跳转需求有三种方式可实现。可以直接用rewrite 进行匹配跳转,也可以使用 if 匹配全局变量后跳转。另外,还可以使用location 匹配再跳转。所以rewrite 只能放在 servert}、if{}、location{}配置段中:

server{} 块中的 rewrite

执行顺序:在请求进入server块后、匹配location前执行。

作用域:影响该server块下所有请求(全局生效)。

location{} 块中的rewrite

执行顺序:在请求匹配到该 location 后执行。

作用域:仅对该 location 匹配的请求生效(局部生效)

if{} 块中的 rewrite

执行顺序:在满足 if 条件时触发

作用域:依赖 if 表达式所在的上下文

(2)rewrite flag 验证

配置完成后验证

使用浏览器请求,发现内容是 this is def  说明last 标记后继续向下匹配

将标记改为break测试:

改为后,发现请求为找到页面,说明使用break 后不继续向下匹配

将标记改为permanent 测试

该为permanent后,发现浏览器直接显示跳转后的地址

(3)rewrite 中的捕获组

在 Nginx的 rewrite 指令中,小括号 ()用于定义正则表达式的捕获组(Capture Group),捕获的文本可以通过 $1,$2,$3 等变量在重写后的 URI中引用

捕获组“()”

在正则表达式中,(pattern)并捕获内容,按顺序存会匹配 pattern 并捕获内容 ,按顺序存入 $1 $2  $3 等变量中。

引用方式

在 rewrite 的替换字符中,通过 $1 表示第一个捕获组,然后第二个,以此类推

测试访问

(4)nginx中的set指令

在 Nginx 中,set 指令用于定义变量并赋值,这些变量可以用于后续的条件判断、日志记录、重写规则等场景。它提供了灵活的动态配置能力,尤其在处理复杂的请求逻辑时非常有用。

测试访问

相关文章:

Nginx正反向代理与正则表达式

目录 一:正向代理 1.编译安装nginx 2.配置正向代理 二:反向代理 1.配置nginx七层代理 2.配置nginx四层代理 三:nginx 缓存 1.缓存功能的核心原理和缓存类型 2.代理缓存功能设置 四:nginx rewrite 和正则表达式 1.Nginx…...

字节:LLM自动化证明工程基准

📖标题:APE-Bench I: Towards File-level Automated Proof Engineering of Formal Math Libraries 🌐来源:arXiv, 2504.19110 🌟摘要 🔸大型语言模型(LLM)的最新进展在形式定理证明…...

豆包多轮对话优化策略:上下文理解与记忆,意图识别,对话管理

豆包多轮对话优化策略:上下文理解与记忆,意图识别,对话管理 上下文理解与记忆:我会分析每一轮用户输入的文本内容,理解其中的语义、意图和关键信息,并将这些信息与之前轮次的对话内容相结合,形成对整个对话上下文的理解和记忆。例如,在一个关于旅游规划的对话中,用户先…...

ADK 第四篇 Runner 执行器

智能体执行器 Runner,负责完成一次用户需求的响应,是ADK中真正让Agent运行起来的引擎,其核心功能和Agents SDK中的Runner类似,具体作用如下: 会话管理:自动读取/写入 SessionService,维护历史信…...

yolo 用roboflow标注的数据集本地训练 kaggle训练 comet使用 训练笔记5

本地训练 8gb内存,机械硬盘用了4分钟训练完了 ........... model torch.hub.load(path/to/yolov5, custom, path./runs/train/exp10/weights/best.pt, sourcelocal) 连不上github kaggel训练 传kaggle了 # Train YOLOv5s on COCO128 for 3 epochs !python train…...

chili3d笔记11 连接yolo python http.server 跨域请求 flask

from ultralytics import YOLO from flask import Flask, request, jsonify from flask_cors import CORS import base64 from io import BytesIO from PIL import Image import json# 加载模型 model YOLO(./yolo_detect/best.pt)app Flask(__name__) CORS(app) # 启用跨域…...

安全为上,在系统威胁建模中使用量化分析

*注:Open FAIR™ 知识体系是一种开放和独立的信息风险分析方法。它为理解、分析和度量信息风险提供了分类和方法。Open FAIR作为领先的风险分析方法论,已得到越来越多的大型组织认可。 在数字化风险与日俱增的今天,企业安全决策正面临双重挑战…...

STA中的multi_cycle 和false_path详细讨论

特殊路径:跨时钟域下的exception_path:分为多种情况优先 1、不同clk_domain ,但频率相同 create_clock -name CLKM -period 10 -waveform {0 5} [get_ports CLKM] create_clock -name CLKP -period 10 -waveform {0 5} [get_ports CLKP] set_multicycl…...

Vite 的工作流程

Vite 的工作流程基于其创新的 “预构建 按需加载” 机制,通过利用现代浏览器对原生 ES 模块的支持,显著提升了开发效率和构建速度。以下是其核心工作流程的详细分析: 一、开发环境工作流程 1. 启动开发服务器 冷启动:通过 npm …...

NGINX 的 ngx_http_auth_jwt_module模块

一、模块概述 ngx_http_auth_jwt_module 模块用于通过验证请求中提供的 JWT 来进行客户端授权。此模块支持 JSON Web 签名(JWS)、JSON Web 加密(JWE)以及嵌套 JWT(Nested JWT),使其成为一种灵活…...

【Game】Powerful——Transformation Card(10)

文章目录 1 级卡片2 级卡片3 级卡片4 级卡片5 级卡片6 级卡片7 级卡片8 级卡片8.1、神兽8.2、珍兽 9、其他9.1、5 级变身卡9.2、8 级变身卡 10、PK 汇总物理 11、卡片合成 1 级卡片 千变万化等级要求:1 级 金钱龟,防御30⬆ 大耳兔,速度15⬆…...

【算法学习】递归、搜索与回溯算法(一)

算法学习: https://blog.csdn.net/2301_80220607/category_12922080.html?spm1001.2014.3001.5482 前言: 这个专题与前面的相比是比较有难度的,但是在平时刷题时出现的概率还是非常高的,下面还是按照之前的逻辑来理清一下这几道…...

发行基础:上传版本注意事项

1、steam的规则是上传,提审,随时可更新。 2、基本流程:根据app id以及depot id,上传本地游戏文件到服务器,把分支版本设置为默认,发布。 试玩版与正式版的app id与depot id是相互独立的。 3、理论上开发者…...

智算中心建设方案和前景分析

智算中心建设方案和前景分析 一、智算中心的概念与重要性 1.1 定义与内涵 智算中心,即智能计算中心,是基于最新人工智能理论,采用领先的人工智能计算架构,专门为人工智能应用提供所需的算力服务、数据服务和算法服务的新型基础…...

亚马逊卖家复刻案例:用社群分层策略实现海外用户月均消费3.2次

近年来,随着跨境电商市场的快速发展,全球消费模式经历深刻变革。尤其是在美国、欧洲等成熟市场,中小卖家面对高度市场集中和运营成本上升的双重压力,纷纷寻求以更精细化的用户运营来提高客户复购率,增加单用户价值。20…...

小刚说C语言刷题—1038编程求解数学中的分段函数

1.题目描述 编程求解数学中的分段函数。 …………x1 (当 x>0 )。 yf(x)…0 (当 x0 )。 ………x−1 (当 x<0 )。 上面描述的意思是&#xff1a; 当x>0 时 yx1 ; 当 x0 时 y0 ; 当 x<0 时 yx−1 。 输入 输入一行&#xff0c;只有一个整数x(−30000≤x≤30…...

kotlin 03flow-stateFlow和sharedFlow企业中使用

一 stateFlow和sharedFlow企业中使用 在企业级 Kotlin 项目中&#xff0c;StateFlow 和 SharedFlow 是 状态管理 与 事件分发 的核心工具&#xff0c;尤其在 MVVM 架构中扮演着极为关键的角色。 ✅ 企业中如何使用 StateFlow 和 SharedFlow 场景工具示例UI 状态同步&#xff…...

【机器学习|学习笔记】决策树Decision Tree(DT)的起源、原理、发展、改进和应用(附代码)

【机器学习|学习笔记】决策树Decision Tree&#xff08;DT&#xff09;的起源、原理、发展、改进和应用&#xff08;附代码&#xff09; 【机器学习|学习笔记】决策树Decision Tree&#xff08;DT&#xff09;的起源、原理、发展、改进和应用&#xff08;附代码&#xff09; 文…...

Kotlin-空值和空类型

变量除了能引用一个具体的值之外,还有一种特殊的值,那就是 null, 它代表空值, 也就是不引用任何对象 在Kotlin中, 对空值的处理是非常严格的,正常情况下,我们的变量是不能直接赋值为 null 的,否则无法编译通过, 这直接在编译阶段就避免了空指针问题 Kotlin中所有的类型默认都是…...

Java 企业级开发设计模式全解析

Java 企业级开发设计模式全解析 在 Java 企业级开发的复杂领域中&#xff0c;设计模式如同精湛的工匠工具&#xff0c;能够帮助开发者构建高效、可维护、灵活且健壮的软件系统。它们是无数开发者在长期实践中总结出的解决常见问题的最佳方案&#xff0c;掌握这些模式对于提升开…...

高并发内存池

文章目录 前言一、项目介绍二、内存池介绍1.池化技术2.内存池3.malloc视角下内存的管理 三、定长内存池3.1 设计思路3.2 数据结构 四、高并发内存池整体框架设计4.1 thread cachethreadcache哈希桶映射对齐规则threadcache TLS无锁访问 4.2 central cachecentral cache结构设计…...

常用对称加密算法的Python实现及详解

文章目录 **常用对称加密算法的Python实现及详解****1. 对称加密概述****1.1 对称加密的基本原理****1.2 对称加密的分类****1.3 对称加密的应用** **2. DES&#xff08;Data Encryption Standard&#xff09;****2.1 算法原理****2.2 Python实现****2.3 安全性分析** **3. 3DE…...

ByteArrayInputStream 类详解

ByteArrayInputStream 类详解 ByteArrayInputStream 是 Java 中用于从字节数组读取数据的输入流&#xff0c;位于 java.io 包。它允许将内存中的字节数组当作输入流来读取&#xff0c;是处理内存数据的常用工具。 1. 核心特性 内存数据源&#xff1a;从字节数组&#xff08;b…...

MySQL C API高效编程:C语言实现数据库操作的深入解析

知识点【MySQL C API】 1、头文件及MYSQL * 句柄 //头文件 #include <mysql/mysql.h>1、MYSQL MYSQL是一个结构体&#xff0c;封装了与数据库连接相关的所有状态&#xff0c;配置和数据。 2、MYSQL *的本质 类似于 FILE*&#xff0c;代表一个与数据库连接的通道&…...

字符串,数组,指针之间的关系

在C语言中&#xff0c;字符串、指针和数组之间有着紧密且复杂的关系&#xff0c;它们在内存存储、操作方式等方面相互关联&#xff0c;以下为你详细介绍&#xff1a; 字符串 定义&#xff1a;字符串是由字符组成的序列&#xff0c;以空字符&#xff08;\0&#xff09;作为结束…...

2025流感疫苗指南+卫健委诊疗方案|高危人群防护+并发症处理 慢性肾脏病饮食指南2025卫健委版|低盐低磷食谱+中医调理+PDF 网盘下载 pdf下载

2025 年卫健委发布的《成人肥胖食养指南&#xff08;2024 年版&#xff09;》为减肥提供了科学的饮食指导。 &#x1f4e2;提示&#xff1a;文章排版原因&#xff0c;资源链接地址放在文章结尾&#x1f447;&#x1f447;&#xff0c;往下翻就行 &#x1f4e2;提示&#xff1…...

学习路线(机器人软件架构)

机器人软件系统架构从入门到专家学习路线 一、基础阶段&#xff08;6-12个月&#xff09;基础知识储备机器人基础概念&#xff1a;编程技能必备语言&#xff1a;工具链&#xff1a; 入门框架推荐资源&#xff1a; 中级阶段&#xff08;1-2年&#xff09;系统架构基础ROS进阶架构…...

Stellaris 群星 [DLC 解锁] CT 表 [Steam] [Windows SteamOS macOS]

Stellaris 群星 [DLC 解锁] & CT 表 [Steam] [Windows & SteamOS & macOS] DLC 版本 至最新全部 DLC 后续可能无法及时更新文章&#xff0c;具体最新版本见下载文件说明&#xff1b; DLC 解锁列表&#xff08;仅供参考&#xff09; 《群星》 - Symbols of Domina…...

题目 3321: 蓝桥杯2025年第十六届省赛真题-画展布置

题目 3321: 蓝桥杯2025年第十六届省赛真题-画展布置 时间限制: 2s 内存限制: 192MB 提交: 673 解决: 130 题目描述 画展策展人小蓝和助理小桥为即将举办的画展准备了 N 幅画作&#xff0c;其艺术价 值分别为 A1, A2, . . . , AN。他们需要从这 N 幅画中挑选 M 幅&#xff0c;并…...

Excel 查询之 iNDEX与MATCH组合

在Excel日常工作中&#xff0c;数据查询是最常见的操作之一。虽然VLOOKUP函数广为人知&#xff0c;但它有一个明显的局限性——要求查询值必须位于返回值的左侧。今天我要介绍一个更灵活、更强大的组合&#xff1a;INDEX和MATCH函数。 为什么选择INDEXMATCH&#xff1f; VLOO…...

【Leetcode 每日一题 - 补卡】1128. 等价多米诺骨牌对的数量

问题背景 给你一组多米诺骨牌 d o m i n o e s dominoes dominoes。 形式上&#xff0c; d o m i n o e s [ i ] [ a , b ] dominoes[i] [a, b] dominoes[i][a,b] 与 d o m i n o e s [ j ] [ c , d ] dominoes[j] [c, d] dominoes[j][c,d] 等价 当且仅当 ( a c a c …...

【Elasticsearch入门到落地】12、索引库删除判断以及文档增删改查

接上篇《11、RestClient初始化索引库》 上一篇我们完成了使用RestHighLevelClient创建索引库的代码实现&#xff0c;本篇将讲解如何判断索引库是否存在并删除它&#xff0c;以及如何对索引库中的文档进行增删改查操作。 一、索引库判断与删除 在操作索引库时&#xff0c;有时…...

36、C#中的⽅法声明参数关键字params,ref,out的意义及⽤法

在C#中&#xff0c;params、ref 和 out 是方法声明中用于修饰参数的关键字&#xff0c;它们各自有不同的用途和语义。以下是它们的详细说明和用法&#xff1a; 1、 params 关键字 意义 params 允许方法接受可变数量的参数&#xff0c;这些参数会被编译为一个数组。适用于参数…...

DEX平台引领风尚 XBIT让数字资产回归简单与透明

近日&#xff0c;全球加密货币市场持续升温&#xff0c;Dex 交易平台成为众多投资者关注焦点&#xff0c;其中XBIT去中心化交易所平台凭借独特优势脱颖而出。 图片来源&#xff1a;币界网 在当今加密货币领域&#xff0c;交易平台的安全性与便捷性至关重要。XBIT去中心化交易所…...

基于Python+MongoDB猫眼电影 Top100 数据爬取与存储

前言&#xff1a;从猫眼电影排行榜页面&#xff08;TOP100榜 - 猫眼电影 - 一网打尽好电影 &#xff09;爬取 Top100 电影的电影名称、图片地址、主演、上映时间和评分等关键信息&#xff0c;并将这些信息存储到本地 MongoDB 数据库中&#xff0c;&#x1f517; 相关链接Xpath&…...

Linux文件复制命令精要指南:cp与scp详解

大家好&#xff0c;欢迎来到程序视点&#xff01;我是你们的老朋友.小二&#xff01; Linux文件复制命令精要指南&#xff1a;cp与scp详解 一、cp命令&#xff08;本地文件复制&#xff09; 核心功能 复制文件/目录到目标路径&#xff0c;支持重命名及批量操作。 关键参数 …...

Qt实现网页内嵌

文章目录 一、环境准备 二、代码实现 三、测试 一、环境准备 首先&#xff0c;确保你的Qt安装包含了QtWebEngine模块。我的Qt是5.12.9并且使用MSVC来编译项目。在项目文件中需要添加以下配置&#xff0c;其中在Qt中配置MSVC&#xff0c;建议去看看这位大佬的博客&#xff1a…...

Kotlin中 StateFlow 或 SharedFlow 或 LiveData的区别

在Android开发中&#xff0c;处理数据流是常见的需求&#xff0c;特别是在UI更新和数据共享方面。Kotlin提供了几种不同的工具来帮助开发者实现这一需求&#xff0c;包括StateFlow、SharedFlow和LiveData。每种工具都有其特点和使用场景&#xff0c;下面我们将逐一比较它们的区…...

jupyter notebook运行简单程序

一. 使用 cmd 创建虚拟环境 1.创建虚拟环境 &#xff08;1&#xff09;创建新的虚拟环境&#xff08;本项目名设置为zhineng&#xff09;&#xff0c;并设置python版本 conda create -n zhineng python3.6 &#xff08;2&#xff09;查看python版本 python --version &am…...

查看Ubuntu版本

1. 使用 lsb_release 命令&#xff08;推荐&#xff09; lsb_release -a输出示例&#xff1a; ubuntuVM-0-6-ubuntu:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04 LTS Release: 22.04 Codename: jamm…...

《算法导论(第4版)》阅读笔记:p7-p8

《算法导论(第4版)》学习第 5 天&#xff0c;p7-p8 总结&#xff0c;总计 2 页。 一、技术总结 1.算法解决什么问题&#xff1f; DNA测序问题(Dynamic Programming, 动态规划)&#xff0c;寻找路径问题&#xff0c;加密问题&#xff0c;利益最大化问题(linear programming, …...

AI笔记-1

Halide Perovskites (HPs) 卤化物钙钛矿 卤化物钙钛矿&#xff08;HPs&#xff09;已被 公认为 光伏和发光器件 中最有前途的材料之一 在本观点中&#xff0c;我们将探讨钙钛矿的定义&#xff0c;主要聚焦于由 较重卤素&#xff08;Cl、Br和I&#xff09;组成的钙钛矿亚群&…...

【C++重载操作符与转换】成员访问操作符

目录 一、点操作符&#xff08;.&#xff09; 1.1 基本概念 1.2 点操作符不能被重载 二、箭头操作符&#xff08;->&#xff09; 2.1 基本概念 2.2 箭头操作符的重载 2.3 箭头操作符重载的特殊规则 三、成员指针操作符&#xff08;.*&#xff09;和指向成员指针的箭…...

java单元测试代码

import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; import java.util.List;public class UserServiceTest {Testpublic void testSearchUserByTags() {// 模拟标签列表List<String> tagNameList List.of("tag1", "…...

Vue中的过滤器参数:灵活处理文本格式化

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…...

【神经网络与深度学习】深度学习中的生成模型简介

深度学习中的生成模型 openai 的一个古早介绍 引言 深度学习中的生成模型能够学习数据分布并生成新数据&#xff0c;在人工智能的多个领域中都有重要应用。不同类型的生成模型在原理和结构上各有特点&#xff0c;适用于不同的任务&#xff0c;如图像生成、文本生成和时间序列…...

Docker(三):DockerFile

一、DockerFile介绍 1、DockerFile 介绍 DockerFile 是一种能够被Docker 程序解释的文件&#xff08;一般为了方便理解称之为“剧本”&#xff09;。 DockerFile 由一条一条的指令组成&#xff0c;并且有自己的书写格式和支持的命令。当我们需要在容器 镜像中指定自己额外的需…...

使用OpenCV 和 Dlib 实现疲劳检测

文章目录 引言1.相关技术介绍2. 系统原理2.1 眼睛纵横比(EAR)算法2.2 系统工作流程 3.代码解析3.1 关键函数说明3.2 主循环逻辑 4.实际应用效果5.参数调优建议6.总结 引言 疲劳驾驶是交通事故的主要原因之一。本文将介绍如何使用Python和计算机视觉技术构建一个实时疲劳驾驶检…...

Python格式化字符串的四种方法

Python格式化字符串的四种方法 1.使用 % 运算符 %s 是一个字符串的占位符&#xff0c;而 “World” 是替换它的值 print("Hello, %s!" % "World") # 输出&#xff1a;Hello, World!你可以使用多个占位符 注意&#xff1a;多个变量占位&#xff0c;变量要…...

蓝桥杯 18. 积木

积木 原题目链接 题目描述 小明用积木搭了一个城堡。为了方便&#xff0c;小明使用的是大小相同的正方体积木&#xff0c;并将其搭建在一个 n 行 m 列的方格图上。每个积木占据方格图中的一个小格子。 小明的城堡是立体的&#xff0c;可以将积木垒在其他积木上。当某个格子…...