从QTP11入门到现代自动化测试:核心思想迁移与实践指南
1. 从“录制回放”到“自动化测试框架”重新认识QTP如果你刚接触自动化测试或者正在寻找一款能帮你把那些重复、繁琐的Web或桌面应用操作自动化的工具那么“QTP”这个名字你大概率听说过。它曾经是自动化测试领域的代名词无数测试工程师的入门工具。但今天当我们谈论“QTP11安装及入门”时我们谈论的绝不仅仅是一个十几年前的老古董软件的安装步骤。我们真正要探讨的是在今天这个技术环境下如何理解一个经典工具的核心思想以及这些思想如何迁移到现代测试实践中。QTP全称QuickTest Professional后来被整合进HP的UFTUnified Functional Testing套件。QTP11大约是在2010年左右发布的版本它的核心能力是“关键字驱动”和“对象识别”。简单来说它允许你通过录制你在软件界面上的操作比如点击按钮、输入文本自动生成测试脚本然后可以回放这些脚本实现自动化测试。这听起来是不是和现在很多“无代码”或“低代码”的RPA机器人流程自动化工具很像没错QTP可以说是这类工具的鼻祖之一。那么为什么我们今天还要聊它原因有三第一思想传承。QTP所代表的“基于对象识别的GUI自动化”思想是UI自动化测试的基石。无论你后来用的是Selenium、Cypress、Playwright还是Appium底层逻辑——定位界面元素并与之交互——是相通的。从QTP入门你能最直观地理解“对象库”、“描述性编程”这些核心概念。第二历史遗留系统。很多金融、电信、传统制造业的核心业务系统其自动化测试脚本可能就是用QTP/UFT开发的维护和迭代这些资产理解其原理是必须的。第三学习曲线。对于测试新手直接上手Selenium编程语言可能有一定门槛而QTP的录制回放功能提供了一个非常平滑的入门路径让你快速看到自动化带来的成就感再逐步深入脚本编程。所以这篇内容不仅仅是带你完成QTP11的安装。我会以一个过来人的身份带你走过完整的安装、配置、录制第一个脚本、理解其对象模型并最终探讨如何将这些技能平移到现代测试技术栈中。你会发现安装过程中的一个选项、录制时的一个小技巧背后都关联着自动化测试的重要理念。2. QTP11安装实战细节决定成败安装一个软件看似简单但对于QTP这类依赖特定运行环境的企业级工具安装步骤中的每一个选择都可能影响后续使用的顺畅度。网上很多教程只给步骤却不解释为什么导致新手照着做却踩坑无数。这里我将结合当年踩过的坑为你拆解每一步背后的逻辑。2.1 安装前的环境侦察与准备在双击安装程序之前请务必花10分钟做好以下检查。这能避免80%的安装后问题。操作系统兼容性是首要关卡。QTP11是一个Windows原生应用它的黄金搭档是Windows 7和Windows XP。如果你使用的是Windows 10或Windows 11必须以“兼容模式”运行安装程序并建议以管理员身份运行。具体操作右键点击安装程序通常是setup.exe - 属性 - 兼容性 - 勾选“以兼容模式运行这个程序” - 选择“Windows 7”。同时勾选“以管理员身份运行此程序”。这是因为QTP11的某些底层驱动和注册表操作需要较高权限且其界面库与新版Windows存在细微兼容性问题兼容模式能很好地模拟旧版系统环境。关闭所有安全软件特别是那些带有主动防御功能的。这不是在开玩笑。QTP在安装和运行时会向系统目录写入文件、注册COM组件、安装浏览器插件如对IE的插件。任何一步被安全软件拦截都可能导致安装不完整或运行时对象识别失败。最稳妥的做法是暂时退出360、电脑管家、火绒等待安装配置完成后再开启。准备好必要的运行时库。QTP11基于.NET Framework和Visual C运行时库。虽然安装包通常会包含这些但有时版本冲突会导致问题。我建议你手动确保系统已安装.NET Framework 3.5 SP1和Visual C 2005/2008 Redistributable。你可以通过Windows的“启用或关闭Windows功能”来开启.NET 3.5并从微软官网下载最新的VC运行库合集进行安装。关于浏览器锁定Internet Explorer。QTP11对Web自动化的支持核心是IE浏览器通常是IE8或IE9。它对Chrome、Firefox的原始支持非常有限且需要额外插件且极不稳定。因此请确保你的系统有一个IE浏览器Win10/11可能隐藏了需要在“Windows功能”中启用“Internet Explorer 11”。在安装和后续使用期间将IE设为默认浏览器是减少麻烦的最佳实践。2.2 步步为营的安装过程详解假设你已经从合法渠道获得了QTP11的安装镜像通常是一个ISO文件或包含setup.exe的文件夹。我们开始核心安装。启动安装程序以管理员身份运行setup.exe。如果系统弹出用户账户控制UAC提示务必选择“是”。选择安装类型安装程序通常会提供“典型”、“完全”、“自定义”几种安装。对于新手我强烈推荐选择“完全安装”。原因在于“典型安装”可能不会安装所有必需的插件例如可能不安装Java插件或.NET插件而“自定义安装”需要你对组件有足够了解。完全安装一次性搞定所有基础组件虽然占用磁盘空间稍大约2-3GB但能避免后续因缺少插件而无法识别特定控件的尴尬。关键插件选择在安装过程中会有一个插件选择界面。这里是第一个决策点。QTP通过插件来识别不同技术开发的控件。默认可能只选了“Web”和“ActiveX”。请根据你未来要测试的应用程序类型勾选相应的插件Web必选用于测试IE浏览器中的网页应用。ActiveX必选很多传统桌面应用和Web应用中的复杂控件如图表、报表查看器都是ActiveX控件。Visual Basic如果你要测试用VB6或VB.NET开发的桌面应用必选。.NET如果要测试WinForms或WPF开发的.NET桌面应用必选。Java如果要测试Java Swing/AWT桌面应用或Java Applet必选。Oracle、SAP、PeopleSoft等如果你所在公司使用这些大型ERP/CRM系统并且需要进行前端自动化则需选择对应插件。我的建议是即使你目前不确定也把Web,ActiveX,.NET,Java这几个常见的都选上。多装插件除了多占一点空间没有坏处但少装了以后要测试对应应用时就得重新运行安装程序来添加更麻烦。许可证配置安装完成后首次启动QTP会要求你配置许可证。这里通常有三种模式试用版有期限如30天、浮动许可证连接许可证服务器、固定许可证输入序列号。如果你是个人学习选择试用版即可。这里要注意关闭QTP时建议使用菜单中的“退出”而不是直接点击窗口关闭按钮有时这会影响许可证服务的正常释放。安装后首次启动与设置首次启动后不要急着录制。先进行几项关键设置工具 - 选项在“常规”选项卡中设置默认的测试结果存储路径。在“运行”选项卡中建议取消勾选“在运行会话结束时显示结果”这可以让你在脚本运行后快速开始下一轮而不是每次都弹出结果窗口。文件 - 设置这里关联测试脚本Action的调用和参数传递入门阶段可以先保持默认。检查插件加载确保你安装的插件如Web、.NET在启动时已被加载。你可以在QTP的标题栏或关于对话框中看到已加载的插件列表。注意安装过程中如果遇到任何错误提示不要轻易点“忽略”。记下错误代码或信息这通常是缺少系统组件或权限问题的直接反映。最常见的错误是“无法注册类型库”或“DLL注册失败”这通常可以通过以管理员身份运行安装程序或手动注册相关DLL来解决。3. 录制第一个脚本从“魔法”到“理解”安装成功界面打开接下来就是见证“魔法”的时刻——录制。但我的目标是让你在第一次录制中就超越“点点点”看到背后的逻辑。3.1 录制流程与最佳实践新建测试点击“新建”按钮选择“Test”类型。QTP的测试文件后缀是.mtb。选择录制模式点击红色的圆形录制按钮会弹出录制设置对话框。这里有三个关键模式应用程序底部录制所有在指定窗口如IE浏览器内的操作。这是最常用、最稳定的模式。窗口录制对某个特定窗口的操作。桌面录制整个屏幕上的操作不稳定且容易误录不推荐。选择“应用程序底部”然后点击右侧的“”号打开你要测试的应用程序比如IE浏览器并输入一个测试网址例如一个登录页面。开始操作与录制此时QTP开始录制你的所有操作。你像正常用户一样操作在用户名输入框点击、输入“testuser”在密码框输入“123456”点击登录按钮。停止录制与生成脚本操作完成后点击QTP工具栏上的“停止”按钮。神奇的事情发生了你的所有操作被转换成了一行行的VBScript代码显示在关键字视图和专家视图中。看起来很简单对吗但这里有几个新手极易忽略却至关重要的细节录制速度要慢而稳在对象上点击后稍微停留0.5秒再移开鼠标。特别是在输入文本前确保光标在输入框内闪烁后再开始输入。这给了QTP足够的时间去捕获和识别当前焦点的对象能极大减少对象识别错误。避免不必要的操作不要录制你移动鼠标划过屏幕的轨迹只录制有效的点击、输入、选择操作。多余的鼠标移动会被录制成Mouse Move步骤使脚本冗长且脆弱。关注“对象库”录制完成后不要只看脚本。立即打开“对象库”Resources - Object Repository。你会看到里面列出了你刚才操作过的所有对象浏览器Browser、页面Page、用户名输入框WebEdit、密码输入框WebEdit、登录按钮WebButton。每个对象都有一组属性如name,id,html tag,type等来唯一标识它。这才是录制的核心产出物脚本只是基于这些对象执行操作的命令集合。3.2 理解录制的产物对象库与脚本录制结束后你得到了两样东西对象库和VBScript脚本。理解它们的关系是脱离“录制回放工具”认知迈向“自动化测试框架”思维的关键。对象库是一个仓库里面存放着你的应用程序中所有需要被操作的GUI元素的“身份证信息”。比如那个用户名输入框在对象库里可能被记录为名称UserName类型WebEdit识别属性html id“username”,name“user”,html tagINPUTQTP在回放时并不是“回忆”鼠标点击的坐标而是拿着这个“身份证”属性集合去当前页面上寻找匹配的元素然后对其执行操作如Set输入文本。生成的VBScript脚本在专家视图中查看则是操作这些对象的指令。它可能看起来像这样Browser(百度一下你就知道).Page(百度一下你就知道).WebEdit(wd).Set QTP Browser(百度一下你就知道).Page(百度一下你就知道).WebButton(百度一下).Click这段代码是典型的“点语法”描述了一个从Browser到Page再到WebEdit的层次结构最后调用Set方法输入文本。“百度一下你就知道”、“wd”、“百度一下”这些字符串就是对象库中对应对象的“名称”。一个重要的心智转变自动化测试不是模拟人的手和眼坐标而是模拟人的意图对某个具有特定属性的元素进行某种操作。对象库就是用来描述这些意图的载体。当页面元素属性发生变化时比如id从“username”变成了“userName”你只需要在对象库里更新这个属性的值所有使用该对象的脚本就都能正确运行了。这就是“维护对象库而非脚本”的核心优势。4. 超越录制脚本增强与调试技巧只会录制和回放脚本极其脆弱。页面加载慢一点、弹出一个意外对话框、下拉框选项顺序变了都可能导致回放失败。因此我们必须对录制的脚本进行“增强”使其更智能、更健壮。4.1 添加同步点与等待这是解决“对象未找到”错误的最常用手段。录制时页面可能瞬间加载完成。但回放时受网络或服务器影响页面加载可能变慢。如果脚本在页面元素还没出现时就尝试去操作就会报错。添加Wait语句在关键操作前插入一个固定的等待时间。例如在点击登录按钮后等待3秒让下一个页面加载。Browser(Example).Page(Example).WebButton(Login).Click Wait 3 等待3秒但固定等待效率低下且无法适应多变的网络环境。使用Sync方法更优QTP为许多对象提供了.Sync方法它会等待该对象准备好如页面加载完成、控件变为可用状态后再继续执行。Browser(Example).Page(Example).WebButton(Login).Click Browser(NextPage).Page(NextPage).Sync 等待名为“NextPage”的页面完全加载最佳实践是结合使用在关键页面跳转后使用.Sync在等待某些动态内容如AJAX加载的数据时使用Exist属性配合循环进行智能等待。智能等待某个元素出现最多等10秒 Dim i For i 1 To 10 If Browser(B).Page(P).WebElement(LoadingMessage).Exist Then Exit For End If Wait 1 Next4.2 参数化测试数据录制的脚本里用户名和密码是硬编码的“testuser”, “123456”。要测试多组数据怎么办复制粘贴脚本吗太低级了。我们需要参数化。QTP提供了强大的“数据表”功能Data Table它本质上是一个内嵌的Excel表格。在关键字视图中找到输入用户名的那一行。在“值”单元格中不要直接写“testuser”而是点击单元格旁的小图标选择“参数化”。选择“数据表”作为参数类型并指定一个列名如“UserName”。在Data Table默认在QTP界面底部的Globalsheet中你会在第一列看到UserName在下面行输入不同的测试用户名如admin,user1,locked_user。对密码进行同样的参数化操作列名为“Password”。设置脚本的运行迭代次数为“所有行”。这样当你运行脚本时QTP会自动从Data Table中逐行读取数据用第一组数据(admin, 对应密码)运行一次脚本再用第二组数据运行一次以此类推。这就实现了用一个脚本测试多组数据。4.3 添加检查点Checkpoint自动化测试不能只执行操作还要验证结果。检查点就是用来验证的。QTP支持多种检查点标准检查点验证对象属性、文本检查点、图像检查点、表格检查点等。添加一个文本检查点假设登录成功后页面会显示“欢迎[用户名]”。在录制或编辑状态下在关键字视图中在你想要添加检查点的步骤之后右键选择“插入检查点”。在页面上点击显示欢迎信息的文本。在检查点属性对话框中你可以设置要检查的具体文本内容。你可以再次使用参数化让期望的文本动态化如“欢迎” DataTable(“UserName”, dtGlobalSheet)。添加检查点后脚本在回放时就会自动进行验证。如果实际文本与预期不符测试结果会标记为“失败”并给出详细差异。4.4 调试脚本让问题无处遁形脚本运行失败是常态。掌握调试技巧能快速定位问题根源。使用断点在专家视图的代码行左侧灰色区域点击可以设置断点一个红点。运行脚本时执行到这一行会暂停。此时你可以将鼠标悬停在变量上查看其当前值也可以使用“调试查看器”来检查和修改变量、对象属性。单步执行在调试模式下使用F10单步跳过或F11单步进入来一行一行地执行代码观察执行流程和状态变化。打印日志使用Print语句或Reporter.ReportEvent方法在测试结果中输出信息。这是最古老但最有效的调试手段之一。Print “当前用户名是” DataTable(“UserName”, dtGlobalSheet) Reporter.ReportEvent micInfo, “信息”, “开始执行登录操作”查看运行时对象属性当脚本因对象找不到而失败时在调试暂停时可以立即在“对象探测器”Tools - Object Spy中查看当前应用程序中实际对象的属性与对象库中存储的属性进行对比找出差异比如id变了或者多了一个class属性。5. 从QTP到现代测试体系思想迁移与技能升级掌握了QTP11的基本使用你已经理解了自动化测试的核心范式。但技术世界在飞速发展QTP本身已逐渐淡出主流视野被更开源、更灵活、更强大的工具链所取代。如何将你在QTP上学到的东西无缝迁移到现代测试技术栈中这才是学习的最终价值。5.1 核心概念的映射对象库 - 页面对象模型QTP的对象库在现代测试框架如Selenium中演变成了“页面对象模型”Page Object Model, POM。POM将每个页面的元素定位器和操作封装成一个独立的类这比QTP的全局对象库更清晰、更易于维护符合面向对象的设计原则。你在QTP里管理WebEdit(“UserName”)的经验可以直接用于编写Selenium的FindBy(id“username”) WebElement usernameInput;。关键字视图 - 行为驱动开发QTP的关键字视图将操作翻译成可读的英语短语其思想与“行为驱动开发”BDD工具如Cucumber、SpecFlow非常相似。它们都是用接近自然语言的语法Given-When-Then来描述测试场景。你设计QTP测试流程的思路完全可以用来编写Cucumber的Feature文件。VBScript - 主流编程语言QTP使用的VBScript是一种脚本语言。现代测试框架通常支持Java、Python、JavaScript、C#等更主流的语言。从VBScript过渡到Python或JavaScript你需要学习新的语法但编程逻辑变量、循环、条件判断、函数是相通的。而且使用这些语言你能获得更强大的生态库支持。检查点 - 断言库QTP的内置检查点对应的是现代测试框架中的“断言”Assert。例如在Selenium with TestNGJava中你会使用Assert.assertEquals(actualText, expectedText);。概念完全一致只是语法不同。数据表 - 外部数据源QTP的Data Table是一个内置数据源。现代测试中我们更常使用外部文件来管理测试数据如Excel文件用Apache POI或openpyxl读取、CSV文件、JSON文件、甚至直接连接数据库。这实现了数据与脚本的彻底分离。5.2 工具链的演进与选择理解了思想映射工具选择就清晰了Web自动化Selenium WebDriver是绝对的主流和标准。它支持所有主流浏览器和编程语言。Cypress和Playwright是后起之秀提供了更强大的自动等待、网络拦截、录制等开箱即用的功能开发者体验极佳。从QTP过渡我建议先学习Selenium因为它最基础、最通用理解了它再学其他更快。API自动化这是QTP时代相对薄弱的部分。现在Postman用于探索和手动测试、RestAssuredJava、Requests库Python、SupertestJavaScript等工具是API自动化的标配。测试重心从UI层大幅向API层转移效率更高、更稳定。移动自动化Appium是跨平台iOS/Android移动应用自动化的标准它的设计理念与Selenium WebDriver一脉相承学习曲线平滑。测试框架与报告现代测试不再是一个孤立的脚本。你需要一个测试框架来组织用例、管理生命周期、生成报告。例如TestNGJava、pytestPython、JestJavaScript。它们提供了类似QTP的测试迭代、数据驱动通过DataProvider或pytest.mark.parametrize、丰富的断言和美观的HTML报告。5.3 给QTP学习者的进阶路线图如果你已经通过QTP入门并想成为一名具有市场竞争力的现代测试工程师我建议的路线是巩固基础把你用QTP做的练习用Python或Java重写一遍。选择一个简单的Web应用如一个登录页面用Selenium实现相同的操作打开浏览器、输入、点击和检查点断言文本。这个过程会强迫你理解元素定位代替对象库、显式等待代替Sync和Wait。学习版本控制立即开始使用Git。把你写的脚本用Git管理起来。这是现代软件研发的基石QTP时代对这点强调不足。构建测试框架不要只写单个脚本。学习使用pytest或TestNG将你的脚本组织成测试类和方法。使用DataProvider实现数据驱动。配置生成Allure或ExtentReports等漂亮的测试报告。融入CI/CD了解如何将你的自动化测试集成到Jenkins、GitLab CI或GitHub Actions中实现代码提交后自动触发测试。这是实现“持续测试”的关键。拓展测试类型学习使用Postman或Requests库进行API测试。理解如何测试JSON/XML响应、状态码、性能等。回过头看QTP11的安装与入门就像学习驾驶时用的那台老式手动挡教练车。它可能没有自动挡那么方便没有那么多电子辅助设备但它让你深刻地理解了离合器、油门和挡位的配合理解了汽车运行的基本原理。当你掌握了这些再去开任何现代汽车Selenium, Playwright, Cypress都会觉得得心应手因为你理解的是“驾驶”本身而不是某款车的特定按钮。所以不要因为QTP“老”而轻视它。把它当作一个绝佳的原理性教学工具。通过它你扎实地理解了对象识别、同步、参数化、检查点这些自动化测试的通用语言。带着这些理解再踏入纷繁复杂的现代测试工具世界你将拥有更清晰的学习路径和更深刻的洞察力知道每一个新工具、新框架本质上是在解决什么老问题或者提供了什么更优的解决方案。这才是从“安装”到“入门”再到“精通”的完整路径。

