Harbor:统一管理MCP服务器的配置中心与团队协作平台

news2026/5/13 1:50:27
1. 项目概述一个统一管理MCP服务器的“港口”如果你和我一样每天都在Claude Code、Cursor、VS Code这几个编辑器之间来回切换同时还要折腾一堆MCP服务器那你肯定也经历过这种痛苦在~/.claude.json里加一个配置再跑到~/.cursor/mcp.json里复制粘贴一遍改个环境变量还得小心翼翼别把API密钥写进配置文件。这种重复、分散的配置管理不仅效率低下还容易出错。Harbor的出现就是为了解决这个痛点。它把自己定位为一个“通用MCP中心”你可以把它想象成一个管理所有MCP服务器的“港口”。你只需要在这个港口里“停泊”一次你的服务器它就能自动同步到你所有链接的“主机”上无论是Claude Code、Cursor还是VS Code。这背后的核心就是它统一了配置管理让你从一个中心点控制所有MCP服务彻底告别手动编辑多个JSON和TOML文件的时代。Harbor提供了两种使用方式一个基于Tauri构建的现代化桌面应用以及一个功能完整的命令行工具。无论你是喜欢图形化操作的开发者还是偏爱终端和脚本的极客都能找到适合自己的工作流。它的功能远不止同步还包括一个内置的MCP服务器市场让你可以直接搜索和安装来自官方MCP Registry的服务器一个安全的密钥保险库利用操作系统自身的密钥链来存储敏感信息甚至还有一个HTTP/SSE网关可以将你的MCP服务器暴露给远程工具使用。对于团队协作它还提供了基于Git的“舰队同步”功能让团队成员可以共享服务器配置而各自的密钥依然安全地保存在本地。接下来我将从一个实际使用者的角度带你深入拆解Harbor的设计思路、核心功能、实操细节并分享我在部署和使用过程中踩过的坑和总结的经验。2. 核心设计思路与架构解析2.1 为什么需要HarborMCP生态的配置困境要理解Harbor的价值得先看看没有它的时候我们是怎么做的。Model Context Protocol旨在为AI助手提供标准化的工具调用接口但每个支持MCP的客户端我称之为“主机”都有自己独立的配置文件格式和存放位置。例如Claude Code使用~/.claude.json而Cursor使用~/.cursor/mcp.json。当你找到一个好用的MCP服务器比如一个能读取GitHub Issues的服务器你需要在终端运行服务器进程或者写一个启动脚本。找到每个你使用的IDE/编辑器的MCP配置文件。手动添加服务器配置块包括command、args、env等。确保每个配置中的环境变量尤其是API密钥都正确设置且安全。如果服务器更新或需要调整参数重复上述步骤。这个过程繁琐且容易出错。更麻烦的是团队场景如何让新同事快速拥有一套和你一样的MCP工具链发一个配置文档让他手动复制Harbor的解决方案是引入一个配置管理层。它自身维护一份权威的服务器列表即“舰队”并充当一个智能的同步代理。当你将Harbor与一个主机“链接”后Harbor会读取该主机的原始配置然后将自己管理的服务器配置安全地合并进去而不是粗暴覆盖。这意味着你原本手动配置的服务器依然有效Harbor管理的服务器只是作为补充。这种非侵入式的设计非常友好降低了用户的迁移成本和心理负担。2.2 安全第一的设计密钥保险库与引用机制处理API密钥等敏感信息是配置管理中最棘手的一环。Harbor的“保险库”设计巧妙地解决了这个问题。它利用操作系统提供的安全存储如macOS的Keychain、Linux的Secret Service、Windows的Credential Manager来保存密钥。在配置服务器时你不再直接写入明文密钥而是使用vault:SECRET_NAME这样的引用语法。例如当你运行harbor chest set GITHUB_TOKEN ghp_xxx后这个令牌就被加密存储了。随后在添加服务器时你可以这样配置环境变量--env GITHUB_TOKENvault:GITHUB_TOKEN。Harbor在向主机同步配置时会保留这个引用。而当主机如Claude Code实际启动MCP服务器时Harbor的运行时组件或网关会动态地将vault:GITHUB_TOKEN解析为真实的令牌值。这样密钥从未出现在任何磁盘上的配置文件中大大提升了安全性。这个设计也完美适配了团队同步功能因为Git仓库里提交的只是vault:引用真正的密钥由每个成员在本地自行存入保险库。2.3 架构拆解Rust核心与多端协作Harbor的架构清晰且现代主要分为三个部分采用Rust工作区进行管理harbor-core(Rust库)这是整个项目的心脏。它包含了所有核心逻辑配置文件的解析与持久化TOML、与各个主机Claude Code、Cursor等的“连接器”实现、HTTP/SSE网关服务器、密钥保险库的抽象接口、以及与MCP Registry交互的市场功能。用Rust编写核心库保证了高性能和内存安全也为不同前端提供了稳定的API。harbor-cli(Rust二进制文件)基于clap库构建的命令行接口。它是对harbor-core功能的一个封装提供了我们之前看到的所有航海主题命令。CLI工具非常适合自动化、脚本集成以及在服务器环境无GUI中使用。harbor-desktop(桌面应用)这是一个Tauri v2应用。Tauri允许使用Web技术React, TypeScript构建前端界面而后端则调用编译好的Rust代码。这意味着桌面应用享用了与CLI相同的、经过Rust强类型系统保障的核心逻辑同时提供了直观的图形界面。前端使用React 19和Tailwind CSS构建了美观且响应迅速的管理界面。这种架构分离带来了巨大优势功能逻辑高度统一避免了GUI和CLI逻辑不一致的经典问题。无论是通过桌面应用点击按钮添加服务器还是通过CLI命令操作底层都是调用同一套Rust代码。3. 从零开始安装与基础配置实战3.1 跨平台安装方案详解Harbor提供了非常便捷的安装方式。对于大多数macOS用户官方的一行安装脚本是最佳选择curl -fsSL https://harbormcp.ai/install.sh | sh这个脚本会自动检测你的系统下载最新的Release包安装桌面应用和CLI工具到合适的路径通常是/usr/local/bin并创建应用程序图标。安装完成后你可以在启动台找到“Harbor”应用同时在终端直接使用harbor命令。注意对于Linux用户上述脚本默认只安装CLI。如果你需要Linux桌面应用需要前往GitHub Releases页面手动下载对应的.AppImage或.deb/.rpm包。Windows用户同样需要从Releases页面下载并运行.msi安装程序。我个人的习惯是在安装后首先验证CLI是否可用并查看版本信息harbor --version # 输出类似harbor 0.8.13.2 链接你的第一个“主机”安装完成后第一步是让Harbor知道它需要管理哪些应用程序。这个过程叫做“链接端口”。以链接Claude Code为例harbor port link claude执行这个命令后Harbor会做以下几件事定位Claude Code的配置文件通常是~/.claude.json。检查该文件是否存在以及格式是否有效。在该配置文件中Harbor会寻找或创建MCP服务器的配置区域对于Claude Code是mcpServers对象。Harbor会在这个区域添加一个特殊的“标记”或采用一种合并策略以便后续将自己的配置同步进去同时确保不破坏你已有的配置。你可以用harbor port list命令查看所有已链接的主机及其状态。同理你可以链接其他支持的主机harbor port link cursor harbor port link vscode # 注意VS Code的配置是项目级的 .vscode/mcp.json harbor port link codex实操心得VS Code链接的特殊性与其他全局配置的编辑器不同VS Code的MCP配置是基于项目的位于项目根目录的.vscode/mcp.json。当执行harbor port link vscode时Harbor实际上是在你的用户全局配置中做了一个标记。但同步动作发生在你打开一个项目目录并在其中运行Harbor同步命令时。这意味着你需要在你希望启用Harbor同步的每个VS Code项目目录下执行一次harbor sync。或者更常见的做法是让Harbor桌面应用在后台运行它会自动监控并管理同步。3.3 “停泊”你的第一个MCP服务器现在让我们添加一个最简单的MCP服务器作为开始。Harbor官方示例中使用的是modelcontextprotocol/server-memory这是一个简单的记忆服务器。我们可以通过CLI来“停泊”它harbor dock --name my-memory-server --command npx --args modelcontextprotocol/server-memory我们来拆解这个命令dock: 核心命令意为“停泊”。--name my-memory-server: 为你这个服务器实例起一个唯一的名字方便后续管理。--command npx: 指定运行这个服务器的命令。这里用npx直接运行npm包。--args modelcontextprotocol/server-memory: 传递给npx的参数即要运行的包名。执行成功后这个服务器的配置就被记录在Harbor的中心配置~/.harbor/config.toml里了。由于我们已经链接了主机比如Claude CodeHarbor会自动触发一次同步。你可以立刻打开Claude Code尝试让Claude回忆一些东西它应该已经能够调用这个记忆服务器了。查看当前舰队状态harbor fleet这个命令会列出所有已停泊的服务器、它们的启动命令、状态以及同步到了哪些主机。4. 核心功能深度使用与配置技巧4.1 密钥保险库的安全管理实践密钥管理是Harbor的亮点功能。下面演示一个真实场景添加一个需要OpenAI API密钥的服务器。首先将你的密钥存入保险库。强烈建议不要在命令中直接输入密钥因为这样可能会留在shell历史记录里。使用以下交互式方式harbor chest set OPENAI_API_KEY执行后CLI会提示你输入密钥值输入过程是不可见的。更安全的方式是如果你已经将密钥保存在一个环境变量里可以这样操作echo $MY_OPENAI_KEY | harbor chest set OPENAI_API_KEY # 或者 harbor chest set OPENAI_API_KEY cat ~/.secrets/openai_key.txt现在添加一个使用此密钥的服务器例如一个用于总结网页内容的MCP服务器harbor dock --name web-summarizer \ --command npx \ --args modelcontextprotocol/server-brave-search \ --env BRAVE_API_KEYvault:BRAVE_API_KEY \ --env OPENAI_API_KEYvault:OPENAI_API_KEY这里我们同时使用了两个vault:引用。Harbor会检查这些引用是否存在如果BRAVE_API_KEY在保险库中不存在它会在同步时提示错误。你可以通过harbor chest list查看所有已存储的密钥名称不显示值用harbor chest get KEY_NAME可以验证某个密钥是否存在。重要注意事项环境变量的覆盖顺序有些MCP服务器可能允许通过命令行参数、环境变量或配置文件多种方式设置密钥。Harbor的--env参数设置的是服务器进程的环境变量这是最通用和优先级较高的方式。但是如果服务器代码本身先读取了系统的环境变量如process.env.OPENAI_API_KEY而你又在系统层面设置了相同的变量可能会引起混淆。最佳实践是将所有的密钥都通过Harbor保险库管理并移除系统或Shell配置文件中相关的环境变量确保来源唯一。4.2 使用市场发现和安装服务器手动通过npx或docker命令添加服务器需要你知道准确的包名和参数。Harbor桌面应用内置的“市场”功能极大地简化了这个过程。打开Harbor桌面应用侧边栏找到“Marketplace”选项卡。市场中的数据来源于官方的 MCP Registry 。界面通常会展示服务器的名称、描述、作者、下载量等信息。你可以搜索“github”、“sqlite”、“file”等关键词来寻找需要的工具。点击一个你感兴趣的服务器例如“GitHub”你会看到更详细的介绍以及一个“Install”或“Add to Fleet”按钮。点击后Harbor会引导你完成一个安装对话框命名为这个服务器实例提供一个本地名称。配置自动填充了该服务器所需的命令和参数如npx modelcontextprotocol/server-github。环境变量列出该服务器需要的所有环境变量如GITHUB_TOKEN。你可以直接点击输入框它会提示你使用已有的保险库密钥或创建新的。高级选项可能包括工作目录、启用/禁用特定工具等。填写完成后点击确认这个服务器就会被“停泊”并同步到你所有已链接的主机。这个过程比手动查找、复制命令、处理密钥要流畅得多。4.3 高级配置自定义参数与工具过滤不是所有服务器都只需要一个命令和几个环境变量。Harbor的配置非常灵活。我们来看一个更复杂的例子假设我们要运行一个本地的SQLite MCP服务器并且只允许AI助手使用“查询”工具而不允许“写入”harbor dock --name local-db \ --command docker \ --args run -i --rm -v /path/to/your/data:/data ghcr.io/modelcontextprotocol/servers/sqlite \ --env DATABASE_URL/data/mydb.sqlite \ --cargo allow-tools read_sql,query_schema这个例子展示了几个高级特性复杂命令使用docker run命令并包含了Docker的选项-i --rm -v来交互式运行、自动清理和挂载数据卷。工作目录虽然没有在这个例子中体现但你可以使用--cwd参数来指定服务器启动的工作目录。工具过滤 (--cargo)这是Harbor一个非常强大的安全和管理功能。--cargo allow-tools后面接一个逗号分隔的工具名列表表示只允许AI助手调用这些工具。你也可以使用--cargo deny-tools来禁止特定的工具。这在你使用一个功能强大但包含危险工具如“执行任意命令”、“删除文件”的服务器时非常有用你可以精确控制暴露给AI的能力。你可以通过harbor cargo inspect local-db来查看某个服务器对外暴露了哪些工具以及当前的过滤规则。4.4 网关灯塔功能远程访问与调试Harbor内置的HTTP/SSE网关代号“灯塔”是一个常被低估但极其有用的功能。默认情况下桌面应用会在后台启动这个网关。它的主要作用有两个统一接入点将所有由Harbor管理的MCP服务器通过一个统一的HTTP端口暴露出来。这意味着任何支持HTTP/SSE协议的MCP客户端不一定是已链接的IDE都可以连接到这个网关来使用这些工具。工具发现与调试网关提供了人类可读的端点方便你查看和管理。手动启动网关例如在CLI模式下harbor lighthouse --port 3100启动后你可以用浏览器访问http://localhost:3100/tools。这个端点会返回一个JSON列表展示所有正在运行的服务器及其提供的工具这对于调试和验证服务器状态非常有帮助。更强大的用途是用于远程开发。假设你在服务器A上运行Harbor和网关你可以在本地机器B上的Claude Code中配置一个远程MCP服务器其传输方式设置为SSEURL指向http://server-a-ip:3100/sse。这样你本地的AI助手就能调用服务器A上的所有MCP工具了。这在资源隔离或集中部署服务器的场景下非常实用。5. 团队协作舰队同步功能实战对于团队来说统一开发环境配置能极大提升效率。Harbor的“舰队同步”功能允许团队通过一个Git仓库来共享MCP服务器配置。5.1 初始化团队舰队仓库首先团队需要创建一个Git仓库例如在GitHub、GitLab上。然后由一位团队成员初始化舰队并链接到这个远程仓库# 在本地初始化一个舰队仓库 harbor crew init # 这会创建一个新的Git仓库在 ~/.harbor/fleet # 将其与远程仓库关联强烈推荐 harbor crew init --git gitgithub.com:your-org/mcp-fleet.git # 或者使用HTTPS链接 harbor crew init --git https://github.com/your-org/mcp-fleet.git初始化后你可以将本地已有的、希望共享的服务器“推送”到团队舰队中# 推送特定的服务器 harbor crew push my-memory-server web-summarizer -m 添加记忆和网页总结服务器 # 推送所有服务器 harbor crew push --all -m 初始舰队配置crew push命令会做以下几件事将你指定的服务器配置不包括密钥只保留vault:引用添加到本地舰队仓库。生成一个提交信息。将更改推送到关联的远程Git仓库。5.2 团队成员加入与同步其他团队成员要加入这个共享舰队只需要克隆它harbor crew join gitgithub.com:your-org/mcp-fleet.git这个命令会克隆远程舰队仓库到本地~/.harbor/fleet。自动执行一次crew pull将舰队中的服务器配置合并到本地Harbor配置中。由于配置中只包含vault:引用Harbor会检测到本地缺少这些密钥并提示你“配置”它们。此时运行harbor crew provision命令。Harbor会列出所有在舰队配置中引用但本地保险库中不存在的密钥并逐个提示你输入其值。输入后这些密钥就被安全地存储在你的本地操作系统密钥链中了。至此你就拥有了和团队完全一致的MCP服务器列表。5.3 日常协作工作流日常工作中团队协作的流程非常清晰拉取更新当队友添加了新服务器或更新了配置并推送后你只需运行harbor crew pull。Harbor会获取远程更改并安全地合并到你的本地配置。它永远不会覆盖你本地独有的服务器配置。查看状态使用harbor crew status可以快速查看你的本地配置与团队舰队配置之间的差异“漂移”。这能让你清楚知道自己是否修改了某些共享配置。解决冲突如果crew pull遇到合并冲突比如你和队友修改了同一个服务器的同一个参数Harbor会将冲突标记出来并生成一个合并后的配置文件通常带有.merged后缀你需要手动编辑这个文件解决冲突然后运行harbor crew resolve --file merged-file来完成合并。推送个人更改如果你自己添加了一个对团队有用的服务器使用harbor crew push server-name将其分享给所有人。这个基于Git的模型借鉴了Infrastructure as Code的思想使得MCP服务器配置变得可版本化、可评审、可回滚非常适合严肃的团队开发环境。6. 故障排查与常见问题实录即使设计得再完善在实际使用中也会遇到各种问题。下面是我在长期使用Harbor过程中遇到的一些典型问题及解决方法。6.1 服务器启动失败或连接超时这是最常见的问题。当你添加了一个服务器但在IDE中调用工具时却提示“服务器不可用”或超时。排查步骤检查服务器状态运行harbor fleet查看该服务器的“Status”列。如果是“Stopped”可以尝试手动启动它harbor launch server-name。观察终端是否有错误输出。检查命令和参数使用harbor manifest server-name查看该服务器的详细配置。确认command和args是否正确。特别是使用npx时确保包名拼写无误并且你已安装Node.js/npm。检查环境变量确认所有vault:引用的密钥都已正确存储在保险库中。运行harbor chest get KEY_NAME验证。如果密钥值错误服务器进程可能无法正常认证。查看网关日志如果Harbor桌面应用正在运行意味着网关也在运行你可以查看其日志。在macOS上可以通过“控制台”应用筛选进程名为“Harbor”的日志。日志中通常会包含服务器进程启动失败的具体原因如“命令未找到”、“权限被拒绝”或“API密钥无效”。手动运行命令将harbor manifest中显示的command和args复制出来在终端中手动运行。这能最直接地暴露问题例如缺少依赖、网络问题等。常见原因与解决npx命令找不到包可能是包名错误或者npm registry访问问题。尝试npx -y package-name --version看是否能正常下载。Docker服务器启动失败确保Docker守护进程正在运行 (docker ps)。检查镜像名称是否正确以及-v挂载的路径是否存在。端口冲突少数MCP服务器可能需要绑定特定端口。如果端口被占用会导致启动失败。检查Harbor网关或其他进程是否占用了相同端口。6.2 主机IDE无法识别已同步的服务器你已经用harbor fleet确认服务器状态是“Running”但在Claude Code或Cursor里却看不到对应的工具。排查步骤确认主机已链接运行harbor port list确保你的IDE如claude显示为“linked”。强制同步运行harbor sync。这个命令会强制Harbor将所有服务器配置重新写入到已链接主机的配置文件中。检查主机配置文件手动打开主机的配置文件如~/.claude.json查看Harbor是否成功写入了配置。你应该能看到一个以harbor-开头的服务器配置块其command指向Harbor的网关或一个本地套接字。重启IDE有时IDE需要重启才能重新加载MCP配置。完全关闭Claude Code/Cursor/VS Code再重新打开。检查IDE的MCP设置有些IDE可能有独立的开关来启用MCP功能。确保该功能已开启。6.3 团队同步 (crew) 相关问题问题crew pull后没有看到新服务器。原因可能队友推送的服务器配置里包含了你的保险库中不存在的密钥引用。Harbor在合并时如果遇到无法解析的vault:引用可能会跳过该服务器或标记为不健康。解决运行harbor crew provision。这个命令会扫描舰队配置找出所有你本地缺失的密钥并提示你输入。完成后再运行harbor sync。问题crew push被拒绝提示需要先pull。原因你的本地舰队仓库落后于远程仓库。在Git中你需要先合并上游的更改才能推送。解决先运行harbor crew pull拉取并合并远程更改。如果合并有冲突按照提示解决冲突见5.3节。解决后再尝试推送。问题密钥引用在队友那里工作在我这里不工作。原因vault:引用的是密钥的名称而不是值。如果队友的服务器配置中使用了vault:OPENAI_API_KEY这个名称只是一个标签。你需要在你本地的保险库里也存入一个同名但值为你自己的API密钥的条目。解决使用harbor chest set OPENAI_API_KEY设置你自己的密钥值。团队共享的是配置模板而非密钥本身。6.4 性能与资源占用Harbor桌面应用和网关作为常驻进程会占用一定的内存和CPU。在我的M1 Mac上通常内存占用在100-200MB之间属于正常范围。如果你发现资源占用异常高检查运行的服务器数量每个通过Harbor启动的MCP服务器都是一个独立的子进程。如果你“停泊”了十几个资源密集型的服务器如大型语言模型本地服务那自然会占用大量资源。考虑是否所有服务器都需要常驻运行。使用harbor launch/stop管理对于不常用的服务器你可以用harbor stop server-name将其停止释放资源。需要时再harbor launch。网关日志级别默认日志级别可能输出较多信息。目前Harbor可能未提供直接修改网关日志级别的CLI选项但如果你是从源码构建可以尝试调整Rust代码中的日志初始化设置。7. 进阶技巧与自定义集成7.1 与自制或本地MCP服务器集成很多时候我们会自己编写一些简单的MCP服务器来满足特定需求比如连接内部数据库、调用公司内部API等。Harbor同样可以完美管理这些服务器。假设你有一个用Python编写的、位于/Users/me/dev/my-mcp-server目录下的自定义服务器启动命令是python server.py。方案一直接使用本地解释器harbor dock --name internal-tool \ --command python \ --args /Users/me/dev/my-mcp-server/server.py \ --cwd /Users/me/dev/my-mcp-server \ --env INTERNAL_API_KEYvault:INTERNAL_API_KEY这里使用了--cwd参数将工作目录设置为服务器代码所在目录这对于处理相对路径导入或配置文件非常必要。方案二使用虚拟环境或容器如果你的服务器依赖复杂的Python环境使用绝对路径指向虚拟环境中的python是更可靠的做法。harbor dock --name internal-tool \ --command /Users/me/dev/my-mcp-server/venv/bin/python \ --args server.py \ --cwd /Users/me/dev/my-mcp-server对于更复杂的部署也可以使用Docker Compose或一个封装脚本然后将该脚本作为command。7.2 利用CLI实现自动化脚本Harbor的CLI是脚本化的绝佳伴侣。你可以编写Shell脚本在项目初始化、CI/CD流程或开发环境设置中自动配置MCP服务器。例如一个团队新成员入职的自动化脚本可能包含#!/bin/bash # setup_mcp.sh # 1. 安装Harbor (假设已安装) # 2. 链接常用主机 harbor port link claude harbor port link cursor # 3. 加入团队舰队 harbor crew join gitgithub.com:my-company/mcp-fleet.git # 4. 拉取配置并交互式配置密钥 harbor crew pull harbor crew provision # 5. 同步到所有主机 harbor sync echo MCP环境设置完成7.3 配置文件的直接编辑与备份Harbor的所有配置最终都保存在~/.harbor/config.toml文件中。这是一个TOML格式的文件人类可读性很好。虽然大部分操作可以通过CLI/GUI完成但直接编辑这个文件在某些高级场景下更高效比如批量修改多个服务器的某个参数。在编辑前请务必备份cp ~/.harbor/config.toml ~/.harbor/config.toml.backup.$(date %Y%m%d)打开这个文件你会看到[servers]部分下面列出了每个你“停泊”的服务器配置。你可以手动修改args,env等字段。修改完成后需要重启Harbor桌面应用或运行harbor sync使更改生效。定期备份这个配置文件以及~/.harbor/fleet/目录如果使用了团队同步可以让你在系统迁移或重装时快速恢复整个MCP工作环境。Harbor通过将分散的、手动的MCP服务器配置流程整合为一个集中化、自动化、安全且支持协作的平台实实在在地提升了我作为开发者的日常体验。从手动编辑JSON文件到在图形界面中点击安装从担心密钥泄露到使用安全的保险库引用从独自配置到团队一键同步它解决的都是真实而具体的痛点。当然作为一个仍在快速发展中的工具你可能会遇到一些小问题但它的设计理念、清晰的架构和活跃的社区都让我对它的未来充满信心。如果你也在使用多个AI编程助手并且厌倦了重复的配置工作那么花上半小时尝试一下Harbor很可能会为你打开一扇新的大门。

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