Python项目部署之Gunicorn知识详解

news2026/4/27 20:38:50
1. 引言在 Python Web 开发的世界里将开发好的应用部署到生产环境是一个至关重要的环节。我们常用的开发框架如 Flask、Django 都内置了简单的 WSGI 服务器但这些服务器仅适用于开发阶段因为它们性能低下、安全性不足且无法处理并发请求。GunicornGreen Unicorn应运而生它是一个用于 UNIX 系统的 Python WSGI HTTP 服务器广泛用于生产环境。它的设计目标是简单、稳定、高效能够帮助你轻松地将 Python Web 应用部署到生产环境。本教程将带你全面了解 Gunicorn从基础概念到高级调优帮助你成为一名真正的 Gunicorn 专家。2. Gunicorn 简介Gunicorn 是一个pre-fork的 WSGI 服务器。所谓 pre-fork指的是主进程Master在启动时会预先创建多个工作进程Worker这些工作进程负责处理实际的 HTTP 请求。这种模型具有以下优点稳定性如果一个工作进程崩溃主进程会重新启动一个新的工作进程不影响整体服务。并发处理多进程可以充分利用多核 CPU处理并发请求。兼容性完全兼容 WSGI 规范可以与任何 WSGI 应用Flask、Django、Pyramid 等无缝集成。Gunicorn 的设计哲学是“简单”它只专注于成为一个高效的 WSGI 服务器将静态文件处理、负载均衡等交给更专业的工具如 Nginx来完成。3. 核心概念3.1 WSGIWSGIWeb Server Gateway Interface是 Python 定义的一套 Web 服务器和 Web 应用之间的接口规范。它允许应用和服务器之间解耦使得同一个应用可以运行在任何 WSGI 兼容的服务器上比如 Gunicorn、uWSGI、Waitress 等。一个简单的 WSGI 应用是一个可调用对象函数或类接收两个参数environ, start_response并返回一个可迭代对象作为响应体。defsimple_app(environ,start_response):status200 OKheaders[(Content-type,text/plain)]start_response(status,headers)return[bHello, World!\n]Gunicorn 实现了 WSGI 服务器端负责将 HTTP 请求转换为 WSGI 调用并将应用的响应转换回 HTTP 响应。3.2 Pre-fork 模型Gunicorn 采用经典的 pre-fork 模型结构如下Master 进程负责管理 Worker 进程监听端口接收连接然后将连接分发给 Worker。它不处理任何请求仅负责监控和协调。Worker 进程实际处理请求的进程。每个 Worker 独立运行互不干扰它们可以是同步的或异步的。当 Master 启动时它会根据配置 fork 出指定数量的 Worker。Worker 会继承 Master 监听的 socket 文件描述符然后各自 accept 连接并处理请求。这种模型简单而高效广泛用于生产环境。3.3 工作模式Worker TypesGunicorn 支持多种工作模式通过worker-class参数指定。不同的模式决定了 Worker 如何处理请求。同步sync默认模式。每个 Worker 一次只能处理一个请求请求按顺序处理。适合 CPU 密集型应用或者应用本身已支持异步如 FastAPI、Tornado。异步async基于 Gevent 或 Eventlet 的异步 Worker可以并发处理多个请求适合 I/O 密集型应用如等待数据库查询、外部 API 调用。tornado使用 Tornado 框架的 IOLoop。asyncio使用 Python 3 内置的 asyncio 库适合基于 async/await 的应用如 FastAPI、aiohttp。选择合适的 Worker 类型对性能至关重要我们将在后续章节详细讨论。4. 安装与基础使用4.1 安装Gunicorn 可以通过 pip 轻松安装pipinstallgunicorn如果需要使用异步 Worker还需安装对应的依赖# 对于 geventpipinstallgunicorn[gevent]# 对于 eventletpipinstallgunicorn[eventlet]4.2 基础使用假设你有一个 Flask 应用app.py# app.pyfromflaskimportFlask appFlask(__name__)app.route(/)defhello():returnHello, Gunicorn!你可以通过以下命令启动 Gunicorngunicorn app:app这里app:app的含义是模块app中的 WSGI 应用变量app。Gunicorn 会查找该变量作为应用入口。默认情况下Gunicorn 会监听127.0.0.1:8000启动一个 Worker单进程。你可以通过浏览器访问http://127.0.0.1:8000查看效果。4.3 常用命令行选项Gunicorn 提供了丰富的命令行选项常用的有-w或--workers指定 Worker 进程的数量。通常建议设置为2 * CPU核心数 1。-b或--bind绑定地址和端口例如-b 0.0.0.0:8080。-k或--worker-class指定工作模式例如-k gevent。--timeout请求超时时间秒默认为 30 秒。--daemon以守护进程模式运行。--pidPID 文件路径。--access-logfile访问日志文件路径。--error-logfile错误日志文件路径。示例gunicorn-w4-b0.0.0.0:8000 app:app5. 配置详解Gunicorn 的配置可以通过三种方式指定命令行参数、环境变量、配置文件。推荐使用配置文件因为它更清晰、易于版本控制。5.1 配置文件配置文件是一个 Python 文件里面定义了变量名与配置选项对应。例如创建一个gunicorn.conf.py# gunicorn.conf.pybind0.0.0.0:8000workers4worker_classsynctimeout30accesslog./logs/access.logerrorlog./logs/error.logloglevelinfopidfile./gunicorn.piddaemonTrue# 守护进程然后启动gunicorn-cgunicorn.conf.py app:app5.2 常用配置选项详解核心选项bind监听的地址和端口可指定多个如[127.0.0.1:8000, unix:/tmp/gunicorn.sock]。workersWorker 进程数。公式workers 2 * CPU核心数 1是一个不错的起点。worker_class工作模式可选值sync默认、gevent、eventlet、tornado、gthread、asyncio需要额外库。threads对于gthread模式指定每个 Worker 的线程数。如果使用多线程Worker 数量可以适当减少。并发相关worker_connections对于异步 Workergevent/eventlet最大并发连接数默认 1000。max_requests每个 Worker 在重启前处理的最大请求数。可防止内存泄漏默认 0无限制。max_requests_jitter在max_requests基础上增加随机抖动避免所有 Worker 同时重启。keepaliveHTTP 长连接保持时间秒默认 2。对于静态资源服务器可适当增大。超时设置timeoutWorker 处理请求的超时时间超过该时间 Worker 会被强制重启。默认 30。graceful_timeoutWorker 收到重启信号后等待完成当前请求的时间默认 30。keepalive如上。日志与调试accesslog访问日志文件路径-表示输出到 stdout。errorlog错误日志文件路径。loglevel日志级别debug、info、warning、error、critical。capture_output是否将 stdout/stderr 重定向到错误日志默认 False。进程管理pidfilePID 文件路径。daemon是否以守护进程运行。user/groupWorker 进程运行的用户和组。umask文件权限掩码。SSL 支持Gunicorn 可以原生支持 SSL但通常建议由 Nginx 处理keyfile/path/to/key.pemcertfile/path/to/cert.pem5.3 环境变量Gunicorn 也支持通过环境变量配置格式为GUNICORN_CMD_ARGS例如exportGUNICORN_CMD_ARGS--bind0.0.0.0:8080 --workers4gunicorn app:app优先级命令行参数 环境变量 配置文件。6. 工作模式深入选择合适的 Worker 类型是性能优化的关键。下面深入分析各种工作模式。6.1 Sync Workers同步默认模式。每个 Worker 进程一次只能处理一个请求请求顺序执行。如果某个请求被阻塞如等待 I/O该 Worker 无法处理其他请求因此需要多个 Worker 来并发处理请求。适用场景CPU 密集型应用计算时间长但 I/O 少。应用本身已经是异步如 FastAPI由应用处理并发Gunicorn 只作为网关。应用简单并发要求不高。优点简单、稳定、资源消耗低。缺点无法处理长时间阻塞的 I/O 操作容易导致 Worker 耗尽。6.2 Async Workers异步Gunicorn 支持基于 Gevent 和 Eventlet 的异步 Worker。它们通过协程greenlet实现并发可以在一个 Worker 内同时处理多个请求。当一个请求等待 I/O如数据库查询、外部 API时Worker 会自动切换到其他请求从而大大提高 I/O 密集型应用的并发能力。安装pipinstallgunicorn[gevent]# 或 gunicorn[eventlet]配置worker_classgevent# 或 eventletworker_connections1000# 最大并发连接数适用场景I/O 密集型应用大量数据库访问、HTTP 请求。长连接、WebSocket。并发要求高但代码未使用异步语法asyncio。注意使用异步 Worker 时你的应用代码必须是非阻塞的否则协程无法切换。如果代码中使用了阻塞的库如requests需要替换为异步版本如aiohttp或使用monkey_patch进行猴子补丁。Gevent 会自动对标准库进行猴子补丁但有时需要显式调用fromgeventimportmonkey monkey.patch_all()确保补丁在应用导入之前执行。可以在 Gunicorn 配置中通过preload_app和钩子实现。6.3 Asyncio WorkersPython 3.4 引入了 asyncioGunicorn 也提供了基于 asyncio 的 Workerworker_class asyncio需要安装gunicorn[asyncio]。它使用asyncio事件循环处理请求适合 FastAPI、aiohttp 等原生支持 asyncio 的应用。配置worker_classasyncio适用场景使用 async/await 语法的现代 Python Web 框架FastAPI、aiohttp、Sanic 等。注意目前 asyncio Worker 仍处于试验阶段生产环境需谨慎。6.4 gthread WorkersGunicorn 也支持多线程 Workerworker_class gthread。它与同步模式类似但每个 Worker 内部使用多个线程处理请求线程之间共享内存。配置worker_classgthreadthreads4# 每个 Worker 的线程数workers2# 可以适当减少 Worker 数量适用场景应用存在阻塞操作但不想引入 gevent 的复杂性。共享资源如数据库连接的线程安全可控。优点线程比进程轻量内存占用小。缺点受限于 Python GILCPU 密集型任务无法并行。6.5 选择指南I/O 密集型代码同步选择gevent或eventlet。I/O 密集型代码异步async/await选择asyncio。CPU 密集型选择sync增加 Worker 数量。混合型不想引入协程选择gthread适当调整线程数。7. 性能调优7.1 Worker 数量的确定Worker 数量并非越多越好过多会导致上下文切换开销和内存压力。常见公式同步syncworkers (2 * CPU核心数) 1异步gevent/eventletworkers CPU核心数每个 Worker 可处理大量并发连接gthreadworkers CPU核心数threads根据 I/O 等待时间调整通常 4-8 之间。可以使用multiprocessing.cpu_count()获取 CPU 核心数在配置文件中动态计算importmultiprocessing workersmultiprocessing.cpu_count()*217.2 并发连接数对于异步 Workerworker_connections决定了每个 Worker 可以同时处理的连接数。默认 1000如果你的应用每个请求处理时间较长可能需要降低该值避免内存溢出。7.3 超时设置timeout合理设置超时避免慢请求长期占用 Worker。如果应用中有长时间运行的任务如报表生成考虑将其异步化或增加超时时间。graceful_timeout平滑重启时给 Worker 的缓冲时间确保现有请求完成。7.4 内存管理max_requests每个 Worker 处理一定请求后自动重启防止内存泄漏。建议设置 1000-10000 之间的值并配合max_requests_jitter避免同时重启。preload_app是否在启动 Master 时预加载应用代码。预加载可以减少内存占用共享只读内存但可能导致代码修改后重启变慢。通常建议生产环境开启preload_app True。7.5 日志优化生产环境中将访问日志和错误日志输出到文件并配置 logrotate 进行轮转。Gunicorn 支持直接使用 Python 的 logging 配置但通常通过accesslog和errorlog即可。关闭不必要的日志输出accesslog None或errorlog None。7.6 系统调优ulimit增大文件描述符限制因为每个连接占用一个文件描述符。在 systemd 或 supervisor 中设置limitNOFILE。内核参数调整 net.core.somaxconn、net.ipv4.tcp_max_syn_backlog 等提高连接队列长度。使用 Nginx 作为反向代理处理静态文件、SSL 终结、负载均衡、缓冲等让 Gunicorn 专注于动态内容。8. 部署实践8.1 与 Nginx 结合Nginx 作为反向代理处理静态文件、SSL、负载均衡、请求缓冲等Gunicorn 只处理动态请求。典型配置如下Nginx 配置部分upstream app_server { server 127.0.0.1:8000 fail_timeout0; } server { listen 80; server_name example.com; location /static/ { alias /path/to/static/; } location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_redirect off; proxy_pass http://app_server; } }Gunicorn 配置bind127.0.0.1:8000workers4# 其他配置...注意Gunicorn 应监听内网地址127.0.0.1不要直接暴露公网。同时Nginx 会传递客户端真实 IP 到X-Forwarded-For头Gunicorn 可以通过proxy_allow_ips配置信任代理。8.2 使用 Supervisor 管理安装Supervisoryum install -y supervisor确认安装后的目录结构在 CentOS 上Supervisor 的主配置文件是 /etc/supervisord.conf而自定义服务配置文件通常放在 /etc/supervisord.d/ 目录下注意是 supervisord.d不是 supervisor/conf.d。你可以检查一下ls /etc/supervisord.d/如果该目录不存在可以手动创建mkdir -p /etc/supervisord.d/创建配置文件Supervisor 可以监控 Gunicorn 进程在崩溃时自动重启。安装 Supervisor 后创建配置文件/etc/supervisor.d/your_project.ini[program:your_project] command/path/to/venv/bin/gunicorn -c /path/to/gunicorn.conf.py app:app directory/path/to/project userroot autostarttrue autorestarttrue stopasgrouptrue killasgrouptrue stdout_logfile/var/log/myapp/gunicorn.log stderr_logfile/var/log/myapp/gunicorn.err environmentLANGen_US.UTF-8,LC_ALLen_US.UTF-8然后启动systemctl start supervisord # 启动 Supervisor 服务 systemctl enable supervisord # 设置开机自启 # 重新读取配置并启动程序 supervisorctl reread supervisorctl update supervisorctl start your_project8.3 使用 Systemd管理对于现代 Linux 发行版可以使用 systemd 管理。创建/etc/systemd/system/your_project.serviceeg1:[Unit] Descriptiongunicorn daemon for myapp Afternetwork.target [Service] Userroot Grouproot WorkingDirectory/path/to/project EnvironmentPATH/path/to/venv/bin ExecStart/path/to/venv/bin/gunicorn -c /path/to/gunicorn.conf.py app:app Restarton-failure [Install] WantedBymulti-user.targeteg2:[Unit] DescriptionPhoto Resize Gunicorn Service Afternetwork.target [Service] Userroot Grouproot WorkingDirectory/var/www/photo-resize ExecStart/var/www/photo-resize/venv/bin/gunicorn -w 4 -b 127.0.0.1:5000 app:app Restartalways [Install] WantedBymulti-user.target然后启用systemctl daemon-reload systemctl start your_project systemctl enable your_project systemctl status your_project 后期修改重启 systemctl restart your_project 查看项目运行状态 systemctl status goal_tracker8.4 Docker 部署Docker 是现代化的部署方式。编写 DockerfileFROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt gunicorn COPY . . CMD [gunicorn, -c, gunicorn.conf.py, app:app]然后构建镜像并运行。注意在 Docker 中Gunicorn 应该以非 root 用户运行并监听容器端口。9. 高级主题9.1 钩子函数HooksGunicorn 提供了一系列钩子函数允许你在特定事件发生时执行自定义代码。钩子在配置文件中定义。常用钩子on_starting(server)Master 进程启动时调用。on_reload(server)收到 SIGHUP 信号时调用。when_ready(server)所有 Worker 启动完成服务准备好接收请求时调用。pre_fork(server, worker)Master 即将 fork 新 Worker 时调用。post_fork(server, worker)Worker 进程 fork 完成后调用。pre_exec(server, worker)Worker 即将执行新代码时调用。worker_int(worker)Worker 收到 SIGINT 或 SIGQUIT 时调用。worker_abort(worker)Worker 超时被中止时调用。示例在 Worker 启动时初始化数据库连接池。defpost_fork(server,worker):frommyappimportdb db.init_pool()9.2 信号处理Gunicorn 响应多种 UNIX 信号用于动态控制SIGINT / SIGTERM立即关闭不等待 Worker 完成。SIGQUIT优雅关闭等待 Worker 处理完当前请求。SIGHUP重新加载配置启动新 Worker平滑停止旧 Worker热更新。SIGTTIN增加一个 Worker 进程。SIGTTOU减少一个 Worker 进程。SIGUSR2重新打开日志文件配合 logrotate。利用这些信号可以实现不停服部署、动态扩容缩容等操作。9.3 热更新Gunicorn 支持通过发送SIGHUP信号实现平滑重启热更新。当 Master 收到 SIGHUP 时它会重新加载配置文件。启动新的 Worker 进程。等待旧 Worker 处理完当前请求受graceful_timeout限制后关闭旧 Worker。这样可以在不中断服务的情况下更新应用代码。通常配合部署脚本使用。9.4 使用 preload_app 和共享内存当设置preload_app True时Gunicorn 在 Master 进程启动时加载应用代码然后 fork Worker。这样应用代码在内存中只有一份拷贝写时复制可以显著减少内存占用尤其适合大应用。但注意如果应用在导入时创建了数据库连接等资源这些资源会被所有 Worker 共享可能引发问题。因此需确保应用导入时不执行有副作用的操作或者将连接池初始化放在钩子中。10. 常见问题与解决方案10.1 502 Bad GatewayNginx可能原因Gunicorn 未启动或崩溃。Gunicorn 监听地址与 Nginx proxy_pass 不一致。超时时间过短请求被 Gunicorn 或 Nginx 中断。检查 Gunicorn 日志确认进程状态调整timeout和keepalive参数。10.2 连接数过高导致拒绝服务现象请求失败[ERROR] Worker (pid:1234) was sent SIGKILL。可能原因Worker 超时被 Master 杀死。检查是否有慢请求增加timeout或优化应用。文件描述符不足。调整系统 ulimit。内存不足Worker 被 OOM Killer 杀死。降低并发数或增加内存。10.3 异步 Worker 不生效现象请求依然串行处理。可能原因忘记安装 gevent/eventlet 依赖。未正确设置worker_class。应用中使用了阻塞的同步库未打猴子补丁。确保在应用启动前调用monkey.patch_all()。10.4 日志轮转Gunicorn 本身不支持自动日志轮转但可以通过USR2信号实现。配合 logrotate配置如下/etc/logrotate.d/gunicorn/path/to/logs/access.log /path/to/logs/error.log { daily missingok rotate 30 compress delaycompress notifempty create 0640 www-data www-data sharedscripts postrotate kill -USR2 cat /path/to/gunicorn.pid endscript }11. 总结Gunicorn 作为 Python 世界中最流行的 WSGI 服务器以其简单、稳定、高效赢得了广泛认可。通过本教程你应该已经掌握了Gunicorn 的核心概念和架构安装和基础使用方法详细配置选项及其含义不同工作模式的选择与调优生产环境部署的最佳实践高级功能和常见问题排查最后记住 Gunicorn 不是银弹它擅长处理动态 Web 请求但静态文件、SSL 终结等任务最好交给 Nginx 处理。合理结合其他工具才能构建一个健壮、高性能的 Web 服务。希望本教程能帮助你更好地使用 Gunicorn为你的 Python Web 应用保驾护航。

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#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> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…