自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Qt:鼠标事件

虽然Qt是跨平台的c++开发框架,但是Qt的很多能力是系统提供的,只是其封装了系统的API,例如在Linux环境下的Qt就封装了Linux的一堆API系统API事件:图形化界面中,用户操作和程序之间交互的机制(封装了系统的事件)文件操作多线程编程网络编程多媒体:音视频的播放。

2024-08-27 22:04:18 510

原创 Qt:线程

一个Qt窗口生成后,为什么拖动窗口,窗口可以随着鼠标移动或放大缩小因为对窗口操作后,都有对应的事件产生,Qt在其框架中对这些事件进行了默认处理一个Qt程序默认只有一个线程,称为主线程(也叫ui线程),主要处理窗口的事件(比如鼠标拖动,缩放,窗口控件对象数据的更新)不能用子线程处理这些事,如果子线程要操作窗口,只能先将数据传递给主线程,由主线程操作。

2024-08-09 22:11:27 488

原创 Linux:读写锁

读写锁是一把锁,是互斥锁的升级版互斥锁没有说明是锁定读还是锁定写,读写锁有两个功能分别对读和写操作进行锁定锁的类型是pthread_rwlock_t读写锁会记录自己现在是锁定状态还是非锁定状态锁定状态下是读锁定还是写锁定。

2024-07-27 13:09:11 383

原创 Linux:线程池

线程池是生产者和消费者模型中的一部分,线程池主要维护一个任务队列和消费者线程,生产者通过线程池提供的API接口把任务放入任务队列,消费者线程通过循环不断取任务,线程池中的任务是数据的处理流程是一堆函数,所以任务队列中存的是函数的地址。任务队列,线程用来处理任务,线程不能立刻处理完任务就需要把任务存起来。工作线程:从线程池维护的任务队列里取任务,相当于消费者。工作线程需要从线程池的任务队列中取任务,所以需要参数。任务队列为空,消费者线程使用条件队列阻塞。管理者线程:用来管理工作线程,只有一个。

2024-07-25 23:21:47 465

原创 MySQL:约束&主键&唯一键

表的约束:表中一定有约束,通过约束让插入表中的数据是符号预期的约束的本质是通过技术手段,倒逼程序员插入正确的数据。

2024-01-04 23:25:56 678

原创 MySQL:表操作&数据类型

插入格式 insert into 表名(date datetime) values (‘2000-01-01’, ‘2000-01-02 08:00:00’);串,L表示字符长度,最大是65535个字节,21845个字符(utf8下是这么多,因为一个字符是3个字节大小)alter table 表名 change 旧列名 新列名 列属性 comment `解释`char(L):存固定长度的字符串,L是可以存储的长度,不同的存储引擎在存储表的时候,生成的数据库文件个数不同。

2024-01-04 11:10:51 1070

原创 STL:双端队列&容器适配器&仿函数&优先级队列

代码84~100行是实现两个不同比较方式的仿函数,同容器适配器一样,在类模板参数列表中重命名,112行定义类对象,117行是对象调用()运算符重载函数,将括号中的两个参数传给类中的成员函数。通俗来说就是把函数封装到类里面,要使用该函数时,只需要定义一个这个类的对象,通过对象调用运算符重载函数,使用该功能。迭代器适配器:list反向迭代器的实现,封装了正向迭代器(抽出正向迭代器中的方法重新进行封装)仿函数又称函数对象(可以像函数一样调用的对象称为函数对象)C语言中,栈封装数组,队列封装链表,

2023-07-23 16:38:27 293 1

原创 STL:list的模拟实现(迭代器失效探讨)

在反向迭代器类中没有P和R类型,但是在正向迭代器中有,需要去找。用户只和list类进行交互,在list类中实例化迭代器的模板。反向迭代器是通过正向迭代器实例化出来的。使用:指针所具备的操作迭代器都需要有。**对list指针++和- -加typename的原因。

2023-07-23 16:37:54 212

原创 STL:vector的使用(初识迭代器&迭代器失效)

vector也是动态类型的顺序表,可以存储任意类型的元素string是动态类型顺序表,只能存储charvector有三个字段,写时拷贝&深拷贝。

2023-07-23 16:37:31 355

原创 STL:list

list是带头双向链表begin在首元素节点end在哨兵位节点find是公用方法,在某个区间内查找某个值为val的元素,找到则返回val的迭代器,没有找到则返回区间末尾迭代器第一个参数是区间首地址第二个参数的区间末尾。

2023-07-23 16:36:57 109

原创 STL:栈和队列的模拟实现

栈和队列不需要遍历,所以没有迭代器。

2023-07-23 16:36:18 80

原创 string:oj题目

【代码】string:oj题目。

2023-06-09 17:08:29 88

原创 STL:string使用

编码:ASCIIutf-16----一个字符2个字符utf-32----一个字符4个字节gbk–中文编码表。

