自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(392)
  • 收藏
  • 关注

原创 Linux基础开发工具总结(gccg++, Makefile, 进度条)

可以把gcc(用于C语言)和g++(用于C++语言)想象成一个高级的“翻译官”,它的工作是把我们人能看懂的C/C++代码,翻译成计算机能直接执行的机器语言。预处理做什么: 处理代码中以开头的命令。比如:#include:把头文件(如stdio.h)的内容直接复制到你的代码里。#define:进行宏替换。删除注释。命令生成文件.i文件(还是文本文件,但已经“展开”了)。编译做什么: 检查代码语法是否正确。如果正确,就把.i文件翻译成汇编语言(一种更接近硬件的低级语言)。命令生成文件.s。

2025-12-20 21:34:44 851

原创 掌握Linux效率神器:Vim编辑器从入门到精通

Vim的学习曲线虽然陡峭,但一旦掌握,其带来的效率提升是巨大的。熟悉模式切换:刻意练习i进入插入模式,ESC返回正常模式。掌握移动命令:放弃方向键,强制自己使用h/j/k/l和w/b/gg/G来移动光标。组合使用命令:尝试d$(删除到行尾)、yG(复制到文件末尾)等组合命令。使用内置教程:在终端中输入vimtutor,这是官方提供的交互式教程,是新手入门的最佳途径。记住,Vim的精髓在于“思考-命令”的工作流。不要急于求成,每天进步一点点,你很快就能体会到这款“编辑器之神”的魅力所在。

2025-12-20 15:15:55 1029

原创 深入理解C++多态:从概念到原理

多态(Polymorphism),顾名思义,就是“多种形态”。在C++编程中,它意味着使用同一个接口或函数名,可以执行不同的操作。这大大增强了代码的灵活性和可扩展性。编译时多态(静态多态):在程序编译期间就确定了具体调用哪个函数。主要包括:函数重载:同一作用域内,函数名相同但参数列表不同的函数。函数模板:通过泛型编程,让编译器根据传入的参数类型自动生成具体的函数。运行时多态(动态多态):在程序运行期间才能确定具体调用哪个函数。这是我们本篇博客的重点,它通过虚函数机制实现。生动比喻编译时多态。

2025-12-18 22:09:50 661

原创 C++继承详解:从概念到实战应用

class 派生类名 : 继承方式 基类名 {// 派生类新增成员示例public:protected:int age;private:// public继承public:name = "张三";// OK: public成员在派生类中仍是publicage = 20;// OK: protected成员在派生类中仍是protected// ERROR: private成员在派生类中不可见继承是C++面向对象编程的核心特性,正确使用继承可以大大提高代码的复用性和可维护性。

2025-12-18 14:01:36 539

原创 第一部分:类和对象(中)— 取地址运算符重载

特性核心思想为什么重要?取地址重载/const成员函数控制对象地址的获取和对象的“只读”性。完善对对象行为的控制,是理解C++封装和常量正确性的基础。初始化列表真正初始化成员的地方,尤其是特殊成员。正确的初始化是避免未定义行为的关键,是编写稳健类的基石。static成员属于类本身的变量和函数,被所有对象共享。实现对象间通信、管理类级别资源(如计数器)的必备工具。友元授予特定函数或类访问私有成员的“特权”。在需要突破封装时(如输入输出流重载)提供灵活性。内部类。

2025-12-16 21:02:12 590

原创 C++ 类与对象实战:手把手教你实现一个实用的日期类

封装:将数据和操作封装在一起运算符重载:让自定义类型拥有内置类型的便利性const正确性:提高代码的安全性和可读性友元函数:在需要时突破封装限制代码复用:通过合理的依赖关系减少重复代码这个日期类不仅是一个实用的工具,更是一个优秀的学习示例。希望通过对它的分析,能帮助你更好地理解C++面向对象编程的精髓。记住:好的类设计应该让使用变得简单,让维护变得容易,让扩展变得可能。这就是面向对象编程的魅力所在。

2025-12-16 20:44:23 544

原创 类与对象三大核心函数:构造、析构、拷贝构造详解

public:// 深拷贝构造函数// 1. 申请新内存perror("malloc申请空间失败!!!");return;// 2. 拷贝数据// 3. 拷贝其他成员深拷贝的效果Stack st1;// st1._a → [内存块A]// st2._a → [内存块B](新申请的内存)// 内存块B的内容和内存块A相同// 现在st1和st2有各自独立的内存,可以安全析构如果你需要自定义析构函数,那么很可能也需要自定义拷贝构造函数和拷贝赋值运算符。类包含。

2025-12-15 20:33:24 887

原创 JAVA期末重点

2. 提供公共的访问方式,控制对数据的操作,提高安全性和可维护性;让代码更简洁、减少冗余是良好编程风格的结果,但不是封装的核心目的。而数据库驱动程序(Driver)在程序启动时注册后,通常由JVM管理,不需要显式关闭。显式调用父类的某个构造方法,且必须是子类构造方法的第一条语句。你不需要从零创造,只需要认出它考的是什么“模板”,然后把代码“对号入座”。)可以处理任何类型数据,包括字符,但可能需要编码转换。迭代,跳过剩余代码,直接进入循环的条件判断部分,开始下一次迭代。选项A、B错误,选项C语法错误。

