从反向代理到镜像站点:构建稳定AI服务访问的技术实践

news2026/5/4 14:30:27
1. 项目概述一个开源镜像站点的诞生与价值最近在开发者圈子里一个名为“dairoot/ChatGPT-Mirror”的项目引起了我的注意。这本质上是一个开源项目旨在构建一个特定服务的镜像站点。简单来说它就像是在网络世界里为某个原本可能访问不稳定或受限的“原版服务”建立了一个本地化的、更易访问的“镜像”或“副本”。这个项目之所以能迅速获得关注核心在于它精准地切中了一个普遍痛点如何更稳定、更便捷地获取和使用某些全球性的在线服务或资源。对于开发者、研究人员乃至普通用户而言直接访问某些位于海外的服务常常会遇到网络延迟高、连接不稳定甚至完全无法访问的情况。这不仅影响工作效率更打断了连续性的学习和探索过程。“dairoot/ChatGPT-Mirror”这类项目的出现就是为了解决这个问题。它通过技术手段将服务的核心接口或前端界面“镜像”到部署者可控的服务器上用户通过访问这个镜像地址就能获得与原服务近乎一致的体验但网络质量却得到了质的提升。这个项目适合所有受网络环境困扰但又迫切需要稳定使用特定在线服务的用户。无论你是想持续进行AI对话、调用API接口进行开发还是单纯希望有一个更流畅的体验通过部署或使用这样的镜像都能显著改善现状。接下来我将从项目设计、技术实现、部署细节到运维避坑为你完整拆解如何从零开始理解和运作一个类似的镜像站点项目。2. 核心架构与设计思路拆解2.1 镜像站点的核心工作原理要理解这个项目首先要明白“镜像”在这里的技术含义。它并非简单地将整个网站静态文件拷贝下来那种方式无法处理动态交互。一个功能完整的镜像站点通常采用“反向代理”作为核心技术架构。想象一下你是一位翻译反向代理服务器你的朋友用户想向一位远在海外的专家原版服务提问但朋友外语不好或者通话线路很差。于是朋友把问题用中文告诉你发送请求到你的镜像域名你立刻用外语转述给海外专家将请求转发到原版服务的真实API地址拿到专家的外语回答后再即时翻译成中文告诉你的朋友将响应返回给用户。在这个过程中你的朋友全程只和你用中文交流感觉就像在直接和一位中文专家对话一样。这个“你”就是镜像站点的服务器。具体到技术实现项目通常会使用 Nginx 或 Caddy 这类高性能的 Web 服务器作为反向代理。它们接收用户对镜像域名如chat.yourdomain.com的访问请求然后秘密地将这个请求转发到原版服务的真实后端地址如api.openai.com最后将获取到的响应内容原样或经过必要处理返回给用户。用户浏览器感知到的始终是你在控制的域名而真正的数据交互发生在你的服务器和原版服务之间。2.2 技术选型背后的考量为什么选择反向代理方案而不是其他这背后有几层关键的考量实时性与完整性反向代理是“透传”模式用户的每一个请求都能实时抵达原版服务并获取最新响应保证了功能的完整性和数据的时效性。这对于需要实时交互的对话服务至关重要。部署与维护成本相比自建一套复杂的、需要训练大模型的AI服务反向代理的方案极其轻量。它不关心后端服务的具体业务逻辑只负责请求转发因此代码量小依赖简单部署速度快对服务器资源要求也低。灵活性与可控性在转发过程中我们可以在服务器端插入自己的逻辑。例如可以统一添加认证头Authorization Header、修改请求参数、替换响应中的特定域名解决前端资源加载问题甚至实现请求频率限制、缓存策略等。这为我们提供了极大的控制空间。规避前端复杂性原版服务的前端网页可能非常复杂涉及大量JavaScript和动态加载的资源。反向代理方案让我们无需处理这些前端的细节只需确保API接口的代理正确前端页面通常可以通过简单的HTML文件托管或同样代理来解决。在“dairoot/ChatGPT-Mirror”项目中除了核心的反向代理配置通常还会包含一个简单的前端页面。这个前端可能是一个精简版的聊天界面其唯一目的就是将其内部的API请求地址指向我们部署的镜像代理后端从而形成闭环。注意构建和使用镜像站点必须严格遵守原版服务的服务条款Terms of Service。任何未经授权的商业用途、大规模滥用或侵犯知识产权的行为都是被禁止的。此技术方案主要用于学习、研究及在合规前提下改善个人访问体验。3. 环境准备与核心工具解析3.1 服务器与域名准备工欲善其事必先利其器。部署一个稳定可用的镜像站点首先需要准备以下基础设施云服务器VPS这是镜像站点的运行载体。选择服务器时主要看三点地理位置这是影响访问速度最关键的因素。务必选择网络链路对中国大陆用户友好如香港、新加坡、日本等亚洲节点的服务器。你可以通过ping和traceroute命令测试不同供应商机房的延迟和丢包率。配置对于纯反向代理场景资源消耗很低。1核CPU、1GB内存、20GB SSD硬盘的配置如各大云厂商的入门级套餐完全足够。带宽建议选择按流量计费并确保峰值带宽不低于100Mbps以应对可能的并发访问。运营商尽量选择国际带宽充裕、对CN2 GIA等优质线路有支持的云服务商能极大提升晚高峰期间的访问稳定性。域名你需要一个属于自己的域名。这不仅是让用户访问的地址如chat.example.com更重要的是在现代Web安全规范下许多原版服务的API和前端都要求使用HTTPS协议而申请SSL证书必须绑定域名。购买可以在GoDaddy、Namecheap、阿里云国际站等平台购买。解析购买后将你的域名通过A记录解析到上述云服务器的公网IP地址。例如将chat.yourdomain.com指向你的服务器IP。3.2 核心软件栈Nginx vs Caddy反向代理的核心是Web服务器软件。主流选择是Nginx和Caddy两者各有优劣。Nginx行业标杆以高性能、高稳定性和丰富的模块化功能著称。它的配置文件功能强大且灵活但学习曲线相对陡峭尤其是需要手动配置SSL证书虽然可以通过Certbot自动化。Caddy后起之秀最大的亮点是自动HTTPS。它能够自动从Let‘s Encrypt申请并续签SSL证书几乎零配置即可开启安全的HTTPS服务。配置文件更加简洁易懂对新手友好。对于这个镜像项目如果你追求极致的性能和深度定制Nginx是专业之选。如果你希望快速部署、省去管理证书的麻烦Caddy则是更优雅的选择。考虑到项目的轻量化和快速启动目标下文将以Caddy作为示例进行详细配置因为它能让我们更专注于代理逻辑本身而非运维细节。3.3 系统环境初始化以一台新安装的 Ubuntu 22.04 LTS 服务器为例我们首先进行基础安全加固和依赖安装# 1. 更新系统包列表并升级现有软件 sudo apt update sudo apt upgrade -y # 2. 设置时区可选建议设为亚洲上海时间 sudo timedatectl set-timezone Asia/Shanghai # 3. 安装基础工具 sudo apt install -y curl wget git vim net-tools # 4. 配置防火墙UFW sudo ufw allow 22/tcp comment SSH # 务必先开放SSH端口防止锁死自己 sudo ufw allow 80/tcp comment HTTP sudo ufw allow 443/tcp comment HTTPS sudo ufw --force enable # 启用防火墙4. 详细部署步骤与配置解析4.1 安装与配置Caddy服务器Caddy的安装非常简便。我们将使用其官方提供的安装脚本# 安装Caddy sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl -1sLf https://dl.cloudsmith.io/public/caddy/stable/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg curl -1sLf https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt | sudo tee /etc/apt/sources.list.d/caddy-stable.list sudo apt update sudo apt install caddy安装完成后Caddy会作为系统服务自动运行。其核心配置文件位于/etc/caddy/Caddyfile。我们现在清空并编辑这个文件sudo vim /etc/caddy/Caddyfile将以下配置内容写入请将chat.yourdomain.com替换为你自己的域名# Caddyfile 配置 chat.yourdomain.com { # 反向代理配置将所有请求转发到 OpenAI 的 API 网关 reverse_proxy https://api.openai.com { # 设置请求头这是关键步骤 header_up Host api.openai.com header_up Connection keep-alive header_up Upgrade-Insecure-Requests 1 header_up User-Agent Mozilla/5.0 ... # 可以设置一个常见的浏览器UA # 传输层优化 transport http { tls tls_insecure_skip_verify # 仅用于测试或特定情况生产环境建议配置正确证书验证 } } # Caddy 会自动在此处处理 TLS (HTTPS)从 Let‘s Encrypt 获取并续签证书 # 无需手动配置 SSL }配置关键点解析reverse_proxy这是Caddy的反向代理指令后面跟上目标上游服务器的地址。header_up Host api.openai.com这是最至关重要的一行。它告诉Caddy在将请求转发给上游服务器时将HTTP请求头中的Host字段修改为目标服务的真实域名api.openai.com。很多云服务包括OpenAI的API网关都依赖Host头来进行路由和权限验证如果不修改请求会被拒绝。header_up用于设置向上游服务器发送的请求头。transport http定义向上游服务器发送请求时使用的传输协议。这里我们使用HTTP并启用TLS即通过HTTPS与上游通信。tls_insecure_skip_verify这个选项让Caddy跳过对上游服务器SSL证书的验证。在开发测试或上游证书是自签名等特定情况下使用。对于api.openai.com这样的知名服务其证书是有效的理论上可以移除这个选项以增强安全性。但在初期调试时加上它可以避免因证书链问题导致的连接失败。保存并退出编辑器后重载Caddy配置使其生效sudo systemctl reload caddy此时你可以通过sudo systemctl status caddy检查服务状态。如果配置正确Caddy会自动为你的域名chat.yourdomain.com申请Let‘s Encrypt的SSL证书并开启HTTPS服务。4.2 部署前端静态页面仅有后端代理还不够用户需要一个界面来交互。原版ChatGPT的网页前端非常复杂但社区有很多优秀的开源、简化版前端。我们可以直接使用它们。例如我们可以使用一个流行的、适配API代理的轻量级前端项目。通过Git克隆到服务器# 选择一个目录存放前端文件例如 /var/www/chat-ui sudo mkdir -p /var/www/chat-ui sudo chown -R $USER:$USER /var/www/chat-ui # 将所有权改为当前用户方便操作 cd /var/www/chat-ui # 这里假设使用一个名为‘chatgpt-web’的简化前端仅为示例请替换为实际可用的开源项目仓库 git clone https://github.com/someopensource/chatgpt-web.git .克隆后我们需要修改前端代码中的API endpoint将其指向我们自己的代理。通常需要修改一个配置文件或主要的JavaScript文件。例如找到前端项目中的配置文件可能是config.js、.env文件或src目录下的某个JS文件将其中的API基础URL从https://api.openai.com/v1修改为https://chat.yourdomain.com/v1即你的Caddy代理地址。// 修改前 const API_BASE_URL ‘https://api.openai.com/v1‘; // 修改后 const API_BASE_URL ‘https://chat.yourdomain.com/v1‘;然后我们需要配置Caddy让它同时服务于这个前端静态文件。更新/etc/caddy/Caddyfilechat.yourdomain.com { # 首先将根路径/指向我们部署的前端静态文件 root * /var/www/chat-ui file_server # 其次将 /v1 路径的请求反向代理到 OpenAI API # 这是关键前端页面中发往 /v1/* 的API请求会被此规则捕获并代理 handle_path /v1/* { reverse_proxy https://api.openai.com { header_up Host api.openai.com transport http { tls tls_insecure_skip_verify } } } # 同样Caddy自动处理HTTPS }这个配置实现了当用户访问https://chat.yourdomain.com时Caddy会返回/var/www/chat-ui目录下的前端页面。当前端页面中的JavaScript代码向https://chat.yourdomain.com/v1/chat/completions发起请求时handle_path /v1/*规则会生效将该请求代理到真正的https://api.openai.com/v1/chat/completions。再次重载Caddy配置sudo systemctl reload caddy4.3 配置验证与测试现在整个镜像站点的核心部分已经部署完成。我们需要进行验证域名解析检查在本地电脑的终端中使用ping chat.yourdomain.com或nslookup chat.yourdomain.com确认域名已正确解析到你的服务器IP。HTTPS访问测试直接在浏览器中打开https://chat.yourdomain.com。你应该能看到部署的聊天界面并且浏览器地址栏显示安全的HTTPS锁标志。这证明Caddy的自动SSL证书申请成功了。API代理测试这是最关键的一步。我们需要测试代理是否正常工作。打开浏览器的开发者工具F12切换到“网络”(Network)标签页。在前端界面中输入一条消息并发送。观察网络请求中是否有一个向https://chat.yourdomain.com/v1/...发起的请求并且该请求的响应状态码是200或401。状态码200意味着代理通路完全正常且你提供了有效的API密钥如果前端要求输入。状态码401意味着代理通路正常请求已到达OpenAI服务器但认证失败API密钥无效或未提供。这反而说明代理是成功的状态码502/504意味着代理服务器你的Caddy无法连接到上游api.openai.com或上游响应超时。这通常是网络问题或配置错误如Host头未设置正确。你可以使用curl命令在服务器上进行更直接的测试# 测试代理是否通注意替换为你的真实域名 curl -v -X POST https://chat.yourdomain.com/v1/chat/completions \ -H “Content-Type: application/json” \ -H “Authorization: Bearer YOUR_OPENAI_API_KEY” \ -d ‘{\“model\”: \“gpt-3.5-turbo\”, \“messages\”: [{\“role\”: \“user\”, \“content\”: \“Hello\”}]}’如果返回{“error“: {“message“: “Invalid authentication“, ...}}恭喜你代理配置成功了错误信息来自OpenAI说明请求已经通过你的镜像站点抵达了目标API。5. 高级配置、优化与安全加固5.1 请求头管理与密钥安全在前面的基础配置中API密钥是通过前端发送的。这存在安全隐患一旦前端代码被他人查看密钥可能泄露。更安全的做法是将API密钥放在后端Caddy服务器添加前端无需感知密钥。Caddy可以通过header_up指令在转发请求时添加Authorization头。但请注意绝对不要将密钥明文写在Caddyfile中并提交到版本控制系统正确做法是使用Caddy的环境变量或外部文件。首先创建一个存储密钥的环境变量文件如/etc/caddy/.envsudo vim /etc/caddy/.env内容为OPENAI_API_KEYsk-your-actual-secret-key-here然后严格限制此文件权限sudo chown caddy:caddy /etc/caddy/.env sudo chmod 600 /etc/caddy/.env接着修改Caddyfile使用env指令加载环境变量并在代理时注入请求头chat.yourdomain.com { # 加载环境变量文件 env /etc/caddy/.env root * /var/www/chat-ui file_server handle_path /v1/* { reverse_proxy https://api.openai.com { header_up Host api.openai.com # 关键从环境变量读取密钥并添加到请求头 header_up Authorization “Bearer {env.OPENAI_API_KEY}” transport http { tls # 生产环境建议移除下一行并进行正确的TLS验证 tls_insecure_skip_verify } } } }这样前端发出的请求不再需要携带Authorization头所有经过你镜像站点的请求都会自动附上正确的密钥。前端项目中的相关密钥输入框也可以移除。5.2 速率限制与访问控制为了防止滥用和意外产生高额API费用必须实施速率限制和访问控制。Caddy原生限速Caddy内置了限速模块。我们可以对/v1/*路径进行限流。handle_path /v1/* { # 限速每个IP每秒最多5个请求突发不超过10个 rate_limit { zone v1apilimit { key {http.request.remote.host} # 按客户端IP限流 rate 5r/s burst 10 } } reverse_proxy https://api.openai.com { ... # 其他配置保持不变 } }超过限制的请求会收到429 Too Many Requests响应。IP白名单/黑名单如果你只想让特定的人使用可以在Caddyfile中使用匹配器定义条件并结合respond或abort指令。# 定义一个名为‘allowed_ips’的匹配器仅允许列出的IP allowed_ips { remote_ip 192.168.1.100 10.0.0.0/24 } handle_path /v1/* { # 如果不是允许的IP则直接返回403 not allowed_ips respond “Access Denied” 403 # 允许的IP继续执行代理 reverse_proxy https://api.openai.com { ... } }请注意如果用户通过CDN如Cloudflare访问remote_ip获取的将是CDN的IP你需要配置CDN传递真实用户IP。基础认证Basic Auth为整个站点或API路径添加一个用户名/密码保护。chat.yourdomain.com { basicauth /v1/* { username JDJhJDEwJGEuWGRHaX... # 使用 caddy hash-password 生成的密码哈希 } ... # 其他配置 }使用caddy hash-password命令生成密码哈希。5.3 日志与监控清晰的日志有助于排查问题和分析使用情况。Caddy的日志配置非常灵活。chat.yourdomain.com { log { # 访问日志格式包含代理相关的重要信息 format json { time “{ts}” host “{host}” remote “{remote}” method “{method}” uri “{uri}” status “{status}” latency “{duration}” upstream “{upstream}” # 代理的上游地址 header “Authorization” # 记录请求中的Authorization头谨慎可能含密钥生产环境建议过滤或脱敏 } # 将访问日志输出到文件 output file /var/log/caddy/access.log { roll_size 100mb roll_keep 10 } # 将错误日志输出到文件 output file /var/log/caddy/error.log { roll_size 50mb roll_keep 5 } } ... # 其他配置 }配置后使用sudo systemctl reload caddy重载。你可以用tail -f /var/log/caddy/access.log实时查看访问日志。JSON格式便于使用jq等工具进行分析。6. 常见问题排查与性能调优6.1 部署与访问问题排查表问题现象可能原因排查步骤与解决方案浏览器访问域名显示 “Connection refused“ 或超时1. 域名解析未生效或错误。2. 服务器防火墙UFW未开放80/443端口。3. Caddy服务未运行。1.ping 域名检查解析IP是否正确。2.sudo ufw status检查端口规则。3.sudo systemctl status caddy检查服务状态和日志 (sudo journalctl -u caddy -f)。HTTPS访问提示“不安全”或证书错误1. Caddy自动申请证书失败。2. 域名解析未完全生效时申请了证书。1. 检查Caddy日志中的ACME证书申请错误。2. 确保域名A记录已全球生效可使用dig A yourdomain.com 8.8.8.8验证。3. 删除Caddy存储的旧证书数据位于/var/lib/caddy/.local/share/caddy重载Caddy。前端页面能打开但发送消息后长时间无响应或报错1. API代理路径配置错误。2.Host请求头未正确修改。3. 服务器到api.openai.com的网络不通。1. 打开浏览器开发者工具“网络”标签查看API请求的URL和响应状态码。2. 在服务器上用curl -v命令模拟请求检查Host头是否被正确转发。3. 在服务器上执行curl -I https://api.openai.com测试网络连通性。请求返回 429 Too Many Requests1. 触发了Caddy配置的速率限制。2. 触发了OpenAI官方的速率限制如果你共享密钥给多人使用。1. 检查Caddyfile中的rate_limit配置适当调整rate和burst值。2. 为不同用户分配不同的API密钥或使用更高级的配额管理策略。请求返回 502 Bad Gateway1. Caddy无法连接到上游api.openai.com。2. 上游服务暂时不可用。3. TLS证书验证失败如果未配置tls_insecure_skip_verify。1. 检查服务器网络ping api.openai.com或使用mtr工具路由追踪。2. 检查Caddy错误日志。3. 临时在配置中添加tls_insecure_skip_verify进行测试确认是否为证书问题。6.2 性能调优实践当用户量增加时以下几点优化能显著提升体验连接复用与超时设置在反向代理配置中优化传输参数。reverse_proxy https://api.openai.com { header_up Host api.openai.com header_up Authorization “Bearer {env.OPENAI_API_KEY}” transport http { tls tls_insecure_skip_verify # 开启连接复用减少握手开销 keepalive 30 # 设置合理的超时时间 dial_timeout 10s response_header_timeout 30s # 等待响应头的超时 read_timeout 300s # 等待响应体的超时长对话需要更长时间 } }启用响应缓冲Caddy在将上游响应返回给客户端时可以选择先缓冲整个响应。这对于慢速客户端或上游响应较快的情况有好处可以释放上游连接。reverse_proxy https://api.openai.com { ... # 启用响应缓冲 flush_interval -1 # 禁用定期刷新使用缓冲 }使用负载均衡多API密钥如果你有多个OpenAI API密钥可以配置上游池实现简单的负载均衡和故障转移。reverse_proxy https://api.openai.com https://api.openai.com { # 可以配置多个相同的上游Caddy会使用轮询策略 lb_policy round_robin header_up Host api.openai.com # 注意这里无法为不同上游设置不同的Authorization头除非使用更复杂的插件。 }更复杂的密钥轮询需要编写Caddy插件或使用外部程序如Lua脚本这超出了基础配置范围。操作系统优化调整服务器的网络参数。# 编辑 sysctl 配置 sudo vim /etc/sysctl.conf # 增加以下参数 net.core.somaxconn 65535 net.ipv4.tcp_max_syn_backlog 65535 net.ipv4.tcp_tw_reuse 1 net.ipv4.ip_local_port_range 1024 65535 # 使配置生效 sudo sysctl -p6.3 成本控制与监控告警使用第三方API成本控制是重中之重。设置用量告警在OpenAI Dashboard上为你的API密钥设置硬性使用限额和告警。这是防止意外消费的第一道防线。代理层记录与统计通过Caddy的JSON日志可以记录每个请求的消耗。OpenAI的响应头中通常包含x-ratelimit-remaining-requests和x-ratelimit-remaining-tokens等信息。你可以配置Caddy的log格式将这些响应头记录下来然后使用脚本如Python定期分析日志估算Token消耗和费用。实现简单的配额管理对于多用户场景可以在Caddy前面再套一层轻量级应用如用Go或Python编写该应用维护一个用户-使用量的映射表并在转发请求前进行配额检查。这属于更高级的自研功能。部署和维护这样一个镜像站点技术本身只是第一步。更重要的是持续的关注关注原版服务的API变更可能导致代理失效关注网络质量关注使用成本和安全性。它就像你自己搭建的一座小桥需要定期检查和维护才能为需要它的人提供稳定、安全的通行服务。整个过程下来你收获的不仅仅是一个可用的工具更是对网络架构、代理技术、安全运维的一次深度实践。

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