相关新闻

Electron桌面应用开发入门:从零构建跨平台应用

Electron桌面应用开发入门:从零构建跨平台应用

1. 项目概述:为什么是Electron?如果你是一个前端开发者,或者对Web技术栈(HTML、CSS、JavaScript)比较熟悉,同时又想把手里的网页变成一个能安装在用户电脑上的独立应用,那么Electron几乎是你绕不…

2026/9/23 18:45:05 阅读更多 →
Spring Boot 4.0与JDK 26适配实战指南

Spring Boot 4.0与JDK 26适配实战指南

1. 项目概述:Spring Boot 4.0与JDK 26的适配背景 Spring Boot 4.0作为Java生态中最重要的企业级框架升级,其与JDK 26的适配绝非简单的版本号变更。这次升级背后是Java模块化系统的深度整合、虚拟线程(Loom项目)的正式落地&#xf…

2026/9/29 3:38:45 阅读更多 →
MapStruct 概念、基本用法与使用场景详解

MapStruct 概念、基本用法与使用场景详解

1. MapStruct 是什么?MapStruct 是一个专门帮你在 Java 对象之间“自动搬家”数据的工具。想象一下,你有一个“用户”对象(比如从数据库查出来的),里面有很多字段(id、名字、邮箱、创建时间等)&…