2025-12-15 10:35:17 625

原创 类和对象(上)

通常会导致程序崩溃(段错误)

2025-12-14 21:09:54 785

原创 const引用

3的和结果保存在⼀个临时对象中, int& rd = d 也是类似,在类型转换中会产⽣临时对象存储中间值,也就是时,rb和rd引⽤的都是临时对象,⽽C++规定临时对象具有常性,所以这⾥就触发了权限放⼤,必须要⽤常引⽤才可以。const引⽤也可以引⽤普通对象,因为对象的访问权限在引⽤过程中可以缩⼩,但是不能放⼤。• 所谓临时对象就是编译器需要⼀个空间暂存表达式的求值结果时临时创建的⼀个未命名的对象,C++中把这个未命名对象叫做临时象。const引用的价值在于可以引用const对象,普通对象,临时对象。

2025-12-14 13:24:07 661

原创 引用的特点

1.引⽤在定义时必须初始化2.⼀个变量可以有多个引⽤3.引⽤⼀旦引⽤⼀个实体,再不能引⽤其他实体引用是否可以代替指针?不可以,比如在一个链表中A->B->C,我要删除元素B,这时候我需要把A的指向下一个节点指向C,C的指向前一个节点的指针指向A,但是引用不可以改变其指向,所以引用不能代替指针。

2025-12-14 00:22:19 240

原创 智能指针的分析与使用

什么是内存泄漏:内存泄漏指因为疏忽或错误造成程序未能释放已经不再使⽤的内存,⼀般是忘记释放或者发⽣异常释放程序未能执⾏导致的。内存泄漏并不是指内存在物理上的消失,⽽是应⽤程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因⽽造成了内存的浪费。内存泄漏的危害:普通程序运⾏⼀会就结束了出现内存泄漏问题也不⼤,进程正常结束,⻚表的映射关系解除,物理内存也可以释放。

2025-12-13 14:08:26 797

原创 LRU缓存

其实LRU不难实现,但是要实现高效的LRU比较难,就是要实现增删查改均为O(1)

2025-12-10 21:56:50 384

原创 接口自动化测试--requests模块

requests 库是⼀个⾮常流⾏的HTTP客⼾端库,⽤于发送HTTP请求。requests.get ⽅法⽤于发送⼀个HTTP get 请求到指定的URL。params ⽤于在URL中传递查询参数(Query Parameters),通常⽤于 GET 请求,但也可以⽤于其他类型的请求。• json ⽤于在请求体(Body)中传递 JSON 格式的数据,通常⽤于 POST 或 PUT 请求。• data ⽤于在请求体(Body)中传递表单数据,通常⽤于 POST 或 PUT 请求。

2025-12-09 21:18:47 255

原创 接口自动化测试 -- 如何执行接口自动化测试

2.参数组合:现在有⼀个操作商品的接⼝,有个字段type,传1的时候代表修改商品,商品id、商品名称、价格有⼀个是必传的,type传2的时候是删除商品,商品id是必传的,这样的,就要测参数组合了,type传1的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功。⽐如说必填的参数不填,输⼊整数类型的,传⼊字符串类型,⻓度是10的,传11,总之就是你说怎么来,我就不怎么来,其实也就这三种,必传⾮必传、参数类型、⼊参⻓度。◦ 密码安全规则,密码的复杂程度校验。

2025-12-08 14:12:06 303

原创 接⼝测试 --概念与重要性

接⼝⼀般来说有两种,⼀种是程序内部的接⼝,⼀种是系统对外的接⼝。程序内部的接⼝:⽅法与⽅法之间,模块与模块之间的交互,程序内部抛出的接⼝,⽐如贴吧系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,要发帖就得登录,那么这两个模块就得有交互,它就会抛出⼀个接⼝,供内部系统进⾏调⽤。

2025-12-08 12:04:58 833

原创 什么是coze插件

