自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode/2024.4.8/双指针简单题(1)

冒泡排序(改)的办法(很辣鸡,但简单),冒泡排序是稳定排序,将零当做最大的泡泡移动到后面。移动到数组的末尾,同时保持非零元素的相对顺序。,必须在不复制数组的情况下原地对数组进行操作。,编写一个函数将所有。

2024-04-08 16:35:54 195

原创 Qt/绘画事件

【代码】Qt/绘画事件。

2024-03-03 14:44:07 368

原创 Qt/事件分发器/事件过滤器

第一步给控件安装事件过滤器。第二步重写过滤器事件。

2024-03-03 14:14:20 451

原创 Qt/自定义控件的封装

在提升的类名称输入刚刚创建的类名,添加后选择提升,勾选全局包含可以方便使用。这是自己控件封装的文件,双击跳转到设计界面进行设计。跳转到其他的ui界面,创建一个widget。新建文件,选择Qt设计师界面类。

2024-03-02 16:31:22 786

原创 Qt/Qt4的connect函数/lambda表达式

槽函数采用Qt5之后支持的lambda表达式进行传参,常用=传递值,而不是&,因为当槽和信号连接时,当前控件会进入锁的状态,而=传递是创造新的值覆盖,不会过多影响效率,加上mutable关键字,可以修改按值传递的拷贝。

2024-02-24 04:09:16 849

原创 Qt/Slot与Signal /信号与信号连接/信号与槽的关系

singal1 与 slot1 对应, signal2 与 slot2 对应。信号的参数个数可以多余槽函数的参数个数,反之不可以。槽函数的参数和信号的参数类型必须一一对应。signal3 与 slot3 对应。多个信号可以绑定同一个槽。一个信号可以绑定多个槽。

2024-02-24 03:46:47 531

原创 QT/自定义槽和信号

创建两个类student和teacher,父类都为QObject。当teacher对象发出hungry信号,调用treat槽函数。在teacher中自定义Signal,hungry。当遇到重载的槽函数时,需用函数指针指向对应的函数。在student中自定义Slot,treat。Qstring转换为char类型的方法。

2024-02-23 21:59:16 777

原创 QT/窗口部件布局

【代码】QT/窗口部件布局。

2024-01-13 16:09:07 342

原创 QT/建立连接

【代码】QT/建立连接。

2024-01-12 23:20:23 368

原创 C++/链表linklist

【代码】C++/链表linklist。

2023-12-14 20:34:30 49

原创 字符编码*

它致力于将全球范围内的字符纳入统一的字符集之中,提供一种通用的字符集来处理和显示各种语言文字,减少因为编码标准不同而产生的乱码问题。,使用 1 到 4 字节来表示一个字符,根据字符的复杂性而变。ASCII 字符只需 1 字节,拉丁字母和希腊字母需要 2 字节,常用的中文字符需要 3 字节,其他的一些生僻字符需要 4 字节。GBK,可以表示汉字,ASCII 字符使用一个字节表示,汉字使用两个字节表示。ASCII字符集最早出现的字符集,只能表示英文。

2023-12-14 10:57:41 40

原创 数据结构/数字编码

二者的二进制相加相当于将正数中为1的位和负数相同位置的位加起来,如果负数反码位上为0,加起来位置为一之后取反就相当于负数的大小减去了正数其位上表示的数,如果负数反码位上为1,说明负数原码次位上为0是没有这个数的,按照正常的减法,得向上一位借1,故加起来,上一位置为1,取反为0相当于减去这个位上表示的大小,相加的位置为0取反后表示,向前借的位表示的数减去正数之后剩下的数是正数位上的数(如1000 - 0100 =0100 0100 -0010 = 0010)。非线性数据结构:树、图、堆、哈希表。

2023-12-05 23:26:43 48

原创 初识Qt/Hello Qt

【代码】初识Qt/Hello Qt。

2023-12-05 19:30:30 25

原创 算法复杂度分析

算法设计的目标:1.找到问题的解法2.寻找最优解法衡量算法的优劣的的主要评价指标:时间效率、空间效率效率评估的方法:实际测试、理论估算复杂度分析能够体现算法运行所需的时间和空间资源与输入数据大小之间的关系。

2023-12-05 19:20:56 29

原创 高级IO/poll

* requested events */关心文件描述符产生的事件:POLLIN:可读事件 POLLOUT:可写事件,如果想要监控多个事件,使用按位或 POLLIN | POLLOUT。poll 函数返回后,可以通过 pollfd 结构中的内容进行处理就绪文件描述符,相比 select 效率要高。提出了事件结构的方式,在给poll传递参数时,不需要分别添加到“事件集合”当中去。优点:poll采用链表储存替代select中的fd_set结构,因此监控的文件描述符数量不受限。

2023-11-30 21:56:37 21

原创 网络编程socket/端口复用

