自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【qt】windows下qt连接数据库

2.添加QsqlDatabase头文件,使用提示句柄,头文件QMessageBox。注意这里如果是插入失败的话,说明你的qt中没有mysql对应的驱动,需要自己下载。1.连接数据库,需要加sql。注意对应你自己的qt版本。

2024-08-25 16:50:27 340

原创 【qt】自定义信号

我们在上篇中,服务器收到的消息是由线程类去处理的,消息在线程类中,传不到widget中的ui中去,如果我们要在界面显示客户端的消息,必须通过自定义信号.

2024-08-23 09:45:04 289

原创 【qt】多线程

实现服务端多线程来处理多个客户端使用之前写过的服务端的代码此时我们不需要connect,和serverrecv,因为我们需要在自己实现的多线程里面处理不同客户端的请求。

2024-08-22 10:44:06 330

原创 内存泄漏检测工具valgrind

更新软件包列表在安装新软件之前,建议先更新Ubuntu的软件包列表和元数据信息,以确保安装的是最新版本的软件。安装Valgrind更新完软件包列表后,就可以安装Valgrind了。验证安装。

2024-08-19 19:03:24 244

原创 【qt】基于tcp的消息发送

我们需要实现客户端发消息,服务端接收消息。

2024-08-18 11:39:38 368

原创 【qt】跳转到另一个界面

如何在一个界面跳转到另一个界面呢?

2024-08-18 04:31:36 494

原创 【qt】基于tcp的服务端编写

实现服务端,连接后拿到客户端ip地址和端口号。

2024-08-17 11:23:28 311

原创 【qt】基于tcp的客户端搭建

我们给客户端提供服务器的ip地址,以及服务器的端口号1.界面设计2.修改对象名称。

2024-08-14 12:00:57 423

原创 【qt】QMainWindow下实现一个记事本

之前我们学过QWidget,QMainWindow会在ui界面多一个菜单。

2024-08-13 12:44:35 1263

原创 【qt】使用QTimer定时器实现电子相册的手动翻页

除了QObject的定时器外,有一个QTimer类中也实现了一个定时器,我们在QObject中定时器,当定时时间到的话,定时器又开始了新一轮的定时,而在QTimer中我们可以设置一个一次的定时器,时间到了之后不会启动新的定时。将开始按钮转到槽,实现开始定时,定时为1s,每一秒中断一次。我们根据QTimer这个类先实现一个和上篇一样功能的。使用stop函数实现定时器定时暂停,测试一下。为了实现图片切换,我们需要定义一个变量。新增按键实现下一张,转到槽,实现槽函数。构造函数中实现第一张图片加载。

2024-08-12 18:33:08 228

原创 【qt】使用QObject定时器实现简单电子相册

两个按钮,一个开始,一个暂停,当开始按下,去执行对应的槽函数,在该槽函数里面使用开始计时,设置1s中断一次去切换一下照片,暂停会停止计时器记时,界面设计,使用两个按钮,一个开始,一个暂停,用一个标签来放图片修改名称,以及对象名称,便于编程开始按钮对象命名为startbutton,暂停按钮对象命名为stopbutton准备图片:将你准备好的图片放在一个文件夹,并用1,2,3,4这种命名,以便于切换路径为D:\12。

2024-08-12 08:31:47 326

原创 【qt】计算器的实现

由图可知,我们需要20个按钮,一个行编辑文本。先摆放好按钮位置,再使用栅格布局按钮全选中使用栅格布局,使其整齐些接着修改按钮数字,可以按照计算器格式摆放接着我们修改每个对象的名称,待会写代码比较方便,数字的话,直接是。

2024-08-11 18:44:25 514

原创 【qt】创建工程|实现一个界面|信号与槽

在设计栏进行界面绘制双击可以进行修改但是现在输入是没有用的点击每个块会使右侧类和对象高亮,修改对象名称在写代码的时候会用,可以自定义设置,确定commitButton ,取消CancelButton,浏览BrowseButton,编辑行lineedit使用水平布局和弹簧调整一下。