2023-06-07 18:43:45 555

原创 C语言:函数栈帧

这两个寄存器存放的是地址,用来维护函数栈帧(正在调用哪个函数,两个寄存器就维护哪个函数的栈帧)每一个函数都要创建一个空间(栈区创建,栈区的使用是先使用高地址,后使用低地址)esp值减去 0E4H(此时两个寄存器新维护了一段空间)必须理解这两个寄存器(寄存器是独立于内存的)esp的值赋值给ebp(更新了ebp的指向)形参的传入是在main函数栈帧里面完成的。三次push是压入三个元素(不用管)main函数是被别人调用的。局部变量是怎样创建的。

2023-06-01 18:23:49 625

原创 数据结构:二叉树oj

搞清楚递归时候,遇见哪些条件不满足时候,递归函数退出。根据前序遍历的方法对数组每个元素初始化。给一颗二叉树,值放入数组中进行前序遍历。先遍历二叉树,得到树的结点个数。

2023-04-14 12:20:43 141

原创 数据结构:二叉树相关操作

先入队,使用front指针标记队头元素,打印队头元素对应的值。然后判断root的左右子树是否存在,存在就要入队push。入队一定要定义队头指针,标记队头元素。

2023-04-14 12:20:28 124 1

原创 数据结构:堆

堆的底层是一个顺序表,对这个顺序表进行特定的操作物理上是一个数组逻辑上是一个二叉树。

2023-04-14 12:20:07 74

原创 数据结构:队列

第一个结构体是基本结构,表示队列的节点。第二个结构体是用来找队列的头和尾。

2023-04-14 12:19:35 78

原创 数据结构:栈oj

20. 有效的括号如果遍历到的数组元素是左括号就入栈如果遍历到的数组元素是右括号就出栈在此步骤中,如果栈为空就不能出栈,返回false如果不为空看左右括号是否匹配,只要有一个不匹配就false最后栈为空则全部匹配

2023-04-09 11:05:00 106 1

原创 数据结构:栈实现

capacity是容量。

2023-04-09 10:43:04 76

原创 数据结构:链表oj下

一个指针从head走,一个指针从相遇点走,下次相遇就是入口点。找链表的最后一个节点while(tail->next)找到AB链表的尾节点,尾节点地址相同就是相交。不加36行代码会造成死循环(形成环)走完一个链表while(tail)如果是环,快指针在环内追上慢指针。找到中间节点,再把后面的逆置。求交点:求出AB两链表的长度。如果不是环,快指针就指向空了。每个指针都向后走一步。

2023-04-09 10:37:58 383

原创 数据结构:链表oj上

未考虑头结点是val的情况。

2023-04-02 21:21:32 140

原创 数据结构:不带头的单链表实现

