自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使用cursor为代码添加注释

注意:目标是通过注释提升代码可读性但不改变其功能。注释应阐明代码目的、逻辑以及未来开发者或AI系统需要注意的重要事项。您需要为一段代码添加注释,使其对AI系统或开发人员更易理解。您将获得代码,请分析并添加适当的注释。输出应为添加注释后的原始代码,保留原有格式和结构。

2025-03-30 22:31:10 617

原创 python学习教程

https://liaoxuefeng.com/books/python/introduction/index.htmlhttps://docs.python.org/zh-cn/3.13/tutorial/index.htmlhttps://www.runoob.com/python/python-reg-expressions.htmlhttps://pythonguidecn.readthedocs.io/zh/latest/https://vscode.github.net.cn/docs/pyth

2025-03-27 23:45:01 81

原创 测试报告自动分析汇总工具

测试报告自动分析汇总工具

2025-03-26 00:50:10 108

原创 虚基类和虚继承

2.可以修饰继承方式,是虚继承。被虚继承的类,称作虚基类。1.修饰成员方法是虚函数。

2025-02-07 19:37:52 207

原创 如何理解多态,以及由此引出的抽象类和纯虚函数

【代码】如何理解多态。

2025-02-06 22:35:41 169

原创 虚函数,静态绑定和动态绑定

一个类里面定义了虚函数,那么编译阶段,编译器给这个类类型产生一个唯一的vftable虚函数表,虚函数表中主要存储的内容就是RTTI指针和虚函数的地址。当程序运行时,每一张虚函数表都会加载到内存的.rodata区。一个类里面定义了虚函数,那么这个类定义的对象,其运行时,内存中开始部分,多存储一个vfptr虚函数指针,指向相应类型的虚函数表vftable。一个类型定义的n个对象,它们的vfptr指向的都是同一张虚函数表。一个类里面虚函数的个数,不影响对象内存大小(vfptr),影响的是虚函数表的大小。

2025-02-04 18:14:00 256

原创 C++继承的基本意义

组合:a part of…继承:a kind of…继承的本质:a. 代码的复用 b.

2025-02-04 14:49:21 304

原创 容器迭代器iterator

迭代器可以透明的访问容器内部的元素的值,而无需了解其底层遍历机制具体是数组的下标还是链表的指针等等。泛型算法,有一套方式,能够统一的遍历所有的容器的元素 - 迭代器。泛型算法 - 全局的函数 - 给所有容器用的。泛型算法参数接收的都是迭代器!

2025-02-03 19:34:52 210

原创 C++运算符重载

C++的运算符重载:使对象的运算表现得和编译器内置类型一样。

2025-02-02 22:54:50 254

原创 C++模板初识

在另外一个文件中使用的模板代码调用之前,一定要看到模板定义的地方,这样的话,模板才能够进行正常的实例化,产生能够被编译器编译的代码。模板的实参推演 => 可以根据用户传入的实参的类型,来推导出模板类型参数的具体类型。所以,模板代码都是放在头文件当中的,然后在源文件当中直接进行#include包含。模板函数:在函数调用点,编译器用用户指定的类型,从原模板实例化一份函数代码出来。模板的实例化 - 函数调用点进行实例化模板函数才是要被编译器所编译的。函数模板是不进行编译的,因为类型还不知道;

2025-01-30 10:56:24 342

原创 C++的类Class

实际开发中,C++ 的 struct 和 class 仅默认权限不同,但习惯上用 struct 表示数据为主的结构,class 表示具有复杂行为的对象。

2025-01-26 16:33:53 655

原创 C++函数初识

【代码】C++函数初识。

2025-01-24 18:12:29 173

原创 C++的new和delete

malloc开辟内存失败,是通过返回值和nullptr做比较;而new开辟内存失败,是通过抛出bad_alloc类型的异常来判断的。malloc和free,称作C的库函数;new和delete,称作运算符。new不仅可以做内存开辟,还可以做内存初始化操作。

2025-01-24 17:42:23 225

原创 C++的引用

