3小时解锁桌面效率提升:零代码基础掌握RobotJS自动化工具

news2026/3/14 16:42:17
3小时解锁桌面效率提升零代码基础掌握RobotJS自动化工具【免费下载链接】robotjsNode.js Desktop Automation.项目地址: https://gitcode.com/gh_mirrors/ro/robotjs开篇被重复劳动困住的三个真实场景场景一客服日常的机械重复又到了每天处理50工单的时间。复制用户ID、查询订单状态、粘贴标准回复...这套流程我闭着眼睛都能做但每天重复200次真的让人崩溃。某电商平台客服小李的抱怨道出了许多办公族的痛点——机械操作蚕食80%工作时间却创造不到20%的价值。场景二财务月底的报表噩梦财务专员王姐每到月底就焦虑从ERP系统导出数据、整理成Excel表格、生成图表、制作PDF报告...这一连串操作至少需要6小时还不能出错。更糟的是一旦原始数据有变动整个流程必须重新走一遍人工操作既耗时又易出错。场景三测试工程师的 UI 验证困境这个按钮在不同分辨率下的位置都要测试每次都要手动调整窗口、点击、记录结果...测试工程师小张无奈地说。重复性的UI验证工作占用了70%的测试时间让他没有精力关注更重要的功能测试。这些场景的共同痛点是高重复、低价值、易出错。而RobotJS正是解决这些问题的钥匙——一个能让电脑自动执行桌面操作的开源工具。核心能力模块从痛点到解决方案模块一鼠标智能控制解放双手的精准操作能力概述鼠标控制是桌面自动化的基础RobotJS提供从简单点击到复杂拖拽的全功能支持。通过编程控制鼠标移动、点击、拖拽和滚动实现完全替代人工操作的精准控制。场景价值客服自动定位工单系统中的操作按钮财务自动点击报表软件的菜单选项测试模拟用户在不同界面元素上的点击行为分步实现自动填写客服工单系统const robot require(robotjs); // 设置操作延迟模拟人类操作速度 robot.setMouseDelay(150); // ⚡ 关键技巧设置100-200ms延迟可避免被系统识别为机器人 // 1. 移动到新建工单按钮并点击 robot.moveMouseSmooth(800, 300); // 使用平滑移动更自然 robot.mouseClick(); // 2. 等待界面加载根据实际情况调整 setTimeout(() { // 3. 移动到客户ID输入框 robot.moveMouseSmooth(500, 450); robot.mouseClick(); // 4. 输入客户ID实际应用中可从数据源读取 robot.typeString(CUST-2023-0589); // 5. 移动到问题类型下拉菜单 robot.moveMouseSmooth(500, 500); robot.mouseClick(); // 6. 选择物流问题向下移动3个选项 for(let i0; i3; i) { robot.keyTap(down); } robot.keyTap(enter); console.log(工单基本信息填写完成); }, 2000);适用场景需要在固定界面模板上进行重复输入的操作如工单处理、数据录入等注意事项坐标位置需根据实际屏幕分辨率调整建议使用相对坐标或图像识别定位关键步骤始终在操作之间添加适当延迟既符合人类操作习惯也给应用程序足够的响应时间。⚠️新手陷阱直接使用绝对坐标定位元素看似简单但当窗口大小或分辨率改变时会失效实际项目中建议结合图像识别或相对定位。扩展思考如何让鼠标操作适应不同分辨率的屏幕可以结合屏幕尺寸API动态计算坐标// 获取屏幕尺寸动态计算位置 const screen robot.getScreenSize(); const centerX screen.width / 2; const centerY screen.height / 2;模块二键盘自动化输入告别手动敲击能力概述键盘控制模块支持模拟各种键盘输入包括单个按键、组合键和字符串输入。通过编程实现文本输入、快捷键操作和复杂的键盘组合大幅提升数据录入效率。场景价值客服自动输入标准回复模板财务快速录入报表数据测试模拟用户的键盘操作流程分步实现财务报表数据自动录入const robot require(robotjs); // 设置键盘延迟 robot.setKeyboardDelay(50); // 假设已打开Excel报表 setTimeout(() { // 移动到第一个数据单元格A2 robot.moveMouseSmooth(200, 200); robot.mouseClick(); // 模拟数据录入实际应用中可从数据库或CSV读取 const financialData [ 10245.89, 8762.45, 12987.33, 7654.21, 9876.54, 11234.78 ]; financialData.forEach((value, index) { robot.typeString(value); // 移动到下一个单元格按Tab键 if(index financialData.length - 1) { robot.keyTap(tab); } }); // 使用快捷键保存文件 robot.keyToggle(control, down); robot.keyTap(s); robot.keyToggle(control, up); console.log(财务数据录入完成); }, 3000);适用场景需要在表格、表单中输入大量结构化数据的场景注意事项确保目标应用程序处于激活状态否则输入会发送到错误窗口⚡关键技巧使用keyToggle实现组合键操作如CtrlC复制、CtrlV粘贴等常用快捷键。扩展思考如何处理包含特殊字符的文本输入RobotJS支持直接输入大多数特殊字符对于复杂情况可使用Unicode编码// 输入特殊字符 robot.typeString(¥1,000.50); // 直接输入 robot.keyTap(u, control); // 按CtrlU组合键模块三屏幕捕获与图像识别让程序看见屏幕能力概述屏幕捕获模块允许程序看见屏幕内容通过像素级颜色识别通过RGB值精确定位屏幕元素和图像分析实现基于视觉的自动化决策。这是从简单脚本迈向智能自动化的关键一步。 实现原理src/screen.c、src/color_find.c场景价值客服识别工单优先级标识红色/黄色/绿色标签财务验证报表生成是否完成检测特定区域颜色变化测试确认UI元素是否正确显示分步实现UI自动化测试中的元素验证const robot require(robotjs); // 等待应用加载 setTimeout(() { // 1. 捕获整个屏幕 const screen robot.screen.capture(); // 2. 定义要验证的UI元素区域假设登录按钮位置 const loginButtonArea { x: 600, y: 400, width: 120, height: 40 }; // 3. 检查按钮是否存在通过颜色特征 let buttonFound false; const targetColor 3498db; // 蓝色按钮的RGB值 // 扫描按钮区域的像素 for(let y 0; y loginButtonArea.height; y) { for(let x 0; x loginButtonArea.width; x) { const pixelColor screen.colorAt( loginButtonArea.x x, loginButtonArea.y y ); if(pixelColor targetColor) { buttonFound true; break; } } if(buttonFound) break; } // 4. 根据检查结果执行操作 if(buttonFound) { console.log(登录按钮验证通过); robot.moveMouse( loginButtonArea.x loginButtonArea.width/2, loginButtonArea.y loginButtonArea.height/2 ); robot.mouseClick(); } else { console.error(错误未找到登录按钮); } }, 5000);适用场景需要视觉验证的自动化测试、基于界面状态决策的自动化流程注意事项颜色识别受屏幕分辨率和显示设置影响较大建议在固定环境下使用关键步骤使用screen.capture()获取屏幕数据然后通过colorAt(x,y)方法检查特定位置的颜色值实现基本的图像识别功能。⚠️新手陷阱直接使用像素颜色进行识别时微小的颜色差异如抗锯齿效果会导致识别失败建议使用颜色容差或区域匹配方法。扩展思考如何实现更复杂的图像识别可以结合模板匹配算法在屏幕上查找特定图像// 伪代码模板匹配思路 function findImageOnScreen(template) { const screen robot.screen.capture(); // 实现模板匹配算法... return {x, y}; // 返回找到的位置 }行业场景实战从理论到应用场景一客服工单自动处理系统需求分析某客服中心需要处理大量重复咨询如查询订单状态、退换货申请等。通过自动化实现自动识别工单类型提取关键信息客户ID、订单号执行预设查询流程生成标准回复实现代码const robot require(robotjs); const fs require(fs); // 工单处理配置 const ticketConfig { // 工单类型识别区域 typeRegion: {x: 300, y: 200, width: 200, height: 30}, // 不同工单类型的颜色标识 typeColors: { orderQuery: e74c3c, // 红色 returnRequest: f39c12, // 橙色 complaint: 9b59b6 // 紫色 }, // 标准回复模板 responses: { orderQuery: 您好您的订单状态为[STATUS]预计[DATE]送达。, returnRequest: 已为您提交退货申请退货地址将发送至您的邮箱。, complaint: 您的反馈已收到我们将在24小时内联系您处理。 } }; // 主处理函数 async function processTicket() { console.log(开始处理工单...); // 1. 识别工单类型 const screen robot.screen.capture(); let ticketType unknown; // 扫描工单类型区域 for(let x 0; x ticketConfig.typeRegion.width; x) { const pixelColor screen.colorAt( ticketConfig.typeRegion.x x, ticketConfig.typeRegion.y ); if(pixelColor ticketConfig.typeColors.orderQuery) { ticketType orderQuery; break; } else if(pixelColor ticketConfig.typeColors.returnRequest) { ticketType returnRequest; break; } else if(pixelColor ticketConfig.typeColors.complaint) { ticketType complaint; break; } } if(ticketType unknown) { console.log(无法识别工单类型跳过处理); return; } console.log(识别到工单类型${ticketType}); // 2. 提取客户ID假设在固定位置 robot.moveMouseSmooth(400, 300); robot.mouseClick(); robot.keyToggle(control, down); robot.keyTap(a); robot.keyTap(c); robot.keyToggle(control, up); const customerId robot.getClipboard(); // ⚡ 使用剪贴板获取文本更可靠 console.log(提取客户ID${customerId}); // 3. 根据工单类型执行相应操作 if(ticketType orderQuery) { // 查询订单状态模拟操作 robot.moveMouseSmooth(500, 400); robot.mouseClick(); robot.typeString(customerId); robot.keyTap(enter); // 等待查询结果 await new Promise(resolve setTimeout(resolve, 2000)); // 复制订单状态 robot.moveMouseSmooth(600, 500); robot.mouseDrag(600, 500, 800, 500); // 选中状态文本 robot.keyToggle(control, down); robot.keyTap(c); robot.keyToggle(control, up); const orderStatus robot.getClipboard(); // 生成回复 const response ticketConfig.responses.orderQuery .replace([STATUS], orderStatus) .replace([DATE], 2023-12-25); // 粘贴回复 robot.moveMouseSmooth(400, 600); robot.mouseClick(); robot.keyToggle(control, down); robot.keyTap(v); robot.keyToggle(control, up); // 提交回复 robot.moveMouseSmooth(900, 700); robot.mouseClick(); } console.log(工单处理完成); } // 每30秒检查一次新工单 setInterval(processTicket, 30000); console.log(客服工单自动处理系统已启动);挑战任务尝试修改代码添加工单优先级识别功能优先处理高优先级工单。提示可以通过识别优先级标签的颜色如红色表示高优先级来实现。场景二财务报表自动生成工具需求分析财务部门每月需要从多个系统导出数据整理成标准格式的Excel报表。通过自动化实现定时从ERP系统导出数据自动整理和计算数据生成标准图表转换为PDF格式并发送邮件实现代码const robot require(robotjs); const fs require(fs); const path require(path); // 报表生成配置 const reportConfig { erpExportButton: {x: 200, y: 150}, dataFilePath: path.join(__dirname, financial_data.csv), excelPath: C:\\Program Files\\Microsoft Office\\root\\Office16\\EXCEL.EXE, reportTemplate: path.join(__dirname, report_template.xlsx) }; // 启动应用程序 function launchApplication(path) { robot.keyToggle(meta, down); robot.keyTap(r); robot.keyToggle(meta, up); robot.typeString(path); robot.keyTap(enter); return new Promise(resolve setTimeout(resolve, 5000)); // 等待应用启动 } // 主函数生成月度财务报表 async function generateMonthlyReport() { console.log(开始生成月度财务报表...); try { // 1. 启动ERP系统假设已打开 // await launchApplication(C:\\ERP\\erp.exe); // 2. 导出数据 robot.moveMouseSmooth(reportConfig.erpExportButton.x, reportConfig.erpExportButton.y); robot.mouseClick(); // 等待导出对话框 await new Promise(resolve setTimeout(resolve, 2000)); // 选择CSV格式 robot.keyTap(tab, alt); // 切换到格式选择 robot.keyTap(down, control); // 选择CSV robot.keyTap(enter); // 确认保存 await new Promise(resolve setTimeout(resolve, 1000)); robot.keyTap(enter); console.log(数据导出完成); // 3. 启动Excel并打开模板 await launchApplication(reportConfig.excelPath); // 打开模板文件 robot.keyToggle(control, down); robot.keyTap(o); robot.keyToggle(control, up); await new Promise(resolve setTimeout(resolve, 2000)); robot.typeString(reportConfig.reportTemplate); robot.keyTap(enter); await new Promise(resolve setTimeout(resolve, 3000)); // 4. 导入CSV数据 robot.keyToggle(alt, down); robot.keyTap(a); // 数据选项卡 robot.keyTap(i); // 从文本导入 robot.keyToggle(alt, up); await new Promise(resolve setTimeout(resolve, 2000)); robot.typeString(reportConfig.dataFilePath); robot.keyTap(enter); // 完成导入向导假设使用默认设置 for(let i0; i3; i) { await new Promise(resolve setTimeout(resolve, 1000)); robot.keyTap(enter); } console.log(数据导入完成); // 5. 刷新图表假设模板已设置好公式和图表 robot.keyToggle(control, down); robot.keyTap(f5); robot.keyToggle(control, up); await new Promise(resolve setTimeout(resolve, 2000)); // 6. 另存为PDF robot.keyToggle(control, down); robot.keyToggle(shift, down); robot.keyTap(s); robot.keyToggle(shift, up); robot.keyToggle(control, up); await new Promise(resolve setTimeout(resolve, 2000)); robot.keyTap(down, alt); // 切换保存类型 for(let i0; i5; i) { // 选择PDF格式 robot.keyTap(down); } robot.keyTap(enter); await new Promise(resolve setTimeout(resolve, 1000)); robot.keyTap(enter); // 确认保存 console.log(报表生成完成); } catch (error) { console.error(报表生成失败:, error); } } // 执行报表生成 generateMonthlyReport();挑战任务修改代码实现自动发送邮件功能。提示可以使用系统自带的邮件客户端通过模拟键盘操作来创建和发送邮件。场景三Web应用UI自动化测试需求分析开发团队需要确保Web应用在不同浏览器中的UI一致性。通过自动化实现打开多个浏览器并加载测试页面截取关键页面元素比较不同浏览器中的显示效果生成测试报告实现代码const robot require(robotjs); const fs require(fs); const path require(path); // 测试配置 const testConfig { browsers: [ {name: Chrome, path: C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe}, {name: Firefox, path: C:\\Program Files\\Mozilla Firefox\\firefox.exe} ], testUrl: https://example.com/test-page, screenshotDir: path.join(__dirname, ui_screenshots), elementsToTest: [ {name: header, x: 200, y: 100, width: 800, height: 100}, {name: navigation, x: 200, y: 200, width: 800, height: 50}, {name: content, x: 200, y: 300, width: 800, height: 400} ] }; // 创建截图目录 if (!fs.existsSync(testConfig.screenshotDir)) { fs.mkdirSync(testConfig.screenshotDir, {recursive: true}); } // 启动浏览器并截图 async function captureBrowserScreenshots(browser) { console.log(启动浏览器: ${browser.name}); // 启动浏览器 robot.keyToggle(meta, down); robot.keyTap(r); robot.keyToggle(meta, up); robot.typeString(browser.path); robot.keyTap(enter); // 等待浏览器启动 await new Promise(resolve setTimeout(resolve, 5000)); // 最大化窗口 robot.keyToggle(alt, down); robot.keyTap(space); robot.keyTap(x); robot.keyToggle(alt, up); await new Promise(resolve setTimeout(resolve, 1000)); // 输入测试URL robot.keyToggle(control, down); robot.keyTap(l); // 选中地址栏 robot.keyToggle(control, up); robot.typeString(testConfig.testUrl); robot.keyTap(enter); // 等待页面加载 await new Promise(resolve setTimeout(resolve, 5000)); // 截取整个页面 const fullScreenshot robot.screen.capture(); const fullPath path.join(testConfig.screenshotDir, ${browser.name}_full.png); // 注意实际保存需要额外的图像处理库支持 // 截取特定元素 testConfig.elementsToTest.forEach(element { const elementScreenshot robot.screen.capture( element.x, element.y, element.width, element.height ); const elementPath path.join( testConfig.screenshotDir, ${browser.name}_${element.name}.png ); // 注意实际保存需要额外的图像处理库支持 console.log(已截取元素: ${element.name}); }); // 关闭浏览器 robot.keyToggle(alt, down); robot.keyTap(f4); robot.keyToggle(alt, up); console.log(${browser.name}测试完成); } // 主测试函数 async function runUITests() { console.log(开始UI自动化测试...); for(const browser of testConfig.browsers) { await captureBrowserScreenshots(browser); await new Promise(resolve setTimeout(resolve, 2000)); // 等待浏览器关闭 } console.log(UI自动化测试完成截图已保存到:, testConfig.screenshotDir); // 这里可以添加图像比较逻辑比较不同浏览器的截图差异 } // 执行测试 runUITests();挑战任务尝试添加简单的图像比较功能检测不同浏览器截图的差异。提示可以比较关键区域的平均颜色值来判断显示是否一致。环境配置快速上手指南一键安装方案对于大多数用户推荐使用npm直接安装# 安装RobotJS npm install robotjs⚡关键技巧建议使用Node.js 14.x或更高版本以获得最佳兼容性。手动编译方案如果需要从源码构建适用于开发或特殊系统# 克隆仓库 git clone https://gitcode.com/gh_mirrors/ro/robotjs # 进入项目目录 cd robotjs # 安装依赖 npm install # 编译原生模块 npm run build 官方指南README.md⚠️注意事项编译需要系统具备C开发环境Windows用户可能需要安装Visual Studio Build ToolsLinux用户需要安装gcc和make。项目结构解析RobotJS采用C语言实现核心功能通过Node.js C扩展提供JavaScript接口。主要模块结构如下robotjs/ ├── src/ # 核心源代码 │ ├── mouse.c # 鼠标控制实现 │ ├── keypress.c # 键盘控制实现 │ ├── screen.c # 屏幕捕获实现 │ ├── screengrab.c # 截图功能实现 │ ├── color_find.c # 颜色识别实现 │ └── robotjs.cc # Node.js扩展入口 ├── test/ # 测试代码 │ ├── mouse.js # 鼠标功能测试 │ ├── keyboard.js # 键盘功能测试 │ └── screen.js # 屏幕功能测试 ├── package.json # 项目配置 └── binding.gyp # 编译配置各模块之间的关系robotjs.cc作为入口点将C语言实现的功能暴露给JavaScriptmouse.c和keypress.c分别处理鼠标和键盘的底层操作screen.c和screengrab.c负责屏幕捕获和图像处理color_find.c提供颜色识别和图像搜索功能自动化思维培养自动化适合做什么自动化并非万能以下类型任务最适合自动化处理高度重复的操作如数据录入、格式转换对准确性要求高的工作如财务计算、报表生成需要在特定时间执行的任务定时备份、报表生成多步骤固定流程如系统部署、测试流程自动化思维四步法观察流程详细记录手动操作的每一步骤识别模式找出重复出现的操作模式抽象规则将操作规则转化为可执行的逻辑渐进实现从简单功能开始逐步构建完整自动化流程自动化需求评估表任务特征适合自动化不适合自动化重复频率每天/每周重复一次性或极少重复步骤稳定性步骤固定不变经常变动错误影响低风险高风险如财务转账时间消耗超过30分钟/次少于5分钟/次复杂度中等3-10个步骤极高超过20个步骤总结通过本文的学习你已经掌握了RobotJS的核心功能和实际应用方法。从鼠标键盘控制到屏幕图像识别从客服工单处理到财务报表生成RobotJS为桌面自动化提供了强大而灵活的工具集。自动化不仅是一种技术更是一种思维方式。它让我们从重复劳动中解放出来专注于更有创造性的工作。无论你是客服人员、财务专员还是测试工程师RobotJS都能帮助你提升工作效率减少错误创造更多价值。现在是时候审视自己的工作流程找出那些可以自动化的痛点用RobotJS开启你的自动化之旅了记住最好的自动化方案是从解决一个小问题开始逐步构建更复杂的系统。【免费下载链接】robotjsNode.js Desktop Automation.项目地址: https://gitcode.com/gh_mirrors/ro/robotjs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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