nginx反向代理及负载均衡
华子目录
- nginx反向代理功能
- http反向代理
- 反向代理配置参数
- `proxy_pass`的注意事项
- `案例`:`反向代理`单台`后端服务器`
- 案例:`反向代理`实现`动静分离`
- `案例`:`反向代理`的`缓存功能`
- 非缓存场景下测压
- 准备缓存
- 缓存场景下测压
- 验证缓存文件
- `反向代理负载均衡(7层)`
- `upstream`配置参数
- 负载均衡算法
- 案例:`反向代理`多台`web服务器`(`轮询`)
- 案例:`反向代理`多台`web服务器`(`源地址hash调度`)
- 案例:`反向代理`多台`web服务器`(`对uri进行hash调度`)
- 案例:`反向代理`多台`web服务器`(`对cookie值进行hash调度`)
- 案例:`反向代理`多台`web服务器`(`下线`)
- `反向代理负载均衡(4层)`
- `案例`:`基于udp`的`dns的负载均衡`
- `先配置dns服务器`
- `nginx配置`
- `案例`:`基于tcp`的`MySQL的负载均衡`
- 数据库配置
- `nginx配置`
nginx反向代理功能

反向代理:reverse proxy,指的是代理外网用户的请求到内部的指定的服务器,并将数据返回给用户的一种方式,这是用的比较多的一种方式Nginx除了可以在企业提供高性能的web服务之外,另外还可以将nginx本身不具备的请求通过某种预定义的协议转发至其它服务器处理,不同的协议就是Nginx服务器与其他服务器进行通信的一种规范,主要在不同的场景使用以下模块实现不同的功能:
ngx_http_proxy_module将客户端的请求以http协议转发至指定服务器进行处理ngx_http_upstream_module用于定义为proxy_pass,fastcgi_pass,uwsgi_pass等指令引用的后端服务器分组ngx_stream_proxy_module将客户端的请求以tcp协议转发至指定服务器处理ngx_http_fastcgi_module将客户端对php的请求以fastcgi协议转发至指定服务器助理ngx_http_uwsgi_module将客户端对Python的请求以uwsgi协议转发至指定服务器处理
逻辑调用关系:

访问逻辑图:

同构代理:用户不需要其他程序的参与,直接通过http协议或者tcp协议访问后端服务器异构代理:用户访问资源时需要经过处理后才能返回,比如php,python等等,这种访问资源需要经过处理才能被访问

