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

Nginx应用配置实战

Nginx通用部署

Nginx常见参数介绍

Nginx 配置文件中的指令和参数决定了它的行为。下面详细介绍一些常见的 Nginx 参数,以帮助你更好地理解和配置 Nginx。

1. worker_processes

worker_processes auto;
  • 作用:设置 Nginx 处理请求的工作进程数量。auto 会根据 CPU 的核心数自动调整,或者你可以手动设置为特定的值。
  • 建议:通常将其设置为服务器 CPU 核心数,以最大化性能。如果服务器是多核的,使用 auto 是推荐做法。

2. worker_connections

worker_connections 1024;
  • 作用:每个 Nginx 工作进程能够处理的最大连接数。Nginx 的最大并发连接数是 worker_processes * worker_connections
  • 建议:如果你有大量的并发请求,适当增加该值。根据硬件和流量需求进行调整。

3. events

events {worker_connections 1024;
}
  • 作用:设置与网络事件处理相关的配置,比如连接的并发数和选择的事件模型。
  • 参数
    • use: 指定 Nginx 使用的事件处理模型,常见的是 epoll(Linux)或 kqueue(FreeBSD、MacOS)。
    • worker_connections: 如上所述,定义每个工作进程的最大连接数。

4. http

http {include /etc/nginx/mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;...
}
  • 作用:HTTP 块是 Nginx 配置文件中最重要的块,包含了所有与 HTTP 相关的配置。
  • 常见配置
    • include /etc/nginx/mime.types: 引入 MIME 类型配置文件,帮助 Nginx 正确地返回文件的 MIME 类型。
    • default_type: 设置默认的 MIME 类型,如果无法自动识别某种文件的 MIME 类型,默认会用该类型,通常为 application/octet-stream
    • sendfile on: 启用 sendfile 选项,加速文件传输,建议保持开启。
    • keepalive_timeout 65: 设置保持连接超时时间,单位为秒,表示客户端和服务器之间空闲连接的最大持续时间。

5. server

server {listen 80;server_name example.com;...
}
  • 作用server 块用于定义一个虚拟主机,配置不同域名或 IP 地址对应的服务器行为。
  • 常见配置
    • listen 80: 监听指定的端口,80 为 HTTP 的默认端口,443 为 HTTPS 默认端口。
    • server_name: 定义该服务器块的域名(如 example.com),可以使用通配符,如 *.example.com,也可以使用 IP 地址。

6. location

location / {proxy_pass http://localhost:8080;...
}
  • 作用location 指令用于匹配 URL 路径,并为该路径定义不同的处理方式。它通常用于反向代理、静态文件服务等。
  • 常见配置
    • proxy_pass: 将请求代理到后端服务器。可以是本地应用或远程服务器。
    • root: 定义处理该路径时所使用的根目录。比如用于静态资源的存放路径。
    • index: 指定默认的主页文件,当访问某目录时,会默认查找的文件(如 index.html)。

7. proxy_pass

location / {proxy_pass http://localhost:8080;
}
  • 作用proxy_pass 是 Nginx 中用于反向代理的核心指令,它将匹配到的请求转发给指定的后端服务器。
  • 说明proxy_pass 可以代理 HTTP、HTTPS 甚至 FastCGI、uwsgi 等多种协议。

8. upstream

upstream backend {server backend1.example.com weight=5;server backend2.example.com;server 127.0.0.1:8080;
}
  • 作用upstream 定义后端服务器集群,用于负载均衡。在 proxy_pass 中可以将请求转发到 upstream 定义的服务器组。
  • 常见配置
    • server: 定义一个后端服务器,可以使用 IP 地址或域名。
    • weight: 为某个后端服务器分配更大的权重,默认值是 1。
    • max_failsfail_timeout: 控制某台后端服务器在多少次失败后被认为不可用,以及多久后再重新尝试。

9. gzip

