当前位置: 首页 > news >正文

Playwright与Selenium详细对比及Playwright快速入门

Playwright 与 Selenium 详细对比及入门指南索引

简介

本文章旨在帮助测试工程师了解Playwright和Selenium这两个主流的UI自动化测试工具,并快速入门Playwright。文档分为多个部分,本文作为主要索引,提供核心对比和基本概念,而详细的子主题链接到专门的文章。

第一部分:Playwright 与 Selenium 详细对比

发行年份与背景

  • Selenium:2004年发布,是自动化测试领域的资深工具,有着20年的历史。目前由开源社区维护,经历了RC、WebDriver等多个重要版本,目前最新版本是Selenium 4,于2021年发布。
  • Playwright:2020年由微软发布,由前Puppeteer团队成员开发。从一开始就吸取了Selenium和Puppeteer的经验教训,采用现代Web技术架构设计,快速获得了社区认可。最初只支持JavaScript,后来扩展到Python、Java和.NET。

架构与技术原理

  • Selenium

    • 基于WebDriver协议,通过HTTP与浏览器通信
    • 需要为每种浏览器安装对应的驱动程序(ChromeDriver、GeckoDriver等)
    • 使用客户端-服务器架构,每个操作需要通过多次HTTP请求完成
    • Selenium 4开始支持W3C WebDriver标准,提高了跨浏览器的兼容性
  • Playwright

    • 基于CDP (Chrome DevTools Protocol)和类似技术直接与浏览器通信
    • 内置浏览器驱动,无需额外安装外部驱动
    • 使用WebSocket连接,保持长连接,操作响应更快
    • 使用"浏览器上下文"概念,提供更好的隔离性和并行能力

使用范围

  • Selenium

    • 支持几乎所有主流浏览器,包括Chrome、Firefox、Safari、Edge、Opera、IE等
    • 特别适合需要兼容旧版本浏览器的项目(如需支持IE11)
    • 在企业级应用测试中应用广泛,特别是传统行业和政府项目
    • 适用于需要在真实多浏览器环境中进行大规模跨浏览器测试的场景
  • Playwright

    • 主要支持三大现代浏览器引擎:Chromium(Chrome、Edge等)、Firefox和WebKit(Safari)
    • 更适合现代Web应用测试,尤其是单页应用(SPA)和渐进式Web应用(PWA)
    • 适合需要快速执行和高可靠性测试的项目
    • 在移动模拟、视觉测试和性能分析方面有特殊优势

语言支持

  • Selenium

    • 支持Java、Python、C#、Ruby、JavaScript、PHP、Perl等多种编程语言
    • Java生态系统最成熟,拥有最多的插件和扩展
    • 各语言的API可能存在差异,不同语言的功能更新速度不一
    • 可与各种测试框架集成(如JUnit、TestNG、NUnit、Mocha等)
  • Playwright

    • 支持JavaScript/TypeScript、Python、Java、.NET C#
    • JavaScript/TypeScript是最原生和完善的实现,功能最全面
    • 各语言API保持高度一致,学一种可以轻松切换到其他语言
    • 提供内置的测试框架,专为端到端测试设计(尤其是@playwright/test)

API设计与易用性

  • Selenium

    • API设计较为传统,有些接口设计不符合现代编程范式
    • 需要开发者处理许多底层细节,如等待和同步
    • 错误信息通常比较底层和技术化,不易于调试
    • 需要大量样板代码来处理基本操作
  • Playwright

    • 现代化的API设计,支持链式调用和流式编程风格
    • 抽象了许多底层细节,提供高级操作(如getByRolegetByText等)
    • 详细的错误信息和丰富的调试工具,包括可视化调试器
    • 代码简洁,实现相同功能所需的代码量通常比Selenium少30-50%

自动等待机制

  • Selenium

    • 提供基本的显式等待和隐式等待机制
    • 开发者需要手动处理元素可见性、可点击性等条件
    • 容易出现"元素未找到"或"元素不可交互"等错误
    • 需要自定义等待策略来处理复杂场景
  • Playwright

    • 内置自动等待机制,自动处理元素可见性、可点击性等
    • 所有操作默认都会等待元素准备就绪(可见、可用、稳定)
    • 可以等待网络请求完成、DOM变化、动画结束等高级条件
    • 提供丰富的等待选项,如waitForSelectorwaitForLoadStatewaitForResponse