2024-08-11 10:14:54 172

原创 【云备份】环境搭建

因为sudo只有超级用户可以使用来安装软件,我们可以使用visudo命令给普通用户提权,也可是使用sudo加一句红框的内容即可sudo apt update 的主要作用是更新本地软件包列表。这意味着它会连接到远程软件源,检查是否有新的软件包或更新可用,并将这些信息同步到本地系统。这使得系统能够了解到当前可用的软件包及其版本,为后续的软件安装和更新操作提供准确的信息。我的已经是安装好的了在/usr/include/ 可以看到对应的jsoncpp库jsoncpp库所包含的头文件。

2024-07-23 14:46:17 235

原创 【MYSQL】表的约束

在desc table,一张表里面,后面的NULL,Key,Default,Extra列,本篇会讲到。在之前说过数据类型也是一种约束,因为数据类型很少,所以要需要更多的约束来保证数据的合法性和正确性,表中的各种约束,来使得数据库里面的数据是合法的,约束会倒逼程序员插入正确的数据。约束的目的就是保证数据的完整性和可预期性。

2024-06-29 21:38:01 885

原创 【C++】单例模式

单例模式:一个类只能创建一个对象,即单例模式,该模式可以保证系统中该类只有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息,这种方式简化了在复杂环境下的配置管理。

2024-06-28 15:46:32 842

原创 【MYSQL】数据类型

数据类型分类数值类型。

2024-06-27 17:25:08 980

原创 【MYSQL】MYSQL操作库

当我们在数据库中保存数据时,需要存和取时候编码一致,比方说你用汉语保存的数据,当你读的时候为了避免乱码问题,也必须用汉语读,这就叫做数据库字符编码集一致。当我们进行查找,比较,读取时候,使用的字段比较编码,叫做数据库的校验集总结:数据库无论对数据做任何操作,都必须保证操作和编码是一致的(保证不会出现乱码)

2024-06-16 11:02:21 1027 1

原创 【MYSQL】数据库基础

首先我们认识mysql/mysqld当我们安装mysql,会安装mysql和mysqld,而这里的mysql是客户端,mysqld是服务端,一般带d的为守护进程,在网络服务中mysqld是后端mysql的本质:基于C(mysql),S(mysqld)模式下的网络服务总结:mysql是一套给我们提供数据存取服务的网络程序概念:数据库一般是指在磁盘上或者内存中存储特定的结构组织的数据,在磁盘上存储的一套数据库方案数据库客户端----mysql数据库服务端—mysqld。

2024-06-14 23:26:34 809

原创 【linux】线程同步和生产消费者模型

pthread_cond_init()函数功能:初始化一个条件变量pthread_cond_wait()函数功能:阻塞等待一个条件变量pthread_cond_signal()函数功能:唤醒至少一个阻塞在条件变量上的线程pthread_cond_broadcast()函数功能:唤醒全部阻塞在条件变量上的线程pthread_cond_destroy()函数功能:销毁一个条件变量。

2024-05-31 20:16:29 683

原创 【MYSQL】ubuntu下安装数据库

输入设置密码安全等级(0,1,2)方便起见我设置密码安全等级为0,只有数字。密码为root的登录密码。

2024-05-27 20:09:23 314

原创 【c++】map和set的封装

我们使用上节课的红黑树源码来封装map和set.因为map存的是(key,value),set存的是(key),为了我们set和map使用同一个类模板(红黑树),所以我们先要修改红黑树结点中存的数据类型,我们使用模板来初始化,根据实列化来决定结点中存的是pair,还是只有一个数据:代码中所有key的地方用data代替,而data的数据类型是T,当是set实列化的时候T就是int(一种),当是map的时候T就是pair,比方说pair

2024-05-16 09:06:32 378

原创 【c++】红黑树