1.左值引用和右值引用2.引用的实例。

2025-01-24 11:15:32 203

原创 const的用法

const的编译方式不同。C中,const就是当作一个变量来编译生成指令的;C++中,所有出现const常量名字的地方,都被常量的初始化替换了!C语言中:const修饰的量,可以不用初始化(但之后同样不可作为左值)。不叫常量,叫做常变量。如果改成以下,初始值不是立即数,而是一个变量,则又变为常变量。C++中:const必须初始化,叫常量。

2025-01-23 16:26:01 917

原创 从编译器角度理解C++代码的编译和链接原理

了:.text<=>.text、.data<=>.data、.bss<=>.bss。步骤一:所有对符号的引用,都要找到该符号定义的地方。步骤二:符号解析成功以后,给所有的符号分配虚拟地址。编译过程中,符号是不生成虚拟地址的。常见问题:符号未定义、符号重定义。链接阶段,各个段就要进行合并。

2025-01-22 11:44:15 539

原创 从指令角度看函数调用堆栈过程

1.通用寄存器(EAX EBX ECX EDX EBP ESP ESI EDI)2.段寄存器(CS DS SS ES FS GS)EAX累加寄存器、EBX基址寄存器。4.标志寄存器(EFLAGS)3.指令指针寄存器(EIP)

2025-01-21 14:04:27 134

原创 进程虚拟地址空间区域划分

它存在,你能看得见,它是物理的;它存在,你看不见,它是透明的;它不存在,你也看不见,它被删除了!

2025-01-20 18:31:37 263

原创 Ubuntu使用指南

Ubuntu使用指南一、Ubuntu虚拟机1、本地如何连接虚拟机一、Ubuntu虚拟机1、本地如何连接虚拟机本地:WMware设置为NAT模式,查看虚拟网络编辑器的ip。虚拟机:设置静态ip为同一网段,完成后重启虚拟机生效。本地ping虚拟机成功。

2025-01-15 23:11:13 226

原创 C/C++数据库编程

C/C++数据库编程:从环境安装到代码实现

2023-08-23 15:22:33 1861

原创 Socket编程:基于TCP协议的客户端与服务端网络通信

socket编程一种独立于协议的网络编程接口,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

2023-08-11 18:06:26 1027

原创 C++单例模式

单例 Singleton 是设计模式的一种,其特点是只提供唯一一个类的实例,具有全局变量的特点,在任何位置都可以通过接口获取到那个唯一实例。具体应用场景如:设备管理器。系统中可能有多个设备,但是只有一个设备管理器,用于管理设备驱动;数据池。用来缓存数据的数据结构,需要在一处写,多处读取或者多处写,多处读取。

2023-08-10 17:15:08 867

原创 C++STL:无序关联容器

继 map、multimap、set、multiset 关联容器之后,本节介绍一类“特殊”的关联容器,它们常被称为“无序容器”、“哈希容器”或者“无序关联容器”。more注意,无序容器是 C++ 11 标准才正式引入到 STL 标准库中的,这意味着如果要使用该类容器,则必须选择支持 C++ 11 标准的编译器。和关联容器一样,无序容器也使用键值对(pair 类型)的方式存储数据。关联式容器的底层实现采用的树存储结构,更确切的说是红黑树结构;无序容器的底层实现采用的是哈希表的存储结构。

2023-07-16 13:36:47 806 1

原创 C++STL:关联容器之set和multiset

前面介绍了 map 容器和 multimap 容器,类似地,C++ STL 标准库中还提供有 set 和 multiset 这 2 个容器,它们也属于关联容器。more和 map、multimap 容器不同,使用 set 容器存储的各个键值对,要求键 key 和值 value 必须相等。显然,第一组数据中各键值对的键和值不相等,而第二组中各键值对的键和值对应相等。对于 set 容器来说,只能存储第 2 组键值对,而无法存储第一组键值对。

2023-07-15 20:25:41 368

原创 C++STL:关联容器之map和multimap