处理现代Web应用的能力

  • Selenium

    • 对于单页应用(SPA)的支持相对基础
    • 处理Shadow DOM和Web Components需要额外配置
    • 网络请求拦截和修改功能有限
    • iframe和多窗口处理较为繁琐
  • Playwright

    • 专为现代Web应用设计,对SPA有卓越支持
    • 原生支持Shadow DOM和Web Components
    • 强大的网络控制功能,可以拦截、修改和监控请求
    • 简化的iframe、多页面和多窗口处理

测试稳定性

  • Selenium

    • 测试稳定性较差,常见"flaky tests"(不稳定测试)问题
    • 需要额外的重试机制和健壮性策略
    • 对网络波动和页面变化敏感
    • 难以处理动态内容和AJAX请求
  • Playwright

    • 显著改善了测试稳定性,大幅减少了"flaky tests"
    • 内置自动重试机制和智能等待策略
    • 对网络波动有更好的容错性
    • 更好地处理动态内容和异步加载

执行速度与性能

  • Selenium

    • 执行速度相对较慢,HTTP通信存在延迟
    • 浏览器启动和测试初始化时间长
    • 在大量测试场景下可能遇到性能瓶颈
    • 资源消耗较高,特别是在并行执行时
  • Playwright

    • 执行速度快,大约是Selenium的2-3倍
    • 浏览器启动和上下文创建速度快
    • 针对大规模测试优化,并行执行效率高
    • 资源使用更高效,特别是在无头模式下

高级功能对比

功能PlaywrightSelenium
网络请求拦截与模拟内置支持,功能强大需要第三方插件,功能有限
API测试能力内置APIRequestContext需要单独的HTTP客户端库
移动设备模拟内置全面支持,包括地理位置、设备方向等仅基本支持,功能有限
文件上传下载简化API,易于使用需要复杂的工作区
权限和地理位置模拟原生支持有限或需要额外工具
视觉比较和截图内置像素级比较功能需要第三方工具
跟踪和录制内置Trace Viewer,可记录每个步骤无内置支持,需要外部工具
浏览器多实例管理内置Browser Context概念需要手动管理
页面状态保存和恢复支持保存认证状态等有限支持,主要通过Cookie

调试体验

  • Selenium

    • 基本的错误报告和截图功能
    • 调试主要依赖日志和外部工具
    • 缺乏集成的调试环境
    • 错误信息可能不够具体
  • Playwright

    • 丰富的调试工具,包括Trace Viewer和Inspector
    • 自动生成截图、视频和DOM快照
    • 代码生成器帮助调试和创建测试
    • 详细的错误报告和可视化诊断

社区与支持

  • Selenium

    • 庞大且成熟的社区,大量的学习资源和第三方集成
    • 大量企业应用案例和最佳实践
    • Stack Overflow上有超过10万个相关问题
    • 广泛的商业支持和培训资源
  • Playwright

    • 社区相对较小但增长迅速,微软提供优质官方支持
    • 文档质量高,结构清晰,示例丰富
    • Discord和GitHub上活跃的开发者社区
    • 由微软团队持续更新和改进

对比总结表格

特性PlaywrightSelenium
发布年份20202004
开发商微软开源社区
浏览器支持Chromium、Firefox、WebKit几乎所有主流浏览器,含旧版IE
语言支持TypeScript/JavaScript、Python、Java、.NETJava、Python、C#、Ruby、JS、PHP、Perl
自动等待内置支持需手动配置
代码生成原生支持需要额外工具
架构基于CDP和WebSocket基于HTTP/WebDriver
执行速度较快较慢
测试稳定性中到低
现代Web应用支持优秀一般
调试工具丰富,内置Trace Viewer基础,依赖外部工具
社区规模中等但增长快
文档质量优秀优秀但分散
学习曲线平缓较陡
API设计现代化,一致性高较传统,语言间差异大
维护成本中到高
技术趋势上升稳定