2026/10/7 21:40:04 阅读更多 →

最新新闻

前端性能优化实战:从图片压缩、懒加载到CDN缓存的完整方案

前端性能优化实战:从图片压缩、懒加载到CDN缓存的完整方案

1. 被老板盯上的那一刻,我们得先分清“慢”到底是从哪来的我先说个真实的场景。某次上线前的演示,老板随手点开我们刚做完的一个商品详情页,图片一张张在手机屏幕上“撑开”,视频首帧黑了两秒才出画面,页面滚动起来头像…

2026/10/9 5:14:23 阅读更多 →
AnyPS5:跨平台PS5手柄协议桥接技术解析

AnyPS5:跨平台PS5手柄协议桥接技术解析

项目标题:“AnyPS5”本身是一个高度凝练、带有明显技术产品命名风格的代号,但当前输入中未提供任何实质性描述——无项目正文、无关键词列表、无摘要描述,仅有一个孤立标题与空置的热搜词栏。这在真实从业场景中其实非常典型:我们…

2026/10/9 5:14:23 阅读更多 →
并联式混合动力Simulink控制策略模型搭建全解析

并联式混合动力Simulink控制策略模型搭建全解析

做混动整车仿真这几年,有一个体会特别深:并联式混合动力系统Simulink控制策略模型,表面上是个建模问题,实际上是个决策问题。它真正检验的不是你会不会搭Simulink模块,而是你能不能把“发动机和电机分别在什么时刻出力…

