自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq_43148810的博客

学习总结与分享

  • 博客(93)
  • 资源 (15)
  • 收藏
  • 关注

原创 Qt 实现压缩文件、文件夹和解压缩操作zip

通过Qt自带的库来实现,使用多线程方式,通过信号和槽来触发压缩与解压缩,并将压缩和解压缩结果回传过来。如有错误或不足欢迎评论指出!创作不易,转载请注明出处。1、在.pro文件中添加模块gui-private。

2023-08-01 17:26:03 3680 9

原创 基于多进程并发-进程通讯之管道(pipe)

匿名管道只能用于父子进程间通信 ,不能跨网络通信,并且通信是单向。另外,管道传输的数据是⽆格式的流且⼤⼩受限。正常情况下,控制台进程的输输入出是在控制台窗口的,但是如果我们在创建子进程的时候指定了其输入输出,那么子进程就会从我们的管道读数据,把输出数据写到我们指定的管道。这就是我们代码中重定向标准输入的原因,否则system(“pause”)会无效。命名管道,顾名思义,这个管道肯定是有名字的。通过管道的名字来确保多个进程访问同一个管道。

2023-06-24 15:20:20 711

原创 基于多进程并发-进程通讯之共享内存(shared memmory)

现代操作系统,对于内存管理,采⽤的是虚拟内存技术,也就是每个进程都有⾃⼰独⽴的虚拟内存空间,不同进程的虚拟内存映射到不同的物理内存中。所以,即使进程A中和进程 B中的虚拟地址是⼀样的,其实访问的是不同的物理内存地址,对于数据的增删查改互不影响。就是拿出⼀块虚拟地址空间来,映射到相同的物理内存中。这样这个进程写⼊的东⻄,另外⼀个进程⻢上就能看到了,都不需要拷⻉来拷⻉去,传来传去,⼤⼤提⾼了进程间通信的速度。(1)共享内存是双向通信(全双工)。(2)共享内存是IPC通信方式中速度最快的。

2023-06-24 14:40:43 2544

原创 基于多进程并发-进程同步之互斥锁(Mutex)

所有句柄都被关闭后,操作系统就会删除对象,进程中止前,一定要ReleaseMutex释放互斥体,如未释放,这个互斥体会被标记为废弃,并自动释放所有权。共享这个互斥体的其他应用程序,也许仍然能够用它,但会收到一个废弃状态信息,指出上一个拥有它的进程,未能正常关闭。ReleaseMutex()让调用进程释放对该互斥体的拥有权,此时另一个在等待该mutex的线程,将得到信号停止等待(wait函数)。关闭一个句柄,并将这个句柄的引用计数减一,如果句柄的引用计数减到0,那么操作系统将释放这个核心对象的句柄。

2023-06-13 13:58:54 1397

原创 父子进程、进程、线程、协程、芊程

如有错误或不足欢迎评论指出!创作不易,转载请注明出处。

2023-06-07 21:07:44 191

原创 基于多线程并发-线程同步-系统实现

系统实现:相对于STL来说非标准的实现,Linux和Windows平台各自的实现。线程同步:通过限制多个线程同时执行某段代码来保护资源的。

2023-06-07 20:23:29 575 1

原创 基于多线程并发-STL之信号量(semaphore)

信号量 (semaphore) 是一种轻量的同步原件,用于制约对共享资源的并发访问。在可以使用两者时,信号量能比条件变量更有效率。如有错误或不足欢迎评论指出!创作不易,转载请注明出处。b、visual studio升级为2019。一、操作系统提供的信号量区别。1、操作系统提供的信号量区别。c、打开c++20支持的开关。二、c++ 20 信号量。

2023-05-12 17:32:56 724 1

原创 基于多线程并发-STL之递归锁recursive_mutex

recursive_mutex的用处和mutex差不多,用于限制多线程同时访问同一个变量,用来加锁,保证多个线程,同一时刻只能有一个线程在修改变量;和mutex不同的时,recursive_mutex可以允许同一个线程递归的去加锁,线程只有加锁次数和释放次数相同时,才会释放变量的控制权;例如下面的fun2中调用了fun1,但是fun1和fun2中都加了锁,如果使用mutex,在fun1加锁,在fun2中再次加锁,就会造成死锁;所以recursive_mutex可以避免递归嵌套调用时,造成的死锁问题;