作为关联式容器的一种,map 容器存储的都是 pair 对象,也就是用 pair 类模板创建的键值对。其中,各个键值对的键和值可以是任意数据类型,包括 C++ 基本数据类型(int、double 等)、结构体或类自定义的类型。more通常情况下,map 容器中存储的各个键值对都选用 string 字符串作为键的类型。与此同时,在使用 map 容器存储多个键值对时,该容器会自动根据各键值对的键的大小,按照既定的规则进行排序。默认情况下,map 容器选用。

2023-07-14 14:23:25 1459 1

原创 C++STL:关联容器

顺序容器存储的都是 C++ 基本数据类型,而关联容器则大不一样,此类容器在存储元素值的同时,还会为各元素额外再配备一个值(又称为“键”,其本质也是一个 C++ 基础数据类型或自定义类型的元素),它的功能是在使用关联容器的过程中,如果已知目标元素的键的值,则直接通过该键就可以找到目标元素,而无需再通过遍历整个容器的方式。more弃用顺序容器,转而选用关联容器存储元素,往往就是看中了关联容器可以快速查找、读取或者删除所存储的元素,同时该类型容器插入元素的效率也比序列式容器高。

2023-07-13 15:56:04 144

原创 C++STL:顺序容器之forward_list

forward_list 是 C++ 11 新添加的一类容器,其底层实现和 list 容器一样,采用的也是链表结构,只不过 forward_list 使用的是单链表,而 list 使用的是双向链表。more如下图所示:上图中,H 表示链表的表头。a) 表示单链表,b) 表示双向链表。不难看出,使用链表存储数据最大的特点在于,其并不会将数据进行集中存储(向数组那样),换句话说,链表中数据的存储位置是分散的、随机的,整个链表中数据的线性关系通过指针来维持。

2023-07-12 13:05:21 1743

原创 C++STL:顺序容器之list

STL list 容器,又称双向链表容器,即该容器的底层是以双向链表的形式实现的。这意味着,list 容器中的元素可以分散存储在内存空间里,而不是必须存储在一整块连续的内存空间中。more下图展示了 list 双向链表容器是如何存储元素的:可以看到,list 容器中各个元素的前后顺序是靠指针来维系的,每个元素都配备了 2 个指针,分别指向它的前一个元素和后一个元素。其中第一个元素的前向指针总为 null,因为它前面没有元素;同样,尾部元素的后向指针也总为 null。

2023-07-11 09:02:40 777

原创 C++STL:顺序容器之deque

deque 是 double-ended queue 的缩写,又称双端队列容器。moredeque 容器也擅长在序列尾部添加或删除元素(时间复杂度为O(1)),而不擅长在序列中间添加或删除元素。deque 容器也可以根据需要修改自身的容量和大小。和 vector 不同的是,deque 还擅长在序列头部添加或删除元素,所耗费的时间复杂度也为常数阶O(1)。并且更重要的一点是,deque 容器中存储元素并不能保证所有元素都存储到连续的内存空间中。

2023-07-10 09:39:04 1360

原创 C++STL:顺序容器之vector

vector 容器是 STL 中最常用的容器之一,它和 array 容器非常类似,都可以看做是对 C++ 普通数组的“升级版”。不同之处在于,array 实现的是静态数组(容量固定的数组),而 vector 实现的是一个动态数组,即可以进行元素的插入和删除,在此过程中,vector 会动态调整所占用的内存空间,整个过程无需人工干预。

2023-07-09 14:08:35 767

原创 C++STL:顺序容器

所谓顺序容器,即以线性排列(类似普通数组的存储方式)来存储某一指定类型(例如 int、double 等)的数据,需要特殊说明的是,该类容器并不会自动对存储的元素按照值的大小进行排序。morearray(数组容器):表示可以存储 N 个 T 类型的元素,是 C++ 本身提供的一种容器。此类容器一旦建立,其长度就是固定不变的,这意味着不能增加或删除元素,只能改变某个元素的值。

2023-07-08 15:28:01 896

原创 C++STL:容器与迭代器