选择建议

选择Playwright的场景

  • 开发现代Web应用和单页应用(SPA)的测试
  • 需要更快的测试执行速度和更高的稳定性
  • 使用JavaScript/TypeScript进行开发
  • 需要更好的调试体验和更少的维护成本
  • 项目是新建的,没有大量遗留Selenium代码
  • 团队重视开发体验和测试效率

选择Selenium的场景

  • 需要测试旧版浏览器(如IE11)
  • 已有大量Selenium测试代码需要维护
  • 团队已经精通Selenium技术栈
  • 需要非常广泛的语言支持(如Ruby、PHP等)
  • 依赖特定的Selenium插件和扩展
  • 公司政策要求使用长期稳定的工具

第二部分:Playwright 分主题指南

以下是Playwright各主题的详细指南链接:
(等待逐步补充!!!)

基础部分

  1. Playwright安装与环境配置
  2. Playwright基础API与操作
  3. 元素定位与选择器
  4. 处理等待与超时
  5. 自动录制与代码生成

中级应用

  1. 截图与视频录制
  2. 测试框架集成
  3. 移动设备模拟
  4. 网络请求拦截与模拟
  5. 并行测试执行

高级应用

  1. 页面对象模型(POM)设计模式
  2. CI/CD集成指南
  3. Playwright在Docker中的应用
  4. Trace Viewer调试与性能分析
  5. API测试功能

实用资源

  1. 常见问题与解决方案
  2. Playwright与Selenium迁移指南
  3. Playwright测试最佳实践
  4. 实用工具与插件
  5. 社区资源与学习路径

快速入门示例

下面是一个简单的Playwright测试示例,展示了基本的使用流程:

import { test, expect } from '@playwright/test';test('基本示例测试', async ({ page }) => {// 访问网站await page.goto('https://www.example.com');// 获取页面标题并验证const title = await page.title();expect(title).toBe('Example Domain');// 查找页面元素并验证内容const heading = page.locator('h1');await expect(heading).toHaveText('Example Domain');
});

要开始使用Playwright,只需运行以下命令:

# 使用npm安装Playwright
npm init playwright@latest# 运行示例测试
npx playwright test

提示:对于每个子主题的详细内容,请点击对应的链接查看更多信息。

结论

选择Playwright还是Selenium主要取决于您的具体需求:

  • 如果您需要测试现代Web应用,并且希望有更好的开发体验和更快的执行速度,Playwright是更好的选择。
  • 如果您有大量使用Selenium的遗留代码,或者需要支持非常特殊的浏览器版本,Selenium可能更适合您。

相关文章:

Playwright与Selenium详细对比及Playwright快速入门

Playwright 与 Selenium 详细对比及入门指南索引 简介 本文章旨在帮助测试工程师了解Playwright和Selenium这两个主流的UI自动化测试工具,并快速入门Playwright。文档分为多个部分,本文作为主要索引,提供核心对比和基本概念,而详…...

03 UV

04 Display工具栏_哔哩哔哩_bilibili 讲的很棒 ctrlMMB 移动点 s 打针 ss 批量打针...

hadoop执行sqoop任务找不到jar

sqoop:1.4.7 hadoop:3.4.1 数据:oracel-hdfs 2025-04-15 16:57:00,850 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7 2025-04-15 16:57:00,901 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead. 2025-04-15 …...

【C#】Html转Pdf,Spire和iTextSharp结合,.net framework 4.8

🌹欢迎来到《小5讲堂》🌹 🌹这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。🌹 🌹温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!&#…...

Mac系统升级node.js版本和npm版本并安装pnpm

1.升级node.js版本 第一步:查询当前node.js版本 node -v第二步:清除node.js的缓存 sudo npm cache clean -f第三步:验证缓存是否清空 npm cache verify第四步:安装n工具,n工具是专门用于管理node.js版本的工具 su…...

记录分享《若依Spring Cloud本地开发部署教程》