在Coze中,插件是扩展智能体功能的模块化⼯具,通过调⽤外部服务、数据接⼝或预设逻辑,使智能体具备实时交互、动态决策和场景化服务能⼒。缺点:它就像⼀个“理想主义”的参谋,只能空想给⽅向,所有关键的、需要验证和执⾏的任务(查实时天⽓、发正式通知)都得你亲⼒亲为。你决定使⽤⼀个叫做 “周末出⾏⼩管家” 的Coze智能体来帮你搞定⼀切。⽤⼀个实际的⽣活中的例⼦来帮你理解Coze智能体中插件的概念和作⽤。【天⽓查询】插件:让它能获取⽬的地精确到⼩时的天⽓预报。⽣活案例:智能“周末出⾏⼩管家”智能体。

2025-12-07 00:29:54 272

原创 三次握手与四次挥手

两次握手只能保证Client知道Server的收发能力正常,但Server无法确认Client的接收能力是否正常。第三次握手就是为了让Server确认这一点,从而。

2025-12-05 00:25:33 647

原创 pytest -- 测试报告allure

Allure Report 由⼀个框架适配器和 allure 命令⾏⼯具组成,是⼀个流⾏的开源⼯具,⽤于可视化测试运⾏的结果。下载链接:https://github.com/allure-framework/allure2/releases/download/2.30.0/allure-2.30.0.zip。官⽅⽂档:https://allurereport.org/docs/pytest-configuration。检查pycharm中命令⾏是否可以使⽤allure命令。保存后需要重启pycharm!

2025-11-30 13:58:56 389

原创 pytest -- ⽇志与测试报告

• 设置⽇志级别: logger.setLevel(logging.DEBUG) 将⽇志记录器的级别设置为DEBUG ,这意味着所有 DEBUG 及以上级别的⽇志都会被记录.• 添加处理器: logger.addHandler(handler) 将⽂件处理器添加到⽇志记录器中,这样⽇志记录器就会使⽤这个处理器来处理⽇志信息。使⽤模块名称作为⽇志记录器的名称有助于在⼤型项⽬中区分不同模块的⽇志.通过这种⽅式,你可以控制⽇志信息的输出格式,使其包含你感兴趣的信息,如时间戳、⽇志级别、⽂件名、函数名、⾏号等。

2025-11-29 23:47:49 421

原创 YAML相关

YAML是⼀种数据序列化语⾔,⽤于以⼈类可读的形式存储信息。• YAML 不允许使⽤制表符 Tab 键,(你之所按下 Tab YAML 仍能使⽤,是因为编辑器被配置为按下Tab 键会导致插⼊适当数量的空格)。YAML ⽂件的后缀名是 .yaml 或 .yml ,本着能少写不多写的原则,我们常⽤的是 .yml。yaml ⽂件通常作为配置⽂件来使⽤,可以使⽤ yaml 库来读取和写⼊ YAML ⽂件。YAML 是⼀种⾮常简单的基于⽂本的⼈类可读的语⾔,⽤于在⼈和计算机之间交换数据。它主要⽤于存储配置信息。

2025-11-29 21:22:49 338

原创 pytest -- 指定⽤例执⾏顺序

在使⽤pytest进⾏测试时,有时候我们需要按照特定的顺序来运⾏测试⽤例,尤其是在涉及到测试⽤例之间的依赖关系时。pytest本⾝并不直接⽀持通过配置来改变测试⽤例的默认运⾏顺序,pytest-order是⼀个第三⽅插件,专⻔⽤于控制测试⽤例的执⾏顺序。

2025-11-29 16:39:57 378

原创 pytest -- fixture

• 当 scope=“moudle” 、 scope=“session” 时可⽤于实现全局的前后置应⽤,这⾥需要多个⽂件的配合conftest.py 和 @pytest.fixture 结合使⽤实现全局的前后置应⽤@pytest.fixture 与 conftest.py ⽂件结合使⽤,可以实现在多个测试模块( .py )⽂件中共享前后置操作,这种结合的⽅式使得可以在整个测试项⽬中定义和维护通⽤的前后置逻辑,使测试代码更加模块化和可维护。• params 参数⽤于参数化fixture,⽀持列表传⼊。

2025-11-29 15:15:08 874

原创 pytest--参数化

这⾥, @parametrize 装饰器定义了三个不同的 (test_input,expected) 元组,以便test_eval 函数将依次使⽤它们运⾏三次。pytest中内置的 pytest.mark.parametrize 装饰器允许对测试函数的参数进⾏参数化。参数化设计是⾃动化设计中的⼀个重要组成部分,它通过定义设计参数和规则,使得设计过程更加灵活和可控。也可以在类或模块上使⽤ parametrize 标记,这将使⽤参数集调⽤多个函数。⽰例1:在⽤例上使⽤参数化。⽰例2:在类上使⽤参数化。