http反向代理
官方文档:https://nginx.org/en/docs/http/ngx_http_proxy_module.html
反向代理配置参数
proxy_pass用来设置将客户端请求转发给的后端服务器的主机,- 可以是
主机名:端口、IP地址:端口- 也可以
代理到预先设置的主机群组,需要模块ngx_http_upstream_module支持
proxy_hide_header field用于nginx作为反向代理的时候,在返回给客户端http响应时,隐藏后端服务器相应头部的信息,可以设置在http,server或location块
#示例: 隐藏后端服务器ETag首部字段
location /web {index index.html;proxy_pass http://10.0.0.18:8080/;proxy_hide_header ETag;
}
proxy_pass_header field透传,默认nginx在响应报文中不传递后端服务器的首部字段Date, Server, X-Pad, X-Accel等参数,如果要传递的话则要使用proxy_pass_header field声明将后端服务器返回的值传递给客户端field 首部字段大小不敏感
#示例:透传后端服务器的Server和Date首部给客户端,同时不再响应报中显示前端服务器的Server字段
proxy_pass_header Server;
proxy_pass_header Date;
proxy_pass_request_body on | off是否向后端服务器发送HTTP实体部分,可以设置在http,server或location块,默认即为开启
proxy_pass_request_headers on | off是否将客户端的请求头部转发给后端服务器,可以设置在http,server或location块,默认即为开启
proxy_set_header可更改或添加客户端的请求头部信息内容并转发至后端服务器,比如在后端服务器想要获取客户端的真实IP的时候,就要更改每一个报文的头部
#示例:
location ~ /web {proxy_pass http://172.25.254.20:80;proxy_hide_header ETag;proxy_pass_header Server;proxy_pass_request_body on;proxy_pass_request_headers on;proxy_set_header X-Forwarded-For $remote_addr;
}
proxy_connect_timeout time配置nginx服务器与后端服务器尝试建立连接的超时时间,默认为60秒
#用法如下:proxy_connect_timeout 60s;
#60s为自定义nginx与后端服务器建立连接的超时时间,超时会返回客户端504响应码
proxy_read_timeout time配置nginx服务器向后端服务器或服务器组发起read请求后,等待的超时时间,默认60s
proxy_send_timeout time配置nginx项后端服务器或服务器组发起write请求后,等待的超时 时间,默认60s
proxy_http_version 1.0用于设置nginx提供代理服务的HTTP协议的版本,默认http 1.0
proxy_ignore_client_abort off当客户端网络中断请求时,nginx服务器中断其对后端服务器的请求。即如果此项设置为on开启,则服务器、会忽略客户端中断并一直等着代理服务执行返回,如果设置为off,则客户端中断后Nginx也会中断客户端请求并立即记录499日志,默认为off
proxy_pass的注意事项
location /web {index index.html;proxy_pass http://172.25.254.30:8080;
}
#8080后面无uri,即无/符号,会将location后面的url加到proxy_pass指定的url后面,此行为类似于root
#proxy_pass指定的uri不带斜线将访问/web下的内容
- 如果
location定义其uri时使用了正则表达式模式(包括~,~*,但不包括^~),则proxy_pass之后必须不能使用uri。即不能有/,用户请求时传递的uri将直接附加至后端服务器之后
location /web {index index.html;proxy_pass http://172.25.254.30:8080/;
}
#8080后面有uri,即/符号,此行为类似于alias
#proxy_pass指定的uri带斜线等于访问http://172.25.254.30:8080/index.html
location中的proxy_pass只能有一个,不能有多个,否则会报错
案例:反向代理单台后端服务器
nginx服务器:172.25.254.100www.huazi.orgweb1服务器:172.25.254.10
[root@web1 ~]# yum install httpd -y
[root@web1 ~]# echo 172.25.254.10 > /var/www/html/index.html
[root@web1 ~]# systemctl start httpd
[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhosts.conf
server {listen 80;server_name www.huazi.org;location / {proxy_pass http://172.25.254.10:80;}
}[root@nginx-node1 ~]# nginx -s reload
测试:当访问www.huazi.org时,nginx会将请求代理到web1上

案例:反向代理实现动静分离

nginx服务器:172.25.254.100www.huazi.orgweb1服务器:172.25.254.10动web2服务器:172.25.254.20静
[root@web1 ~]# yum install php -y
[root@web1 ~]# vim /var/www/html/index.php
<?phpphpinfo();
?>[root@web1 ~]# systemctl restart httpd
[root@web2 ~]# yum install httpd -y[root@web2 ~]# mkdir -p /var/www/html/static[root@web2 ~]# echo static 172.25.254.20 > /var/www/html/static/index.html[root@web2 ~]# systemctl start httpd
[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhosts.conf
server {listen 80;server_name www.huazi.org;location ~ \.php$ {proxy_pass http://172.25.254.10:80;}location /static {proxy_pass http://172.25.254.20:80;}
}[root@nginx-node1 ~]# nginx -s reload
测试


案例:反向代理的缓存功能
proxy_cache zone_name | off; 默认off指明调用的缓存,或关闭缓存机制zone_name表示缓存的名称,需要由proxy_cache_path事先定义
proxy_cache_key string缓存中用于“键”的内容,默认值:proxy_cache_key $scheme$proxy_host$request_uri;
proxy_cache_valid [code ...] time;定义对特定响应码的响应内容的缓存时长,定义在http{...}中示例:proxy_cache_valid 200 302 10m;对于 HTTP 响应状态码为 200(OK)和 302(Found,通常用于临时重定向)的响应,它们将被缓存,并且缓存有效期为 10 分钟(10m)
proxy_cache_path 路径定义可用于proxy功能的缓存
proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | off ; 默认是off在被代理的后端服务器出现哪种情况下,可直接使用过期的缓存响应给客户端示例proxy_cache_use_stale error http_502 http_503;
proxy_cache_methods GET | HEAD | POST ...;对哪些客户端请求方法对应的响应进行缓存,GET和HEAD方法总是被缓存
#示例:在http配置定义缓存信息
proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2:2 keys_zone=proxycache:20m inactive=120s max_size=10g;#/var/cache/nginx/proxy_cache 定义缓存保存路径,proxy_cache会自动创建
#levels=1:2:2 定义缓存目录结构层次,1:2:2可以生成2^4x2^8x2^8=2^20=1048576个目录
#keys_zone=proxycache:20m 定义了一个名为proxycache的缓存键区域,并为其分配了20MB的内存,一般1M可存放8000个左右的key
#inactive=120s 缓存有效时间
#max_size=10g 最大磁盘占用空间,磁盘存入文件内容的缓存空间最大值#调用缓存功能,需要定义在相应的配置段,如server{...};或者location等
proxy_cache proxycache;
proxy_cache_key $request_uri; #对指定的数据进行MD5的运算做为缓存的key
proxy_cache_valid 200 302 301 10m; #指定的状态码返回的数据缓存多长时间,10分钟
proxy_cache_valid any 1m; #除指定的状态码返回的数据以外的缓存多长时间,必须设置,否则不会缓存
非缓存场景下测压
[root@web2 ~]# ab -n 1000 -c 100 http://www.huazi.org/static/index.html

准备缓存
- 在主配置文件中
[root@nginx-node1 ~]# vim /usr/local/nginx/conf/nginx.conf

proxycache名字可以自定义
[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhosts.conf

[root@nginx-node1 ~]# nginx -s reload
缓存场景下测压
[root@web2 ~]# ab -n 1000 -c 100 http://www.huazi.org/static/index.html

- 发现请求
变快了
验证缓存文件


反向代理负载均衡(7层)
官方文档: https://nginx.org/en/docs/http/ngx_http_upstream_module.html- 在
上面的案例中Nginx可以将客户端的请求转发至单台后端服务器,但是无法转发至特定的一组的服务器,而且不能对后端服务器提供相应的服务器状态监测 Nginx可以基于ngx_http_upstream_module模块提供服务器分组转发、权重分配、状态监测、调度算法等高级功能
upstream配置参数
http {upstream name {server ip:port [params];......................}server {location / {proxy_pass http://name;}}
}
upstream中的server支持的params如下
weight=number #设置权重,默认为1,实现类似于LVS中的WRR,WLC等
max_conns=number #给当前后端server设置最大活动链接数,默认为0表示没有限制
max_fails=number #后端服务器的下线条件,当客户端访问时,对本次调度选中的后端服务器连续进行检测多少次,如果都失败就标记为不可用,默认为1次,当客户端访问时,才会利用TCP触发对探测后端服务器健康性检查,而非周期性的探测
fail_timeout=time #后端服务器的上线条件,对已经检测到处于不可用的后端服务器,每隔此时间间隔再次进行检测是否恢复可用,如果发现可用,则将后端服务器参与调度,默认为10秒
backup #设置为备份服务器,当所有后端服务器不可用时,才会启用此备用服务器
down #标记为down状态,可以平滑下线后端服务器
resolve #当server定义的是主机名的时候,当A记录发生变化会自动应用新IP而不用重启
负载均衡算法
Nginx支持多种负载均衡算法,常见的包括:
轮询(Round Robin):默认算法,按照顺序将请求依次分发到后端服务器权重(Weighted Round Robin):为每个后端服务器设置权重,权重高的服务器分配的请求会更多IP 哈希(ip_hash):根据客户端 IP的哈希值决定分发到哪台后端服务器,适用于需要保持会话一致性的场景最少连接(least_conn):将请求分配给当前连接数最少的后端服务器hash(指定字段哈希):基于指定的请求字段(如URL、Cookie等)来分配请求

案例:反向代理多台web服务器(轮询)
- 需要
location块中的proxy_pass参数和upstream块配合使用upstream块和server块是同级的
[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhosts.conf
upstream webcluster {server 172.25.254.10:80 fail_timeout=15s max_fails=3;server 172.25.254.20:80 fail_timeout=15s max_fails=3;server 172.25.254.100:80 backup;
}server {listen 80;server_name www.huazi.org;location / {proxy_pass http://webcluster;}
}
max_fails=number后端服务器的下线条件,当客户端访问时,对本次调度选中的后端服务器连续进行检测多少次,如果都失败就标记为不可用,默认为1次,当客户端访问时,才会利用TCP触发对探测后端服务器健康性检查,而非周期性的探测fail_timeout=time后端服务器的上线条件,对已经检测到处于不可用的后端服务器,每隔此时间间隔再次进行检测是否恢复可用,如果发现可用,则将后端服务器参与调度,默认为10秒backup关键字意味着只有当webcluster组中的其他所有服务器都不可用时,Nginx才会向这个服务器发送请求
[root@nginx-node1 ~]# nginx -s reload
测试:

案例:反向代理多台web服务器(源地址hash调度)
- 有
ip_hash,就不能有backup
[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhosts.conf
upstream webcluster {ip_hash;server 172.25.254.10:80 fail_timeout=15s max_fails=3;server 172.25.254.20:80 fail_timeout=15s max_fails=3;
}server {listen 80;server_name www.huazi.org;location / {proxy_pass http://webcluster;}
}
[root@nginx-node1 ~]# nginx -s reload
测试:

案例:反向代理多台web服务器(对uri进行hash调度)
[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhosts.conf
upstream webcluster {hash $request_uri consistent;server 172.25.254.10:80 fail_timeout=15s max_fails=3;server 172.25.254.20:80 fail_timeout=15s max_fails=3;
}server {listen 80;server_name www.huazi.org;location / {proxy_pass http://webcluster;}
}[root@nginx-node1 ~]# nginx -s reload
[root@web1 ~]# mkdir -p /var/www/html/static/
[root@web1 ~]# echo 172.25.254.10 static > /var/www/html/static/index.html

案例:反向代理多台web服务器(对cookie值进行hash调度)
[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhosts.conf
upstream webcluster {hash $cookie_huazi;server 172.25.254.10:80 fail_timeout=15s max_fails=3;server 172.25.254.20:80 fail_timeout=15s max_fails=3;
}server {listen 80;server_name www.huazi.org;location / {proxy_pass http://webcluster;}
}[root@nginx-node1 ~]# nginx -s reload

案例:反向代理多台web服务器(下线)
upstream webcluster {hash $cookie_huazi;server 172.25.254.10:80 fail_timeout=15s max_fails=3 down;server 172.25.254.20:80 fail_timeout=15s max_fails=3;
}server {listen 80;server_name www.huazi.org;location / {proxy_pass http://webcluster;}
}[root@nginx-node1 ~]# nginx -s reload

反向代理负载均衡(4层)
stream {upstream backend {server backend1.example.com:3306;server backend2.example.com:3306;}server {listen 3306;proxy_pass backend;}
}
Nginx在1.9.0版本开始支持tcp模式的负载均衡,在1.9.13版本开始支持udp协议的负载,udp主要用于DNS的域名解析,其配置方式和指令和http代理类似,其基于ngx_stream_proxy_module模块实现tcp负载,另外基于模块ngx_stream_upstream_module实现后端服务器分组转发、权重分配、状态监测、调度算法等高级功能- 如果
编译安装,需要指定--with-stream选项才能支持ngx_stream_proxy_module模块 官方文档:https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html
案例:基于udp的dns的负载均衡
nginx服务器:172.25.254.100www.huazi.orgdns1服务器:172.25.254.10dns2服务器:172.25.254.20
先配置dns服务器
[root@web1 ~]# yum install bind -y[root@web1 ~]# vim /etc/named.conf

[root@web1 ~]# vim /etc/named.rfc1912.zones

[root@web1 ~]# cd /var/named/
[root@web1 named]# cp -a named.localhost /var/named/huazi.com.zone
[root@web1 named]# vim huazi.com.zone

[root@web1 named]# systemctl start named[root@web1 named]# dig www.huazi.com @172.25.254.10

[root@web2 ~]# yum install bind -y[root@web2 ~]# vim /etc/named.conf

[root@web2 ~]# vim /etc/named.rfc1912.zones

[root@web2 ~]# cd /var/named/
[root@web2 named]# cp -a named.localhost /var/named/huazi.com.zone
[root@web2 named]# vim huazi.com.zone

[root@web2 named]# systemctl start named[root@web2 named]# dig www.huazi.com @172.25.254.20

nginx配置
udp和tcp的负载均衡要写在http块之外
#修改主配置文件
[root@nginx-node1 ~]# vim /usr/local/nginx/conf/nginx.conf

[root@nginx-node1 ~]# mkdir -p /usr/local/nginx/tcpconf.d/[root@nginx-node1 ~]# vim /usr/local/nginx/tcpconf.d/dns.conf
stream {upstream dns {server 172.25.254.10:53 fail_timeout=15s max_fails=3;server 172.25.254.20:53 fail_timeout=15s max_fails=3;}server {listen 53 udp reuseport;proxy_timeout 20s;proxy_pass dns;}
}[root@nginx-node1 ~]# nginx -s reload
测试

100上没有dns服务,dig却可以指定到100,通过100进行代理
案例:基于tcp的MySQL的负载均衡
nginx服务器:172.25.254.100www.huazi.orgMySQL1服务器:172.25.254.10MySQL2服务器:172.25.254.20
数据库配置
[root@web1 ~]# yum install mariadb-server -y[root@web2 ~]# yum install mariadb-server -y
[root@web1 ~]# vim /etc/my.cnf.d/mariadb-server.cnf

[root@web2 ~]# vim /etc/my.cnf.d/mariadb-server.cnf



nginx配置
[root@nginx-node1 ~]# vim /usr/local/nginx/tcpconf.d/dns.conf

[root@nginx-node1 ~]# nginx -s reload
下载MySQL的客户端
[root@nginx-node1 ~]# yum install mariadb -y
测试

相关文章:
nginx反向代理及负载均衡
华子目录 nginx反向代理功能http反向代理反向代理配置参数proxy_pass的注意事项案例:反向代理单台后端服务器案例:反向代理实现动静分离案例:反向代理的缓存功能非缓存场景下测压准备缓存缓存场景下测压验证缓存文件 反向代理负载均衡&#x…...
单片机实物成品-011 火灾监测
火灾监测(20个版本) 版本20: oled显示温湿度烟雾浓度火焰传感器天然气浓度窗户风扇水泵排气系统声光报警语音播报按键WIFI模块 ----------------------------------------------------------------------------- https://www.bilibili.com…...
使用 Docker 在 Alpine Linux 下部署 Caddy 服务器
简介 在现代 web 开发中,选择合适的 web 服务器至关重要。Caddy 是一个功能强大的现代化 HTTP/2 服务器,支持自动 HTTPS,配置简单,适合开发和生产环境。Docker 则为我们提供了一种轻量级的容器化技术,使得应用程序的部…...
每日十题八股-2025年1月12日
1.为什么四次挥手之后要等2MSL? 2.服务端出现大量的timewait有哪些原因? 3.TCP和UDP区别是什么? 4.TCP为什么可靠传输 5.怎么用udp实现http? 6.tcp粘包怎么解决? 7.TCP的拥塞控制介绍一下? 8.描述一下打开百度首页后发生的网络过…...
Python中定位包含特定文本信息的元素
目录 一、为什么需要定位包含文本信息的元素 二、使用Selenium定位包含文本的元素 1. 使用find_element_by_link_text 2. 使用find_element_by_partial_link_text 3. 使用XPath定位包含文本的元素 4. 使用CSS选择器定位包含文本的元素 三、使用BeautifulSoup定位包含文本…...
uniapp实现H5页面内容居中与两边留白,打造类似微信公众号阅读体验
在 UniApp 中,由于需要兼容多端应用,我们通常使用 rpx 作为尺寸单位。然而,在某些情况下,如需要实现内容居中且两边留白时,直接使用 rpx 可能会带来一些限制。这时,我们可以考虑使用 px 或 rem 等单位&…...
极品飞车6里的赛道简介
极品飞车里有很多赛道,赛道分为前向赛道Forward、后向赛道Backward。前向赛道Forward是从A点到B点;后向赛道Backward是前向赛道的逆过程,即从B点到A点。这里介绍极品飞车6的赛道长度、中英文名称翻译、难度等级。 序号赛道英文名赛道中文名总长(km)急弯难度等级1Alpine Trai…...
SAP推出云端ERP解决方案,加速零售行业数字化转型
2025年1月9日,SAP发布了一款专为零售行业设计的云端ERP行业解决方案——S/4HANA Cloud Public Edition,进一步推动企业向云端迁移。这款解决方案旨在集中运营数据,整合财务、采购和商品管理流程,以帮助零售企业优化运营效率。 核…...
Python爬虫进阶——案例:模拟bilibili登录)
主要内容:模拟bilibili账号密码登录,不要实现的的实现功能是单击登录按钮,切换登录方式, 输入账号和密码,然后完成图片点击验证,最后单击立即登录按钮。 1、第一步:通过selenium模块访问bilibi…...
什么是数据分析?
什么是数据分析? 数据分析(Data Analysis)是指通过对数据进行收集、整理、处理、建模和解读,以揭示数据中的有用信息、支持决策和解决实际问题的过程。它是一门将数据转化为知识的学科,广泛应用于商业、科学研究、医疗…...
基于springboot的课程作业管理系统源码(springboot+vue+mysql)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的课程作业管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 可以管理首页、个人中心…...
多线程之旅:属性及其基本操作
上次分享到了,多线程中是是如何创建的,那么接下来,小编继续分享下多线程的相关知识。 多线程中的一些基本属性。 基本属性 属性获取方法IDgetId()名称getName()状态getState()优先级getPriority()是否后台线程isDemo()是否存活isAlive()是…...
数据表中的数据插入、更新和删除
文章目录 一、表的插入二、更新表中的数据记录三、删除表中的数据记录 一、表的插入 插入数据记录是常见的数据操作,可以显示向表中增加的新的数据记录。在MySQL中可以通过“INSERT INTO”语句来实现插入数据记录,该SQL语句可以通过如下4种方式使用&…...
Q_OBJECT宏报错的问题
在Qt中继承QObject,并且加上Q_OBJECT宏,有时候会报错,比如我的错误: error: debug/httpmgr.o:httpmgr.cpp:(.rdata$.refptr._ZTV7HttpMgr[.refptr._ZTV7HttpMgr]0x0): undefined reference to vtable for HttpMgr 意思是没有虚…...
提升性能300ms:深入解析Spring多表联接查询优化与SQL调优实战
优化所需知识点(必须掌握) 索引篇 explain命令 重点:这是后续分析是否使用索引以及使用是否恰当的工具 作用:查看sql的执行计划,可以看sql语句是否使用了索引,索引的使用情况,以及sql的性能。 …...
增量导入和全量导入的区别是什么?
定义 全量导入:是指将数据源中的所有数据一次性全部导入到目标系统中。例如,一个电商公司要将其旧数据库中的所有商品信息(包括商品名称、价格、库存等)全部迁移到新的数据库系统中,这个过程就是全量导入。这种方式会覆…...
【百度智能云客悦智能客服】搭建AI agent智能对话 - 购车推荐
前期准备 平台链接:https://keyue.cloud.baidu.com/ 一、开始创建 二、会话流程配置 我们以购车推荐的案例,来进行 AI agent 配置演示 1.添加开场白 在 起始主题 画布中,我们可以配置 AI agent 的开场白,画布左侧默认有 开始 …...
【HTML+CSS+JS+VUE】web前端教程-3-标题标签
标题介绍与应用 标题是通过<h1>-<h6>标签进行定义的 <h1>定义最大的标题 <h6>定义最小的标题<h1...
逐笔成交逐笔委托Level2高频数据下载和分析:20250102
level2逐笔成交逐笔委托下载 链接: https://pan.baidu.com/s/1p7OOj5p-QGFrWkt6KKoYng?pwd7f4g 提取码: 7f4g Level2逐笔成交逐笔委托数据分享下载 通过Level2逐笔成交和逐笔委托这种每一笔的毫秒级别的数据可以分析出很多有用的点,包括主力意图,虚假动…...
JavaEE之线程池
前面我们了解了多个任务可以通过创建多个线程去处理,达到节约时间的效果,但是每一次的线程创建和销毁也是会消耗计算机资源的,那么我们是否可以将线程进阶一下,让消耗计算机的资源尽可能缩小呢?线程池可以达到此效果&a…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...
MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...
协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...
C# winform教程(二)----checkbox
一、作用 提供一个用户选择或者不选的状态,这是一个可以多选的控件。 二、属性 其实功能大差不差,除了特殊的几个外,与button基本相同,所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...