gzip on;
gzip_types text/plain application/json;
  • 作用:启用或关闭响应的压缩功能,以减少传输的数据大小,提升性能。
  • 常见配置
    • gzip: 启用或禁用压缩功能,设置为 onoff
    • gzip_types: 定义哪些 MIME 类型的文件会被压缩,常见的有 text/htmlapplication/json 等。

10. log_formataccess_log

log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access.log main;
  • 作用log_format 用于定义访问日志的记录格式,而 access_log 用于指定日志的存储位置和使用的日志格式。
  • 常见配置
    • $remote_addr: 记录客户端 IP 地址。
    • $status: 记录请求的 HTTP 状态码。
    • $body_bytes_sent: 记录响应内容的大小(字节数)。

11. error_log

error_log /var/log/nginx/error.log warn;
  • 作用:配置错误日志文件的位置和记录级别。
  • 日志级别
    • debug: 记录所有级别的日志,包括调试信息。
    • info: 记录一般的运行信息。
    • notice: 记录需要注意的事件。
    • warn: 记录警告信息。
    • error: 记录错误信息。
    • crit: 记录严重错误。

12. client_max_body_size

client_max_body_size 50m;
  • 作用:限制客户端请求主体的最大大小。如果请求体超过这个限制,Nginx 会返回 413(Request Entity Too Large)错误。
  • 建议:在上传大文件时,可以适当增加这个值。

13. keepalive_timeout

keepalive_timeout 65;
  • 作用:设置客户端和服务器之间保持活动的连接的超时时间。超时后连接会被关闭。
  • 建议:根据需求调整,默认 65 秒适合大多数场景。

14. listen

listen 80;
listen [::]:80;
  • 作用:配置服务器监听的端口,通常是 HTTP 的 80 端口或 HTTPS 的 443 端口。
  • 参数
    • [::]:80: 表示监听所有 IPv6 地址。
    • ssl: 用于启用 SSL/TLS 加密。

15. ssl_certificatessl_certificate_key

ssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;
  • 作用:在配置 HTTPS 时,ssl_certificate 指定 SSL 证书的位置,ssl_certificate_key 指定私钥的位置。

16. return

return 301 https://$server_name$request_uri;
  • 作用:用于执行重定向或返回特定的 HTTP 状态码。
  • 参数
    • 301: 返回 301 永久重定向。
    • 302: 返回 302 临时重定向。

以上是 Nginx 配置文件中一些重要参数的详细介绍。根据你的应用场景,这些参数可以灵活组合使用,帮助你优化 Nginx 的性能和功能。

Nginx部署Java服务

Nginx 是一个轻量级、高性能的 Web 服务器,常用于反向代理、负载均衡和静态资源服务。下面详细讲解如何配置 Nginx 以部署 Java 服务。

1. 安装 Nginx

在大多数 Linux 发行版上,使用包管理器安装 Nginx:

# Ubuntu/Debian
sudo apt update
sudo apt install nginx# CentOS/RHEL
sudo yum install nginx

启动和检查 Nginx 是否正常运行:

sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx

2. Nginx 基础配置文件

Nginx 的主配置文件通常位于 /etc/nginx/nginx.conf。典型的目录结构如下:

  • /etc/nginx/nginx.conf: 主配置文件
  • /etc/nginx/conf.d/: 存放其他虚拟主机配置
  • /var/www/: 默认的网站根目录

Nginx 的基本配置结构如下:

worker_processes auto;
events {worker_connections 1024;
}http {include /etc/nginx/mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;include /etc/nginx/conf.d/*.conf;
}

3. 配置反向代理(用于 Java 服务)

假设你有一个基于 Spring Boot 的 Java 应用程序运行在 http://localhost:8080。你可以通过 Nginx 将外部请求转发给该 Java 服务。

/etc/nginx/conf.d/ 下创建一个配置文件,如 java_app.conf

server {listen 80;server_name example.com; # 将其替换为你的域名或服务器IPlocation / {proxy_pass http://localhost:8080; # 代理到 Java 服务的地址proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}

说明

  • listen 80: 监听 HTTP 80 端口。
  • server_name: 配置你的域名或 IP 地址。
  • proxy_pass: 将请求代理到运行 Java 应用程序的本地地址(例如,localhost:8080)。
  • proxy_set_header: 传递客户端请求的一些信息到后端 Java 应用,比如 IP 地址和协议。

4. 配置 SSL(HTTPS)

为了保证安全,建议使用 HTTPS。可以通过 Let’s Encrypt 获取免费 SSL 证书。

安装 certbot 工具:

# Ubuntu
sudo apt install certbot python3-certbot-nginx

然后运行以下命令为你的域名获取证书:

sudo certbot --nginx -d example.com

Nginx 会自动配置 HTTPS。生成的配置大致如下:

server {listen 443 ssl;server_name example.com;ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;location / {proxy_pass http://localhost:8080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}server {listen 80;server_name example.com;return 301 https://$host$request_uri;
}

说明

  • 443 端口用于 SSL。
  • 配置 SSL 证书路径,/etc/letsencrypt/live/ 存放的是通过 Let’s Encrypt 获取的证书。
  • 第二个 server 块会将所有 HTTP 请求重定向到 HTTPS。

5. Nginx 配置负载均衡

如果你的 Java 服务部署在多台服务器上,可以使用 Nginx 做负载均衡。配置示例:

upstream java_backend {server 192.168.1.10:8080;server 192.168.1.11:8080;server 192.168.1.12:8080;
}server {listen 80;server_name example.com;location / {proxy_pass http://java_backend;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}

说明

  • upstream 块定义了一个名为 java_backend 的后端服务器组,可以配置多个 IP 地址进行负载均衡。
  • proxy_pass 将请求转发给该服务器组。

6. 常见 Nginx 命令

# 检查配置是否正确
sudo nginx -t# 重新加载 Nginx 配置
sudo systemctl reload nginx# 查看 Nginx 状态
sudo systemctl status nginx

7. 日志管理

Nginx 的访问日志和错误日志通常位于 /var/log/nginx/access.log/var/log/nginx/error.log

可以在 server 块中自定义日志路径:

server {listen 80;server_name example.com;access_log /var/log/nginx/java_app_access.log;error_log /var/log/nginx/java_app_error.log;location / {proxy_pass http://localhost:8080;}
}

Nginx配置举例

Nginx配置websocket

在基于 STOMP 协议的 WebSocket 应用中,如果你通过 Nginx 作为反向代理来处理 HTTPS(SSL/TLS)连接,并且需要支持 WebSocket,则需要确保 Nginx 正确处理 WebSocket 升级请求,同时配置 SSL 证书来启用 HTTPS

以下是如何在 Nginx 中配置 HTTPS,并支持基于 STOMP 协议的 WebSocket。

步骤一:准备 SSL 证书

要启用 HTTPS,首先你需要 SSL 证书。如果你没有 SSL 证书,可以使用以下方式获取:

  1. 自签名证书(测试使用):可以使用 openssl 工具生成自签名证书。
  2. Let’s Encrypt:可以通过 Let’s Encrypt 免费获取 SSL 证书(适合生产环境)。
生成自签名证书(测试使用):
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/server.key -out /etc/nginx/ssl/server.crt
  • 生成一个有效期为 365 天的自签名 SSL 证书和密钥文件,并将其存储在 /etc/nginx/ssl/ 路径下。

步骤二:配置 Nginx 支持 HTTPS 和 WebSocket

配置 Nginx 来支持 HTTPS 和 WebSocket 升级请求。在 Nginx 的 server 配置块中,需要同时启用 SSL 并配置 WebSocket 的 UpgradeConnection 头部。

完整的 Nginx 配置示例:
server {listen 443 ssl;server_name your-domain.com;  # 替换为你的域名或服务器 IP 地址# 配置 SSL 证书ssl_certificate /etc/nginx/ssl/server.crt;  # 替换为你的 SSL 证书路径ssl_certificate_key /etc/nginx/ssl/server.key;  # 替换为你的 SSL 私钥路径# SSL 配置ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;# WebSocket 相关配置location /ws {proxy_pass http://localhost:31004;  # 代理到后端 WebSocket 服务proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade";proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_read_timeout 3600;proxy_send_timeout 3600;proxy_set_header X-NginX-Proxy true;}# 通常的 HTTP/HTTPS 请求location / {proxy_pass http://localhost:8080;  # 代理到你的应用服务,例如Spring Boot应用proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}# 重定向 HTTP 到 HTTPS
server {listen 80;server_name your-domain.com;location / {return 301 https://$host$request_uri;  # 强制将 HTTP 重定向到 HTTPS}
}

关键配置解释:

  1. SSL 证书配置

    • ssl_certificatessl_certificate_key:指定 SSL 证书和私钥的路径,用于 HTTPS 加密。
    • ssl_protocolsssl_ciphers:定义支持的 SSL/TLS 协议和加密套件。
  2. WebSocket 升级

    • proxy_set_header Upgrade $http_upgrade;:告诉 Nginx 将普通的 HTTP 请求升级为 WebSocket 连接。
    • proxy_set_header Connection "Upgrade";:确保 Connection 头部被正确设置为 Upgrade
    • proxy_read_timeoutproxy_send_timeout:配置 WebSocket 连接的超时,防止连接因空闲时间过长而被关闭。
  3. 代理到 WebSocket 服务

    • proxy_pass http://localhost:31004;:将 WebSocket 请求代理到后端实际运行的 WebSocket 服务器(例如运行 STOMP WebSocket 的 Spring Boot 服务)。
  4. HTTP 重定向到 HTTPS

    • 配置第二个 server 块,监听端口 80,将所有 HTTP 请求重定向到 HTTPS。

步骤三:配置 Spring Boot WebSocket 支持

后端 Spring Boot 项目需要正确配置 WebSocket 支持,确保 WebSocket 端点和 STOMP 协议配置一致。

Spring Boot WebSocket 配置示例:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {@Overridepublic void registerStompEndpoints(StompEndpointRegistry registry) {// 这里的 /ws 是 WebSocket 连接端点,前端需要通过这个路径连接registry.addEndpoint("/ws").setAllowedOrigins("*")  // 允许跨域,或者指定域名.withSockJS();  // 如果需要兼容旧版浏览器,可以启用 SockJS}@Overridepublic void configureMessageBroker(MessageBrokerRegistry config) {// 配置消息代理config.enableSimpleBroker("/topic", "/queue");config.setApplicationDestinationPrefixes("/app");}
}

步骤四:前端 WebSocket 连接

在前端代码中,确保 WebSocket 连接使用 wss:// 协议,因为你正在通过 HTTPS 加密连接。

前端示例代码:
// 使用 wss:// 进行 WebSocket 连接
const wsUrl = 'wss://your-domain.com/ws';
const socket = new WebSocket(wsUrl);// 使用 STOMP 协议
const stompClient = Stomp.over(socket);stompClient.connect({}, function (frame) {console.log('Connected: ' + frame);// 订阅消息stompClient.subscribe('/topic/messages', function (message) {console.log('Received: ' + message.body);});// 发送消息stompClient.send('/app/hello', {}, JSON.stringify({ name: 'Hello World' }));
}, function (error) {console.error('Connection error: ', error);
});

常见问题及排查:

  1. SSL 证书问题

    • 如果浏览器提示 SSL 证书无效,可能是因为使用了自签名证书。为了在生产环境中避免这种情况,建议使用 Let’s Encrypt 或其他可信的 CA 机构签发的证书。
  2. WebSocket 升级失败

    • 如果 Nginx 没有正确处理 WebSocket 升级,可能会导致连接失败。检查 Nginx 日志以及浏览器开发者工具中的网络请求,确保请求的 UpgradeConnection 头部被正确处理。
  3. 跨域问题

    • 如果前端和后端的域名或端口不一致,可能会导致跨域问题。确保 Nginx 和后端应用正确配置了 CORS
  4. 客户端使用 HTTPS

    • 如果前端页面是通过 HTTPS 访问的,WebSocket 连接必须使用 wss:// 协议,否则浏览器会阻止不安全的连接。

总结

通过上述步骤,你可以在 Nginx 中配置 HTTPS,并支持基于 STOMP 协议的 WebSocket。关键在于:

  • 正确处理 WebSocket 的升级请求,确保 Nginx 代理能够支持 WebSocket 连接。
  • 配置 SSL 证书,以启用 HTTPS 和 WSS 加密连接。
  • Spring Boot 的 WebSocket 端点配置,确保前端能够连接到正确的 WebSocket 服务。

后续配置举例持续更新中~

相关文章:

Nginx应用配置实战

Nginx通用部署 Nginx常见参数介绍 Nginx 配置文件中的指令和参数决定了它的行为。下面详细介绍一些常见的 Nginx 参数,以帮助你更好地理解和配置 Nginx。 1. worker_processes worker_processes auto;作用:设置 Nginx 处理请求的工作进程数量。auto …...

html实现倒计时

参考网址 <!DOCTYPE html> <html> <head><title>倒计时示例</title> </head> <body><h1 id"titleCountDown"></h1><div id"countdown"></div><script>// 目标日期var targetDat…...

HTMLCSS练习

1) 效果如下 2) 代码如下 2.1) HTML <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" conte…...

LeetCode讲解篇之377. 组合总和 Ⅳ

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 总和为target的元素组合个数 可以由 总和为target - nums[j]的元素组合个数 转换而来&#xff0c;其中j为nums所有元素的下标 而总和target - nums[j]的元素组合个数 可以由 总和为target - nums[j] - nums[k]的…...

Midjourney中文版:创意无限,艺术之旅由此启程

Midjourney中文版——一个将你的文字想象转化为视觉艺术的神奇平台。无需繁琐的绘画技巧&#xff0c;只需简单的文字描述&#xff0c;你就能开启一场前所未有的艺术之旅。 Midjourney AI超强绘画 (原生态系统&#xff09;用户端&#xff1a;Ai Loadinghttps://www.mjdiscord.c…...

安装R和RStudio:开始你的数据分析之旅

数据分析是当今世界中一个非常热门的领域&#xff0c;而R语言是进行数据分析的强大工具之一。R是一种编程语言和软件环境&#xff0c;用于统计计算和图形表示。RStudio是一个集成开发环境&#xff08;IDE&#xff09;&#xff0c;它为R语言提供了一个更加友好和高效的工作环境。…...

如何使用python连接数据库?

数据分析离不开数据库&#xff0c;如何使用python连接数据库呢&#xff1f;听我娓娓道来哈 该笔记参考了PyMySQL官方文档和《python数据采集》关于数据存储的部分&#xff0c;欢迎大家去阅读原著&#xff0c;相信会理解的更加透彻。 补充&#xff1a;文末增加Oracle数据库的连…...

停车位识别数据集 图片数量12416张YOLO,xml和txt标签都有; 2类类别:space-empty,space-occupied;

YOLO停车位识别 图片数量12416张&#xff0c;xml和txt标签都有&#xff1b; 2类类别&#xff1a;space-empty&#xff0c;space-occupied&#xff1b; 用于yolo&#xff0c;Python&#xff0c;目标检测&#xff0c;机器学习&#xff0c;人工智能&#xff0c;深度学习&#xff0…...

MySQL 创建子账号

1. 使用 root 账号登录 MySQL 使用 root 账号登录 MySQL&#xff0c;登录成功如图所示&#xff1a; 新建一个 MySQL 子账号&#xff0c;新建子账号命令如下&#xff1a; 命令 : CREATE USER testlocalhost IDENTIFIED BY 123456;若出现如下图所示&#xff0c;则表示新建 MySQL…...

代码随想录 106. 岛屿的周长

106. 岛屿的周长 #include<bits/stdc.h> using namespace std;int main(){int n, m;cin >> n >> m;vector<vector<int>> mp(n, vector<int>(m, 0));for (int i 0; i < n; i){for (int j 0; j < m; j){cin >> mp[i][j];}}in…...

阿里云融合认证中的App端一键登录能力

在如今的移动互联网环境中&#xff0c;App端的一键登录功能逐渐成为提升用户体验的关键。用户不再需要繁琐的注册流程或输入短信验证码&#xff0c;一键即可通过手机号码完成登录。而阿里云融合认证中&#xff0c;一键登录能力为移动应用提供了一个简单、便捷且安全的用户身份验…...

基于YOLO11/v10/v8/v5深度学习的安检X光危险品检测与识别系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…...

vue-插槽作用域实用场景

vue-插槽作用域实用场景 1.插槽1.1 自定义列表渲染1.2 数据表格组件1.3 树形组件1.4 表单验证组件1.5 无限滚动组件 1.插槽 插槽感觉知道有这个东西&#xff0c;但是挺少用过的&#xff0c;每次看到基本都会再去看一遍用法和概念。但是在项目里&#xff0c;自己还是没有用到过…...

Prometheus+Grafana 监控 K8S Ingress-Ningx Controller

文章目录 一、prometheus中添加ingress-nginx的服务发现配置二、ingress-nginx controller的service添加端口暴露监控指标三、grafana添加ingress-nginx controller的监控模版 ingress-nginx默认是没有开启监控指标的&#xff0c;需要我们在ingress-nginx controller的svc里面开…...

如何在Visual Studio 2019中创建.Net Core WPF工程

如何在Visual Studio 2019中创建.Net Core WPF工程 打开Visual Studio 2019&#xff0c;选择Create a new project 选择WPF App(.Net Core) 输入项目名称和位置&#xff0c;单击Create 这样我们就创建好了一个WPF工程 工程文件说明 Dependencies 当前项目所使用的依赖库&…...

自然语言处理(NLP)论文数量的十年趋势:2014-2024

引言 近年来&#xff0c;自然语言处理&#xff08;NLP&#xff09;已成为人工智能&#xff08;AI&#xff09;和数据科学领域中的关键技术之一。随着数据规模的不断扩大和计算能力的提升&#xff0c;NLP技术从学术研究走向了广泛的实际应用。通过观察过去十年&#xff08;2014…...

.net core API中使用LiteDB

LiteDB介绍 LiteDB 是一个小巧、快速和轻量级的 .NET NoSQL 嵌入式数据库。 无服务器的 NoSQL 文档存储简单的 API&#xff0c;类似于 MongoDB100% 的 C# 代码支持 .NET 4.5 / NETStandard 1.3/2.0&#xff0c;以单个 DLL&#xff08;不到 450KB&#xff09;形式提供线程安全…...

YOLO_V8分割

YOLO_V8分割 YOLO安装 pip install ultralytics YOLO的数据集转化看csdn 数据标注EIseg EIseg这块&#xff0c;正常安装就好&#xff0c;但是numpy和各类包都容易有冲突&#xff0c;python版本装第一点 数据标注过程中&#xff0c;记得把JSON和COCO都点上&#xff0c;把自…...

根据请求错误的状态码判断代理配置问题

SafeLine&#xff0c;中文名 “雷池”&#xff0c;是一款简单好用, 效果突出的 Web 应用防火墙(WAF)&#xff0c;可以保护 Web 服务不受黑客攻击。 雷池通过过滤和监控 Web 应用与互联网之间的 HTTP 流量来保护 Web 服务。可以保护 Web 服务免受 SQL 注入、XSS、 代码注入、命…...

Python 网络爬虫高阶用法

网络爬虫成为了自动化数据抓取的核心工具。Python 拥有强大的第三方库支持&#xff0c;在网络爬虫领域的应用尤为广泛。本文将深入探讨 Python 网络爬虫的高阶用法&#xff0c;包括处理反爬虫机制、动态网页抓取、分布式爬虫以及并发和异步爬虫等技术。以下内容结合最新技术发展…...

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> …...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...