顺序表为空时,结构体是存在的,a,size,capacity。顺序表数据不是存在于结构体上的,是存在于结构体指向的空间上面的。tail置为空,tail是局部变量,而3->next不为空,必须要有一个指针指向3。找链表的尾,while(tail->next!链表中一个节点都没有,表示头指针指向了空。或者用tail->next->next。链表的数据是存在于结构体上的。要给一个prev指针。

2023-04-02 15:05:47 233

原创 MySQL:库操作

定长char(10)表示最大存储10个字符串,存1个字符依然占10个空间。使用decimal要指定精度(总长度)和标度(小数点长度)类型后加UNSIGNED变无符号。varchar存几个占几个。

2023-03-31 10:27:17 100

原创 MySQL基础

SQL语句

2023-03-29 23:18:17 58

原创 数据结构:顺序表代码

assert:参数为0程序直接中止,可以精确的打印哪个文件哪一行出现断言。顺序表为空时,顺序表结构体是存在的,结构体成员的a指针指向空。不带头节点的链表为空时,链表结构体是不存在的。return返回该函数,程序不会结束。free的时候,数组越界报错。exit:直接中止程序。

2023-03-01 10:50:04 79

原创 C语言:数组指针&函数指针&回调函数

0是一个整数,先强转成函数的地址,(对函数的地址解引用就是函数)再解引用变成了函数,再加括号调用该函数。调用地址为0的函数,但0不能当做一个地址,所以将0强转为void(*)()类型的函数。*的结合优先级低于( )和 [ ]。

2023-01-12 17:18:50 1104

原创 C语言:整数的存储方式

最后将32位的补码转化为8个十六进制(每4位二进制,转化成1位16进制),32个二进制位转换成为8个十六进位。各种类型数据均分为有符号和无符号类型,当定义一个int类型或char类型的数,计算机默认其为有符号类型。char类型只有一个字节八位,只能保存-128~127之间的值,-1+1后,会将1省略变成0。有符号char类型,十进制数值表示范围是(-128~127);有符号数二进制首位是符号位,0正1负;有符号数和无符号数均有原码、反码、补码。计算机计算用补码,人看到的是原码。ab是有符号,c是无符号。

2023-01-11 21:13:46 1262

原创 C语言:隐式类型转换

就是变成整型:有符号补符号位,无符号补0。其余类型计算会发生算术转换。

2023-01-11 21:13:05 149

原创 C语言:笔记

一个全局变量可以在整个工程的其它文件内部能被使用,是因为全局变量具有外部链接属性,当全局变量被static修饰时,这个外部链接属性就变成了内部链接属性(该全局变量只能在自己所在源文件中使用,感觉是作用域变小了)extern,用于声明,该变量或者函数已经在其它文件中定义,在此处声明。default,前面case没有匹配,就走default。auto,定义自动变量,自动创建回收,等于局部变量。函数链式访问,把一个函数返回值当作另一个函数的参数。修饰函数和修饰全局变量一样,改变链接属性。

2023-01-10 19:11:50 444

原创 C语言:大小端

指针的类型决定其解引用操作可访问几个字节,char指针解引用只能访问或操作一个字节的内容,将a的地址强制转化成char*类型,再用char指针访问首字节。1的十六进制为0x00000001,若是小端存储,则第一个字节值为1,若是大端存储,第一个字节的值为0;这个规律是将数据按字节(00,FF每两个数是一个字节)的顺序进行存储,而不是按二进制位的顺序。记忆方法 小小小:数据 小 权值位放在 小 地址处,叫 小 端 ,计算机只从低地址处开始访问。

2023-01-08 12:17:36 691 1

原创 C语言:浮点型存储方式

E:是一个无符号整数,由科学计数法计算出M的有几个10次方,再加127或者1023;再将该值转化成二进制。比如,2^10的E是10,所以保存成32位浮点数时,必须保存成10+127=137,即10001001。1(S符号位) 8(E阶码) 23(M尾码)省略首位1。任意一个二进制浮点数V可以表示成下面的形式。M:由浮点数转化成二进制数表示。

2023-01-07 22:47:23 550

原创 QT:自定义对话框

程序员依据自己的想法去设计一个对话框模态对话框和非模态对话框:

2022-12-07 18:28:46 731

原创 QT:多进程

多进程

2022-12-07 18:04:01 3932

原创 QT:qss语句&资源文件

什么是样式设计?类似于网页设计中的css,为了让你的QT界面更加的好看如何跳到QT改变样式表的界面?font: 48pt “楷体”; //字体设置成楷体 48号字给组件添加背景图片给QT工程添加资源文件资源文件:你的QT工程需要用到的外部文件都叫做资源文件,常见的资源文件有图片,音频文件,视频文件

2022-12-06 23:24:51 457

原创 STL:关联式容器&哈希

vector连续存储的容器,动态数组,在堆上分配空间底层实现:数组两倍容量增长:vector 增加(插入)新元素时如果未超过当时的容量,则还有剩余空间,那么直接添加到最后(插入指定位置),然后调整迭代器。如果没有剩余空间了,则会重新配置原有元素个数的两倍空间,然后将原空间元素通过复制的方式初始化新空间,再向新空间增加元素,最后析构并释放原空间,之前的迭代器会失效。访问:O(1)适用场景:经常随机访问,且不经常对非尾节点进行插入删除。改变当前容器内有效元素的数量,改变当前容器的最大容量,不会生成元素会重新

2022-12-06 21:43:09 330

原创 C++:异常

用于修饰子类虚函数,添加于函数括号之后

2022-12-06 17:51:51 372

原创 QT:常见控件&布局管理器

让组件在水平和垂直方向对齐有三种常用布局管理器:水平,QHBoxLayout垂直,QVBoxLayout网格,QGridLayout(使布局好的界面嵌套到主窗口)最顶层的管理器,就是最后一个对组件进行操作的管理器(该管理器包含了其它所有管理器)中心窗口区什么是消息盒子:在登录界面中,密码输入错误,会弹出一个警告框static表示它是静态成员函数,可以直接通过类名调用,不需要创建对象parent父窗口thistitle消息盒子的标题text消息盒子的正文内容button想要在盒子中显示的按钮

2022-12-05 20:06:08 653

原创 C++:内存分区模型&常见内存错误

内存分区模型C++程序在执行时将内存划分成4个区域划分意义:不同区域存放数据,赋予不同的生命周期,使编程更灵活代码区存放函数体的二进制代码,由操作系统进行管理全局区存放全局变量,静态变量,常量栈区由编译器自动分配释放,存放函数参数,局部变量堆区由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收程序在运行前只有代码区和全局区,运行后才会有栈区和堆区...

2022-12-05 18:23:29 173

原创 QT:QWidget的属性&qrc

A界面跳到B界面右键项目名->add New->QT,QT设计师界面类->模板选择MainWindow,名字自取将A界面的用户名和密码传递给B本质是类和类之间的参数传递

2022-12-05 18:20:49 704

空空如也

空空如也

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

TA关注的人

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