若依Spring Cloud本地开发部署教程 若依(RuoYi)是一个基于Spring Boot和Spring Cloud的权限管理系统,提供了丰富的功能模块和开箱即用的解决方案。本文将详细介绍如何在本地环境中进行若依Spring Cloud的开发和部署。 一、环境准备 Java环境…...

(小白0基础) 微调deepseek-8b模型参数详解以及全流程——训练篇

​ 本篇参考bilibili如何在本地微调DeepSeek-R1-8b模型_哔哩哔哩_bilibili 上篇:(小白0基础) 租用AutoDL服务器进行deepseek-8b模型微调全流程(Xshell,XFTP) —— 准备篇 初始变量 max_seq_length 2048 dtype None load_in_4bit True单批次最大处理模型大小dy…...

基于 PyGetWindow 获取窗口信息和控制窗口

PyGetWindow 是基于Python的一款简单、跨平台的模块,用来获取窗口信息和控制窗口。可以实现的功能有: 获取当前系统中所有打开窗口的列表。 根据窗口标题、窗口句柄等属性获取特定的窗口对象。 激活、最小化、最大化和关闭窗口。 获取和设置窗口的位置、…...

解锁动态规划的奥秘:从零到精通的创新思维解析(8)

前言: 小编在前几日讲述了关于动态规划的习题,下面小编继续跟着上次的步伐,继续进入多状态dp问题的讲解(但是今天这个题目不需要多状态),今天由于小编的精力有限,所以我就仅仅先讲述一个题目&am…...

使用RUN pip install flask和RUN pip install -r requirements.txt

在编写dockerfile文件的时候,有时候会遇上使用RUN pip install -r requirements.txt的情况,而且requirements.txt文件里面就一个包名,例如flask,那么不禁要问为什么不直接写成RUN pip install flask呢?其实不是不行&am…...

512天,倔强生长:一位技术创作者的独白

亲爱的读者与同行者: 我是倔强的石头_,今天是我在CSDN成为创作者的第512天。当系统提示我写下这篇纪念日文章时,我恍惚间想起了2023年11月19日的那个夜晚——指尖敲下《开端——》的标题,忐忑又坚定地按下了“发布”键。那时的我…...

【Java SE】Collections类详解