2025-11-28 16:45:07 373

原创 pytest -- 断⾔

断⾔( assert )是⼀种调试辅助⼯具,⽤于检查程序的状态是否符合预期。如果断⾔失败(即条件为假),Python解释器将抛出⼀个 AssertionError 异常。断⾔通常⽤于检测程序中的逻辑错误。pytest 允许你在 Python 测试中使⽤标准的 Python assert 语句来验证预期和值。错误信息 :当条件为假时显⽰的错误信息,可选。条件 :必须是⼀个布尔表达式。⽰例1:基本数据类型的断⾔。⽰例2:数据结构断⾔。

2025-11-28 11:43:51 538

原创 pytest--前后置

在测试框架中,前后置是指在执⾏测试⽤例前和测试⽤例后执⾏⼀些额外的操作,这些操作可以⽤于设置测试环境、准备测试数据等,以确保测试的可靠性。• fixture :这是 pytest 推荐的⽅式来实现测试⽤例的前置和后置操作。fixture 提供了更灵活的控制和更强⼤的功能。• setup_method 和 teardown_method :这两个⽅法⽤于类中的每个测试⽅法的前置和后置操作。• setup_class 和 teardown_class :这两个⽅法⽤于整个测试类的前置和后置操作。

2025-11-28 10:17:59 150

原创 pytest--⽤例运⾏规则

pytest 采⽤⾃动发现机制来收集测试⽤例。它会⾃动实例化测试类并调⽤其所有以 test 结尾的⽅法作为测试⽤例。⽅法,建议在 pytest 中使⽤其他替代⽅案,如使⽤ setUp() 和tearDown() ⽅法、使⽤类属性、使⽤ fixture 函数。以下是⼀些常⽤的 pytest 命令⾏参数及其使⽤说明。⽅法会被调⽤,这可能会掩盖测试类的实际测试逻辑,并引⼊额外的副作⽤,影响测试结果的准确性。由于 pytest 的测试收集机制,测试类中不可以定义。测试⽅法必须以 test 开头。

2025-11-28 00:06:15 228

原创 pytest

• 丰富的插件⽣态系统: pytest 有着丰富的插件⽣态系统,可以通过插件扩展各种功能,⽐如覆盖率测试、测试报告⽣成(如 pytest-html 插件可以⽣成完美的HTML测试报告)、失败⽤例重复执⾏(如 pytest-rerunfailures 插件)等。pytest 是⼀个⾮常流⾏且⾼效的Python测试框架,它提供了丰富的功能和灵活的⽤法,使得编写和运⾏测试⽤例变得简单⽽⾼效。• 灵活的测试控制: pytest 允许跳过指定⽤例,或对某些预期失败的case标记成失败,并⽀持重复执⾏失败的case。

2025-11-27 18:12:14 546

原创 pywinauto--菜单控件的操作

菜单栏:“系统”和“应⽤程序”系统菜单栏是⼀个标准的窗⼝菜单,包含以下项⽬:“还原”、“移动”、“⼤⼩”、“最⼩化”等。”形式的字符串,其中每个MenuItem是菜单该级别的项⽬⽂本。注意, menu_select() 的使⽤和上⾯有区别,使⽤ menu_select() 的场景下,通常⾄少有两个。exact :设置为 True,则要求菜单项名称与路径中的名称完全匹配;在⼤多数情况下,它的⽗级是对话框本⾝,因此可以在对话框的直接⼦级中找到它。返回对话框的菜单项,如果没有菜单项,则返回空列表。

2025-11-27 00:39:41 250

原创 pywinauto--键盘操作

keyboard.send_keys() 是⼀个通⽤的键盘输⼊⽅法,它可以直接将按键序列发送到当前具有焦点的窗⼝。然⽽,在实际的⾃动化场景中,我们通常需要针对特定的控件(如⽂本框、按钮等)进⾏精确的输⼊操作,⽽不是依赖于窗⼝的焦点状态。type_keys 是控件对象(例如 Edit 控件或 Button 控件)的专属⽅法,可以直接作⽤于指定的控件,确保输⼊内容精准⽆误。使⽤ {} 包裹特殊字符(如 {+} , {%} , {^} )以避免被识别为修饰符。向当前焦点窗⼝⾃动键⼊键或发送⽂本。

2025-11-26 00:13:47 326

原创 pywinauto--⿏标操作

