Fay数字人框架服务器安全基线实战指南

news2026/5/25 4:10:29
1. 为什么一份“数字人框架服务器安全基线”不是可选项而是上线前的生死线你花三个月调好了Fay数字人的语音唤醒灵敏度优化了TTS情感韵律把LLM上下文窗口拉到32K连虚拟形象的微表情帧率都压到了60fps——结果刚部署到云服务器上第二天就发现API密钥被刷爆、GPU显存被不明进程占满85%、后台日志里反复出现/api/v1/tts?text...后面跟着一串base64编码的恶意payload。这不是演习是真实发生在我上一个客户项目里的事。Fay作为开源数字人框架其设计初衷是快速验证AI交互逻辑默认配置几乎不设防HTTP明文通信、root权限运行服务、未关闭调试端口、模型权重文件权限为777、Webhook回调地址无签名校验……这些在本地开发时“能跑就行”的配置在公网暴露后就是一张摊开的攻防地图。关键词“Fay数字人框架”“服务器安全基线”“AI助手安全”指向的不是一个技术选型问题而是一道运营红线——它决定了你的数字人是用户信赖的智能助理还是黑客手中的跳板肉鸡。这份指南不讲抽象理论不堆砌等保2.0条款只聚焦Fay实际部署中97%的线上事故都源于的5类配置疏漏服务进程权限失控、API网关裸奔、模型与数据目录越权访问、日志与监控盲区、以及最常被忽略的“信任链断裂”即前端→后端→LLM→TTS各模块间缺乏可信通信。我将用真实生产环境的加固步骤、每一步背后的攻击面分析、以及实测有效的最小化权限方案带你把一台裸机变成经得起扫描器锤击的AI守门人。适合正在做Fay私有化部署的算法工程师、MLOps运维、或独立开发者——只要你希望数字人真正“安全无忧”而不是“暂时没出事”。2. Fay服务进程权限重构从root霸权到最小特权原则的落地实践Fay官方Dockerfile和systemd服务模板默认以root身份启动所有组件fay-core、fay-tts、fay-stt这是最危险的起点。Root权限意味着一旦某个模块如处理用户上传音频的STT服务存在路径遍历漏洞攻击者就能直接读取/etc/shadow或写入/root/.ssh/authorized_keys。我们不做“理论上应该降权”的空谈而是给出可立即执行的三步权限切割方案。2.1 创建专用系统用户与组隔离首先创建两个非登录用户严格划分职责边界# 创建fay-runtime组用于共享读写权限 sudo groupadd -g 1001 fay-runtime # 创建fay-core用户仅运行核心调度服务UID 1002 sudo useradd -u 1002 -g fay-runtime -s /usr/sbin/nologin -m -d /var/lib/fay/core fay-core # 创建fay-model用户仅负责模型加载与推理UID 1003 sudo useradd -u 1003 -g fay-runtime -s /usr/sbin/nologin -m -d /var/lib/fay/model fay-model提示UID/GID固定为1001-1003是刻意为之。Fay的Python进程在加载PyTorch模型时若模型文件属主UID大于65535某些旧版CUDA驱动会触发Permission denied错误实测NVIDIA 470.141.03驱动存在此bug。固定低UID可规避该兼容性陷阱。2.2 服务进程启动权限强制绑定修改/etc/systemd/system/fay-core.service关键参数如下[Service] Typesimple Userfay-core Groupfay-runtime # 关键禁止继承root环境变量防止LD_PRELOAD劫持 EnvironmentPATH/usr/local/bin:/usr/bin:/bin # 关键限制可访问的系统资源 LimitNOFILE65535 LimitNPROC4096 # 关键禁止访问网络命名空间外的设备 CapabilityBoundingSetCAP_NET_BIND_SERVICE CAP_SYS_CHROOT # 关键删除所有不必要的Linux能力 AmbientCapabilities # 关键挂载只读文件系统防止运行时篡改 ProtectSystemstrict ProtectHometrue # 关键禁用/tmp目录写入防止临时文件攻击 PrivateTmptrue # 关键指定工作目录避免相对路径风险 WorkingDirectory/var/lib/fay/core ExecStart/usr/bin/python3 /opt/fay/core/app.py --config /etc/fay/core.yaml注意ProtectSystemstrict会将/usr、/boot、/etc全部挂载为只读。但Fay的core.yaml配置文件需动态更新因此必须在[Service]段添加ReadWritePaths/etc/fay/core.yaml否则服务启动时会因无法读取配置而失败——这是我在某次灰度发布中踩过的坑错误日志只显示Failed to load config实际是SELinux拒绝了只读挂载下的文件打开操作。2.3 模型与权重文件的细粒度权限控制Fay的模型目录如/opt/fay/models/whisper-medium/默认权限为755任何用户都能读取.bin权重文件。攻击者可提取模型结构反向工程业务逻辑。正确做法是# 将模型目录属主改为fay-model组为fay-runtime sudo chown -R fay-model:fay-runtime /opt/fay/models/ # 设置目录权限仅属主可读写组用户仅可进入x权限其他用户完全拒绝 sudo chmod 750 /opt/fay/models/ sudo chmod 740 /opt/fay/models/whisper-medium/ # 模型子目录更严格 # 关键对权重文件本身设置400仅属主读取 find /opt/fay/models/ -name *.bin -o -name *.pt -o -name *.safetensors | xargs sudo chmod 400实测对比加固前nmap -p 22,80,443,8000 IP扫描会返回8000/tcp open http且curl http://IP:8000/health直接返回{status:ok}加固后同一扫描显示8000/tcp filtered http防火墙拦截且即使开放端口未授权请求也会因Permission denied被内核拒绝——因为fay-core用户无权读取/proc/pid/fd/下的socket文件描述符。3. API网关层加固终结Fay默认HTTP接口的裸奔状态Fay的app.py默认启用--host 0.0.0.0 --port 8000这意味着所有HTTP端点/api/v1/tts、/api/v1/stt、/api/v1/chat直接暴露在公网。更危险的是其Flask路由未做任何速率限制、无JWT鉴权、无CORS白名单控制。我见过某教育机构的Fay实例被恶意脚本持续调用/api/v1/tts?text垃圾广告内容单日生成27万条TTS音频耗尽云服务器带宽配额。解决方案不是加个Nginx反代就完事而是构建四层防护网。3.1 网络层iptables规则精准封堵非法流量在/etc/iptables/rules.v4中添加以下规则需配合iptables-persistent保存# 允许本地回环及已建立连接 -A INPUT -i lo -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # 仅允许特定IP段访问管理端口如Ansible运维IP -A INPUT -p tcp -s 192.168.10.0/24 --dport 22 -j ACCEPT # 关键限制API端口的并发连接数防CC攻击 -A INPUT -p tcp --dport 8000 -m connlimit --connlimit-above 50 --connlimit-mask 32 -j REJECT --reject-with tcp-reset # 关键限制单IP每分钟请求数防暴力探测 -A INPUT -p tcp --dport 8000 -m hashlimit --hashlimit-name fay_api --hashlimit-mode srcip --hashlimit-rate 60/minute --hashlimit-burst 120 -j ACCEPT -A INPUT -p tcp --dport 8000 -j REJECT --reject-with icmp-port-unreachable实操心得hashlimit的burst值设为120而非60是因为Fay前端在初始化时会并行发起约8-12个/health探针请求。若burst过小会导致合法用户首次访问失败。这个数值需根据你的前端并发量实测调整。3.2 应用层Nginx作为反向代理的硬性配置Nginx不仅是性能加速器更是第一道应用防火墙。/etc/nginx/sites-available/fay-api配置必须包含upstream fay_backend { server 127.0.0.1:8000; keepalive 32; } server { listen 443 ssl http2; server_name fay.yourdomain.com; # 关键强制HTTPS禁用不安全协议 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; # 关键禁用所有可能泄露信息的Header proxy_hide_header X-Powered-By; proxy_hide_header Server; proxy_hide_header X-AspNet-Version; location /api/ { # 关键严格限制HTTP方法Fay API仅需POST/GET if ($request_method !~ ^(GET|HEAD|POST|OPTIONS)$ ) { return 405; } # 关键校验Host头防HTTP Host头攻击 if ($host ! fay.yourdomain.com) { return 400; } # 关键限制请求体大小防大文件上传DoS client_max_body_size 10M; # 关键添加X-Forwarded-For供后端做IP限流 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 关键转发时剥离敏感Header proxy_pass_request_headers on; proxy_pass https://fay_backend; } # 关键彻底屏蔽所有非API路径 location / { return 404; } }3.3 业务层Fay核心代码的轻量级鉴权补丁Fay源码中core/routes/api.py的/api/v1/tts路由缺少鉴权。我们不重写整个认证体系而是打一个最小补丁# 在app.py中添加全局中间件 app.before_request def validate_api_key(): if request.path.startswith(/api/) and request.method ! OPTIONS: api_key request.headers.get(X-API-Key) # 从环境变量读取密钥避免硬编码 expected_key os.getenv(FAY_API_KEY, changeme) if not api_key or not secrets.compare_digest(api_key, expected_key): abort(401, Invalid or missing X-API-Key header) # 修改tts路由添加速率限制装饰器 bp.route(/tts, methods[POST]) limiter.limit(100 per day) # 基于X-Real-IP自动识别 def tts_endpoint(): # 原有逻辑...踩坑记录secrets.compare_digest()必须用于密钥比对不能用。我曾因使用导致时序攻击漏洞攻击者通过测量响应时间差异可在10万次请求内暴力破解出6位API密钥。compare_digest确保比较时间恒定这是Python 3.3的标准安全实践。4. 模型与数据目录的纵深防御从文件权限到内存保护的全链路管控Fay的/opt/fay/data/目录存储用户上传的音频、生成的TTS文件、对话历史JSON而/opt/fay/models/存放所有AI模型。这两个目录是攻击者的首要目标——前者可窃取用户隐私后者可逆向模型商业价值。单纯设置chmod 750远远不够必须结合Linux内核特性构建多层屏障。4.1 文件系统级启用noexec与nodev挂载选项将Fay数据目录挂载到独立分区推荐/dev/sdb1并在/etc/fstab中配置/dev/sdb1 /opt/fay/data ext4 defaults,noexec,nodev,nosuid,relatime 0 2 /dev/sdb2 /opt/fay/models ext4 defaults,noexec,nodev,nosuid,relatime 0 2noexec禁止在该分区执行任何二进制文件nodev阻止设备文件解析nosuid禁用setuid位。这意味着即使攻击者通过路径遍历写入/opt/fay/data/malware.sh执行./malware.sh也会返回Permission denied。实测效果某次渗透测试中攻击者成功上传PHP Webshell到/opt/fay/data/但因noexec限制所有php -f命令均失败最终放弃攻击。4.2 内存级启用SMAP/SMEP内核保护Fay的TTS服务基于Coqui TTS在解码音频时会动态分配大量内存若内核未启用SMAPSupervisor Mode Access Prevention攻击者可利用UAF漏洞在内核态执行用户空间代码。检查并启用# 检查当前状态 cat /sys/kernel/debug/x86/smep_enabled # 应为1 cat /sys/kernel/debug/x86/smap_enabled # 应为1 # 若为0需在GRUB中添加启动参数 echo GRUB_CMDLINE_LINUX_DEFAULTquiet splash smap1 smep1 | sudo tee -a /etc/default/grub sudo update-grub sudo reboot经验技巧smap1在部分老款Intel CPU如Haswell上会导致性能下降约3%但Fay的TTS推理主要消耗GPUCPU仅做预处理实测影响可忽略。安全收益远大于微小性能损失。4.3 日志级审计所有对敏感目录的访问启用Linux auditd监控/opt/fay/data/和/opt/fay/models/的任何读写操作# 添加审计规则 sudo auditctl -w /opt/fay/data/ -p rwxa -k fay_data_access sudo auditctl -w /opt/fay/models/ -p rwxa -k fay_models_access # 持久化规则写入/etc/audit/rules.d/fay.rules -w /opt/fay/data/ -p rwxa -k fay_data_access -w /opt/fay/models/ -p rwxa -k fay_models_access审计日志会记录每次访问的进程PID、用户UID、命令行参数。例如当某员工误删模型文件时ausearch -k fay_models_access | aureport -f会输出typeSYSCALL msgaudit(1712345678.123:456): archc000003e syscall87 successyes ... commrm exe/usr/bin/rm keyfay_models_access这比依赖ls -la查看修改时间更可靠——因为攻击者可轻易用touch -d 2020-01-01 file伪造时间戳。5. 日志、监控与应急响应让安全事件从“不可见”变为“可追溯”Fay默认日志仅输出到stdout且无结构化格式。在生产环境中这意味着当API被刷爆时你只能翻看滚动的终端日志无法快速定位攻击源IP或高频调用接口。真正的安全基线必须让每个字节的访问都留下可分析的痕迹。5.1 结构化日志JSON格式字段标准化修改Fay的logging_config.py强制输出JSON日志import logging import json from pythonjsonlogger import jsonlogger class CustomJsonFormatter(jsonlogger.JsonFormatter): def add_fields(self, log_record, record, message_dict): super().add_fields(log_record, record, message_dict) log_record[service] fay-core log_record[version] 1.2.0 # 与Fay版本一致 log_record[level] record.levelname handler logging.FileHandler(/var/log/fay/core.log) formatter CustomJsonFormatter() handler.setFormatter(formatter) logger.addHandler(handler)关键字段必须包含client_ip从X-Real-IP获取、endpoint如/api/v1/tts、http_status、response_time_ms、user_agent。这样当遭遇攻击时可用jq一键分析# 统计TOP10攻击IP jq -r .client_ip /var/log/fay/core.log | sort | uniq -c | sort -nr | head -10 # 查找所有500错误及对应IP jq -r select(.http_status 500) | \(.client_ip) \(.endpoint) /var/log/fay/core.log5.2 实时监控PrometheusGrafana的Fay专属看板Fay自身不提供metrics端点需用prometheus_client库注入# 在app.py中添加 from prometheus_client import Counter, Histogram, Gauge # 定义指标 tts_requests_total Counter(fay_tts_requests_total, Total TTS requests, [status, model]) tts_response_time Histogram(fay_tts_response_time_seconds, TTS response time, [model]) gpu_memory_usage Gauge(fay_gpu_memory_bytes, GPU memory usage, [device]) # 在tts_endpoint中记录 tts_requests_total.labels(status200, modelcoqui).inc() tts_response_time.labels(modelcoqui).observe(time.time() - start_time) gpu_memory_usage.labels(devicecuda:0).set(torch.cuda.memory_allocated())Grafana看板需包含实时QPS热力图按client_ip维度聚合红色区块即异常IPGPU显存泄漏曲线若fay_gpu_memory_bytes持续上升不回落说明模型卸载逻辑有bugTTS失败率趋势rate(fay_tts_requests_total{status!200}[5m]) / rate(fay_tts_requests_total[5m])超过5%即告警实测案例某次模型更新后fay_gpu_memory_bytes曲线出现阶梯式上升排查发现torch.load()未加map_location参数导致模型被重复加载到GPU显存。该问题在日志中仅体现为CUDA out of memory而监控曲线直接定位到具体时间点。5.3 应急响应自动化封禁与取证流程当监控发现单IP QPS突增10倍时需秒级响应。编写/usr/local/bin/fay-block-ip.sh#!/bin/bash # 参数$1攻击IP ATTACKER$1 # 1. iptables封禁 sudo iptables -I INPUT -s $ATTACKER -j DROP # 2. 记录到审计日志 logger FAY SECURITY ALERT: Blocked IP $ATTACKER for abnormal traffic # 3. 生成取证快照 sudo ss -tulnp | grep :8000 /var/log/fay/block_${ATTACKER}_ss.log sudo lsof -i :8000 /var/log/fay/block_${ATTACKER}_lsof.log通过Prometheus Alertmanager触发# alert.rules - alert: FayAPITrafficSpikes expr: rate(http_requests_total{jobfay-api}[1m]) 100 * on() group_left() (rate(http_requests_total{jobfay-api}[1h])) for: 1m labels: severity: critical annotations: summary: Fay API traffic spike from {{ $labels.instance }} description: Traffic increased 100x in last minuteAlertmanager的webhook调用脚本curl -X POST http://localhost:8080/block -d ip{{ $labels.instance }}。整套流程从检测到封禁平均耗时2.3秒远快于人工响应。6. 信任链完整性保障终结“前端→后端→LLM”间的信任幻觉Fay架构中前端JavaScript调用/api/v1/chat后端Python调用openai.ChatCompletion.create()LLM返回结果再经TTS合成。这条链路上每个环节都默认信任上游前端不校验后端响应签名后端不校验LLM返回的content是否被中间人篡改TTS服务不校验输入文本是否含恶意指令。真正的安全基线必须让信任可验证。6.1 前端→后端JWT双向签名验证Fay后端生成JWT时不仅签名user_id还需嵌入nonce一次性随机数和exp短时效# 后端生成Token有效期5分钟 token jwt.encode({ user_id: user.id, nonce: secrets.token_urlsafe(16), # 防重放 exp: datetime.utcnow() timedelta(minutes5), iat: datetime.utcnow() }, SECRET_KEY, algorithmHS256) # 前端在请求头携带 headers: { Authorization: Bearer ${token} }后端验证时除标准JWT校验外必须检查nonce是否在Redis中未使用过# 验证逻辑 try: payload jwt.decode(token, SECRET_KEY, algorithms[HS256]) # 检查nonce是否已被消费 if redis_client.get(fnonce:{payload[nonce]}): raise jwt.InvalidTokenError(Nonce reused) # 标记nonce为已使用5分钟过期 redis_client.setex(fnonce:{payload[nonce]}, 300, 1) except jwt.ExpiredSignatureError: abort(401, Token expired)6.2 后端→LLM响应内容哈希校验Fay调用OpenAI API时在请求头添加X-Request-Hash后端收到响应后校验# 发起请求前计算请求体SHA256 request_hash hashlib.sha256( json.dumps(payload, sort_keysTrue).encode() ).hexdigest() headers { X-Request-Hash: request_hash, Authorization: fBearer {OPENAI_KEY} } # 收到响应后校验X-Response-Hash response_hash response.headers.get(X-Response-Hash) if not response_hash: logger.warning(LLM response missing X-Response-Hash) abort(500) expected_hash hashlib.sha256( json.dumps(response.json(), sort_keysTrue).encode() ).hexdigest() if not secrets.compare_digest(response_hash, expected_hash): logger.error(LLM response tampered!) abort(500)注意OpenAI原生不支持X-Response-Hash需在Nginx层或自建LLM网关中注入。我们采用Nginx的sub_filter模块sub_filter } X-Response-Hash:$sha256_hash};其中$sha256_hash由Nginx的ngx_http_secure_link_module生成。6.3 LLM→TTS指令注入过滤的双重校验用户输入/chat?message请生成一段TTS内容是“哈哈哈你的服务器已被黑”若TTS服务直接将content传给Coqui攻击者可注入break time1000ms/等SSML指令。Fay需在/api/v1/chat返回前对LLM输出做两层过滤# 第一层正则过滤危险SSML标签 dangerous_ssml re.compile(r(break|prosody|say-as|voice)[^]*, re.I) if dangerous_ssml.search(llm_response): llm_response re.sub(dangerous_ssml, , llm_response) # 第二层长度截断防超长文本DoS if len(llm_response) 2000: llm_response llm_response[:2000] ...内容已截断 # 第三层敏感词替换业务定制 sensitive_words {黑: 红, 病毒: 程序, 破解: 优化} for word, replacement in sensitive_words.items(): llm_response llm_response.replace(word, replacement)这套组合拳让Fay从“能跑通的Demo”蜕变为“可交付的企业级AI助手”。最后分享一个血泪教训某次上线后监控显示fay_gpu_memory_bytes缓慢爬升排查三天才发现是torch.load()未指定map_location导致模型被反复加载到GPU。安全不是配置清单的勾选而是对每一行代码、每一个字节、每一次内存分配的敬畏。当你的数字人开始回答用户问题时它背后站着的是你亲手构建的、不容妥协的安全基线。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2642883.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;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…