Nginx反向代理与缓存实现

1. Nginx反向代理核心配置解析

1.1 反向代理基础配置结构

Nginx反向代理的基础配置结构主要包括server块和location块的配置。一个典型的反向代理配置示例如下:

server {listen 80;server_name example.com;location / {proxy_pass http://backend_servers;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}
upstream backend_servers {server backend1.example.com:8080;server backend2.example.com:8080;
}

在这个配置中,server块定义了一个虚拟服务器,listen 80指定监听80端口,server_name指定服务器名称。location /匹配所有请求,proxy_pass将请求转发到名为backend_servers的upstream组。proxy_set_header指令用于设置转发到后端服务器的HTTP头信息。

1.2 location指令的精准路由匹配

location指令支持多种匹配模式,可以实现精准的路由控制。常见匹配方式包括:

# 主站
location / {proxy_pass http://www.xxxx.com;proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;
}# a站目录
location ~ ^/(search|app|game|qp|dpscpi|news|zt)/.*$ {proxy_pass http://soft.xxx.com;proxy_set_header Host $host;
}# b站目录
location ~ ^/(gfapi|games|soft|zti|ssou|xp|sitemapv1).*$ {proxy_pass http://other.xxx.com;
}

正则表达式匹配使用~符号,^表示字符串开始,$表示字符串结束。这种配置可以根据URL路径将请求分发到不同的后端服务器。

1.3 upstream模块的负载均衡实现

upstream模块用于定义一组后端服务器,实现负载均衡。Nginx支持多种负载均衡算法:

upstream backend {# 默认轮询server backend1.example.com;server backend2.example.com;# 加权轮询server backend3.example.com weight=3;# IP哈希ip_hash;# 最少连接least_conn;# 备份服务器server backup.example.com backup;
}

权重(weight)参数表示权值,权值越高被分配到的几率越大。ip_hash保证同一客户端IP的请求总是分配到同一后端服务器,适用于需要会话保持的场景。

1.4 代理头信息的关键配置参数

反向代理中正确处理HTTP头信息至关重要,常见配置参数包括:

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_redirect off;
proxy_http_version 1.1;
proxy_connect_timeout 60;
proxy_read_timeout 60;
proxy_send_timeout 60;

这些配置确保后端服务器能获取客户端真实IP(X-Real-IP),了解请求是通过HTTP还是HTTPS(X-Forwarded-Proto)发起的。超时参数(proxy_connect_timeout, proxy_read_timeout, proxy_send_timeout)防止因后端响应慢导致连接堆积。

2. Nginx缓存机制深度剖析

2.1 缓存区域(proxy_cache_path)配置详解

Nginx的proxy_cache_path指令用于定义缓存路径和基本参数,其完整语法为:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m use_temp_path=off;

其中关键参数说明:

  • /var/cache/nginx:缓存文件存储路径
  • levels=1:2:定义缓存目录的层级结构(1:2表示两级子目录)
  • keys_zone=my_cache:10m:定义共享内存区域名称和大小(10MB用于存储缓存键)
  • inactive=60m:60分钟内未被访问的缓存将被删除
  • use_temp_path=off:禁用临时文件存储路径

缓存区域的内存分配采用keys_zone机制,每个缓存条目约消耗约800字节内存,因此10MB内存空间可支持约12,800个缓存键。实际缓存内容存储在磁盘上,通过max_size参数可限制磁盘缓存总量(如max_size=10g)。

2.2 缓存有效期与更新策略

Nginx通过proxy_cache_valid指令设置不同响应状态码的缓存时间:

proxy_cache_valid 200 302 10m;  # 成功响应缓存10分钟
proxy_cache_valid 404      1m;  # 404错误缓存1分钟
proxy_cache_valid any       1m;  # 其他状态缓存1分钟

缓存更新机制包含三种模式:

  1. 被动更新:基于inactive参数(如60m)自动清理未访问缓存
  2. 主动清理:通过第三方模块ngx_cache_purge实现指定URL缓存清除
  3. 条件更新:使用proxy_cache_use_stale指令在源服务器不可用时返回陈旧缓存:
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504

2.3 缓存键设计的最佳实践

proxy_cache_key指令决定缓存项的唯一标识,默认配置为:

proxy_cache_key "$scheme$request_method$host$request_uri";

这表示缓存键包含协议类型(http/https)、请求方法、主机名和完整URI。对于动态内容,建议增加$args变量包含查询参数:

proxy_cache_key "$scheme$request_method$host$request_uri$args"

在负载均衡场景下,如需保持会话一致性,可添加$cookie_jsessionid等会话标识到缓存键。但需注意缓存键过长会导致内存消耗增加,需在keys_zone中预留足够空间。

2.4 缓存状态监控与调试技巧

Nginx提供$upstream_cache_status变量记录缓存命中状态,其可能取值包括:

  • HIT:缓存命中
  • MISS:缓存未命中
  • EXPIRED:缓存已过期
  • STALE:使用陈旧缓存
  • UPDATING:缓存正在更新

监控配置示例:

location /nginx_status {stub_status on;access_log off;allow 127.0.0.1;deny all;
}

通过访问该接口可获取活跃连接数(Active)、总请求数(Requests)等关键指标。结合日志分析工具(如GoAccess)可统计缓存命中率,优化inactive和max_size参数。

3. 性能优化关键配置

3.1 gzip压缩与传输优化

Nginx的gzip压缩功能通过减少传输数据量显著提升网页加载速度。在http模块中启用gzip的基本配置包括:

gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_types text/plain text/css application/x-javascript;

关键参数中,gzip_min_length设置仅压缩大于1KB的文件,避免小文件压缩带来的性能损耗;gzip_buffers分配4个16KB内存块用于存储压缩数据流。对于现代Web应用,建议将gzip_types扩展为包含application/jsonapplication/javascript等MIME类型。需注意,默认配置下Nginx会跳过已压缩的图片/视频文件,这是为避免重复压缩消耗CPU资源。

3.2 连接池与keepalive优化

keepalive机制通过复用TCP连接减少握手开销,典型配置如下:

keepalive_timeout 65;
keepalive_requests 1000;

keepalive_timeout设定连接保持时间为65秒,超过空闲时间后关闭连接;keepalive_requests限制单个连接最多处理1000个请求后强制重建连接,防止内存泄漏。对于高并发场景,建议将worker_connections调至10240,并配合multi_accept on实现单个worker进程同时接受多个新连接。需注意,过长的keepalive时间会导致服务器资源占用上升,需根据实际业务访问频率调整。

3.3 静态资源缓存策略

针对CSS/JS/图片等静态资源,通过expires指令设置浏览器缓存:

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {expires 30d;add_header Cache-Control "public, no-transform";
}

该配置使客户端缓存静态资源30天,Cache-Control: public允许代理服务器缓存资源,no-transform禁止中间节点修改内容。对于版本化静态资源(如带hash的文件名),可进一步延长缓存时间至1年并添加版本查询参数。Nginx还会自动发送Last-ModifiedETag头实现条件请求,当资源未修改时返回304状态码减少传输量。

3.4 缓冲区大小与超时参数调优

代理缓冲区配置直接影响大文件传输稳定性,推荐值:

proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;

proxy_buffer_size设置头缓冲区为16KB,proxy_buffers分配4个64KB缓冲区存储响应内容。对于视频等大型文件,需增加proxy_max_temp_file_size防止临时文件过大。超时参数方面,client_header_timeout建议设为5秒防止慢速攻击,proxy_read_timeout根据后端处理能力调整(通常60-300秒)。特别注意tcp_nodelay on禁用Nagle算法,可提升小数据包实时性。

4. 安全防护配置方案

4.1 反向代理下的XSS防护

Nginx反向代理环境下XSS防护的核心在于HTTP头部的安全策略配置。通过添加以下安全头部可有效缓解XSS攻击风险:

  • X-XSS-Protection "1; mode=block":强制浏览器启用XSS过滤机制
  • Content-Security-Policy "default-src 'self'":限制资源加载源防止注入
  • X-Content-Type-Options "nosniff":阻止MIME类型嗅探攻击

关键配置示例:

add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'";
add_header Referrer-Policy "strict-origin-when-cross-origin";

该配置通过五层防护头组合,既防止点击劫持又限制脚本执行上下文。需注意CSP策略需根据实际业务资源加载需求调整白名单范围。

4.2 请求限速与防DDoS配置

Nginx的限流模块提供三种防护维度:

  1. 连接数限制:通过limit_conn_zone定义共享内存区(如10MB存储约12,800个IP的状态)
  2. 请求速率限制:limit_req_zone设置每秒请求阈值(如10r/s)
  3. 带宽限制:limit_rate控制单个连接传输速度

典型DDoS防护配置:

limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;server {limit_conn conn_limit 5;limit_req zone=req_limit burst=20 nodelay;
}

此配置实现IP级连接数(5个)和请求速率(峰值20个/秒)双重限制。对于突发流量,burst参数允许短暂超限,而nodelay立即执行惩罚策略。

4.3 敏感信息过滤与防护

反向代理需特别关注三类敏感信息防护:

  1. 头信息过滤:移除后端服务器版本信息
    proxy_hide_header X-Powered-By;
    server_tokens off;
    
  2. 方法限制:禁用高风险HTTP方法
    if ($request_method !~ ^(GET|HEAD|POST)$) {return 405;
    }
    
  3. 数据泄露防护:过滤代理响应中的敏感字段

SSL/TLS强化配置建议:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';

该配置禁用老旧协议并启用强加密套件,结合HSTS头可有效防止降级攻击。

4.4 访问日志分析与异常检测

Nginx日志监控的关键指标包括:

  • 安全事件指标:4xx/5xx状态码比率反映攻击尝试
  • 性能基线指标$request_time超过500ms的请求可能遭遇资源耗尽攻击
  • 流量突变检测:通过accepts/handled连接数对比识别异常流量

日志分析配置优化:

log_format security '$remote_addr - $status - "$request" - $http_user_agent';
access_log /var/log/nginx/security.log security buffer=32k flush=5s;

使用独立日志格式记录安全相关数据,缓冲区设置平衡I/O性能与实时性。建议结合实时分析工具监控$upstream_cache_status的MISS率突变,这可能预示缓存穿透攻击。

5. 监控与故障排查

5.1 nginx_status模块的监控实现

Nginx的stub_status模块提供了基础的性能监控能力,通过配置location /nginx_status可暴露关键指标。典型配置如下:

location /nginx_status {stub_status on;access_log off;allow 127.0.0.1;deny all;
}

该配置会返回包含以下数据的纯文本响应:

  • Active connections:当前活跃客户端连接数
  • server accepts handled requests:总连接数、成功连接数、总请求数
  • Reading:正在读取请求头的连接数
  • Writing:正在发送响应的连接数
  • Waiting:保持空闲的连接数

对于生产环境,建议通过Nginx Exporter将数据转换为Prometheus可读取的格式,配合Grafana实现可视化监控。关键指标包括每秒请求数(Requests)、连接成功率(conns_opened_percent)和丢弃连接数(conns_dropped_qps)。

5.2 错误日志分析与常见问题

Nginx错误日志默认位于/var/log/nginx/error.log,需重点关注以下模式:

  1. connect() failed类错误:反映后端服务连接问题,需检查proxy_connect_timeout(默认60秒)是否过短
  2. upstream timed out:需调整proxy_read_timeout(默认60秒)和proxy_send_timeout(默认60秒)
  3. cache loader进程报错:表明缓存索引重建异常,需检查proxy_cache_path目录权限

对于访问日志,推荐使用log_format定义包含$upstream_cache_status的定制格式,可统计缓存命中率:

log_format cache '***$time_local ***$upstream_cache_status ***"$request"';

通过分析MISS/HIT/EXPIRED等状态占比,可评估缓存效果。

5.3 性能瓶颈定位工具

系统级工具组合应用:

  1. top:监控Nginx worker进程的CPU/内存占用,异常值可能表明配置不当
  2. vmstat 1:观察系统上下文切换(cs)和阻塞进程(b),若超过5000/s需优化
  3. tcpdump:抓包分析网络延迟,命令如:
tcpdump -i eth0 -nn -s 0 -w nginx.pcap port 80

Nginx特有指标调优:

  • Worker进程数:应等于CPU核心数,通过worker_processes auto设置
  • 文件描述符限制:需确保worker_rlimit_nofile大于worker_connections(建议2:1比例)
  • 启用sendfiletcp_nopush可加速静态文件传输

5.4 缓存命中率监控方案

完整的缓存监控体系包含三个维度:

  1. 实时状态:通过stub_status接口获取瞬时指标
  2. 日志分析:解析$upstream_cache_status变量,统计命中率趋势
  3. 存储检查:监控proxy_cache_path目录大小,避免超过max_size导致频繁淘汰

典型问题处理流程:

  • 低命中率:检查proxy_cache_key是否包含过多变量(如$args),或proxy_cache_valid时间过短
  • 高磁盘I/O:增加keys_zone内存大小(如从10MB调整为100MB),减少索引磁盘读写
  • 缓存穿透:配置proxy_cache_lock on,避免并发请求击穿后端

6. 高级应用场景实现

6.1 多级缓存架构设计

Nginx的多级缓存架构通过分层缓存策略实现性能优化,其核心在于合理配置proxy_cache_path指令。该指令支持定义缓存路径、内存区域大小及失效时间等关键参数,例如:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m use_temp_path=off;

此配置中,levels=1:2指定两级目录结构以提升文件检索效率,keys_zone=my_cache:10m定义10MB共享内存区域存储缓存索引,inactive=60m设置60分钟未被访问的缓存自动清理。实际应用中可结合max_size参数限制磁盘缓存总量(如10GB),防止存储溢出。

多级缓存的典型实现包含以下层级:

  1. 边缘缓存:利用Nginx的proxy_cache存储静态资源,通过expires 30d等指令设置长期缓存策略;
  2. 内存缓存:通过keys_zone配置共享内存区域,加速热点数据的索引查询;
  3. 后端缓存:与Redis等内存数据库联动,处理动态内容缓存。这种分层结构可减少约70%的后端请求量,显著降低源服务器负载。

6.2 动态内容缓存策略

动态内容缓存需解决数据实时性与性能的矛盾。Nginx通过proxy_cache_valid指令实现差异化缓存周期,例如:

proxy_cache_valid 200 302 10m;
proxy_cache_valid 404      1m;

该配置对HTTP 200/302响应缓存10分钟,404响应仅缓存1分钟。针对API等动态接口,可通过proxy_cache_key "$scheme$request_method$host$request_uri$args"构建包含请求参数的缓存键,确保不同参数组合的响应独立缓存。

对于实时性要求高的场景,可采用以下方案:

  1. 被动更新:设置较短的缓存时间(如1分钟),配合proxy_cache_use_stale指令在更新失败时返回陈旧数据;
  2. 主动清除:通过第三方模块ngx_cache_purge实现按URL清除缓存,例如location ~ /purge(/.*)配置清理路径;
  3. 条件缓存:利用proxy_cache_bypass指令跳过特定请求的缓存,如带认证头的API请求。

6.3 灰度发布与AB测试实现

Nginx的灰度发布主要通过upstream模块和变量匹配实现。基础配置如下:

upstream production {server backend1:8080 weight=9;server backend2:8080 weight=1;
}

此配置将90%流量导向backend1,10%导向backend2实现流量分流。更精细的控制可通过map模块实现,例如根据Cookie值分配流量:

map $cookie_gray $group {default "production";"true"  "experiment";
}upstream experiment {server backend3:8080;
}

实际部署时,结合proxy_pass http://$group实现动态路由。对于AB测试,可通过split_clients模块随机分配用户:

split_clients "${remote_addr}${ua}" $variant {50%   "A";50%   "B";
}

该配置基于客户端IP和User-Agent哈希值均分流量,确保测试组稳定性。

6.4 微服务网关集成方案

Nginx作为微服务网关的核心能力包括路由转发、负载均衡和协议转换。典型配置通过location匹配服务路径:

location /user-service/ {proxy_pass http://user-service/api/;proxy_set_header X-Real-IP $remote_addr;
}

微服务集成需重点关注:

  1. 服务发现:结合Consul等工具动态更新upstream,例如通过consul-template自动生成服务节点列表;
  2. 熔断机制:利用proxy_next_upstream指令配置故障转移策略,如超时或5xx错误时切换后端节点;
  3. 监控集成:通过stub_status模块暴露连接数、请求数等指标,与Prometheus等监控系统对接。

在Kubernetes环境中,Nginx Ingress Controller可实现更细粒度的流量管理,支持基于Header、Cookie的Canary发布和流量镜像等高级特性。性能优化方面,建议启用HTTP/2协议并调整keepalive参数至keepalive_requests 1000,提升长连接复用率。

7. 最佳实践与未来演进

7.1 生产环境配置检查清单

Nginx生产环境配置需涵盖核心功能模块与安全策略,以下为关键检查项:

  1. 反向代理基础配置
    确保proxy_pass指向正确的后端服务器组,并配置必要的头信息转发:

    location / {proxy_pass http://backend_servers;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指令确保后端服务器获取客户端真实IP和协议信息。

  2. 负载均衡健康检查
    Upstream模块需配置max_failsfail_timeout参数,例如:

    upstream backend_servers {server backend1.example.com:8080 max_fails=2 fail_timeout=30s;server backend2.example.com:8080 weight=3;
    }
    

    权重(weight)和故障检测参数可提升服务可用性。

  3. 缓存策略验证
    静态资源应启用强缓存,动态内容需设置合理的过期时间:

    location ~* \.(jpg|css|js)$ {expires 30d;add_header Cache-Control "public, no-transform";
    }
    

    动态内容缓存需结合proxy_cache_valid按状态码差异化配置。

7.2 版本升级与兼容性考量

  1. 协议支持
    升级至Nginx 1.21+版本可默认启用TLSv1.3,需在SSL配置中明确声明:

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256';
    

    此配置提升加密强度同时保持向后兼容。

  2. 模块兼容性
    第三方模块如ngx_cache_purge需验证与主版本兼容性。例如,清除缓存需匹配proxy_cache_path定义的zone名称:

    location ~ /purge(/.*) {proxy_cache_purge cache_one $host$1$is_args$args;
    }
    

    若版本不兼容可能导致缓存清理失效。

  3. 配置迁移
    旧版worker_connections参数若超过Linux系统ulimit -n限制,需同步调整系统级文件描述符限制。

7.3 云原生环境下的适配方案

  1. 动态服务发现
    在Kubernetes环境中,通过DNS解析实现后端服务自动发现:

    resolver kube-dns.kube-system.svc.cluster.local valid=10s;
    upstream k8s_services {server service-1.namespace.svc.cluster.local resolve;server service-2.namespace.svc.cluster.local resolve;
    }
    

    resolver指令确保Pod IP变化时及时更新。

  2. Sidecar代理集成
    与Istio等Service Mesh集成时,需关闭Nginx的负载均衡功能以避免双重代理:

    proxy_pass http://localhost:15001;
    proxy_redirect off;
    proxy_buffering off;
    

    此配置将流量控制权移交至Sidecar。

  3. 弹性伸缩支持
    配置共享内存区域(keys_zone)时需预留扩容空间:

    proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=shared_cache:100m max_size=10G;
    

    内存区域大小应随Pod副本数线性增长。

7.4 性能基准测试方法论

  1. 压力测试工具配置
    使用wrk模拟高并发请求,重点监控连接成功率与错误率:

    wrk -t12 -c400 -d30s http://example.com --latency
    

    线程数(-t)应匹配Nginx的worker_processes设置。

  2. 关键指标采集
    通过stub_status模块获取实时性能数据:

    location /nginx_status {stub_status on;access_log off;allow 127.0.0.1;deny all;
    }
    

    输出包含Active connectionsRequests per second等核心指标。

  3. 瓶颈分析维度

    • CPU密集型:检查worker_cpu_affinity绑定是否均衡
    • I/O密集型:验证sendfileaio指令启用状态
    • 内存瓶颈:监控keys_zone内存使用率

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/95616.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/95616.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第2节 如何计算神经网络的参数:AI入门核心逻辑详解

🎯 核心目标:找到最佳w和b! 上期咱们聊了神经网络就是复杂的"线性变换+激活函数套娃",今天的重头戏就是:怎么算出让模型完美拟合数据的w(权重)和b(偏置)!先从最简单的线性函数说起,一步步揭开神秘面纱 那么如何计算w和b呢?首先明确我们需要的w和b能够让…

AutoSar AP平台功能组并行运行原理

在 AUTOSAR Adaptive Platform(AP)中,同一个机器上可以同时运行多个功能组(Function Groups),即使是在单核CPU环境下。其调度机制与进程调度既相似又存在关键差异,具体实现如下:功能…

linux服务器查看某个服务启动,运行的时间

一 查看服务启动运行时间1.1 查看启动时间查看启动时间&#xff08;精确到秒&#xff09;&#xff1a;ps -p <PID> -o lstart例子如下&#xff1a;ps -p 1234 -o lstart1.2 查询运行时长ps -p <PID> -o etimeps -p 1234 -o etime1.3 总结

【JS 性能】前端性能优化基石:深入理解防抖(Debounce)与节流(Throttle)

【JS 性能】前端性能优化基石&#xff1a;深入理解防抖&#xff08;Debounce&#xff09;与节流&#xff08;Throttle&#xff09; 所属专栏&#xff1a; 《前端小技巧集合&#xff1a;让你的代码更优雅高效》 上一篇&#xff1a; 【JS 语法】代码整洁之道&#xff1a;解构赋值…

线性代数 · 直观理解矩阵 | 空间变换 / 特征值 / 特征向量

注&#xff1a;本文为 “线性代数 直观理解矩阵” 相关合辑。 英文引文&#xff0c;机翻未校。 如有内容异常&#xff0c;请看原文。 Understanding matrices intuitively, part 1 直观理解矩阵&#xff08;第一部分&#xff09; 333 March 201120112011 William Gould Intr…

设计模式基础概念(行为模式):策略模式

概述 策略模式是一种行为设计模式&#xff0c; 它能让你定义一系列算法&#xff0c; 并将每种算法分别放入独立的类中&#xff0c; 以使算法的对象能够相互替换。 主要目的是通过定义相似的算法&#xff0c;替换if else 语句写法&#xff0c;并且可以随时相互替换 结构示例 策略…

功能组和功能组状态的概念关系和区别

在 AUTOSAR Adaptive Platform 中&#xff0c;功能组&#xff08;Function Group&#xff0c;FG&#xff09; 和 功能组状态&#xff08;Function Group State&#xff09; 是状态管理&#xff08;SM&#xff09;的核心概念&#xff0c;二者构成静态逻辑单元与动态行为模式的协…

力扣326:3的幂

力扣326:3的幂题目思路代码题目 给定一个整数&#xff0c;写一个函数来判断它是否是 3 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 整数 n 是 3 的幂次方需满足&#xff1a;存在整数 x 使得 n 3^x 思路 想要是三的幂次方的话将这个…

前瞻性技术驱动,枫清科技助力制造企业借助大模型完成生产力转化

麦肯锡于近期发布的《技术趋势展望2025》更清晰地定义了AI的角色与发展方向。报告在不止一个章节总结了基础模型加速小型化的趋势&#xff0c;多模态融合成为主流&#xff1a;企业的模型利用从追求“大而全”转向“小而精”&#xff0c;高效专用小模型成本降低90%的同时保持性能…

如何远程连接云服务器上mysql

一&#xff1a;使用系统命令查看端口占用# 查看MySQL进程及其端口sudo netstat -tlnp | grep mysql# 或者使用ss命令sudo ss -tlnp | grep mysql# 查看3306端口&#xff08;MySQL默认端口&#xff09;sudo netstat -tlnp | grep 3306出现如下信息&#xff0c;说明端口3306[root…

今日分享:C++模板(全详解)

&#x1f60e;【博客主页&#xff1a;你最爱的小傻瓜】&#x1f60e; &#x1f914;【本文内容&#xff1a;C模板 &#x1f60d; 】&#x1f914; -------------------------------------------------------------------------------------------------------------------…

ramdisk内存虚拟盘(一)——前世今生

1990 年代&#xff1a;前因——“硬盘太慢、驱动太多” 背景&#xff1a;早期 Linux 根文件系统要么在软盘、要么在 IDE 硬盘&#xff0c;内核把对应的软盘/IDE 驱动编进去即可顺利挂载。矛盾出现&#xff1a;随着 SCSI、PCMCIA、USB、RAID 控制器等百花齐放&#xff0c;如果把…

ETH持续上涨推动DEX热潮,交易活跃度飙升的XBIT表现强势出圈

BOSS Wallet 8月15日讯&#xff0c;随着ETH价格在过去24小时内强势拉升至4300美元&#xff0c;整个加密市场再度掀起涨势狂潮&#xff0c;链上交易活跃度空前高涨。其中&#xff0c;去中心化交易所平台迅速成为市场焦点&#xff0c;其平台活跃度与交易量双双上涨&#xff0c;吸…

Stand-In - 轻量级人物一致性视频生成 高保真视频人脸交换 ComfyUI工作流 支持50系显卡 一键整合包下载

Stand-In 是一个轻量级、即插即用的身份保护视频生成框架&#xff0c;只需要上传一张人物照片&#xff0c;加上一段提示词&#xff0c;即可生成高度一致性的高保真人物视频&#xff0c;人脸相似度和自然都几乎达到100%还原水平。 Stand-In 能把任何一张人脸&#xff08;甚至动漫…

vue3相关基础

1、ref和reactive的区别两者都是响应式数据的声明。Reactive只适用于非基本数据类型&#xff0c;如对象&#xff0c;数组等。而ref是兼容适用于reactive的的数据类型的以及其他数据&#xff0c;灵活性较高。ref声明的变量取值时需要.value。在<template></template>…

云手机存储和本地存储的区别

云手机存储通常指云存储&#xff0c;即数据存储在云端服务器&#xff0c;本地存储则是将数据存储在用户设备硬件中&#xff0c;主要区别体现在存储位置、访问方式、依赖条件等多个方面&#xff0c;具体如下&#xff1a;本地存储主要是将数据存储在用户自有设备的物理硬件中&…

【科研绘图系列】R语言绘制三维曲线图

文章目录 介绍 加载R包 数据下载 导入数据 数据预处理 画图 系统信息 参考 介绍 【科研绘图系列】R语言绘制三维曲线图 加载R包 library(tidyverse) library(ggsignif) library(RColorBrewer) library(dplyr) library(reshape2) library(grid

python常用包

以下按类别列举10个常用Python包&#xff0c;并以一句话概括其核心作用&#xff1a; 一、数据分析与科学计算 NumPy&#xff1a;提供高性能多维数组及数学运算&#xff0c;是数值计算的基础库。Pandas&#xff1a;通过DataFrame结构实现高效表格数据清洗、分析与处理。SciPy&am…

“ 船新版本 ”

在 GeeLark 最新版本中&#xff0c;增强了 AIGC 生成能力以及 AI 协助自定义任务开发功能&#xff0c;给用户优化构建从内容生产到运营自动化的完整技术链&#xff0c;为跨境电商及企业用户提供更完善的智能化解决方案&#xff0c;效率翻倍轻松出海。 AIGC 接入 MiniMax-Hailuo…

力扣 —— 二分查找

搜索插入位置 35. 搜索插入位置 - 力扣&#xff08;LeetCode&#xff09; 算法思想&#xff1a; class Solution(object):def searchInsert(self, nums, target):left0 rightlen(nums)-1while left < right :mid (left right) // 2if nums[mid] < target:left mid 1…