Resolink MCP:基于MCP协议与Playwright的AI浏览器自动化实践

news2026/5/16 23:10:48
1. 项目概述当AI助手学会“动手”——Resolink MCP的浏览器自动化革命如果你和我一样每天在Cursor、Claude这类AI编程助手的陪伴下写代码那你一定遇到过这样的场景你正和AI热烈讨论一个技术方案突然需要去浏览器里查个API文档、验证一个UI组件的样式或者登录某个云平台查看资源状态。这时候你不得不手动切出编辑器打开浏览器执行一系列点击、输入、滚动的操作然后再把结果复制粘贴回对话窗口。这个过程不仅打断了流畅的“人机对话”心流更让AI助手瞬间变成了一个被动的旁观者——它知道你问了什么却看不到你操作的结果自然也无法基于这个结果给出下一步的精准建议。这正是Resolink MCP项目要解决的核心痛点。简单来说它是一个基于Model Context ProtocolMCP的服务器为Claude、Cursor等AI助手赋予了“动手”操作浏览器的能力。想象一下你可以在AI对话中直接说“帮我打开AWS控制台查看us-east-1区域的EC2实例列表把运行中的实例名称和状态整理成表格发给我。”AI助手就能通过Resolink像真人一样操作浏览器完成登录、导航、点击、读取页面内容等一系列动作并将结果结构化地返回给你。这不再是简单的“联网搜索”而是真正的、可编程的浏览器自动化将AI的思考能力与真实世界的Web操作无缝衔接。这个项目由saamlaura团队开源其技术栈非常现代且务实核心使用Playwright进行跨浏览器自动化通过MCP协议与AI客户端通信并设计为可扩展的服务器架构。它瞄准的是一个正在爆发的需求缺口——随着AI编码助手日益强大它们与开发者工作环境的“最后一公里”集成变得至关重要。Resolink让AI不再局限于对话窗口内的文本推理而是能成为你工作流中一个能执行、能验证、能交互的主动参与者。2. 核心架构与设计哲学为什么是MCPPlaywright要理解Resolink的价值得先拆解它的两大技术支柱MCP协议和Playwright框架。这不是简单的技术堆砌背后有深刻的设计考量。2.1 MCPAI的“标准外设接口”Model Context Protocol模型上下文协议是由Anthropic提出的一种开放协议你可以把它理解为AI世界的“USB标准”。在MCP出现之前每个AI助手如Claude Desktop、Cursor想要接入外部工具如文件系统、数据库、浏览器都需要开发者为其编写特定的插件或适配器工作重复且生态割裂。MCP的核心思想是定义一套标准的、双向的通信协议。任何工具只要实现为一个MCP服务器Server就能被任何兼容MCP的客户端Client即AI助手发现和使用。这带来了几个关键优势工具与客户端解耦我开发一个浏览器自动化工具Resolink ServerClaude能用Cursor能用未来任何支持MCP的AI助手都能用无需重复开发。能力动态发现客户端启动时会连接配置好的MCP服务器服务器会主动告知客户端“我提供了browser_open、page_click、element_read这些工具Tools。”AI助手在对话中就能智能地判断何时该调用哪个工具。安全的上下文交换协议规范了工具调用的请求、响应格式以及资源如网页截图、提取的文本的传递方式确保了交互的可靠性和安全性。Resolink选择基于MCP构建正是看中了其成为AI生态底层标准的潜力。它让浏览器自动化能力变成了一种可被任何主流AI助手即插即用的“标准外设”。2.2 Playwright现代浏览器自动化的“瑞士军刀”为什么是Playwright而不是更老的Selenium或Puppeteer这是技术选型上非常关键的一步。Playwright由微软开发它解决了前代工具的诸多痛点特别适合AI集成场景跨浏览器一致性Playwright原生支持Chromium、Firefox和WebKitSafari引擎用同一套API即可控制三大浏览器引擎。对于需要验证跨浏览器兼容性的前端任务AI可以一键在不同环境中测试这是巨大优势。自动等待与可靠性Playwright内置了智能等待机制它会自动等待元素可点击、网络请求完成、页面加载稳定后再执行操作。这意味着AI发出的指令如“点击登录按钮”成功率极高无需在提示词里繁琐地添加“等待2秒”之类的指令简化了AI的决策逻辑。丰富的设备模拟与上下文隔离它可以模拟移动设备视口、地理位置、语言环境等。更重要的是它支持创建完全隔离的浏览器上下文Context每个上下文都有独立的cookies、本地存储。这使得AI可以同时为多个任务如用不同账号登录同一网站操作独立的浏览器会话且互不干扰非常适合自动化工作流。强大的选择器引擎除了常规的CSS和XPathPlaywright提供了诸如text、role等面向语义和可访问性的选择器。AI在理解“点击那个‘提交’按钮”这样的自然语言指令后能更准确地将其转换为page.click(text提交)这样的可靠代码。设计哲学总结Resolink的架构选择体现了一种“专业工具做专业事标准协议连万物”的思想。用Playwright这个领域内最强大、最稳定的工具来搞定浏览器自动化本身的所有复杂细节用MCP这个新兴但方向正确的协议将自己无缝嵌入到AI助手的核心工作流中。这种组合确保了项目的技术先进性和生态兼容性。3. 核心功能与工具拆解AI能指挥浏览器做什么Resolink MCP服务器向AI客户端暴露了一系列精心设计的工具Tools。这些工具并非简单地将Playwright API直接暴露而是经过了抽象和封装使其更符合AI的自然语言交互习惯。我们可以将其分为几个核心类别3.1 浏览器生命周期管理这是所有操作的起点。AI需要先创建一个浏览器实例和页面。browser_open: 启动一个浏览器实例。这里有一个关键设计点是否启用无头模式Headless。对于调试和查看AI操作过程可以设置为false让浏览器窗口可视化。但对于后台自动化任务设置为true能节省资源。Resolink通常会提供参数让用户或AI决定。new_page/new_context: 在新标签页打开页面或者创建一个全新的、隔离的浏览器上下文。后者在需要多账号操作或完全干净的会话时非常有用。browser_close: 任务完成后关闭浏览器并释放资源。良好的资源管理对于长期运行的AI助手进程至关重要。3.2 页面导航与内容获取这是最常用的功能集让AI能像人一样浏览网页。page_goto: 导航到指定URL。这里AI需要处理重定向、网络错误等。Resolink内部会利用Playwright的稳健性来处理这些问题并向AI返回最终的状态码和URL。page_content: 获取页面的完整HTML内容或可视区域的文本内容。这是AI进行分析、总结和提取信息的基础。一个高级的实现可能会提供选项比如只获取main区域的内容以排除页眉、页脚等噪音。page_screenshot: 对全页或某个区域进行截图。截图以Base64编码或文件路径的形式返回给AI。这对于验证UI样式、报告错误或进行视觉分析不可或缺。AI可以要求“截取这个表格的图给我看”。3.3 元素定位与交互这是自动化的精髓让AI能“点击”和“输入”。element_click: 点击一个元素。难点在于AI如何描述要点击的元素。Resolink需要支持多种选择器策略文本内容click text登录CSS选择器click .submit-btnXPathclick //button[idsubmit]角色属性click rolebutton[name确认](基于ARIA可访问性友好) AI需要根据对页面的理解选择最稳定、最不易变化的定位方式。Resolink的内部逻辑需要能解析这些不同的选择器格式并调用对应的Playwright API。element_fill/element_type: 向输入框填充文本或模拟键盘输入。fill是直接设置值速度快type是模拟逐个字符输入更接近真人操作能触发输入事件。AI需要根据场景选择例如填写表单用fill在搜索框模拟输入用type。select_option: 处理下拉选择框。AI需要提供选项的值或标签文本。page_wait_for_*: 一系列等待工具如等待元素出现(wait_for_selector)、等待导航完成(wait_for_navigation)、等待特定事件。这些工具被AI调用来确保下一步操作前页面已就绪是编写可靠自动化脚本的关键。3.4 高级操作与状态管理这些工具让自动化更加智能和灵活。evaluate_script: 在页面上下文中执行一段JavaScript代码并返回结果。这是“王牌工具”。当内置工具无法满足复杂交互时如操作复杂的富文本编辑器、获取页面全局变量AI可以自己编写一小段JS来执行。这极大地扩展了AI的能力边界。cookies_get/cookies_set: 管理Cookie。AI可以读取当前会话的Cookie也可以手动设置Cookie来模拟登录状态或绕过某些验证。local_storage: 操作本地存储。对于一些依赖前端状态的应用非常有用。page_pdf: 将页面生成PDF。适用于需要存档网页内容或生成报告的场景。实操心得工具设计的“AI友好性”在设计这些工具时一个重要的原则是“降低AI的决策复杂度”。例如element_click工具在内部实现时如果提供的选择器找不到元素不应该直接报错返回而是可以尝试几种备选策略1等待一小段时间再重试2尝试滚动到该元素可能出现的区域3返回一个更详细的错误描述包含页面上的相似元素列表供AI调整指令。这模仿了人类在操作不顺利时的应变行为使得AI与工具的协作更加鲁棒。4. 实战演练从零搭建与配置Resolink MCP环境理论说再多不如动手跑一遍。下面我将带你完整地配置Resolink MCP服务器并连接到Claude Desktop实现第一个浏览器自动化指令。4.1 环境准备与依赖安装Resolink是一个Node.js项目因此你需要先准备好Node.js环境建议版本18或以上和npm/yarn包管理器。# 1. 克隆项目仓库 git clone https://github.com/saamlaura/resolink-mcp.git cd resolink-mcp # 2. 安装项目依赖 npm install # 或使用 yarn yarn install安装过程会拉取Playwright的核心库。请注意Playwright默认不会下载浏览器二进制文件。为了确保兼容性最好使用Playwright自带的命令安装其支持的浏览器。# 3. 安装Playwright的浏览器Chromium, Firefox, WebKit npx playwright install # 如果想跳过某些浏览器以节省空间可以指定 # npx playwright install chromium这一步可能会花费一些时间因为它需要下载几百MB的浏览器文件。完成后你的环境就具备了运行无头浏览器的能力。4.2 配置MCP服务器Resolink作为MCP服务器需要被AI客户端如Claude Desktop识别和连接。这通常通过一个配置文件来完成。对于Claude Desktop其MCP服务器配置位于一个JSON文件中。在macOS上路径通常是~/Library/Application Support/Claude/claude_desktop_config.json。在Windows上可能是%APPDATA%\Claude\claude_desktop_config.json。你需要编辑或创建这个文件添加Resolink服务器的配置。配置的核心是指定服务器的启动命令和参数。{ mcpServers: { resolink: { command: node, args: [ /ABSOLUTE/PATH/TO/YOUR/resolink-mcp/build/index.js ], env: { BROWSER_TYPE: chromium, // 可选chromium, firefox, webkit HEADLESS: true // 可选启动时是否无头运行 } } } }关键参数解析command: 启动服务器的命令这里是node。args: 传递给命令的参数列表最重要的就是指向Resolink编译后入口文件的绝对路径。项目源码是TypeScript通常需要先构建npm run build生成build/index.js。env: 传递给服务器进程的环境变量。这里可以控制启动的浏览器类型和是否显示界面。注意事项路径与权限务必使用绝对路径。相对路径在Claude Desktop的上下文中可能无法解析。确保Node.js和Playwright的浏览器可执行文件都在系统的PATH环境变量中或者你通过env字段指定了完整路径。在macOS或Linux上可能需要给脚本添加执行权限(chmod x)。4.3 连接Claude Desktop并进行首次对话保存配置并重启Claude Desktop修改完配置文件后完全退出并重新启动Claude Desktop应用使其加载新的MCP配置。验证连接启动后Claude Desktop会在后台启动你配置的Resolink服务器进程。你可以在系统活动监视器或任务管理器中看到Node进程。更直接的验证方式是在Claude的对话窗口中你可能会看到一条系统提示或者当你输入相关指令时Claude会显示出可用的工具。发起第一个自动化请求现在尝试一个简单的指令。例如“请使用浏览器工具打开GitHub首页然后把页面标题和主要的几个仓库趋势板块的文字内容总结一下发给我。”Claude在理解你的意图后会计划调用一系列工具browser_open-new_page-page_goto-page_content- (可能)element_click来展开趋势板块 - 最后分析内容并总结给你。你会在Claude的思考过程中看到它调用这些工具的日志如果客户端支持显示同时如果HEADLESS设为false你会看到一个浏览器窗口自动打开并执行所有操作。4.4 一个更复杂的实战案例自动检查AWS服务状态假设你正在开发一个依赖AWS S3和Lambda的服务你想让AI助手每天帮你快速巡检一下。你可以这样指示Claude“请帮我登录AWS管理控制台假设我已保存密码或通过环境变量提供导航到S3服务页面列出所有存储桶的名称和创建日期。然后再导航到Lambda服务页面统计所有函数的运行超时时间配置找出任何超时时间设置超过5分钟的函数并提醒我。”这个请求会触发一个复杂的工具调用链browser_open(可能复用已有实例)page_goto(https://console.aws.amazon.com/)element_fill(输入用户名)element_fill(输入密码)element_click(点击登录)page_wait_for_navigation(等待登录成功)page_goto(导航到S3控制台特定URL)page_content或evaluate_script(提取页面中的表格数据)page_goto(导航到Lambda控制台)evaluate_script(执行JS来遍历函数列表并获取超时配置)AI分析提取的数据生成结构化报告。这个过程完全自动化无需你手动点击任何页面。Resolink处理了所有浏览器交互的细节而Claude则负责高层的任务规划、指令解析和结果分析。5. 安全、权限与最佳实践将浏览器自动化能力赋予AI是一个强大的功能但也伴随着显著的安全风险。想象一下如果AI被恶意提示词诱导它可能会自动操作浏览器访问恶意网站、泄露cookie中的登录凭证甚至进行未经授权的金融操作。因此在生产环境或敏感场景中使用Resolink必须遵循严格的安全准则。5.1 核心安全考量会话隔离始终为不同的任务或对话使用独立的浏览器上下文new_context。这确保了在一个对话中登录的网站Cookie和本地存储不会泄露给另一个对话。Resolink应在设计上支持或鼓励这种模式。权限最小化不要给AI助手配置拥有过高系统权限的浏览器配置文件。避免使用保存了银行、主邮箱等关键密码的浏览器用户数据目录。可以考虑为MCP专门创建一个干净的、无痕的浏览器配置文件。操作范围限制沙盒在服务器配置中是否可以限制AI只能访问特定的域名Allow List这是一个重要的安全增强特性。虽然Resolink原生可能不支持但可以通过网络层代理或修改服务器代码来实现。敏感信息处理AI在操作中可能会读取到页面上的敏感信息如API密钥、手机号。需要明确的是这些信息会作为工具调用的结果返回给AI模型并可能用于后续的对话上下文。因此绝对不要在AI对话中让其操作包含极高敏感信息的页面。对于必要的自动化登录考虑使用环境变量注入或安全的密码管理工具而不是让AI“看到”明文密码。5.2 配置与操作最佳实践环境变量管理将浏览器类型、无头模式、代理设置、甚至某些网站的登录凭证如果必须通过环境变量传递给Resolink服务器。避免在代码或客户端配置中硬编码。# 在启动Claude Desktop前设置环境变量 export RESOLINK_BROWSER_TYPEchromium export RESOLINK_HEADLESStrue export AWS_LOGIN_USERNAMEmyuserexample.com # 密码建议使用更安全的密钥管理服务此处仅为示例使用无头模式作为默认除非正在调试复杂的UI交互否则始终将HEADLESS设置为true。这更节省资源且避免了浏览器窗口突然弹出干扰工作。超时与错误处理在服务器配置或工具实现中为所有浏览器操作设置合理的超时时间。网络延迟或页面加载缓慢不应导致整个AI对话卡死。良好的错误处理应将Playwright的异常转换为对人类和AI都友好的错误信息。资源清理建立机制确保浏览器实例在长时间不活动或对话结束后被正确关闭。可以在MCP服务器中实现一个心跳检测或空闲超时关闭的逻辑防止浏览器进程堆积。5.3 提示工程技巧如何更有效地指挥AI要让AI用好Resolink你的指令需要更加结构化清晰的目标“去GitHub上找到项目X的最新Release版本号。” 比 “看看GitHub上有什么新版本” 更好。指定选择器策略如果知道页面结构可以提示AI使用更稳定的选择器。例如“使用CSS选择器.repo-list .item来获取仓库列表。” 但更多时候你应该让AI自己分析页面内容来决定。分步引导复杂任务对于非常复杂的多步骤任务可以拆分成多个对话回合。先让AI完成第一步并反馈结果确认无误后再进行下一步。这比一次性给出一个长达十步的复杂指令更容易成功。善用evaluate_script当你需要的数据隐藏在复杂的JavaScript渲染的组件后面或者需要执行特定计算时直接告诉AI“你可以尝试在页面控制台执行一段JavaScript来获取这个数据。” AI往往会生成更精准的JS脚本来完成任务。6. 常见问题与故障排查实录在实际集成和使用Resolink的过程中你肯定会遇到各种问题。下面是我在测试和实践中遇到的一些典型情况及其解决方案希望能帮你快速排雷。6.1 连接与启动问题问题现象可能原因排查步骤与解决方案Claude Desktop启动后无任何MCP工具显示。1. 配置文件路径错误。2. 配置文件格式错误JSON语法。3. Resolink服务器启动失败。1.检查路径确认claude_desktop_config.json文件在正确位置且args中的Node脚本路径是绝对路径且存在。2.验证JSON使用在线JSON校验工具或jq命令检查配置文件语法。3.查看日志在终端手动运行配置中的命令如node /path/to/index.js看是否有错误输出。常见错误是缺少依赖或Playwright浏览器未安装。启动时提示“命令未找到”或“权限被拒绝”。1. Node.js未在系统PATH中。2. 脚本文件没有执行权限。1.指定Node全路径在command中不使用node而使用Node的绝对路径如/usr/local/bin/node。2.添加权限对脚本文件执行chmod x /path/to/script.js仅Unix系统。浏览器启动失败报错“Executable doesn‘t exist”。Playwright浏览器未安装或安装不完整。在Resolink项目目录下运行npx playwright install --with-deps。--with-deps参数会确保安装所有必要的系统依赖如字体库。6.2 运行时操作问题问题现象可能原因排查步骤与解决方案AI调用page_goto后超时或返回空白内容。1. 网络问题代理、防火墙。2. 页面依赖复杂JS加载时间过长。3. 网站有反机器人检测。1.配置代理通过环境变量为Playwright配置代理HTTPS_PROXY/HTTP_PROXY。2.增加超时在工具调用或服务器配置中增加page.goto的超时时间如设为60000毫秒。3.等待特定元素指示AI在page_goto后使用page_wait_for_selector等待一个代表页面加载完成的关键元素出现再获取内容。4.对抗检测一些网站会检测Playwright。可以尝试在启动浏览器时添加args: [--disable-blink-featuresAutomationControlled]或使用playwright-stealth等插件需集成到Resolink中。element_click失败提示“Element not found”。1. 选择器写错了。2. 元素在iframe内。3. 元素尚未加载或不可见。1.验证选择器手动打开浏览器开发者工具用document.querySelector()测试AI使用的选择器。2.处理iframe如果元素在iframe里需要先让AI使用page.frame()切换到对应的iframe上下文再执行操作。3.等待与滚动指示AI在点击前先使用page_wait_for_selector并可能结合element_scroll_into_view_if_needed如果Resolink暴露了此工具或通过JS执行。AI执行操作后页面状态混乱后续步骤失败。操作触发了非预期的导航、弹窗或状态变化。1.操作后等待在每个可能改变页面状态的操作click, fill后让AI主动等待一下page_wait_for_load_state(networkidle)。2.处理弹窗Playwright可以监听弹窗page.on(dialog)但需要Resolink暴露相应工具或提前在服务器代码中配置默认的弹窗处理如自动接受。3.更精确的选择器使用更唯一的选择器避免点到其他具有相同文本但功能不同的元素。6.3 性能与稳定性问题问题现象可能原因排查步骤与解决方案连续运行多个自动化任务后系统内存占用很高。浏览器实例或页面未正确关闭导致内存泄漏。1.显式关闭在任务结束时指示AI调用browser_close工具。2.服务器端管理修改Resolink服务器为每个对话或任务创建独立的浏览器上下文并在对话结束后通过检测MCP连接断开自动清理该上下文的所有页面和浏览器实例。操作速度很慢尤其是页面加载。1. 网络慢。2. 无头模式下的资源加载策略可以优化。1.禁用不必要资源在启动浏览器时可以通过设置ignoreHTTPSErrors、bypassCSP以及设置viewport来加速。更激进的方法是设置intercept路由来阻塞图片、样式表、字体等非必要资源仅当只需要文本内容时。这需要修改Resolink的浏览器启动配置。AI的指令解析不稳定有时能成功有时失败。AI对自然语言到工具参数尤其是选择器的转换不一致。1.提供上下文在指令中提供更多页面结构的线索。例如“在顶部导航栏找到一个类名包含‘user-menu’的按钮。”2.分步验证让AI先执行page_content把关键的HTML片段或文本内容返回给你看确认AI“看到”的页面和你预期一致再指导它使用更精确的选择器。3.使用更语义化的选择器鼓励AI优先使用role和text这类与UI文本相关的选择器它们比基于复杂CSS类名的选择器更稳定只要UI文本不变。7. 扩展思路与未来展望Resolink MCP作为一个开源项目其当前的实现已经提供了一个强大的基础。但它的潜力远不止于此。结合社区的力量和实际工作流我们可以想象出许多令人兴奋的扩展方向。1. 工具能力的扩展文件上传/下载集成本地文件系统交互让AI能自动上传测试文件到云存储或从网页下载文档并保存到指定位置。更丰富的输入模拟除了点击和输入可以添加拖放drag_and_drop、鼠标悬停hover、键盘快捷键模拟等工具。网络请求监控暴露工具让AI能监听和拦截页面发出的网络请求这对于调试API调用或性能分析非常有用。视觉断言结合简单的图像识别或像素对比让AI能验证“某个按钮是否显示为红色”或“页面是否包含了某个Logo”。2. 与开发工作流的深度集成端到端测试生成AI在手动操作一遍业务流程后可以自动将这一系列工具调用转化为可维护的Playwright或Puppeteer测试脚本。UI审查助手让AI自动遍历网站的页面检查可访问性ARIA属性、颜色对比度、控制台错误并生成报告。数据抓取与监控定期自动化登录内部仪表盘抓取关键业务指标如DAU、服务器状态并让AI分析趋势在出现异常时自动告警。3. 服务器架构的增强连接池与会话管理支持多个AI客户端共享或独占浏览器实例提高资源利用率。操作录制与回放除了接受AI的指令是否可以录制用户的手动操作并将其转化为一系列可被AI理解和复用的工具调用序列更细粒度的权限控制实现基于域名、工具类型甚至时间段的访问控制策略。Resolink MCP代表了一种范式转变AI不再是只能回答问题的“智库”而是正在演变为能够操作数字工具的“智能体”。它降低了自动化任务的技术门槛——你不需要是一个精通Playwright的工程师只需要用自然语言描述你的需求。当然当前的它还不够完美对复杂、动态网页的鲁棒性以及对模糊指令的准确解析都还有很长的路要走。但作为一个早期项目它清晰地勾勒出了未来人机协作的图景人类负责定义目标和审核结果AI负责执行繁琐、重复的数字化操作。

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