自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Qt-connect总结

总共有五个参数,从左到右分别为为发送的对象指针、发送信号、接收对象指针、接收对象的槽函数、连接类型。

2024-08-18 00:08:09 294

原创 MFC与QT中禁用Esc、Alt+F4、关闭图标

但是由于我使用keyPressEvent检测alt+f4不成功,使用closeEvent又会把确定按钮的离开也禁用了。于是新方案可以使用在上层界面的closeEvent中调用该窗口,输入密码不正确即为ignore,正确即为accept。前两种是windows下常用的关闭按键,回车键也可一并禁用,因为有的场景误触回车,可能会触发按钮点击,按钮中调用了OnOK()这样的函数也会导致页面关闭。在业务中,我们需要按指定的方式才能关闭当前对话框。如下图需输入密码点击确认后,界面才能关闭。

2024-07-24 14:34:58 365

原创 VS+QT连接mysql

1.将mysql安装目录中的库文件拷贝到qt的bin目录下,windows下拷贝dll后缀,linux拷贝lib后缀。2.在qt模块中添加sql模块。或者在.pri文件中加上。

2024-05-23 11:37:29 244

原创 vs2013使用qt Linguist以及tr不生效问题

qt语言家使用以及tr函数不生效问题

2024-05-22 14:40:13 534 1

原创 protobuf用法(C++)

protobuf(protocal buffer)是一种序列化数据结构的方法。其特点有:1.支持多种语言(本文使用的是C++),多个平台。2.类比于XML更小、更快、更简单。3.扩展性、兼容性好。可以更新数据结构,而不破坏原有的结构和程序。

2023-07-10 10:14:54 2590

原创 IO多路转接

多路转接个人学习总结

2022-09-10 17:28:08 538 2

原创 特殊类设计、单例模式

特殊类的设计及单例模式简单总结

2022-07-10 12:44:42 361

原创 智能指针简单模拟实现

智能指针简单总结

2022-07-08 09:58:39 541

原创 网络套接字(socket)

在linux下的socket编程学习

2022-07-08 08:46:56 1626

原创 右值引用及移动语义

右值引用、在移动构造和移动赋值的应用

2022-06-07 11:02:34 323

原创 unordered_set和unordered_map模拟实现