2023-05-12 16:51:34 246

原创 基于多进程并发-进程通讯之套接字(socket)

socket:可用于不同设备间的进程通信。

2023-02-14 11:28:38 433

原创 基于多进程并发-进程的实现

基于以上几个原因,所以就有了进程间通信的概念,那么进程间通信的原理是什么呢?目前有哪几种进程间通信的机制?他们是如何实现进程间通信的呢?在这篇文章中我会就这几个问题进行详细的讲解。

2023-02-13 20:09:16 472

原创 SVN高阶操作之外部链接

项目、软件打包目录或者代码目录等依赖通用模块、文件等时,应使用SVN的外部链接,在任何一个项目中修改基础了基础库的代码,提交svn后都能同步到其他的项目,但是SVN中只保存了一份。如有错误或不足欢迎评论指出!创作不易,转载请注明出处。

2023-02-10 22:21:45 1769

原创 VS运行调试窗口

VS高阶调试窗口

2023-02-10 21:40:59 788

原创 C++标准模板库type_traits源码剖析

1、type_traits是C++11提供的模板元基础库。2、type_traits可实现在编译期计算。包括添加修饰、萃取、判断查询、类型推导等等功能。3、type_traits提供了编译期的true和false。

2023-02-10 21:32:25 1114

原创 常见的C++软件异常场景分析与总结

回调函数在C#层实现时被设置为标准调用,函数内部负责清理栈,但是在dll中调用到回调函数,dll认为函数是C调用,dll中在调用回调函数时会在函数外部清理栈,这样在回调函数被调用后,多清理了一次栈,这样栈就不平衡了。如果要调用一个类对象的虚函数,需要通过类对象首地址,得到虚函数表首地址,然后根据调用的虚函数名称,到虚函数中找到虚函数的地址,然后call这个地址。比如在类的函数中自动释放当前类对象的内存,即delete this,但是在用类定义的对象时,使用的栈内存,使用delete释放栈内存就有问题了。

2023-02-09 21:47:26 975

转载 windows调试工具(ProcDump使用)

windows调试工具(ProcDump使用):https://blog.csdn.net/qq_37103755/article/details/127966328

2023-02-09 21:00:00 267

转载 重构全面总结

改善设计、提高可读性、减少缺陷都是为了稳住阵脚。良好的设计是成功的一半,停下来通过重构改进设计,或许会在当前减缓速度,但它带来的后发优势却是不可低估的。2、提高代码质量和可读性,使软件系统更易理解和维护。1、改进软件设计(整理代码)3、帮助尽早的发现错误。

2023-02-09 16:35:16 81

原创 基于多线程并发-STL之条件变量condition_variable

1、无线程thread的拷贝、赋值语义2、唤醒所有阻塞等待的线程3、唤醒某一个等待的线程4、阻塞等待的同时释放锁(原子操作)//可添加是否进入或持续阻塞等待判断(函数等)的重载版本 template < class _Predicate > void wait(unique_lock < mutex > & _Lck , _Predicate _Pred) {5、包含超时时间的wait接口wait_for和wait_until。

2023-02-01 00:27:14 354

原创 基于多线程并发-多线程为什么要加锁

多线程为什么要加锁1、数据竞争(data race)1)多个线程访问其共有的资源(堆、全局变量等),需要加锁(互斥锁、读写锁、递归锁等),否则可能存在寄存器和内存数据不一致。**注意:**堆对象的创建分为分配内存、初始化、指针指向该内存,注意锁的细粒度。2)线程私有资源无需加锁。2、不同线程的子步骤有顺序关联性即线程2中必须等线程1将变量a赋值为1才能对a做除法。注意: 为条件变量(std::condition_variable)的使用场景。2)代码顺序不等同程序执行顺序

2023-01-31 23:13:57 1958

原创 STL迭代器失效的场景总结

STL迭代器失效的场景总结

2022-09-28 14:34:04 1446 1

原创 Qt类继承关系以及所属模块关系一览表

Qt类继承关系,以及所属模块关系一览表

2022-06-29 22:53:41 773

原创 Traits和Policy Classes