为了解决这⼀问题,pywinauto 提供了⼀个独⽴的 mouse 模块,专⻔⽤于模拟真实⽤⼾的⿏标事件。例如,当我们尝试通过 win.double_click_input(coords=(1043, 130)) 来点击Sublime Text 窗⼝的最⼤化按钮时,虽然语法上没有问题,但这种⽅法可能⽆法完全满⾜我们的需求,尤其是在需要更精确或更灵活的⿏标交互时。rectangle() :获取元素对应坐标,返回矩形尺⼨,具有top,left,right,bottom属性。

2025-11-24 23:09:22 260

原创 pywinauto--获取文本

⽤于获取窗⼝或控件中的所有⽂本内容,返回⼀个列表,其中每个元素是⼀个字符串,表⽰窗⼝或控件中的某个⽂本⽚段⽰例1:获取窗⼝的标题⽰例2:获取控件的标题。

2025-11-24 11:45:42 361

原创 pywinauto--控件的操作

模拟⿏标左键单击操作。

2025-11-24 10:34:30 348

原创 pywinauto--等待

案例:没有添加等待导致引发的错误把等待代码注视掉,程序运⾏报错:GUI应⽤程序⾏为通常不稳定,脚本需要等待,直到出现新窗⼝或关闭/隐藏现有窗⼝。pywinauto可以隐式地(默认超时)灵活地等待对话框初始化,或者明确地使⽤专⽤⽅法/函数来帮助您使代码更容易和更可靠。

2025-11-23 15:06:26 981

原创 pywinauto操作--定位控件

桌⾯应⽤程序客⼾端的控件和层级结构是GUI⾃动化测试的基础。理解控件的分类、特性和层级关系,能够帮助测试⼈员更⾼效地定位和操作控件,实现⾃动化测试。在实际测试中,结合控件的属性和事件,可以编写灵活且可靠的测试脚本。打开UI对象检查⼯具UI Spy,通过ControlType可查看所定位到控件的类型。通过合理的分类和说明,可以更清晰地理解控件的功能和⽤途,便于在GUI⾃动化测试中进⾏操作和定位。在使⽤ pywinauto 进⾏⾃动化操作时,程序启动后,⾸先需要定位到⽬标窗⼝。

2025-11-22 13:02:02 263

原创 pywinauto--窗口操作

【代码】pywinauto--窗口操作。

2025-11-21 18:02:46 295

原创 pywinauto常⻅操作--定位窗⼝

最简单的定位窗⼝⽅法是询问 top_window() ,例如 win = app.top_window()需要注意,这是⽬前相当未经测试的,所以不确定它会返回正确的窗⼝。它绝对是应⽤程序的顶级窗⼝ - 它可能不是Z-Order中最⾼的窗⼝,但不⼀定是我们想要的窗⼝。print_control_identifiers() ⽅法⽤于打印窗⼝及其⼦控件的标识符信息,帮助⽤⼾识别控件。◦ 控件的类名、标题、位置(左、上、右、下边界的坐标值)、控制类型等信息。class_name : 窗⼝类为指定值的元素。

2025-11-21 11:35:35 513

原创 LLM 的接⼊⽅式

常⻅的原⽣ LLM (不经过第三⽅平台或复杂的代理层,直接与⼤语⾔模型提供⽅进⾏交互的⽅法)接⼊⽅式有三种:【API 远程调⽤】、【开源模型本地部署】和【SDK 和官⽅客⼾端库】

2025-11-19 22:06:28 664

原创 每日两道算法(3)

每日两题题目链接这道题是 LeetCode 第 61 题“旋转链表”,属于中等难度。题目要求将链表每个节点向右移动 k 个位置,相当于把链表后 k 个节点移到链表头部。

2025-11-19 16:50:19 463

原创 LLM为什么重要

⾃动化所有基于语⾔和知识的⼯作:撰写、总结、翻译、编码、答疑……它将⼈类从重复性的脑⼒劳动中解放出来,让我们能更专注于创造、决策和战略思考。它的核⼼价值不是替代⼈类,⽽是增强⼈类(Human Augmentation)。从“⼈适应机器”到“机器适应⼈”:我们不再需要学习复杂的软件菜单或编程语⾔,⽤最⾃然的“说话”⽅式,就能指挥机器完成任务。如果说前⼏年 AI 还是“炫技”的概念,那么⼤模型就是将 AI 变成⼀种基础资源,像电⼀样融⼊各⾏各业,驱动创新。• ⽣产⼒⾰命的“加速器”⼈机交互的“新范式”

2025-11-19 12:22:35 277

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除