参考笔记:java Collections类 详解-CSDN博客 目录 一、Collections类简介 二、Collection类常用方法 1. 排序 ① static void reverse(List list) ② static void shuffle(List list) ③ static void sort(List list) ④ static void sort(List list, Comparator …...

Android LiveData学习总结(源码级理解)

LiveData 工作原理 数据持有与观察者管理:LiveData 内部维护着一个数据对象和一个观察者列表。当调用 observe 方法注册观察者时,会将 LifecycleOwner 和 Observer 包装成 LifecycleBoundObserver 对象并添加到观察者列表中。生命周期感知:L…...

RabbitMQ 为什么引入 Exchange 的概念, 交换机有什么作用.

RabbitMQ 引入 Exchange 的概念是为了实现消息的灵活路由和解耦生产者与消费者,这是 AMQP(Advanced Message Queuing Protocol)协议的核心设计之一。以下是 Exchange 存在的主要原因: 1. 解耦生产者与队列 问题:如果生…...

rabbitmq引入C++详细步骤

1. 安装RabbitMQ服务器 在Windows上:先安装Erlang,再安装RabbitMQ服务器。安装完成后,可通过访问http://localhost:15672来检查RabbitMQ服务器是否正常运行,默认的用户名和密码是guest/guest。 在Linux上:可使用包管理…...

Android 9.0系统源码定制:实现开机启动特定App的全面指南

在Android 9.0系统中,若需要通过修改系统源码实现开机启动特定应用(如系统预装应用或第三方应用),通常涉及对系统框架层(Framework)的深度定制开发。以下是详细的实现步骤和关键代码位置整理: 1…...

如何在不同版本的 Elasticsearch 之间以及集群之间迁移数据

作者:来自 Elastic Kofi Bartlett 当你想要升级一个 Elasticsearch 集群时,有时候创建一个新的独立集群并将数据从旧集群迁移到新集群会更容易一些。这让用户能够在不冒任何停机或数据丢失风险的情况下,在新集群上使用所有应用程序测试其所有…...

MySQL数据库精研之旅第六期:玩转数据库约束

目录 一、数据库约束的概念 二、约束类型 三、NOT NULL 非空约束 四、DEFAULT 默认值约束 五、UNIQUE 唯一约束 六、PRIMARY KEY 主键约束 七、FOREIGN KEY 外键约束 八、Check 约束 一、数据库约束的概念 数据库约束是指对数据库表中的数据所施加的规则或条件&#xf…...

【Java】面向对象程序三板斧——如何优雅设计包、封装数据与优化代码块?

🎁个人主页:User_芊芊君子 🎉欢迎大家点赞👍评论📝收藏⭐文章 🔍系列专栏:【Java】内容概括 【前言】 在Java编程中,类和对象是面向对象编程的核心概念。而包(Package&am…...

MCP、RAG与Agent:下一代智能系统的协同架构设计

一、智能系统架构的范式转移 1.1 传统架构的局限性 架构类型典型问题新架构需求单体架构扩展性差,维护成本高模块化解耦简单微服务缺乏智能决策能力认知能力嵌入纯LLM系统事实性错误,知识固化动态知识增强 1.2 三大核心组件的定位 #mermaid-svg-6tGuE…...

软件设计师2009-2022历年真题与答案解析(附pdf下载)

软考在即,现在给大家分享一下软件设计师2009-2022真题与答案解析 pdf全套,文末提供大家免费下载,大家都知道在软考备考过程中,拥有一套全面且实用的考试资料对于考生来说至关重要。目录如下: 历年真题及详解2004-2019 …...

前端 React 弹窗式 滑动验证码实现

目录 一、安装依赖 1、rc-slider-captcha 2、create-puzzle 二、个人封装好的组件拿去用 三、效果展示 一、安装依赖 这里需要引入两个依赖,若有后端图片接入,可以不引入第二个依赖 1、rc-slider-captcha 滑动验证码生成的库 国内网&#xff1a…...

【触想智能】工业触摸一体机在金融智能设备领域上应用的优势

工业触摸一体机在金融智能设备领域上具有许多独特的优势。这些设备结合了工业级的强度和耐用性,以及先进的触控技术和高性能处理能力,为金融机构提供全面可靠的解决方案。下面将介绍工业触摸一体机在金融智能设备领域上的应用优势。 触想嵌入式工业触摸一…...

本地实现Rtsp视频流推送

简言:使用ffmpeg实现本地视频流推送 srs存储(延时推送) 准备工作 安装包: ffmpeg:http://ffmpeg.org/download.html EasyDarwin:EasyDarwin流媒体音视频资源汇总 srs安装教程地址:http://…...

人工智能中的卷积神经网络(CNN)综述

文章目录 前言 1. CNN的基本原理 1.1 卷积层 1.2 池化层 1.3 全连接层 2. CNN的发展历程 2.1 LeNet-5 2.2 AlexNet 2.3 VGGNet 2.4 ResNet 3. CNN的主要应用 3.1 图像分类 3.2 目标检测 3.3 语义分割 3.4 自然语言处理 4. 未来研究方向 4.1 模型压缩与加速 4.2 自监督学习 4.3 …...

Mac电脑交叉编译iphone设备可以运行的redsocks, openssl, libsevent

准备:intel x86_64芯片的mac电脑,系统为mac os15.3.1,iphone为6s的ios14.4(rootful越狱) 第一步:准备工具链(推荐使用 theos clang) 如果你已经安装过 Theos(或 NewTheos)&#x…...

入门51单片机(1)-----点灯大师梦开始的地方

前言 这一次的博客主要是要记录一下学习的记录的,方便以后去复习一下的,当然这篇博客还是针于零基础的伙伴萌,看完这篇博客,大家就可以学会点灯了。 安装软件 方法一下一下来教!!萌新宝贝萌可以学会的!帮…...

[1-01-09].第08节:基础语法 - 数组常见算法 + Arrays工具类 + 数组中常见异常

一、 数组的常见算法 1.1 数值型数组特征值统计 这里的特征值涉及到:平均值、最大值、最小值、总和等 **举例1:**数组统计:求总和、均值 public class TestArrayElementSum {public static void main(String[] args) {int[] arr {4,5,6,…...

dnf install openssl失败的原因和解决办法

网上有很多编译OpenSSL源码(3.x版本)为RPM包的文章,这些文章在安装RPM包时都是执行rpm -ivh openssl-xxx.rpm --nodeps --force 这个命令能在缺少依赖包的情况下能强行执行安装 其实根据Centos的文档,安装RPM包一般是执行yum install或dnf install。后者…...

UE5 Chaos :官方文献总结 + 渲染网格体 (Render Mesh) 和模拟网格体 是如何关联的?为什么模拟网格体 可以驱动渲染网格体?

官方文献:https://dev.epicgames.com/community/learning/tutorials/pv7x/unreal-engine-panel-cloth-editor 1. 流程概述 本文档介绍了如何通过面板编辑器(Panel Editor)在Unreal Engine中生成基于面板的布料资源。流程主要包含从Marvelou…...

Swift观察机制新突破:如何用AsyncSequence实现原子化数据监听?

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...

Lombok库

文章目录 Lombok1.介绍2.主要注解2.1如何使用 Lombok2.1.1添加依赖2.1.2 使用Lombok注解2.1.3Lombok的其他常用注解ValueBuilderGoF23种设计模式之一:建造模式使用Builder注解自动生成建造模式的代码 SingularSlf4j使用选择合适的注解 Lombok 1.介绍 Lombok 是一个…...

算法思想之模拟

欢迎拜访:雾里看山-CSDN博客 本篇主题:算法思想之模拟 发布时间:2025.4.14 隶属专栏:算法 目录 滑动窗口算法介绍核心特点常见问题优化方向 例题替换所有的问号题目链接题目描述算法思路代码实现 提莫攻击题目链接题目描述算法思路…...

Windows 系统如何使用Redis 服务

前言 在学习过程中,我们长期接触到的是Mysql 关系型数据库,也是够我们平时练习项目用的,但是后面肯定会有大型数据的访问就要借助新的新的工具。 一、什么是Redis Redis(Remote Dictionary Server)是一个基于内存的 键…...

2025年常见渗透测试面试题-红队面试宝典上(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 一、如何判断是否是域环境? 二、定位域控的 IP 三、定位域管所在机器 四、Kerberos 核心…...

Base64在线编码解码 - 加菲工具

Base64在线编码解码 - 加菲工具 打开网站 加菲工具 选择“Base64 在线编码解码” 或者直接打开https://www.orcc.top/tools/base64 输入需要编码/解码的内容,点击“编码”/“解码”按钮 编码: 解码: 复制已经编码/解码后的内容。...

前端面试宝典---闭包

闭包介绍 使用闭包: 在函数内声明一个变量,避免外部访问在该函数内再声明一个函数访问上述变量(闭包)返回函数内部的函数使用完毕建议闭包函数null;译放内存 function createCounter() {let count 0;return function () {coun…...

算法:有一个整数数组,长度为n。她希望通过一系列操作将数组变成一个回文数组。

小红有一个整数数组,长度为n。她希望通过一系列操作将数组变成一个回文数组。每次操作可以选择数组中任意两个相邻的元素 ai和 ai1,将它们的值同时加一。请你计算至少需要多少次操作使得数组变成一个回文数组。如果不可能,则输出-1。否则输出…...

数字人:开启医疗领域的智慧变革新时代(5/10)

摘要:数字人技术作为医疗变革的基石,通过多学科融合实现虚拟医生、手术模拟、医学教育等多元应用,贯穿诊前、术中、术后全流程,显著提升医疗效率、优化资源分配、推动个性化服务。尽管面临技术、伦理、数据安全等挑战,…...

正则表达式在线校验(RegExp) - 加菲工具

正则表达式在线校验 - 加菲工具 打开网站 加菲工具 选择“正则表达式在线校验” 或者直接打开https://www.orcc.top/tools/regexp 输入待校验的源文本与正则表达式,点击“校验”按钮 需要注意检验后的内容可能存在多空格,可以拉下去看看~...

某车企面试备忘

记录两个关于Binder的问题,我感觉面试官提的非常好,作一下备忘。 1.通过Binder进行的IPC(进程间通信)是线程阻塞的吗? 参考答案: Binder是Android平台的一种跨进程通信(IPC)机制&…...

从Ampere到Hopper:GPU架构演进对AI模型训练的颠覆性影响

一、GPU架构演进的底层逻辑 AI大模型训练效率的提升始终与GPU架构的迭代深度绑定。从Ampere到Hopper的演进路径中,英伟达通过‌张量核心升级‌、‌显存架构优化‌、‌计算范式革新‌三大技术路线,将LLM(大语言模型)训练效率提升至…...

【JavaEE】SpringBoot 统一功能处理

目录 一、拦截器1.1 使用1.1 定义拦截器1.2 注册配置拦截器 1.2 拦截器详解1.2.1 拦截路径1.2.2 拦截器执⾏流程 1.3 适配器模式 二、统一数据返回格式2.1 简单用法2.2 问题及解决 三、统一异常处理 一、拦截器 拦截器:拦截器是Spring框架提供的核⼼功能之⼀&#…...

杨辉三角(力扣 118)

118. 杨辉三角 - 力扣&#xff08;LeetCode&#xff09; 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2: 输入: numRows 1 输出: [[1]] vector<vector<int>> generate(int numRows) { //生成有numRows个元素(vector<in…...

三周年创作纪念日

文章目录 回顾与收获三年收获的五个维度未来的展望致谢与呼唤 亲爱的社区朋友们&#xff0c;大家好&#xff01; 今天是 2025 年 4 月 14 日&#xff0c;距离我在 2022 年 4 月 14 日发布第一篇技术博客《SonarQube 部署》整整 1,095 天。在这条创作之路上&#xff0c;我既感慨…...

[c语言日记]轮转数组算法(力扣189)

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋&#xff1a;这是一个专注于C语言刷题的专栏&#xff0c;精选题目&#xff0c;搭配详细题解、拓展算法。从基础语法到复杂算法&#xff0c;题目涉及的知识点全面覆盖&#xff0c;助力你系统提升。无论你是初学者&#xff0c;还是…...

【Unity笔记】Unity超时检测器开发:支持自定义重试次数与事件触发

在Unity游戏或应用开发中&#xff0c;我们经常会遇到需要检测超时的场景&#xff0c;比如&#xff1a; 等待用户在限定时间内完成某个交互&#xff1b;等待网络请求或资源加载是否在规定时间内返回&#xff1b;控制AI角色等待某个事件发生&#xff0c;超时后执行备选逻辑。 在…...

【微服务管理】注册中心:分布式系统的基石

在分布式系统日益普及的当下&#xff0c;如何高效地管理众多服务实例成为关键问题。注册中心应运而生&#xff0c;它犹如分布式系统的 “指挥中枢”&#xff0c;承担着服务注册、发现等核心任务&#xff0c;为整个系统的稳定运行和高效协作提供坚实保障。本文将深入探讨注册中心…...

P10413 [蓝桥杯 2023 国 A] 圆上的连线

题意&#xff1a; 给定一个圆&#xff0c;圆上有 n2023 个点从 1 到 n 依次编号。 问有多少种不同的连线方式&#xff0c;使得完全没有连线相交。当两个方案连线的数量不同或任何一个点连接的点在另一个方案中编号不同时&#xff0c;两个方案视为不同。 答案可能很大&#x…...

计算机操作系统——存储器管理

系列文章目录 1.存储器的层次结构 2.程序的装入和链接 3.连续分配存储管理方式&#xff08;内存够用&#xff09; 4.对换&#xff08;Swapping&#xff09;(内存不够用) 5.分页存储管理方式 6.分段存储管理方式 文章目录 系列文章目录前言一、存储器的存储结构寄存器&…...