1.Traits中名称说明:1)一定由有呼叫端给值(给予引数)者,称为【主参数】2)可由主参数推导者,成为【附件参数】2.Traits方法1)Fixed Traits:固定式萃取机2)Value Traits:值式式萃取机3)Parameterized Traits:参数式式萃取机3.Policy(策略)4.STL中的Iterators迭代器去问容器各种属性,例如:iterator_category、different_type5.Type Functions:接受一些types作为引数,

2022-05-08 14:45:06 281

原创 Templates基础

一、Function Template (函数模板)1.编译器推导模板参数、显示实例化模板参数(也可半显示半推导,从到后) P142.重载函数模板二、Class Template(类型模板)1.特化2.偏特化 (某个宣告式与多个偏特化产生同等的匹配程度,则歧义)3.预设模板参数三、Nontype Template Parameters(非类型模板参数)1.非类型类型模板参数2.非类型函数模板参数//不能把浮点数、class-type物件、//内部连接物件(string、字符常量)作为非

2022-05-08 14:21:23 1475

原创 Templates的静态多态性

动态(绑定、执行期)多态性与模板的静态(非绑定、编译期)多态性 P237 1重点泛型编程实作-STL,经典代表iterators

2022-05-07 01:20:38 602

原创 TiXml使用详解

https://blog.csdn.net/cjjwwss/article/details/12746131

2022-05-06 00:54:52 1156

原创 Qt之QGraphicsView的UML关系图

简介:QGraphicsView架构主要由QGraphicsView、QGraphicsScene、QGraphicsItem三种类型组成,分别抽象的是Ui界面、场景、图形元素。需要自定义图形元素自定义QGraphicsItem即可,重写QGraphicsItem体系的子类。UML关系图:**UML类关系图文件下载 https://download.csdn.net/download/qq_43148810/85102613推荐博文:Qt之QGraphicsView入门篇https://bl

2022-04-09 23:03:35 1141

原创 CI/CD 流程以及原理

2022-04-09 22:25:45 11318 1

原创 Qt之实现撤销、重做功能

Qt QUndoStack、QUndoCommand(实现撤回和回撤)

2022-04-09 22:14:32 2376

原创 C++实现内存泄漏检查

对应用程序堆内存分配器(C:malloc、calloc、realloc、free,C++:new、delete、new[]、delete[])进行接管,用链表记录管理堆内存分配和释放,在程序退出时将未释放的内存信息输出至文本。

2022-04-09 21:48:50 1755 2

原创 C/C++程序内存的分布

一、一个C/C++编译的程序占用内存分为以下几个部分:栈区(stack):由编译器自动分配与释放,存放为运行时函数分配的局部变量、函数参数、返回数据、返回地址等。其操作类似于数据结构中的栈。堆区(heap):一般由程序员自动分配,如果程序员没有释放,程序结束时可能有OS回收。其分配类似于链表。全局区(静态区static):存放全局变量、静态数据、常量。程序结束后由系统释放。全局区分为已初始化全局区(data)和未初始化全局区(bss)。常量区(文字常量区):存放常量字符串,程序结束后有系统释放。代

2022-04-09 20:54:30 2995 2

原创 自动生成dump 进程快照

dump自动生成模块

2022-03-05 01:46:55 1079

原创 静态链接库和动态链接库

一、静态链接库和动态链接库1、制作方法2、动态库制作中extern “C” _declspec(dllexport)导出,才会生成lib文件3、查看动态库生成的接口二、静态链接和动态链接1、静态库的链接2、动态库的链接1)LoadLibrary、GetProcAddress、FreeLibrary2)导出lib的动态库可根据lib和头文件隐式链接三、#ifdef TESTDLL_EXPORTS#define TESTDLL_API __declspec(dllexport)#else

2022-03-05 01:32:50 3620 2

转载 C++异常处理(try catch throw)

http://c.biancheng.net/view/422.html

2022-01-17 21:30:00 480

转载 C++弱引用智能指针weak_ptr的用处

利用weak_ptr,我们可以解决常见的空悬指针问题以及循环引用问题。

2022-01-17 21:00:00 551

转载 Qt开发中如何正确的编写.pro文件及详细说明

https://zhuanlan.zhihu.com/p/110782759

2022-01-08 20:25:16 1139

原创 Qt的connect槽函数