假设一个场景,当服务器需要更新时, 需要服务器主动关闭连接,这时候服务器就需要等待2msl才能使用这个端口,对于用户而言,2msl的时长太长,(linux的2msl时长大约有40s到60s),所以需要复用这个端口,使得服务端能够正常运行。optval是一个指向某个变量(*optval)的指针,setsockopt从*optval中取得选项待设置的新值,getsockopt则把已获得的选项当前值存放到*optval中。level(级别)指定系统中解释选项的代码为通用套接字代码,或为某个特定协议的代码。

2023-11-30 20:13:18 150

原创 高级IO/Select

返回就绪文件描述符的时候,是返回一个集合,而不是直接将就绪的文件描述符返回,需要调用的时候使用者需用FD_ISSET判断。缺点:select采用轮询遍历监视,随着文件描述符的增大,效率会越来越差。select监控的文件描述符有上线,默认为1024。select调用完后会将除了触发的文件描述符外所有的1设置为0。阻塞IO、非阻塞IO、异步IO、多路转接IO、信号驱动IO。nfds:取值最大的文件描述符,循环监控的范围。返回值:返回就绪的文件描述符个数,失败返回-1。优点:可以跨平台、超时时间可以精确到微秒。

2023-11-29 23:09:50 19

原创 Linux/父进程用signalcallback函数回收子进程

父进程调用wait函数会被阻塞而无法继续执行之后的命令,为了能使的父进程可以在等待子进程结束回收的同时执行代码,可以使用signal函数实现。当子进程结束,父进程需要调用wait函数回收子进程,否则子进程会变成僵尸进程。当子进程结束会产生信号,我们可以捕捉子进程的信号通知父进程回收子进程。

2023-11-29 09:56:27 38

原创 网络编程2/传输层

传输层的常见的协议有TCP和UDP。

2023-11-28 18:56:52 19

原创 网络基础2/HTTP协议

Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个 Content-Length属性来标识Body的长度;Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个 Content-Length属性来标识Body的长度;首行: [方法] + [url] + [版本] Header: 请求的属性, 冒号分割的键值对;HTTP是无连接的,无状态的。HTTP协议的URL。

2023-11-28 14:39:45 20

原创 网络基础1

传输层:段(segment) 网络层:数据报(datagram) 数据链路层:帧(frame)OSI7层模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。TCP/IP五层模型:应用层、传输层、网络层、数据链路层、物理层。4、数据链路层:负责设备之间的数据帧的传送和识别。3、网络层:负责路由线路的选择和地址管理。版本:IPV4(面临枯竭问题)、IPV6。2、传输层:负责两台主机之间的数据传输。5、物理层:负责光/电信号的传递方式。1、应用层:负责应用之间数据沟通。

2023-11-27 11:11:21 15

原创 Linux/重定向

当我们运行一个文件时,系统会为进程创建一个文件夹先用ps aux | grep xxx 获取进程号然后ll /proc/[PID]/fd 查看目录下的文件描述符目录下0为标准输入,1为标准输出,2为标准错误。

2023-10-06 23:14:08 21

原创 管道pipe

有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另 一个进程的所有陷入和异常,并能够及时知道它的状态改变。一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止 时要通知父进程)fd是一个文件描述符数组,为一个出参,成功返回0,失败返回错误代码。例子:从键盘读取数据,写入管道,读取管道,写到屏幕。创建一个管道,打印写端的文件符和读端的文件符。将 一个进程的数据传递给另一个进程。f[0]是读端,f[1]为写端。头文件<unistd.h>

2023-10-06 22:50:29 23

原创 C++/BST/二叉搜索树实现

每个左子树不会大于节点,每个右子树不会小于节点。

2023-10-06 21:54:37 32

原创 C++/多态简单练习

实现了学生类信息添加的功能。

2023-10-05 10:07:10 24

原创 Linux/进程切换/exec

用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数 以执行另一个程序。当进程调用一种exec函数时。从新程序的启动 例程开始执行。调用exec并不创建新进程,所以调用exec前后该进程的id并未改变。以此类推execve,execle、execl、execv。该进程的用户空间代码和数据完全被新程序替换,execvp表示带有路径,且参数用数组的形式。execlp则表示带有路径,参数好用列表表示。e表示使用当前的环境变量。v表示参数格式为数组。

2023-09-30 21:12:00 32

原创 C++/继承

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特 性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构, 体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。

2023-09-30 20:48:50 22

原创 杨辉三角/c++实现

在每循环一行的时候,开辟为当前行数的空间,并设置第一个元素和最后一个元素为1。杨辉三角每行的头和尾都为1,且其他元素正上方两个前行的元素相加。我们用二维的vector储存杨辉三角。先用resize()开辟五行的空间。

2023-09-26 15:52:16 93

原创 const char* 与从const char* const str

