自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 cannot find -lmysqlclient 错误解决

是因为编译找的动态库是根据去找/usr/lib文件夹下的库,而centos会默认将mysql相关的库装再/usr/lib64/mysql下,所以才会出现找不到-lmysqlclient的错误。将/usr/lib64/mysql下面的libmysqlclient.so文件复制到/usr/lib下即可解决。

2023-11-17 20:16:39 554 1

原创 char*、const char*、string三者之间的转换

char*、const char*、string三者之间的转换

2022-11-26 15:14:28 386 1

原创 C++的异常处理的方法

C++处理异常的方法

2022-11-21 16:33:52 1675 1

原创 数组中不等三元组的数目

算法,全排列

2022-11-20 20:28:18 410

原创 结构体内存对齐

内存就是这么对齐的

2022-11-17 14:42:45 107

原创 三数之和-----双指针算法

双指针就是这么玩的

2022-11-08 22:38:02 199 1

原创 二分查找算法

在有序序列中,使用二分查找算法搜索目标元素的核心思想是:不断地缩小搜索区域,降低查找目标元素的难度。

2022-11-07 20:13:33 117

原创 智能指针之unique_ptr

智能指针之unique_ptr

2022-10-12 10:31:31 311

原创 学Docker,有着一篇就够了

Docker学习笔记

2022-10-06 16:54:44 323

原创 贪心算法----区间选点