一、connect()函数的不同参数形式,以及其区别、优略除2(未知)之外,总体分为三种形式:1/3信号和槽转为字符串形参的connect函数、4/5/6/7/8信号和槽转为可调用对象的connect函数、9转到槽函数1、将信号连接到另一个对象的成员函数(SIGNAL和SLOT宏实现)原型:static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiv

2021-12-04 02:08:17 6659

转载 深度探索C++对象模型(笔记)

https://zhuanlan.zhihu.com/p/41309205

2021-10-27 14:38:59 288

原创 Visual C++ 内存泄露检测工具(VLD)

https://www.cnblogs.com/WindSun/p/10415248.htmlhttps://kinddragon.github.io/vld/

2021-10-27 10:52:42 11840

原创 C++模板编程之类型萃取 惊鸿一瞥

http://11142019.bog.51cto.com/11132019/1846832

2021-08-17 23:07:26 429

原创 C++STL内存管理源码剖析

内存管理

2021-08-16 23:27:01 354

原创 并发编程总结

一.进程与线程1.有线程系统:进程是资源分配的独立单位线程是资源调度的独立单位2.对于无线程系统:进程是资源调度、分配的独立单位二.进程之间的的通讯方式及其优缺点1.管道(PIPE)有名管道:一种半双工的通信方式,它允许无亲缘关系进程间的通信无名管道:一种半双工的通信方式,只能在具有亲缘关系的进程间使用(父子进程)1)优点:简单方便,可以实现任意关系的进程间的通信2)缺点:局限于单向通信只能创建在它的进程以及其有亲缘关系的进程之间缓冲区有限长期存于系统中,使用不当容易出错2.

2021-08-13 09:07:33 189

Qt类继承关系以及所属模块关系一览表

qt5中的各种类关系继承图:一个为全局查看的图片版;一个为分模块的高清pdf帮助文档,支持放大缩小功能。 在学习Qt的时候快速的查询了解类的继承关系对我们的学习会有很大的帮助。 类继承图的作用:在学习Qt源码的时候常常需要看一个类的父类、它的子类、横向对比它父类的其它派生类的不同等等,如果你连它父类有哪些、子类有哪些、横向对比的派生类有哪些那怎么学习。

2023-03-01

封装TiXml的导出项的(DLL)动态链接库

封装TiXml的导出项的(DLL)动态链接库

2022-05-06

QGraphicsView的UML关系图

QGraphicsView的UML关系图

2022-04-09

C++实现内存泄漏检查

C++实现内存泄漏检查

2022-04-09

Connect.rar

Qt的connect槽函数博文:https://blog.csdn.net/qq_43148810/article/details/121646241 的测试代码

2021-12-04

vld-2.5.1-setup.rar

Visual C++ 内存泄露检测工具(VLD)

2021-10-27

MemoryManager.rar

内存管理,内存池 需要技术支持请留言

2021-08-16

Variant.rar

自定义可拓展Variant参数类型 需要技术支持请联系留言

2021-08-12

LoggerSourceCode.rar

支持可配置多线高效率的日志模块源码,环境VS2017 需要技术支持请留言

2021-03-26

LoggerComponent.rar

支持多线程可配置的高效率日志模块,demo环境VS2017 需要技术支持请留言

2021-03-26

C++知识点思维导图

C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。

2020-02-04

C语言知识点思维导图

C语言知识点思维导图,C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

2020-02-04

C++标准模板库STL初步(2)

组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的几个头文件:、、、、、、、、、、、、和。文件中主要介绍了前面八个的使用,并且重点介绍了他们的属性和一些成员函数的使用。

2020-02-04

C++标准模板库STL初步(1)

组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的几个头文件:、、、、、、、、、、、、和。文件中主要介绍了前面八个的使用,并且重点介绍了他们的属性和一些成员函数的使用。

2020-02-04

STL知识点思维导图

组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的几个头文件:、、、、、、、、、、、、和。文件中主要介绍了前面八个的使用,并且重点介绍了他们的属性和一些成员函数的使用。

2020-02-03

STL知识点思维导图

组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的几个头文件:、、、、、、、、、、、、和。文件中主要介绍了前面八个的使用,并且重点介绍了他们的属性和一些成员函数的使用。

2018-12-18

空空如也

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

TA关注的人

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