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_fails
和fail_timeout
: 控制某台后端服务器在多少次失败后被认为不可用,以及多久后再重新尝试。
9. gzip
gzip on;
gzip_types text/plain application/json;
- 作用:启用或关闭响应的压缩功能,以减少传输的数据大小,提升性能。
- 常见配置:
gzip
: 启用或禁用压缩功能,设置为on
或off
。gzip_types
: 定义哪些 MIME 类型的文件会被压缩,常见的有text/html
、application/json
等。
10. log_format
和 access_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_certificate
和 ssl_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 证书,可以使用以下方式获取:
- 自签名证书(测试使用):可以使用
openssl
工具生成自签名证书。 - 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 的 Upgrade
和 Connection
头部。
完整的 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}
}
关键配置解释:
-
SSL 证书配置:
ssl_certificate
和ssl_certificate_key
:指定 SSL 证书和私钥的路径,用于 HTTPS 加密。ssl_protocols
和ssl_ciphers
:定义支持的 SSL/TLS 协议和加密套件。
-
WebSocket 升级:
proxy_set_header Upgrade $http_upgrade;
:告诉 Nginx 将普通的 HTTP 请求升级为 WebSocket 连接。proxy_set_header Connection "Upgrade";
:确保Connection
头部被正确设置为Upgrade
。proxy_read_timeout
和proxy_send_timeout
:配置 WebSocket 连接的超时,防止连接因空闲时间过长而被关闭。
-
代理到 WebSocket 服务:
proxy_pass http://localhost:31004;
:将 WebSocket 请求代理到后端实际运行的 WebSocket 服务器(例如运行 STOMP WebSocket 的 Spring Boot 服务)。
-
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);
});
常见问题及排查:
-
SSL 证书问题:
- 如果浏览器提示 SSL 证书无效,可能是因为使用了自签名证书。为了在生产环境中避免这种情况,建议使用 Let’s Encrypt 或其他可信的 CA 机构签发的证书。
-
WebSocket 升级失败:
- 如果 Nginx 没有正确处理 WebSocket 升级,可能会导致连接失败。检查 Nginx 日志以及浏览器开发者工具中的网络请求,确保请求的
Upgrade
和Connection
头部被正确处理。
- 如果 Nginx 没有正确处理 WebSocket 升级,可能会导致连接失败。检查 Nginx 日志以及浏览器开发者工具中的网络请求,确保请求的
-
跨域问题:
- 如果前端和后端的域名或端口不一致,可能会导致跨域问题。确保 Nginx 和后端应用正确配置了
CORS
。
- 如果前端和后端的域名或端口不一致,可能会导致跨域问题。确保 Nginx 和后端应用正确配置了
-
客户端使用 HTTPS:
- 如果前端页面是通过 HTTPS 访问的,WebSocket 连接必须使用
wss://
协议,否则浏览器会阻止不安全的连接。
- 如果前端页面是通过 HTTPS 访问的,WebSocket 连接必须使用
总结
通过上述步骤,你可以在 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]的元素组合个数 转换而来,其中j为nums所有元素的下标 而总和target - nums[j]的元素组合个数 可以由 总和为target - nums[j] - nums[k]的…...

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

安装R和RStudio:开始你的数据分析之旅
数据分析是当今世界中一个非常热门的领域,而R语言是进行数据分析的强大工具之一。R是一种编程语言和软件环境,用于统计计算和图形表示。RStudio是一个集成开发环境(IDE),它为R语言提供了一个更加友好和高效的工作环境。…...
如何使用python连接数据库?
数据分析离不开数据库,如何使用python连接数据库呢?听我娓娓道来哈 该笔记参考了PyMySQL官方文档和《python数据采集》关于数据存储的部分,欢迎大家去阅读原著,相信会理解的更加透彻。 补充:文末增加Oracle数据库的连…...

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

MySQL 创建子账号
1. 使用 root 账号登录 MySQL 使用 root 账号登录 MySQL,登录成功如图所示: 新建一个 MySQL 子账号,新建子账号命令如下: 命令 : CREATE USER testlocalhost IDENTIFIED BY 123456;若出现如下图所示,则表示新建 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端一键登录能力
在如今的移动互联网环境中,App端的一键登录功能逐渐成为提升用户体验的关键。用户不再需要繁琐的注册流程或输入短信验证码,一键即可通过手机号码完成登录。而阿里云融合认证中,一键登录能力为移动应用提供了一个简单、便捷且安全的用户身份验…...

基于YOLO11/v10/v8/v5深度学习的安检X光危险品检测与识别系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】
《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…...

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

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

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

自然语言处理(NLP)论文数量的十年趋势:2014-2024
引言 近年来,自然语言处理(NLP)已成为人工智能(AI)和数据科学领域中的关键技术之一。随着数据规模的不断扩大和计算能力的提升,NLP技术从学术研究走向了广泛的实际应用。通过观察过去十年(2014…...
.net core API中使用LiteDB
LiteDB介绍 LiteDB 是一个小巧、快速和轻量级的 .NET NoSQL 嵌入式数据库。 无服务器的 NoSQL 文档存储简单的 API,类似于 MongoDB100% 的 C# 代码支持 .NET 4.5 / NETStandard 1.3/2.0,以单个 DLL(不到 450KB)形式提供线程安全…...

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

根据请求错误的状态码判断代理配置问题
SafeLine,中文名 “雷池”,是一款简单好用, 效果突出的 Web 应用防火墙(WAF),可以保护 Web 服务不受黑客攻击。 雷池通过过滤和监控 Web 应用与互联网之间的 HTTP 流量来保护 Web 服务。可以保护 Web 服务免受 SQL 注入、XSS、 代码注入、命…...
Python 网络爬虫高阶用法
网络爬虫成为了自动化数据抓取的核心工具。Python 拥有强大的第三方库支持,在网络爬虫领域的应用尤为广泛。本文将深入探讨 Python 网络爬虫的高阶用法,包括处理反爬虫机制、动态网页抓取、分布式爬虫以及并发和异步爬虫等技术。以下内容结合最新技术发展…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...