_parent(nullptr)//节点的双亲(红黑树需要旋转,为了实现简单给出该字段), _col(RED) // 节点的颜色{}思考:在节点的定义中,为什么要将节点的默认颜色给成红色的?这是因为方便新插入的节点的颜色那我们新插入的结点应该选择插入红色还是黑色呢??对于这个问题,如果插入的黑色节点,会打破哪个规则,如果插入的是红色节点又会打破哪个规则?如果插入黑色节点,需要打破规则4,要检查每个路径很难。

2024-05-12 13:14:05 792

原创 【c++】avl树

一棵AVL树或者是空树,或者是具有以下性质的二叉搜索树:它的左右子树都是AVL树(简称平衡因子)的绝对值不超过1(-1/0/1)如果一棵二叉搜索树是高度平衡的,它就是AVL树。如果它有n个结点,其高度可保持在Olog2​n,搜索时间复杂度O(log2​n当插入,高度差不符合要求时,通过旋转变成avl树avl树节点定义需要操作一个树,我们只需要知道该树的根节点即可所以我们avl树的类成员变量为根节点地址。

2024-05-11 09:43:00 790 1

原创 【linux】硬链接和软链接

发现特征:1.软链接是一个独立的文件,因为有独立的inode number2.硬链接不是一个独立的文件,因为没有独立的 inode number ,用的是目标文件的inode3.属性中有一系列硬链接数文件磁盘级引用计数:有多少个文件名字字符串通过inode number 指向我软硬链接是什么?1.软链接:目标文件对应的路径字符串(对标windows上的快捷方式)2.硬链接:一个文件名和inode的映射关系,建立硬链接,就是在指定目录下,添加一个新的文件名和 inode的映射关系。

2024-05-10 16:02:48 863

原创 【linux】共享内存

1.shmget//创建共享内存key为用户给操作系统来标识共享内存的标识符,方便另一个进程来找到共享内存size为共享内存大小shmflg 创建共享内存的方式,位图形式返回shmid操作系统给用户的对应共享内存的操作符,用来对共享内存进行操作,比如说要释放共享内存,给shmctl函数传参shmid,要查看对应共享内存的属性,给shmctl也要传shmid2.ftok//产生一个随机值key,保证共享内存的唯一性pathname :路径字符串(任意)proj_id:任意数值。

2024-04-30 13:15:48 704

原创 【linux】命名管道

首先认识一个函数,他可以形成一个命名管道第一个参数是新建的命名管道放在哪个路径下的路径字符串,第二个参数为该文件的打开权限同时shell提供指令 mkfifo +命名管道名也能形成管道,会新建在当前路径下unlink函数实现删除管道参数为命名管道文件的所在路径。

2024-04-29 15:29:45 298

原创 【c++】set|map

1.set在底层是用二叉搜索树(红黑树)实现的。2.与map/multimap不同,map/multimap中存储的是真正的键值对,set中只放value,但在底层实际存放的是由构成的键值对。3.set中插入元素时,只需要插入value即可,不需要构造键值对。4.set中的元素不可以重复(因此可以使用set进行去重)。5使用set的迭代器遍历set中的元素,可以得到有序序列log2nlog_2 nlog2​n。

2024-04-27 12:17:12 751

原创 【linux】匿名管道|进程池

1.进程为什么要通信?进程也是需要某种协同的,所以如何协同的前提条件(通信)通信数据的类别:1.通知就绪的2.单纯的数据3.控制相关的信息2.进程如何通信?进程间通信,成本会高一点进程间通信的前提,先让不同的进程,看到同一份(资源,一段内存)一定是某一个进程需要通信,让os创建一个共享资源os必须提供很多的系统调用,os创建的共享资源不同,系统调用接口不同,进程间通信会用不同的种类3.进程通信的常见方式是什么?消息队列共享内存信号量。

2024-04-23 18:39:09 866

原创 【c++】多态

虚函数表// 这里常考一道笔试题:sizeof(Base)是多少?int main()为什么是8呢?虚函数表的继承class Basepublic:private:int _b = 1;Derive d;return 0;

2024-04-20 15:01:35 1018

原创 【c++】继承

下面我们看到Person是父类,也称作基类。Student是子类,也称作派生类。

2024-04-14 19:01:05 1241

原创 【c++】模板进阶

定义一个数组类1000我们需要两个对象,分别数组大小为10,和1000的话,只用上面一个类是不够的,两个类给不同的N值.这里我们可以用非类型模板参数来解决这个问题,只需要一个类。在这之前有一个知识点1000size(1);//这里故意写错,但是在实例化st1,它只对要用的函数实例化,并不会检查其他类成员函数内部有没有错误。在operator[]中,size(1);//这里故意写错,就不会报错。而编译器只会对大体的结构进行检查,比如说哪个类成员函数少一个分号。

2024-04-11 22:49:55 1056

原创 【c++】优先级队列|反向迭代器(vector|list)

int _month;int _day;while (!st.pop();如果我们把地址放进优先级队列里面呢??while (!st.pop();这里为什么排序是无序的呢??

2024-04-09 17:06:46 511

原创 【c++】二叉搜索树

二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树二叉树的中序遍历就相当于从小往大排序。

2024-04-08 22:57:57 1066

原创 【linux】重定向|缓冲区

将文件标识符为fd的文件内容读到buf中去,读count个,read的返回值是实际读到的个数,有可能文件中没有count个,但是read返回的还是实际读到的个数。

2024-04-04 17:47:50 968 2

原创 【linux】进程替换的应用|shell解释器的实现

当我们学过了进程替换之后,本篇文章可以根据进程替换的知识带你自主实现一个shell命令行实现步骤1.显示命令行提示2.读取输入指令以及对应选项3.分割第二步的指令以及选项到命令行参数表中4.处理内建命令5.进程替换。

2024-03-31 14:54:27 1259 7

原创 【linux】基础IO |文件操作符

需要掌握:操作文件,本质:进程操作文件。进程和文件的关系向文件中写入,本质上向硬件中写入->用户·没有权利直接写入->操作系统是硬件的管理者,我们可以通过操作系统往硬件写入->操作系统必须提供系统调用(默认操作系统不相信任何人)我们使用的fopen/fwrite/fread/fprintf/scanf/printf/cin/cout/实际上都是对系统调用的接口的封装.

2024-03-29 19:59:28 781 1

原创 【linux】进程替换

1.疑问为什么这里的退出码是0,不是1呢?原因是由于子进程被替换成ls进程后,旧的子进程后面就不执行了,所以exit(1)这句代码就不会执行,而是执行新进程ls,而进程ls执行成功,所以退出码为0.验证:我们可以通过改变要替换的子进程不存在,就不会替换子进程,所以退出码会是12.execl函数参数分析总结:1.execl函数,可以执行起来新的程序2.execl函数,执行完毕后,后续的代码不见了,因为被替换了。

2024-03-24 17:58:50 555

原创 【linux】进程控制

进程:内核相关管理数据结构(pcb+地址空间+页表)+代码+数据当fork函数创建一个子进程时,如何保证进程具有独立性?父进程的数据以及代码来自磁盘,而子进程的代码是共享父进程的,至于数据,如果子进程不修改数据的话,同样也是和父进程共享的,而如果子进程要修改数据,就会发生写时拷贝,保证数据的独立性,子进程的退出也不会对父进程做干扰.父进程退出也不会对子进程做干扰.

2024-03-22 18:48:03 1221

原创 【linux】进程的地址空间

代码解释:定义一个全局变量,然后创建子进程,让子进程在5秒开始修改这个值,观察子进程和父进程这个全局变量是否一样我们发现val变量子进程和父进程的值不一样,这个我们可以理解,因为进程的独立性,导致父进程和子进程的val不一样,但是为什么val两个的地址还是一样的解释:这里的地址并非物理地址,同一个物理地址只可能出现一个值,这里的地址其实是进程的地址空间,也叫做虚拟地址。

2024-03-20 16:47:38 1142

空空如也

空空如也

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

TA关注的人

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