SeleniumBase - 多合一浏览器自动化框架
手动编写Selenium脚本,繁琐且常遇“掉坑”?SeleniumBase来救场!这款基于Selenium的Python框架集测试、爬虫、RPA于一体,支持多浏览器、并行测试、CAPTCHA绕过和智能等待,堪称Web自动化的“瑞士军刀”。不少行业大佬盛赞:“SeleniumBase的智能等待和报表功能让自动化更高效!”数据显示,它可减少70%测试开发时间,测试稳定性提升85%。无论你是测试工程师、爬虫开发者还是RPA专家,本文从核心功能到实战案例,带你零基础玩转SeleniumBase
在自动化测试的技术浪潮中,Selenium以其开源、跨平台、多语言兼容的特性,长期占据着重要地位,为无数项目的质量保障立下汗马功劳。然而,随着敏捷开发和DevOps的深入推进,测试需求变得愈发复杂,不仅要应对频繁的迭代,还要处理动态页面、复杂交互以及多样化的测试场景。传统Selenium测试中,代码冗余、配置繁琐、断言单一等问题逐渐成为测试效率提升的阻碍。
SeleniumBase的出现,恰似为自动化测试领域注入一剂“强心针”。它以Selenium为基石,通过模块化设计、智能封装和丰富的功能扩展,有效简化测试流程,大幅提升测试脚本的可读性与可维护性。无论是Web应用的功能测试,还是复杂场景下的性能验证,SeleniumBase 都能以更高效、更稳定的姿态,帮助测试团队在快速变化的技术环境中,轻松应对挑战,让自动化测试迈向新的高度。
为什么越来越多的测试工程师选择SeleniumBase,而不是原生Selenium或Playwright?它到底解决了哪些痛点?今天这篇文,带你一次看懂这个“多合一”的自动化测试框架究竟有多香!
观点与案例结合
SeleniumBase基于Selenium/WebDriver,封装简洁API,集成pytest、behave等测试框架,支持多浏览器测试、并行执行、反爬(UC/CDP模式)和自动化报表。以下是五大核心步骤,附实战案例与代码,助你快速掌握。
SeleniumBase是一个功能强大的Python框架,适用于Web自动化活动的专业工具包。专为测试网站、绕过验证码、提高生产力、完成任务和拓展业务而打造。
SeleniumBase是基于Selenium构建的高阶框架,它内置了:
✅ 更简洁的 API
✅ 自动截图与报告功能
✅ 强大的断言库
✅ 原生支持pytest、unittest、Behave(支持BDD)
✅ 一行命令运行测试 + 生成Allure报告
比如一位某大厂的测试同学,以前维护原生Selenium脚本,一个登录流程代码就超过100行。用了SeleniumBase,变成了**5行搞定!**同时还有漂亮的失败截图+HTML报告,领导一眼就能看懂。
其主要特性如下:
核心功能
-
录制模式:可自动生成Python浏览器测试代码。
-
多浏览器支持:同一测试中支持多个浏览器、标签页、iframe和代理。
-
测试用例管理:集成Markdown技术的测试用例管理软件。
-
智能等待机制:自动智能等待提升测试可靠性,防止不稳定测试。
-
多测试框架兼容:支持pytest、unittest、nose和behave查找/运行测试。
-
开源透明:所有代码开源,可深入了解任何功能实现。
运行模式与性能优化
-
无头模式:通过`--headless`参数在后台运行测试,隐藏浏览器界面。
-
多线程执行:使用`-n NUM_THREADS`参数实现并行浏览器测试,提升效率。
-
会话复用:通过`--reuse-session/--rs`参数在共享浏览器会话中运行测试。
高级测试能力
-
移动设备模拟:使用`--mobile`参数通过Chromium的移动设备模拟器运行测试。
-
代理支持:支持多种代理配置方式,包括普通代理、PAC URL、认证代理等。
-
用户代理定制:通过`--agent=USER_AGENT_STRING`参数设置自定义浏览器用户代理。
-
浏览器配置加载:使用`--user-data-dir=DIR`参数加载Chromium用户数据目录/配置文件。
-
防检测机制:通过`--undetected/--uc`参数避免被试图阻止Selenium的网站检测到。
-
请求检查:集成selenium-wire,通过`--wire`参数检查浏览器请求。
-
Chrome扩展支持:支持加载Chrome扩展ZIP文件或文件夹。
辅助工具与集成
-
控制台脚本:提供强大的控制台命令(如`seleniumbase`或`sbase`)。
-
多语言支持:可将测试翻译成多种口语语言。
-
灵活的命令行界面:支持自定义测试运行参数。
-
全局配置文件:可根据需要配置全局设置。
-
交互式工具:包含创建交互式网页演示、图表、对话框、网站导览的工具。
-
GUI界面:提供SeleniumBase Commander图形界面运行pytest脚本。
-
CI/CD集成:支持GitHub Actions、Google Cloud、Azure、S3和Docker等持续集成工具。
特殊场景处理
-
双因素认证支持:结合Python的一次性密码库处理Google Authenticator登录。
-
PDF文件处理:支持从网站或本地文件系统加载PDF文件并进行断言。
-
HTML检查:通过HTML Inspector检查HTML以发现问题和关注点。
-
JavaScript执行:可通过`self.execute_script()`从Python调用执行JavaScript代码。
-
Shadow DOM支持:通过在CSS选择器中添加`::shadow`穿透Shadow DOM。
-
混合自动化:提供MasterQA混合自动化解决方案,加速手动测试。
-
安全增强:包含实用的Python装饰器和密码混淆方法。
兼容性
-
与Python WebDriver方法向后兼容,可通过`self.driver`直接访问底层WebDriver实例。
官方网址:https://seleniumbase.io/
1、环境搭建:开启SeleniumBase之旅
方式一:使用PyPI安装
pip install seleniumbase
方式二:使用GitHub克隆安装
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase/
pip install -e .
输入seleniumbase或sbase以验证SeleniumBase是否已成功安装。
SeleniumBase会根据需要自动下载Web驱动程序,例如chromedriver。
SeleniumBase会自动处理常见的WebDriver操作,例如在测试之前启动Web浏览器、在失败期间保存屏幕截图以及在测试后关闭Web浏览器。
-
验证安装:运行seleniumbase install chromedriver并测试示例脚本。
-
代码(验证环境):
from seleniumbase import BaseCaseclass MyTest(BaseCase):def test_example(self):self.open("https://example.com")self.assert_text("Example Domain", "h1")if __name__ == "__main__":from pytest import mainmain([__file__])
案例:某测试团队5分钟完成SeleniumBase环境搭建,开始E2E测试。
实践:安装SeleniumBase,运行上述代码,验证example.com标题。
SeleniumBase支持所有主流浏览器和操作系统:
浏览器:Chrome、Edge、Firefox和Safari。
操作系统:Linux/Ubuntu、macOS和Windows。
2、快速上手
一些常见的SeleniumBase方法:
浏览器导航操作
self.open(url) - 导航到指定URL
self.go_back() - 返回上一页
self.get_current_url() - 获取当前页面URL
self.get_title() - 获取当前页面标题
self.get_page_source() - 获取当前页面HTML源代码元素交互操作
self.type(selector, text) - 在指定元素输入文本
self.click(selector) - 点击指定元素
self.click_link(link_text) - 点击包含指定文本的链接
self.select_option_by_text(dropdown_selector, option) - 在下拉菜单中选择指定文本的选项
self.hover_and_click(hover_selector, click_selector) - 先悬停在指定元素上,再点击另一个元素
self.drag_and_drop(drag_selector, drop_selector) - 执行拖放操作元素状态检查
self.get_text(selector) - 获取元素文本内容
self.get_attribute(selector, attribute) - 获取元素属性值
self.is_element_visible(selector) - 检查元素是否可见
self.is_text_visible(text, selector) - 检查文本在元素中是否可见窗口和框架操作
self.switch_to_frame(frame) - 切换到iframe
self.switch_to_default_content() - 从iframe切换回主文档
self.open_new_window() - 打开新窗口
self.switch_to_window(window) - 切换到指定窗口
self.switch_to_default_window() - 切换回默认窗口驱动和会话管理
self.get_new_driver(OPTIONS) - 使用指定选项创建新驱动
self.switch_to_driver(driver) - 切换到指定驱动
self.switch_to_default_driver() - 切换回默认驱动等待和断言
self.wait_for_element(selector) - 等待元素可见
self.sleep(seconds) - 强制等待指定秒数
self.assert_element(selector) - 断言元素可见
self.assert_text(text, selector) - 断言元素包含指定文本
self.assert_exact_text(text, selector) - 断言元素文本与指定文本完全一致
self.assert_title(title) - 断言页面标题
self.assert_downloaded_file(file) - 断言文件已下载
self.assert_no_404_errors() - 断言没有404错误
self.assert_no_js_errors() - 断言没有JavaScript错误其他操作
self.save_screenshot(name) - 保存当前页面截图
大多数SeleniumBase脚本都可以使用pytest、pynose或纯python运行。并非所有测试运行程序都可以运行所有测试格式。例如,使用sb pytest夹具的测试只能使用pytest运行。还有一种Gherkin测试格式,它与behave一起运行。
pytest coffee_cart_tests.py --rs
pytest test_sb_fixture.py --demo
pytest test_suite.py --rs --html=report.html --dashboardpynose basic_test.py --mobile
pynose test_suite.py --headless --report --show-reportpython raw_sb.py
python raw_test_scripts.pybehave realworld.feature
behave calculator.feature -D rs -D dashboard
pytest包括自动测试发现功能。如果未指定要运行的特定文件或文件夹,pytest将根据以下条件自动搜索所有子目录以查找要运行的测试:
以 test_ 开头或以 _test.py 结尾的 Python 文件。
以 test_ 开头的 Python 方法。
示例脚本,用于测试购物网站:
from seleniumbase import BaseCase
BaseCase.main(__name__, __file__) class MyTestClass(BaseCase):def test_swag_labs(self):self.open("https://www.saucedemo.com")self.type("#user-name", "standard_user")self.type("#password", "secret_sauce\n")self.assert_element("div.inventory_list")self.click('button[name*="backpack"]')self.click("#shopping_cart_container a")self.assert_text("Backpack", "div.cart_item")self.click("button#checkout")self.type("input#first-name", "SeleniumBase")self.type("input#last-name", "Automation")self.type("input#postal-code", "77123")self.click("input#continue")self.click("button#finish")self.assert_text("Thank you for your order!")
输入命令,执行脚本。
pytest test_get_swag.py
运行效果,可以看到执行速度很快。
执行脚本,生成测试报告方式一。
pytest test_get_swag.py --html=report.html
执行完成后,打开测试报告。
执行脚本,生成测试报告方式二。
pytest test_get_swag.py --dashboard --html=report.html
执行完成后,打开测试报告。
执行时断言报错,执行完成后,打开测试报告。
报错信息与截图也展示到测试报告里。
3.多浏览器测试:跨Chrome、Firefox、Edge
场景:在不同浏览器运行自动化测试,确保跨浏览器兼容性。
核心:
-
支持Chrome、Firefox、Edge、Safari等,命令行指定--browser=firefox。
-
自动下载匹配的浏览器驱动(如ChromeDriver)。
-
支持并行测试(--rs或pytest-xdist)。
代码(多浏览器测试):
from seleniumbase import BaseCaseclass MultiBrowserTest(BaseCase):def test_login(self):self.open("https://saucedemo.com")self.type("#user-name", "standard_user")self.type("#password", "secret_sauce\n")self.assert_element("div.inventory_list")# 运行:pytest test_login.py --browser=chrome
# 或:pytest test_login.py --browser=firefox
案例:某电商APP用SeleniumBase测试跨浏览器登录,覆盖率提升90%。
实践:运行上述脚本,分别用Chrome和Firefox测试,观察结果。
4. 录制与生成:快速创建测试脚本
场景:用SeleniumBase录制器生成测试脚本,减少手动编码。
核心:
-
运行seleniumbase recorder启动录制器,记录浏览器操作。
-
自动生成pytest格式的Python脚本。
-
支持CSS/XPath自动检测,简化元素定位。
-
代码(录制生成示例):
# 运行:seleniumbase recorder
# 录制后生成类似代码
from seleniumbase import BaseCaseclass RecordedTest(BaseCase):def test_recorded(self):self.open("https://example.com")self.type("input[name='q']", "SeleniumBase\n")self.assert_text("SeleniumBase", "#search")
案例:某团队用录制器生成登录测试脚本,开发时间从2小时降至10分钟。
实践:用录制器记录在example.com搜索“SeleniumBase”,运行生成脚本。
5. 反爬与UC模式:绕过CAPTCHA和Bot检测
场景:用UC模式(Undetected ChromeDriver)绕过网站反爬机制。
核心:
-
UC模式(--uc)模拟真实用户浏览器指纹,规避Bot检测。
-
支持代理(--proxy=IP:PORT)和自定义User-Agent。
-
结合selenium-wire检查网络请求。
代码(UC模式抓取数据):
from seleniumbase import BaseCaseclass WebScrapingTest(BaseCase):def test_scrape(self):self.set_uc_mode(True) # 启用UC模式self.open("https://example.com/products")prices = self.find_elements(".price")for price in prices:print(price.text)self.save_screenshot("scraped_page.png")# 运行:pytest test_scrape.py --uc --proxy=IP:PORT
案例:某零售公司用UC模式抓取竞品价格,成功绕过Cloudflare,效率提升95%。
实践:运行上述脚本,抓取example.com元素,保存截图。
6. 实战案例:电商网站E2E测试与数据抓取
场景:自动化电商网站登录、添加商品到购物车并抓取订单数据。
步骤:
-
用SeleniumBase录制登录和添加商品操作。
-
优化脚本,添加POM和报表。
-
用UC模式抓取订单数据,保存到CSV。
-
代码:
from seleniumbase import BaseCase
import csvclass EcommerceTest(BaseCase):def test_e2e(self):# 登录self.open("https://saucedemo.com")self.type("#user-name", "standard_user")self.type("#password", "secret_sauce\n")self.assert_element("div.inventory_list")# 添加商品self.click('button[name*="backpack"]')self.click("#shopping_cart_container a")self.assert_text("Backpack", "div.cart_item")# 抓取订单数据items = self.find_elements("div.cart_item")with open("orders.csv", "w", newline="") as f:writer = csv.writer(f)writer.writerow(["Item"])for item in items:writer.writerow([item.text])# 生成报表self.save_screenshot("checkout.png")self.generate_report("e2e_report.html")# 运行:pytest test_e2e.py --dashboard --browser=chrome
案例:某电商用SeleniumBase实现E2E测试,测试周期从3天降至2小时,数据抓取效率提升90%。
实践:运行上述脚本,完成登录、添加商品并保存订单数据。
6. 优化与CI/CD集成
优化技巧:
-
智能等待:SeleniumBase自动等待元素可见/可交互,减少time.sleep()。
-
POM模式:封装页面元素,提高脚本复用性。
-
报表与日志:用--dashboard生成HTML报表,--with-s3-logging保存至AWS S3。
CI/CD集成: -
用GitHub Actions或Jenkins运行并行测试。
-
配置Docker容器,确保环境一致性。
-
代码(GitHub Actions配置):
name: SeleniumBase Tests
on: [push]
jobs:test:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v3- name: Set up Pythonuses: actions/setup-python@v4with:python-version: '3.9'- name: Install dependenciesrun: pip install seleniumbase pytest-xdist- name: Run testsrun: pytest tests/ --browser=chrome --rs --dashboard
案例:某团队用GitHub Actions集成SeleniumBase,每天自动运行测试,缺陷检测率提升80%。
实践:配置GitHub Actions运行上述E2E测试,查看报表。
7. 注意事项与常见问题
注意事项:
-
浏览器驱动:确保ChromeDriver等与浏览器版本匹配,seleniumbase install chromedriver自动处理。
-
UC模式:反爬需配合代理,避免IP封禁。
-
并行测试:用pytest-xdist需配置足够CPU资源。
常见问题: -
错误:ElementNotVisibleException
-
解决:检查选择器或增加等待时间,优先用CSS选择器。
-
-
错误:WebDriverException
-
解决:更新浏览器和驱动,或检查代理配置。
案例:某项目因驱动版本不匹配报错,用seleniumbase install修复后稳定运行。
实践:模拟一个选择器错误,查看日志并修复。
-
社会现象分析
SeleniumBase引领了Web自动化新趋势。Gartner 2024报告显示,自动化测试和爬虫需求增长40%,多功能框架如SeleniumBase因易用性和集成性备受青睐。自动化平台热议其在测试和RPA中的高效表现,认为其“重新定义了Selenium的开发体验”。
开源社区(如SeleniumBase GitHub)的Star数超1万,超200个示例反映开发者热情。企业中,SeleniumBase广泛用于电商、金融和教育系统自动化,如某银行用其测试网银系统,效率提升75%。AI驱动的自动化工具也在崛起,但SeleniumBase的轻量性和Python生态优势使其仍占主流。
随着敏捷开发和持续交付的推进,测试不再只是“写测试用例”,而是自动化、平台化、可视化的综合能力。市场上充斥着各种“打补丁式”测试工具,而SeleniumBase正好满足当前企业对“快速搭建+功能齐全”的强烈需求,特别适合中小型团队快速落地自动化。
总结与升华
SeleniumBase通过多浏览器支持、录制器、UC模式和报表功能,将Selenium的复杂性化为简单高效。从环境搭建到E2E测试、数据抓取和CI/CD集成,五大步骤覆盖测试、爬虫和RPA全场景。掌握SeleniumBase,你不仅能解放双手,还能解锁Web自动化的无限可能。无论是测试工程师还是爬虫开发者,SeleniumBase都是你的核弹级武器,效率与创新一飞冲天!
SeleniumBase,不只是封装了Selenium,更是把测试人员从工具的泥沼中解救出来,让“写自动化”真正变成“像写脚本一样简单”。它所代表的,不仅是一种技术方案,更是一种“测试工程师也要站在工具链最前沿”的工作方式。
“写得快、跑得稳、报得美 —— 自动化本该如此。”
从今天起,给自己的测试框架,换上SeleniumBase这台高性能引擎吧!
相关文章:
SeleniumBase - 多合一浏览器自动化框架
手动编写Selenium脚本,繁琐且常遇“掉坑”?SeleniumBase来救场!这款基于Selenium的Python框架集测试、爬虫、RPA于一体,支持多浏览器、并行测试、CAPTCHA绕过和智能等待,堪称Web自动化的“瑞士军刀”。不少行业大佬盛赞…...
【人工智能导论】第2.3章知识表示、确定性推理
1、李明的父亲是教师,用谓词逻辑可以表示为Teacher(father(Liming))这里father(Liming)是( ) A、常量 LIMING B、变元 X未知的可取多个值的对象 C、函数 X的父亲 D、一元…...
【QT】一个界面中嵌入其它界面(一)
在 Qt 中嵌入其他界面通常可以通过以下几种方式实现。以下是详细的步骤说明和示例代码: 方法 1:直接通过布局嵌入子部件 如果目标界面是 QWidget 的子类,可以直接将其添加到父窗口的布局中。 步骤: 创建子界面类: //…...
[学习]POSIX消息队列的原理与案例分析(完整示例代码)
POSIX消息队列的原理与案例分析 文章目录 POSIX消息队列的原理与案例分析摘要关键词一、引言1.1 研究背景与意义1.2 国内外研究现状1.3 研究内容与方法 二、POSIX消息队列的基本原理2.1 消息队列概述2.2 POSIX消息队列的特性2.2 POSIX消息队列的特性2.3 POSIX消息队列的内部机制…...
IDC数据中心动力环境监控系统解决方案
文档围绕 IDC 数据中心动力环境监控系统解决方案展开,先介绍数据中心分级,包括国家规范的 A/B/C 级和美国 TIA-942 标准的 Tier1-Tier4 级,强调动环监控对数据中心的重要性。接着阐述系统架构,涵盖底端设备层、采集层、接入层、服务层、应用层,具备数据采集、分析、可视化…...
WebSphere Application Server(WAS)8.5.5教程第五讲
续前篇! 一、Web 应用部署与类加载策略 Web 应用部署与类加载策略是 WebSphere Application Server(WAS)日常管理的核心部分,尤其对运行大型企业级 Java 应用(如 BAW)非常关键。本讲将分两部分讲解&#…...
Golang中的runtime.LockOSThread 和 runtime.UnlockOSThread
在runtime中有runtime.LockOSThread 和 runtime.UnlockOSThread 两个函数,这两个函数有什么作用呢?我们看一下标准库中对它们的解释。 runtime.LockOSThread // LockOSThread wires the calling goroutine to its current operating system thread. // T…...
计算圆周率 (python)
使用模特卡罗方法(模拟法),模拟撒点100000次,计算圆周率π 输入格式: 一个整数,表示随机数种子 输出格式: 计算的π值,结果小数点后保留5位数字 输入样例: 在这里给出一组输入。例如: 10…...
机器学习EM算法原理及推导
在机器学习与统计推断中,我们经常会遇到“缺失数据”或“潜在变量”(latent variables)的情形:样本并非完全可观测,而部分信息被隐藏或丢失。这种情况下,直接对观测数据做极大似然估计(Maximum …...
Linux项目部署全攻略:从环境搭建到前后端部署实战
Linux项目部署全攻略:从环境搭建到前后端部署实战 注:根据黑马程序员javawebAI视频课程总结: 视频地址 详细讲义地址 一、Linux基础入门:为什么选择Linux? 要成为一名Java开发工程师,掌握Linux是企业级…...
人工智能重塑医疗健康:从辅助诊断到个性化治疗的全方位变革
人工智能正在以前所未有的速度改变着医疗健康领域,从影像诊断到药物研发,从医院管理到远程医疗,AI 技术已渗透到医疗服务的各个环节。本文将深入探讨人工智能如何赋能医疗健康产业,分析其在医学影像、临床决策、药物研发、个性化医…...
ubuntu系统 | dify+ollama+deepseek搭建本地应用
1、安装 Ollama 下载并安装 Ollama (llm) wangqiangwangqiang:~$ curl -fsSL https://ollama.ai/install.sh | bash >>> Installing ollama to /usr/local >>> Downloading Linux amd64 bundle0.3% curl -fsSL https://ollama.ai/install.sh (下…...
NHANES最新指标推荐:C-DII
文章题目:Non-linear relationship between the childrens dietary inflammatory index and asthma risk: identifying a critical inflection point in US children and adolescents DOI:10.3389/fnut.2025.1538378 中文标题:儿童饮食炎症指…...
【PhysUnits】4.4 零类型(Z0)及其算术运算(zero.rs)
一、源码 该代码定义了一个类型系统中的零类型Z0,并为其实现了基本的算术运算(加法、减法、乘法、除法)。这是一个典型的类型级编程示例,使用Rust的类型系统在编译期进行数学运算。 //! 零类型(Z0)及其算术运算实现 //! //! 本…...
【大模型面试每日一题】Day 23:如何设计一个支持多模态(文本+图像)的大模型架构?
【大模型面试每日一题】Day 23:如何设计一个支持多模态(文本图像)的大模型架构? 📌 题目重现 🌟🌟🌟 面试官:我们需要构建一个同时处理文本和图像的多模态大模型&#…...
BUUCTF PWN刷题笔记(持续更新!!)
ciscn_2019_c_1 64位,没有开启保护。点进去没发现明显的漏洞函数,考虑泄露libc基地址的rop构造。先看看有多少gadget 估计也够用了。puts函数只接受一个参数,观看汇编看看用的哪个寄存器传输的参数。 用的是edi。但是我们怎么找到so的版本呢…...
Tare使用MCP|Win11安装UV
servers/src/git at main modelcontextprotocol/servers GitHub 进入Installation | uv 打开powershell 运行 (如果要删除 文章中也有删除的链接) powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" …...
小白的进阶之路-人工智能从初步到精通pytorch的基本流程详解-1
Pytorch大致流程一览表: 主题内容1 准备数据数据几乎可以是任何东西,但在开始之前,我们将创建一条简单的直线2 建立模型在这里,我们将创建一个模型来学习数据中的模式,我们还将选择损失函数,优化器并构建一个训练循环。3 拟合模型我们已经有了数据和模型,现在让模型尝试…...
linux kernel 编译
1. 获取内核源码 从官方仓库获取: 访问kernel.org下载所需版本的Linux内核源码压缩包(如linux-x.y.z.tar.xz)。或者使用Git克隆特定版本: bash git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.gitcd linux-stablegit checkout vX.Y.Z # 切…...
【氮化镓】偏置对GaN HEMT 单粒子效应的影响
2025年5月19日,西安电子科技大学的Ling Lv等人在《IEEE Transactions on Electron Devices》期刊发表了题为《Single-Event Effects of AlGaN/GaN HEMTs Under Different Biases》的文章,基于实验和TCAD仿真模拟方法,研究了单粒子效应对关断状态、半开启状态和开启状态下AlG…...
Assistants API
一、前言 0.1、从轰动一时的 OpenAI DevDay 说起 2023 年 11 月 6 日,OpenAI DevDay 发表了一系列新能力,其中包括:GPT Store 和 Assistants API 这一波操作一度被认为是创业公司终结者 0.2、GPTs 和 Assistants API 本质是降低开发门槛 可操控性和易用性之间的权衡与折中…...
AcWing 223. 阿九大战朱最学——扩展欧几里得算法
题目来源 223. 阿九大战朱最学 - AcWing题库 题目描述 自从朱最学搞定了 QQ 农场以后,就开始捉摸去 QQ 牧场干些事业,不仅在自己的牧场养牛,还到阿九的牧场放牛! 阿九很生气,有一次朱最学想知道阿九牧场奶牛的数量…...
开发指南116-font-size: 0的使用
平台前台的css样式里有几个地方用到了font-size: 0,这是个使用小技巧。原理说明:font-size 属性用于定义元素中文本的大小。当设置 font-size: 0 时,意味着该元素内的文本将不占据空间。当元素的 font-size 设置为零时,该元素内的…...
算法-数对的使用
1、数对可用于数组排序中,并且可记忆化排序前的元素下标 #include<iostream> #include<string> #include<bits/stdc.h> using namespace std; typedef long long ll; const int N 2e5 10; pair<int, int> a[N]; void solve() {ll n;cin …...
EmoBox:我与 CodeBuddy 共创的 Emoji 表情分类小工具
我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 最近我萌生了一个想法,想做一个小而美的工具——一个叫「EmoBox」的 emoji 表情分类应用࿰…...
力扣HOT100之二叉树:199. 二叉树的右视图
这道题没啥好说的,首先定义一个向量来保存每一层的最后一个元素,直接用层序遍历(广度优先搜索)遍历二叉树,然后将每一层的最后一个元素加入到这个向量中即可。属于是二叉树层序遍历的模板题。 /*** Definition for a …...
力扣992做题笔记
左神做法的理论依据 我们可以通过 集合的包含关系 和 具体示例枚举 来直观理解这一推导过程。以下结合题目示例 1 进行详细说明: 示例 1 分析 输入:nums [1,2,1,2,3], k 2 目标:计算恰好包含 2 种不同整数 的子数组个数。 步骤一集合 A…...
特征值与特征向量的计算——PCA的数学基础
特征值与特征向量 定义 令 A {\bm A} A为 n n n \times n nn矩阵,如果存在非零向量 x {\bm x} x使得 A x λ x (1) {\bm A}{\bm x} \lambda {\bm x}\tag{1} Axλx(1) 成立,则称数 λ \lambda λ是矩阵 A {\bm A} A的特征值,称非零向量 x…...
vue2.0 的计算属性
个人简介 👨💻个人主页: 魔术师 📖学习方向: 主攻前端方向,正逐渐往全栈发展 🚴个人状态: 研发工程师,现效力于政务服务网事业 🇨🇳人生格言&…...
【数根】2022-1-24
缘由程序设计 -- 数根(2)-编程语言-CSDN问答 void 数根() {//缘由https://ask.csdn.net/questions/7635593?spm1005.2025.3001.5141std::string n;int m 0, a 0;std::cin >> n;while (n[a] ! \0)m n[a] - 0;a 0;while (m)a m - m / 10 * 10…...
【Android】一键创建Keystore + Keystore 参数说明 + 查询SHA256(JDK Keytool Keystore)
一键创建 Android Keystore 的实用方法与参数详解 在 Android 应用开发与发布中,**Keystore(签名文件)**扮演着至关重要的角色。本文将介绍如何通过 .bat 脚本一键创建 Keystore 文件,并详细讲解每一个参数的含义,帮助…...
laravel 通过Validator::make验证后,如何拿到验证后的值
在 Laravel 中,通过 Validator::make 创建的验证器实例验证数据后,可以通过以下方式获取验证后的值: 使用 validate() 方法 调用验证器实例的 validate() 方法,会返回经过验证的数据数组。如果验证失败,该方法会抛出 V…...
centos把jar包配置成服务并设置开机自启
1.准备好jar包,启动路径,日志路径 2.编写启动脚步 vim /etc/systemd/system/test.service [Unit] Descriptionlapis Requiresnetwork.target remote-fs.target ##启动优先级,在下面的服务之后启动 Afterkafka.service zookeeper.service n…...
CentOS相关操作hub(更新中)
CentOS介绍: CentOS(Community Enterprise Operating System)是基于 Red Hat Enterprise Linux(RHEL)源代码编译的开源企业级操作系统,提供与 RHEL 二进制兼容的功能 完全兼容 RHEL,可直接使用…...
数据库(一):分布式数据库
定义 分布式数据库(Distributed Database) 是指: 数据分布在多个物理位置,但对用户透明,表现为一个统一逻辑数据库的系统。 结构模式(三层模式扩展) 层次作用对应实体用户层提供统一视图&…...
人工智能(AI)与BIM:建筑业创新实践的深度融合
一、BIM在建筑领域的发展现状与挑战 作为建筑数字化的核心技术,BIM通过三维模型集成建筑全生命周期信息,已成为工程设计、施工及运维的标准工作流程。当前,BIM在碰撞检测、施工模拟、成本管控等场景的应用已较为成熟,但行业仍面临…...
FIR数字滤波器设计与实现
低通滤波器的设计与实现 打开Matlab ,运行命令filterDesigner,选择FIR 最小二乘或者其它,设置采样频率,和低通滤波器截止频率。点击设计滤波器,如图1: 点击目标生成.C头文件,滤波器系数如下: …...
软件架构之-论高并发下的可用性技术
论高并发下的可用性技术 摘要正文摘要 ;2023年2月,本人所在集团公司承接了长三角地区某省渔船图纸电子化审查系统项目开发,该项目旨在为长三角地区渔船建造设计院、以及渔船审图机构提供一个便捷化的服务平台。在此项目中,我作为项目组成员参与了项目建设工作,并担任系统架…...
阻塞队列:线程安全与生产者消费者模型解析
一、阻塞队列 阻塞队列就是基于普通队列做出扩展 1.线程安全的 如果针对一个已经满了的队列进行入队列,此时入队列操作就会阻塞,一直阻塞到队列不满(其他线程出队列元素)之后 如果针对一个已经空了的队列进行出队列,…...
【时时三省】(C语言基础)用函数实现模块化程序设计
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 为什么要用函数? 已经能够编写一些简单的C程序,但是如果程序的功能比较多,规模比较大,把所有的程序代码都写在一个主函数(main函数)中&#x…...
基于CATIA参数化圆锥建模的自动化插件开发实践——NX建模之圆锥体命令的参考与移植(一)
引言 在CATIA二次开发领域,Python因其灵活性和丰富的库支持逐渐成为高效工具开发的首选语言。本文将以笔者开发的CATIA锥体自动化建模工具为例,参考NX软件中高效锥体创建命令,深度解析基于PySide6 GUI框架与pycatia接口库的集成…...
天才简史——Paolo Fiorini与他的速度障碍法
一、背景 第一次“认识”Paolo Fiorini教授是看了DMP的体积避障论文《Dynamic Movement Primitives: Volumetric Obstacle Avoidance》,而且他的学生Michele Ginesi将相关代码开源了,后来查阅了Paolo Fiorini相关资料才发现他竟然是速度障碍法的作者&am…...
第五天的尝试
目录 一、每日一言 二、练习题 三、效果展示 四、下次题目 五、总结 一、每日一言 毅力是永久的享受。 没有人是一座孤岛,每个人都是这块大陆的一部分。 二、练习题 import numpy as np import matplotlib.pyplot as plt array np.array([1,2,3,4,5]) plt.plot…...
大小端模式和消息的加密解密
大小端模式 知识点一 什么是大小端模式 // 大端模式 // 是指数据的高字节保存在内存的低地址中 // 而数据的低字节保存在内存的高地址中 // 这样的存储模式有点儿类似于把数据当作字符串顺序处理 // 地址由小向大增加,数据从高位往低位放 …...
(1) 查看端口状态
1. lsof 和 netstat 命令的区别 1.1 lsof 概念:只有在 root 的命令下才能执行,否则无内容显示;root 命令下显示完全 lsof -i: 8080 1.2 netstat 普通用户下显示不完全,root 命令下显示完全 netstat -tunlp | grep 8080 1.3…...
【C++]string模拟实现
#pragma once #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> #include<assert.h> using namespace std; namespace liu {class string{public:using iterator char*;using const_iterator const char*;//string();//无参构造 string(const string&…...
Linux动静态库制作与原理
什么是库 库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。 本质上来说库是一种可执行代码的二进制形式,可以被操作系统…...
ArkUI Tab组件开发深度解析与应用指南
ArkUI Tab组件开发深度解析与应用指南 一、组件架构与核心能力 ArkUI的Tabs组件采用分层设计结构,由TabBar(导航栏)和TabContent(内容区)构成,支持底部、顶部、侧边三种导航布局模式。组件具备以下核心特…...
winrar 工具测试 下载 与安装
https://zhuanlan.zhihu.com/p/680852417 https://www.angusj.com/resourcehacker/#download 点击String Table,在展开列表中找到80:2052展开,删除1277行。点击右上方编译按钮,并保存。...
代码随想录算法训练营第四十四天
卡码网题目: 99. 岛屿数量100. 岛屿的最大面积 其他: 今日总结 往期打卡 99. 岛屿数量 跳转: 99. 岛屿数量 学习: 代码随想录公开讲解 问题: 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水…...