题目:给定 N 个闭区间 [ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。输出选择的点的最小数量。位于区间端点上的点也算作区间内。输入样例:3-1 12 43 5思路解题思路:先将每个区间按右端点从小到大排序,然后每次枚举每个区间,当某个区间内已经取了点时,直接跳过即可,否则取每个区间最右端的端点。代码#include <iostream>#include <algorithm>using namespace std;con

2022-05-07 16:07:58 254

原创 二叉树详解

前序遍历//前序遍历:根 左子树 右子树void PrevOrder(BTNode* root){ //root为空是递归的终止条件 if (root == NULL) { printf("NULL "); return; } printf("%c ", root->x);//访问根,这里进行打印操作,也可进行其他操作 PrevOrder(root->left);//递归访问左子树 PrevOrder(root->right);//递归访问右子树}中

2022-04-15 20:18:53 189

原创 虚函数详解

C++虚函数的实现原理(底层结构)每一个含有虚函数的类都至少有一个与之对应的虚函数表,其中存放着该类所有的虚函数对应的指针。实现原理当类中存在虚函数时,编译器会再类中自动生成一个虚函数表。虚函数表是一个存储类成员函数指针的数据结构。虚函数表由表一起自动生成和维护。virtual修饰的成员函数会被编译器放入虚函数表中。存在虚函数时,编译器会为对象自动生成一个指向虚函数表的指针(通常称为vptr)具体的一个实现过程父类的fun()是个虚函数,所以编译器会跟父类对象自动添加了一个vptr

2022-04-13 08:59:42 962

原创 快速排序算法

插入排序void insert_sort(){ for (int i = 1; i < n; i ++ ) { int x = a[i]; int j = i-1; while (j >= 0 && x < a[j]) { a[j+1] = a[j]; j -- ; } a[j+1] = x; }}

2022-04-11 20:15:54 65

原创 通过CSS给Qt控件添加样式

通过CSS给Qt控件添加样式第一步:建立 .CSS文件,并添加到资源文件中去第二步:用VScode打开CSS文件进行编辑,写出对应的样式第三步:在主函数中进行调用CSS文件,改变控件样式QFile f1; //设置登录窗口和添加窗口的样式 f1.setFileName(":/dlg.css"); f1.open(QIODevice::ReadOnly); QString strQss = f1.readAll(); //注:有多个窗口,代码中m_dlgLo

2022-04-06 10:11:48 3770

原创 QTableWidget的操作

QTableWidget的操作 //清理表格 ui->tableWidget->clear(); //自己设计表头 QStringList l; l<<"序号"<<"id"<<"姓名"<<"年龄"<<"年级"<<"班级"<<"学号"<<"电话"<<"微信"; ui->tableWidget->setColumnCount(9);/

2022-04-06 10:03:45 153

原创 Qt中快速批量模拟增加数据

快速增加数据在日常开发中,比如写一个学生管理系统,需要模拟增加数据,如果一条一条的调用sql语句进行添加稍稍大量的数据就会很慢,本人亲测,比调用单个增加函数快上很多,增加两三白条数据就是那么一两秒的事下面给一个快速的操作第一步:首先定义一个对应的结构体类,方便操作例:struct StuInfo{ int id; QString name; quint8 age; quint16 grade; quint16 uiclass; quint32 stu

2022-04-06 09:55:05 939

原创 QTreeWidget与QStackedWidget的关联操作

QTreeWidget与QStackedWidget的关联通过点击QTreeWidget来控制QStackedWidget中的page页面切换QTreeWidget有一点击的槽函数void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column){ //QTreeWidgetItem *item=item; if(item->text(column)=="学生管理") {

2022-04-06 09:40:23 1627 4

原创 Json以及Json在Qt中的使用

1、简介JSON:一种轻量级的数据交换格式一般.json后缀高效简单2、使用组织数据:用于数据的网络传输组织数据:用于磁盘文件实现数据的持久化存储用在登录 记录用户名密码等,下次打开软件,自动填充。3、Json数组Json数组使用[]表示,[]里面是元素,元素间使用 , 分隔,最后一个元素后面,没有 ,一个Json数组,支持多种不同的数据类型,包括:整形,浮点型,字符串,json数组,json对象,空值-null(null)Json数组中嵌套Json数组,父子关系Json数组嵌套Js

2022-04-03 13:03:32 10645 1

原创 互斥量,事件对象,信号量对象,关键代码段(临界区)

互斥量互斥量又称互斥锁。互斥量是一个可以处于两态之一的变量:解锁和加锁。如果不需要信号量的计数能力,有时可以使用信号量的一个简化版本,称为互斥量(mutex)。互斥量仅仅适用于管理共享资源或一小段代码。由于互斥量在实现时既容易又有效,这使得互斥量在实现用户空间线程包时非常有 用。为协调共同对一个共享资源的单独访问而设计的。#include <stdio.h>#include <windows.h>#include <process.h>#define N

2022-03-30 19:09:44 407

原创 WaitForMultipleObjects

作用等待直到一个或所有指定对象处于信号状态或超时间隔过去。句法DWORD WaitForMultipleObjects( [in] DWORD nCount, // 要监测的句柄的组的句柄的个数 [in] const HANDLE *lpHandles, //要监测的句柄的组 [in] BOOL bWaitAll,//TRUE 等待所有的内核对象发出信号 FALSE 任意一个内核对象发出信号 [in] DWORD dwMillise

2022-03-28 19:38:07 485

原创 WaitForSingleObject 函数

作用等待直到指定的对象处于信号状态或超时间隔过去。句法DWORD WaitForSingleObject( [in] HANDLE hHandle, [in] DWORD dwMilliseconds);参数解释[in] hHandle对象的句柄。有关可以指定其句柄的对象类型的列表,请参阅以下备注部分。如果在等待仍处于挂起状态时关闭此句柄,则函数的行为未定义。句柄必须具有SYNCHRONIZE访问权限。[in] dwMilliseconds超时间隔,以毫秒为单位。如果指定了

2022-03-28 17:52:50 749

原创 程序自启动与隐藏

##程序添加到启动项void AddToSystem(){ HKEY hKEY; char CurrentPath[MAX_PATH]; char SysPath[MAX_PATH]; long ret = 0; LPSTR FileNewName; LPSTR FileCurrentName; DWORD type = REG_SZ; DWORD size = MAX_PATH; LPCTSTR Rgspath = "Softwa

2022-03-26 18:29:41 502

原创 一种更优雅的 recv 和 send:超大数据的传输

一种更优雅的 recv 和 send:超大数据的传输int MySocketRecv0(int sock, char* buf, int dateSize){ //循环接收 int numsRecvSoFar = 0;//目前收到的数据 int numsRemainingToRecv = dateSize;//剩余要接收的数据 printf("enter MySocketRecv0\n"); while (1){ int bytes

2022-03-24 17:38:35 941

原创 静态成员变量和静态成员函数

静态成员变量一个类中可以有一个或多个静态成员变量,所有的对象都共享这些静态成员变量,都可以引用它。static 成员变量和普通 static 变量一样,都在内存分区中的全局数据区分配内存,到程序结束时才释放。这就意味着,static 成员变量不随对象的创建而分配内存,也不随对象的销毁而释放内存。而普通成员变量在对象创建时分配内存,在对象销毁时释放内存。静态成员变量必须初始化,而且只能在类体外进行。例如:int Student::m_total = 10;初始化时可以赋初值,也可以不赋值。如果不赋值

2022-03-20 09:22:49 1574 1

原创 this指针详解

this指针this 实际上是成员函数的一个形参,在调用成员函数时将对象的地址作为实参传递给 this。不过 this 这个形参是隐式的,它并不出现在代码中,而是在编译阶段由编译器默默地将它添加到参数列表中。this指针是类的指针,指向对象的首地址。this指针只能在成员函数中使用,在全局函数、静态成员函数中都不能用this。this指针只有在成员函数中才有定义,且存储位置会因编译器不同有不同存储位置。this指针的用处一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的

2022-03-20 08:53:58 13446 1

原创 VLC库基本函数的使用

创建实例libvlc_new()加载媒体libvlc_media_new_path()/libvlc_media_new_location()(file:///、http://、rtsp://、screen://)创建播放器libvlc_media_player_new_from_media()设置播放窗口libvlc_media_player_set_hwnd()开始播放libvlc_media_player_play()获取播放长度libvlc_media_player_get_l

2022-03-18 20:24:44 686

原创 C++引用详解

引用参数的传递本质上是一次赋值的过程,赋值就是对内存进行拷贝。所谓内存拷贝,是指将一块内存上的数据复制到另一块内存上。对于基本类型的数据,它们占用的内存往往只有几个字节,对它们进行内存拷贝非常快速。而数组、结构体、对象是一系列数据的集合,数据的数量没有限制,可能很少,也可能非常多,对它们进行频繁的内存拷贝可能会消耗很多时间,拖慢程序的执行效率。C/C++ 中禁止在函数调用时直接传递数组的内容,而是强制传递数组指针;而对于结构体和对象没有这种限制,调用函数时既可以传递指针,也可以直接传递内容;为了提高效

2022-03-16 16:08:57 783

原创 内联函数详解

CPU 会一条一条执行程序中的代码。CPU 在执行主调函数代码时如果遇到了被调函数,主调函数就会暂停,CPU 转而执行被调函数的代码;被调函数执行完毕后再返回到主调函数,然后在继续执行下 一条代码。函数调用是有时间和空间开销的。程序在执行一个函数之前需要做一些准备工作,要将实参、局部变量、返回地址以及若干寄存器都压入栈中,然后才能执行函数体中的代码;函数体中的代码执行完毕后还要清理现场,将之前压入栈中的数据都出栈,才能接着执行函数调用位置以后的代码。如果函数体代码比较多,需要较长的执行时间,那么函数调用

2022-03-15 23:18:18 846

原创 指针小总结

指针的声明格式:typeName* pointName;例:int* p;其中p是指针,而int* 是指向int的指针指针赋值应将内存地址赋值给指针,可以对变量名应用&运算符来获得被命名的内存的地址,new 运算符返回未命名的内存的地址例:int * pn;int a=8;pn=&a;int * pa;pa=new int[8];区分指针和指针所指向的值int * pt;pt是指向int的指针,则*pt不是指向int的指针,而是完全等同于一个int类型的变

2022-03-08 22:54:51 553

原创 屏幕截图和发送

屏幕截图和发送要实现远程控制,被控端的屏幕监控是要解决的问题,在这里采用了屏幕截图发送的方式来实现屏幕实时监控在此项目里把截取的图片保存为png格式,并存于内存流中在进行发送//发送屏幕截图int SendScreen() { CImage screen;//GDI //GetDC()功能作用:检索指定窗口的客户区的显示上下文环境句柄 //参数1:指定窗口句柄 //返回值:返回值表示指定窗口区域的DC句柄,失败返回NULL HDC hScreen = ::Ge

2022-03-04 15:34:58 561

原创 Windows文件操作

获取磁盘分区原理:在windows中1,2,3,4分别表示A,B,C,D盘,最多到Z盘,基本没有超过26个盘的通过使用_chdrive()函数切换磁盘分区来判断有多少给磁盘分区int MakeDriverInfo() {//1==>A 2==>B 3==>C...26==>Z, //windows下最多有26个分区 std::string result; for (int i = 1; i <= 26; i++) {//遍历磁盘 i

2022-03-03 23:00:40 261 1

原创 包 的 设 计

包的设计在本项目中,会有文件操作,信息传输,故想着设计一个包来进行解决,并且进行了封装以及构造函数重载来方便操作详情见代码//包设计类class CPacket{public: //构造函数,初始化 CPacket():sHead(0),nLength(0),sCmd(0),sSum(0){} //数据包封包构造函数,用于把数据封装成数据包 //参数一:命令 参数二:数据指针 参数三:数据大小 CPacket(WORD nCmd, const BYTE* pData, size_t n

2022-03-03 19:03:10 197 5

原创 单例类操作

单例类描述:指在整个系统生命期中,一个类最多只能有一个实例(instance)存在,使得该实例的唯一性(实例是指一个对象指针)用法:1. 将构造函数的访问属性设置为private2. 提供一个GetInstance()静态成员函数,只能供用户访问唯一一个实例3. 定义一个静态成员指针,用来供用户获取4. 重载 (=)赋值操作符以及拷贝构造函数,并设为private, 避免对象间拷贝,复制封装:.hclass CServerSocket{public: //提

2022-03-01 17:07:25 62

原创 网络编程的设计

基于TCP/IP协议的C/S模型TCP/IP特点:面向连接的、可靠的、基于字节流的传输层协议。C/S 即 客户端/服务器 模型。服务端设计打开网络库//打开网络库,返回值为int类型,打开成功返回0 WSADATA data; if (WSAStartup(MAKEWORD(1, 1), &data) != 0) { return FALSE; } return TRUE;程序结束前一定要关闭网络库:WSACleanup();创建一个socketsocket:

2022-03-01 16:46:40 2009

原创 QT天气预报

项目介绍本项目基于QT平台开发的一款天气预报的应用,效果图如下:1、 有城市的天气预报,有背景图、控件半透明化。2、 显示日期,城市名称,当天的天气预报3、 当天天气预报的详细数据4、 该天的一些生活指数:如感冒指数、每日寄语5、 当天的日出日落时间,及扇形时间占比6、 该城市,前一后四天的天气预报,含有日期,星期,天气,高低温7、 最近一周的温湿度曲线8、 搜索框、刷新按钮。9、 窗口大小固定,无最大、最小化、关闭按钮。鼠标拖动窗口移动,右键退出。10、自定义按钮图标实现思路

2022-02-26 15:39:03 3982 6

原创 VMware Workstation 安装ssh服务器

VMware Workstation 安装ssh服务器切换到root账户确认网络通畅虚拟机的默认网络配置是 NAT 模式,共享宿主机 ip安装 net-toolsudo apt install net-too未安装状态用 ifconfig 查看 ip 地ssh 服务通过 sudo ps afx|grep ssh(sudo 首次会提示输入密码)来查看是否安装了 ssh 服务未查看到 sshd 进程,未安装/etc/init.d/ssh start 因此也未能启动 sshd更新

2021-12-03 22:50:58 2668

原创 全排列和排列组合

排列组合对一组数字进行排列组合,比如1,2,3的排列组合为1231 21 32 31 2 3代码实现:#include<iostream>#include<algorithm>using namespace std;int n,tem[1000],a[1000];void tsort(int start,int length,int num,int a_len,int *a,int *tem){ int i,j; for(i=start;i<a

2021-04-30 10:46:08 251

原创 十大排序算法

算法总结*冒泡排序#include <iostream>#include <algorithm>#include <vector> using namespace std; void bubbleSort(vector<int> &q){ for(int i = q.size() - 1; i > 0; i--){ bool flag = false; for(int j = 0; j +

2021-04-26 17:24:49 48

原创 哈夫曼算法

#include<iostream>#include<string>#include<algorithm>using namespace std;#define n 6 //叶子数目#define m 2*n-1 //树中结点总数typedef struct { //结点类型 double weight; //结点的权值 int parent, lchild, rchild;//双亲指针及左右

2021-04-05 22:27:52 55

原创 素数筛(线性筛法)

一、什么是线性筛法?线性筛法是指在O(n)的复杂度情况下,筛选出所给数的所有质数二、原理是什么?1.最小质数由公理可知,n都可以被分解为多个质数的乘积,那么,在这些质数中,我们总能找到一个最小的数x,那么x就是n的最小质数2.剔除非质数既然有了最小质数x,针对每一个数,我们只需要从2开始,逐条对2-n进行遍历(假设我们此时遍历到的数是i),如果发现i%x=0,那么我们就知道这个数要被剔除掉因为它可以被至少两个数的乘积表示(不满足质数的定义)3.如何保证不重复剔除非质数?我们知道,45可以是

2021-04-05 12:48:00 5549 3

操作系统444444444

操作系统444444444

2024-01-23

八股汇总15412818915402

八股汇总15412818915402

2023-10-13

空空如也

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

TA关注的人

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