2026/10/9 5:14:23 阅读更多 →
STM32H743 双 W25Q256 QSPI Flash 下载算法调试:CubeMX 配置、FLM 编写与 SRAM 探针定位

STM32H743 双 W25Q256 QSPI Flash 下载算法调试:CubeMX 配置、FLM 编写与 SRAM 探针定位

最近在调试 STM32H743 的双 QSPI Flash 下载算法。前期因为其中一颗 W25Q256 本身存在硬件问题,导致下载失败、Verify 失败、屏幕花屏、双 Flash 读回异常等问题交织在一起,现象非常混乱。最后还是在ai的帮助下完成了FLM的编写,于是整理出了主…

2026/10/9 5:14:23 阅读更多 →
第一次Web作业避坑指南:从需求分析到项目部署全流程

第一次Web作业避坑指南:从需求分析到项目部署全流程

又到了交第一次web作业的季节。我这些年陆续看过几百份新人提交的第一个web项目,从纯静态的HTML页面,到挂着Spring Boot的增删改查都有。一个很有意思的现象是:拿高分的不一定是代码量最大的,而是那种你打开工程目录、顺着代码读下…

2026/10/9 5:14:23 阅读更多 →
旧主机再就业:AnyPS5方案实现模拟器、串流与媒体中心

旧主机再就业:AnyPS5方案实现模拟器、串流与媒体中心

1. 项目缘起与核心定位AnyPS5 这个名字第一次出现在我视野里的时候,我正蹲在一堆旧主机配件里翻找能用的散热风扇。当时一个做嵌入式开发的朋友甩过来一句:“你那个吃灰的旧主机,其实还能再榨出点剩余价值。”他说的就是 AnyPS5 这类方案——…

2026/10/9 5:13:23 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:34:55 阅读更多 →