目录1 哈希表实现1.1 字符串处理1.2 节点1.3 迭代器1.4 表2 unordered_map3 unordered_set1 哈希表实现采用开散列哈希表,映射方法为除留余数法。1.1 字符串处理使用仿函数对字符串类型的值转换为可以取余的整数。 template<class K> struct Hash { size_t operator()(const K& key) { return key;...

2022-05-30 12:12:57 168

原创 哈希表概念及简单实现

目录1 什么是哈希表2 哈希冲突2.1 冲突解决2.1.1 重新设计哈希函数2.1.2 闭散列(开放地址法)2.1.3 开散列(拉链法)2.2 哈希表扩容3 代码实现3.1闭散列3.1.1 查找3.1.2 插入3.1.3 删除3.2 开散列3.2.1 查找3.2.2 插入3.2.3 删除1 什么是哈希表哈希表的数据结构是一个顺序表,在存储内容时通过数组下标与数据值一一映射的方式记录。这里的一一映射关系可以用函数来表示,这样的函数叫.

2022-05-30 10:42:53 594

原创 线程池简单实现

目录1 什么是线程池2 普通模式3 单例模式1 什么是线程池线程池(thread pool):一种线程使用模式。线程池维护了多个已经创建好的线程。当有大量短时任务需要处理时,不用一个个创建进程去执行任务。避免了频繁创建销毁线程的消耗,同时也提高了任务处理的效率。原理:在线程池中创建并初始化固定数量的线程。使用一个阻塞队列作为任务队列,利用锁和条件变量保证接任务和取任务之间的互斥和同步。2 普通模式 在InitThreadP...

2022-05-22 20:27:13 168

原创 生产消费模型

目录1 模型简介2 基于BlockingQueue的生产者消费者模型代码实现3基于环形队列的生产消费模型代码实现1 模型简介以现实中的生产消费为例。工厂作为生产者生产的产品被批发到商场,普通民众作为消费者到商场购买产品。在这之间生产者与消费者并不需要交互,而是通过商场这一个媒介完成整个生产消费的过程。那么在我们的程序中也可以应用这个模型,一个线程产生数据作为生产者,一个线程处理数据作为消费者,中间使用阻塞队列来作为缓冲区。这样做的好处就是将...

2022-05-22 15:15:24 146

原创 线程概念及控制

目录1 线程概念1.1 什么是线程1.2 轻量级进程(LWP)1.3 线程特点1.4 线程和进程1.5 线程安全1.5.1 线程不安全的情况1.5.2 常见不可重入的情况2 线程控制2.1 创建线程2.2 线程id2.3 线程终止2.4 线程等待2.5 线程分离3 互斥量3.1 互斥量相关概念3.2 初始化3.3 销毁3.4 加锁和解锁4 条件变量4.1 相关概念4.2 相关接口5 信号量1 线程概念1.1

2022-05-22 11:02:01 217

原创 简单实现map和set

一、红黑树1 红黑树迭代器难点是Increament和DeIncreament函数,用来实现迭代器的加加减减。下面讲解一下Increament的思路,DeIncreament思路与其大致思路相同,不过就是一个相反的关系。 红黑树按照中序遍历,当前节点加加就应该要到当前节点的右子树找最左节点,但是右节点有可能为null。因此就需要分右节点是否为空两种情况。 当右节点不为空,到右子树找最左节点。当右节点为空,说明以该节点为根的子树已经遍历完了,向上找父...

2022-05-17 16:30:08 300

原创 数据结构 - 红黑树

目录一、红黑树概念二、代码实现1 节点定义2 树的定义3 插入3.1 情况一:u节点存在且为红3.2 情况二:u节点不存在或存在且为黑。3.3 代码实现部分4 验证一、红黑树概念红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。红黑树就能保证其最长路径中节点个数不会超过最短路径节点个数的两倍。满足性质:1. 每个结点不是红色就是黑色2. 根节点是黑色的3. 如果一个节点是红色的,则它的两...

2022-05-15 16:17:06 528

原创 数据结构 - AVLTree

目录一、概念二、实现 2.1 节点2.2 树2.3 插入2.4 旋转2.4.1 左旋2.4.2 右旋2.4.3 右左双旋2.4.4 左右双旋2.5 验证一、概念AVL树来源于二叉搜索树。当二叉搜索树是以下单支的情况下,搜索效率退化为O(n)。为了解决这个问题,我们通过一些手段将二叉搜索树左右平衡(每一个节点的左右子树高度差不大于1),这样平衡的二叉搜索树就是AVL树。为了更好地实现AVL树,我们引入平衡因子(bal...

2022-05-10 11:03:50 196

原创 Linux - 信号

目录1 信号概念1.1 查看信号1.2 信号常见处理方式2 产生信号2.1 通过终端按键2.2 调用系统函数向进程发信号2.3 由软件条件产生信号2.4硬件异常产生信号3 信号阻塞3.1 信号在内核中的示意图​3.2sigset_t3.3sigprocmask3.4sigpending4 信号捕捉4.1 signal4.2 sigaction、4.3 信号捕捉过程1 信号概念信号是进程中事件异步通知的一种...

2022-05-02 14:48:01 116

原创 进程通信(管道、共享内存)

总结管道和共享内存等两种进程通信方法

2022-04-22 11:23:16 322

原创 linux动静态库

动静态库的制作和使用

2022-04-17 16:27:42 281

原创 Linux - 理解文件系统

目录一、文件信息二、Inode三、硬链接四、软链接一、文件信息输入ls -l命令即可查看文件属性,文件属性含义如下图。也可以使用stat查看更多属性。二、Inode一个磁盘的分区的结构可以看做下图这样。inode可以直接看作是文件编号,操作系统是通过inode来确定文件,而不是文件名(文件名是给用户看的)。block存放文件内容,indode属性中记录了对应的block编号,这样就将文件属性和内容联系在了一起,就组成了一个完整的文件...

2022-04-17 11:10:45 654

原创 数据结构 - 搜索二叉树

目录一、搜索二叉树概念二、搜索二叉树实现1.完整代码2.删除2.1非递归2.2递归3.插入3.1非递归3.2递归4.查找4.1非递归4.2递归一、搜索二叉树概念搜索二叉树是一种特殊的二叉树,从根节点开始,左子树根节点的值一定当前节点值小,右子树根节点的值一定比当前节点大。 根据搜索二叉树的特点:对搜索二叉树中序遍历,就会得到一个递增的序列。可以类似二分查找,从根节点开始,查...

2022-04-15 11:32:25 2169

原创 C++ - 多态

目录一、定义及实现1.1 多态条件1.2 虚函数1.3 虚函数重写1.3.1协变1.3.2 析构函数重写1.4 final1.5 override二、抽象类2.1 纯虚函数三、多态原理四、单继承和多继承中的虚表一、定义及实现多态就是执行某项行为,不同的对象去执行会有不同的状态。之前的函数重载(静态多态)就是一种多态。1.1 多态条件1. 必须通过基类的指针或者引用调用虚函数2. 被调用的函数必须是虚函数,且派...

2022-04-08 20:51:55 852

原创 C++ - 继承

目录一、概念二、继承方式三、切片四、继承中的作用域五、子类中的默认成员函数六、继承中的友元和静态成员七、菱形继承八、虚继承总结一、概念 类的继承简单来说就是类的复用,类似函数复用,减少了代码量。一般是公共部分作为父类,继承该父类的子类都是作为父类的拓展。如下,一个老师和学生都是一个人,那么我们就可以先设置一个人类,然后老师类和学生类继承人类就行了。class person{protected: string _name; int...

2022-04-01 16:47:04 856

原创 Linux - 进程程序替换

目录一、替换原理二、替换函数1.介绍2.用法一、替换原理当一个进程调用exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。可以看到代码中exec函数后,printf("command end..\n");代码也会被覆盖不会执行。调用exec不会创建新进程,该进程id不会改变。通常是fork生成子进程后,子进程的程序与父进程相同。为了让子进程执行与父进程不同的事,可让子进程调用exec函数进...

2022-03-28 16:55:22 240

原创 C++ - priority_queue

目录一、介绍二、仿函数三、priority_queue实现1.构造2.插入和删除3.剩余接口四、完整代码一、介绍priority_queue叫做优先级队列,适配容器是vector。其实就是数据结构中的堆,默认是大堆。若需要小堆,则需要修改模板中的仿函数类型。template<class T,class Container = vector<T>,class Compare = less<T>>二、仿函数...

2022-03-27 11:06:18 3164

原创 C++ - stack和queue模拟实现

目录一、容器适配器1.deque二.stack实现三、queue实现一、容器适配器由数据结构的学习可知,栈可以用顺序表或者链表实现,队列可以用链表实现。由于stl已经存在了vector和list类,于是利用这两个容器作类模板就能更方便地来实现stack和queue容器。同时这样使用其他容器作类模板的模板就叫做容器适配器。template<class T,class Container = deque<T>>1.dequedeque...

2022-03-27 09:09:37 1365

原创 Linux - 程序地址空间

目录1.程序地址空间布局2.进程地址空间3.分页1.程序地址空间布局2.进程地址空间 设置一个全局变量val,可以看到在父子进程中,val的地址是相同的,但是存放的值却是不同的。这是因为当前的地址不是物理地址,而是虚拟地址。#include <stdio.h>#include <unistd.h>#include <stdlib.h>int val = 10;int main(){ pid_t id =...

2022-03-22 22:10:25 98

原创 C++ - list简单实现

目录一、整体框架二、节点类三、迭代器类四、list类1.构造与析构 1.1普通构造 1.2迭代器区间构造1.3拷贝构造与赋值1.4析构2.迭代器指针、头尾数据3.容量4.插入和删除一、整体框架 总共可分为节点类,迭代器类和list类三大块。 // List的节点类 template<class T> struct ListNode { ListNode(c...

2022-03-16 18:48:05 2008

原创 C++ - vector简单模拟实现

目录一、整体框架二、构造和析构函数1.无参构造2.迭代器区间构造3.拷贝构造4.赋值5.析构三、大小和容量相关函数1.大小和容量2.reserve3.resize四、插入和删除1.尾插2.尾删3.插入4.删除一、整体框架 template<class T> class vector { public: // Vector的迭代器是一个原生指针 typedef T

2022-03-14 15:55:55 1105

原创 C++ - string简单模拟实现

目录一、整体结构二、普通构造三、析构函数四、拷贝构造 1.深拷贝与浅拷贝2.写法一3.写法二五、赋值1.写法一2.写法二一、整体结构 本文只简单实现string函数的构造、析构、赋值,因此成员变量只需要一个字符指针。如果要完整的实现string类,还需要设置成员变量size、capacity。class string { public: string(const char* str = ""); string(con...

2022-03-01 16:32:58 562

原创 C++ - 模板

目录一、模板概述1.为什么要用模板2.模板的形式3、模板匹配原则二、类模板1.类模板形式2.类模板实例化三、非参数类型模板四、模板的特化1.全特化2.偏特化2.1部分特化2.2对参数进行进一步限制一、模板概述1.为什么要用模板有一些类和函数复用时仅仅只有数据类型是不同,其代码几乎完全相同,如下图我们写一个返回和的函数。如果是int型参数调第一个,浮点型调第二个。其他类型就要再写一个相应的重载函数。为此我们可以使用一个模板来做...

2022-02-20 11:07:24 136

原创 Linux - 权限

以上可知由于只要在目录中拥有写权限,就可以删除目录中的文件,那么由于一些原因我们想要别人有写权限,又不想让别人能够删除我们的文件,我们就可以让第三位执行位的权限字符为t,则若others的权限rwt,那么others能够读写文件,但是不能删除拥有者的文件。可执行权限: 如果目录没有可执行权限, 则无法cd到目录中 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.

2022-01-29 21:08:04 1058

原创 Linux - 基本指令

目录一、显示、移动、创建、删除1.ls2.pwd3.cd4.touch5.mkdir/rmdir6.rm二、拷贝和剪切1.cp2.mv三、查看1.cat2.more3.less4.head5.tail四、查找1.find2.grep五、日期和时间1.date2.cal六、压缩和打包1.zip/unzip2.tar七、其他指令1.man2.uname -r八、快捷键1.ctr+c2.c.

2022-01-29 10:56:09 1035

原创 C++ - 初始化列表、友元、static成员

目录一、初始化列表二、static成员三、友元一、初始化列表初始化列表写在构造函数参数下面,用冒号开始,逗号分隔,每一个成员属性后用括号内的参数进行初始化。class Date{public: Date(int year, int month, int day) : _year(year) , _month(month) , _day(day) {} private: int _year...

2022-01-20 21:55:22 439

原创 C++ - 类中默认成员函数

目录一、默认构造函数二、析构函数三、拷贝构造函数四、赋值运算符重载五、取地址及const取地址操作符重载一、默认构造函数构造函数名字与类名相同,并且没有返回值。创建类类型对象时由编译器自动调用,保证每个数据成员都有 一个合适的初始值,并且在对象的生命周期内只调用一次。class Date{public : // 1.无参构造函数 Date () {} // 2.带参构造函数 Date (int yea...

2022-01-17 22:51:47 222

原创 C++ - this指针用法

this指针总结

2022-01-16 10:44:43 4910

原创 C++ -- extern “C“ 用法

目录一、extern "C"是什么?二、用法展示1.创建静态库2.在c++文件中调c的静态库代码3.在C文件中调c++的静态库代码总结一、extern "C"是什么?extern "C"是为了在c++中兼容c代码,表示extern "C"代码中是标准的c 语言代码,要用c的编译器来编译,而不是用c++的编译器来编译二、用法展示1.创建静态库创建一个空项目,我这里命名为DS,然后在属性>>常规中把配置类型改成静态库类...

2021-12-01 20:11:50 2552

原创 C++ -- 引用

文章目录一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarnings('igno

2021-12-01 17:06:13 893

空空如也

空空如也

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

TA关注的人

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