/字符指针不可以修改,指针指向的常量不可以修改。//字符指针可以修改,指针指向常量。

2023-09-25 21:38:34 35 1

原创 C++/日期类/class Date 实现

成员函数GetMonthDay,用于获取月份的天数,可以区分闰年的二月天数。私有成员变量:_year, _month, _day。将对象的年月日浅拷贝构造到新对象。构造函数,默认初始化参数。

2023-09-25 20:10:45 57 1

原创 stringstream的简单介绍

在C语言中我们可以用itoa()和sprintf()函数将整形变量转换为字符串,但是两个函数在转换的时候,都得先给出保存的空间,转换格式不匹配时,可能还会得到错误的结果,甚至程序崩溃。stringstream使用string类对象代替字符数组,可以避免缓冲区的危险,而且会对参数类型进行推演,不需要格式化控制,也不会出现格式化失败的风险,使用更方便安全。在c++中可以使用stringstream避开这类问题,使用stringstream必须包含头文件sstream。

2023-09-24 14:24:32 54 1

原创 OJ题2023/9/18

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?

2023-09-24 14:16:21 30 1

原创 C++/IO简单概念

输入输出缓缓冲区可以屏蔽掉低级的I/O的实现,更容易写程序,实现“行”读取行为。C语言中我们使用的输入输出为printf()和scanf()两个函数。scanf():将键盘(标准输入设备)读取数据,并将值存放在变量中。printf():将指定的字符串/字符输出到屏幕(标准输出设备)cerr,clog,cout本质相同,只是为了区别功能。cout:进行标准输出,即数据从内存流向控制台。fstream file (既输出又输入用)cin:标准输入,即数据从键盘输入程序。cerr:用来进行标准错误的输出。

2023-09-24 14:15:16 30 1

原创 OJ题-计算日期到天数转换

先if判断闰年,再用while循环计算月份的天数最后加上日期的天数。

2023-09-18 20:43:02 45

原创 Linux 进程

子进程由unistd.h头文件里的fork()函数创建,fork函数会返回两个值,一个是返回子进程的pid给父进程,另一个是返回0给子进程,pid为进程号,ppid为父进程号。在Linux中用ps aux | grep xxx指令来查询进程的进程号及状态,启动指令的进程由bash创建。若父进程在子进程前结束,则子进程会变成孤儿进程,并在结束时被1号进程回收资源,防止变成僵尸进程。子进程和父进程是各种独立的进程,采用的是抢占式进程调度,运行的代码是相同的。进程状态常见的有R、R+、t、T、Z、S、X、D等。

2023-09-14 22:49:46 24 1

原创 C++内存管理

在C中,用malloc函数开辟空间,用free函数释放空间,而在C++中,用new不仅可以开辟空间,还可以调用构造函数初始化,而delete则会先调的析构函数再释放空间,new和delete是操作符,而malloc和free是函数。malloc申请空间会返回值,若申请失败则返回NULL,realloc还会释放原有的空间,为了防止释放原因的空间,产生野指针,我们可以用下面代码预防。但new不同的是当申请空间失败后会产生警报,我们可以用try...catch来实例化类或者使用set_new_handle()

2023-09-09 23:12:17 28 1

原创 C++/引用计数器和写实拷贝

对类的拷贝分为深拷贝和浅拷贝,深拷贝是新开辟一个空间存放数据,而浅拷贝是共享一个空间存放数据。浅拷贝更节省空间,而深拷贝的可靠性高,安全性高。为了解决浅拷贝的安全问题,我们使用引用计数器的方法。

2023-09-08 16:44:12 78 1

原创 c++参数列表

在C++中,我们可以在定义函数时为参数提供默认值,这样就可以在调用函数时省略这些参数,或者只提供需要的参数。这种方式被称为“参数默认值”。静态成员节省空间,所有成员共享,静态成员改变所有类都改变,初始化放在类外。参数列表初始化,引用成员和const类型只能用参数列表初始化。

2023-09-07 20:46:01 187 1

原创 DataStruct/数据结构---顺序表

顺序表是线性的,较为简单,一般用数组储存,设计出一个可以动态增加容量的顺序表。静态表可能会导致表的容量太小以至于装不下大量的数据。设置默认的列表大小、扩容大小和元素类型。定义SeqList结构体。函数声明以及函数实现。

2023-09-06 22:59:11 38 1

原创 C++初学class/类

关于结构体和类,在C与C++中,C++类默认为private且允许由空类,空结构体大小为1,在C中struct默认为public不允许由空结构体。常对象调用常方法,允许重载,因为参数不一样,第一个是A const* this第二个是const A const* this。在c++中有三种访问限制符:public,private,protect。private和protect不可以直接访问成员。public:可以直接访问成员。一个类由成员函数,成员变量构成。

2023-09-04 11:23:42 21 1

空空如也

空空如也

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

TA关注的人

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