简单的理解容器,它就是一些模板类的集合,但和普通模板类不同的是,容器中封装的是组织数据的方法(也就是数据结构)。STL 提供有 3 类标准容器,分别是顺序容器、排序容器和哈希容器,其中后两类容器有时也统称为关联容器。

2023-07-07 19:31:18 945

原创 C++STL

STL,英文全称 standard template library,中文可译为标准模板库或者泛型库,其包含有大量的模板类和模板函数,是 C++ 提供的一个基础模板的集合,用于完成诸如输入/输出、数学计算等功能。moreSTL 最初由惠普实验室开发,于 1998 年被定为国际标准,正式成为 C++ 标准库的重要组成部分。如今 STL 已完全被内置到支持 C++ 的编译器中,无需额外安装。STL 就位于各个 C++ 的头文件中,即它并非以二进制代码的形式提供,而是以源代码的形式提供。

2023-07-06 12:11:41 125

原创 C++11:右值引用

右值引用是一种新的 C++ 语法,基于右值引用引申出了 2 种 C++ 编程技巧,分别为移动语义和完美转发。本文主要介绍什么是右值引用以及它的基本用法。

2023-07-05 12:46:47 128

原创 C++11:使用using定义别名

本文介绍 C++11 中使用 using 定义别名的用法。

2023-07-04 18:22:53 1396

原创 C++11:decltype类型推导

decltype 是 C++ 11 新增的一个关键字,它和 auto 的功能一样,都用来在编译时期进行自动类型推导。moredecltype 是 “declare type” 的缩写,译为“声明类型”。既然已经有了 auto 关键字,为什么还需要 decltype 关键字呢?这是因为 auto 并不适用于所有的自动类型推导场景,在某些特殊情况下 auto 用起来非常不方便,甚至压根无法使用,所以 decltype 关键字也被引入到 C++11 中。

2023-07-03 13:57:20 128

转载 C++11:auto类型推导

auto 的一个典型应用场景是用来定义 STL 的迭代器。我们在使用 STL 容器的时候,需要使用迭代器来遍历容器里面的元素;不同容器的迭代器有不同的类型,在定义迭代器时必须指明。return 0;可以看出来,定义迭代器 i 的时候,类型书写比较冗长,容易出错。然而有了 auto 类型推导,我们大可不必这样,只写一个 auto 即可。

2023-07-02 15:38:44 340

原创 Python+Selenium实现自动刷新网页

Selenium是一个用于Web应用程序测试的工具,本文介绍利用Python+Selenium实现自动刷新网页。

2023-07-01 14:26:14 1042

原创 C++引用计数

引用计数(reference count)的核心思想是使用一个计数器来标识当前指针指向的对象被多少类的对象所使用(即记录指针指向对象被引用的次数)。它允许有多个相同值的对象共享这个值的实现。引用计数的使用常有两个目的:简化跟踪堆中(也即C++中new出来的)的对象的过程。一旦一个对象通过调用new被分配出来,记录谁拥有这个对象是很重要的,因为其所有者要负责对它进行delete。但是对象所有者可以有多个,且所有权能够被传递,这就使得内存跟踪变得困难。引用计数可以跟踪对象所有权,并能够自动销毁对象。

2023-06-30 15:45:08 1610 1

原创 算法设计与分析之分治法

分治法的就是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。

2023-06-29 13:37:17 462

TranslateTool-v2.1exe项目代码

python/transform/英文翻译/NLP

2025-04-02

测试报告处理工具.exe项目代码

python\pdf\excel\tkinter\pyinstaller

2025-04-02

测试报告处理工具.exe

测试报告、PDF、Excel、tkinter

2025-04-01

英文离线翻译工具v2.0

python、Excel、英文翻译、已下载本地模型 新增文本翻译

2025-03-31

Excel英文离线翻译工具exe版本

python、Excel、英文翻译、已下载本地模型

2025-03-22

Excel英文离线翻译工具

Python、Excel、transform、PyQt5、离线安装Python packages

2025-03-19

空空如也

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

TA关注的人

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