自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

藏经阁

寒江孤影,江湖故人,相逢何必曾相识

  • 博客(39)
  • 资源 (20)
  • 收藏
  • 关注

原创 C++调用Python

一 开发环境配置 先安装python, 自行百度。安装ok后,在安装目录会有python的C头文件,lib,dll, 这些在写C++程序时都会用到。 我用的是Python3.7,在VS2015中项目属性配置Python的头文件,库文件 (1)包含python的头文件:右键项目属性---C/C++--- 常规 ---- 附加包含目录 (2)包含lib二...

2020-02-29 23:59:06 270

原创 ubuntu如何编写C++程序

一、使用vim编辑c++代码:vim hello.cpp输入如下代码:#include <iostream>using namespace std;int main(){ cout<<"Hello world!"<<endl; return 0;}二、编译代码:gcc hello.cpp -lstdc++ -o he...

2020-02-29 23:38:50 2186

原创 C++ string类对象占多少个字节?

测试环境VS2015 win10/64示例代码 string name1 = "mike"; string name2 = "china shang hai"; int size1 = sizeof(name1); int size2 = sizeof(name2); cout << "string 1的大小:" << size1 << en...

2020-02-29 23:25:01 539

原创 C++ explicit关键字详解

首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式). 那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子:class CxString // 没有使...

2020-02-29 23:10:09 62

原创 VS2017 MFC无法添加对话框类,在如下位置找不到Default.js

初次使用MFC添加类时,无法添加,会有如下错误:需要下载一个文件Simple, 将Simple文件夹复制到在MFC的安装目录,例如我的目录:D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCWizards\CodeWiz\MFC重启VS,即可解决。我提供了Sampl...

2020-02-29 22:58:43 590

原创 MFC修改控件字体大小

主要用到CreateFont,函数声明如下:INGDIAPI HFONT WINAPI CreateFontA( _In_ int cHeight, //字体高度:0为默认高度,非0绝对值为字体高度 _In_ int cWidth, //字体宽度 ...

2020-02-29 22:51:32 660

原创 MFC如何使菜单项变成灰色

菜单设置好后,在代码添加菜单CMenu m_SysMenu;m_SysMenu.LoadMenu(IDR_SYSMENU);SetMenu(&m_SysMenu);使用EnableMenuItem即可设置菜单的样式,颜色,第一个参数是菜单项ID,第二个参数是样式。无效(菜单项变为灰色) pPopMenu->EnableMenuItem(ID_MENU_SA...

2020-02-29 22:35:41 713 2

原创 Qt MFC混合编程详细介绍与代码示例

在用Qt做客户端时,如果项目突然需要用到一些COM,MFC dll等,这些玩意儿在Qt可能无法调用,又不想用MFC做界面,那么是否可以Qt, MFC一起使用呢? 这种解决方案是存在的,Qt是一套界面库,把Qt当做一套常规的SDK, 在MFC项目中包含Qt的头文件,lib,dll,这样就可以把Qt嵌套在MFC中使用,问题又来了,MFC有自己的消息映射机制,Qt有自己的...

2020-02-29 20:40:50 1214

原创 Qt sender()用法详解

sender()是QObject类的方法,声明如下:QObject *sender() const; Qt助手的解释如下: Returns a pointer to the object that sent the signal, if called in a slot activated by a signal;otherwise it retur...

2020-02-29 14:10:14 1116

原创 C++ ffmpeg开发环境配置

本篇记录ffmpeg C++开发环境配置,我的环境:win10-64 ,VS2015,FFmpeg_4.2.1_win64 需要ffmpeg 4.2.1 win64开发包的可以去【ffmpeg官网】下载,或者点击点击如下百度网盘链接下载. 链接:https://pan.baidu.com/s/1YXmkHoBp-JYMln7aSQrgs...

2020-02-28 13:09:32 1265

原创 Qt qrc、rcc文件的使用

复制如下代码到img.qrc文件里保存<!DOCTYPE RCC><RCC version="1.0"> <qresource> <file alias="LOGO">D:\\logo.png</file> </qresource></RCC>复制rcc.exe到目录,输...

2020-02-27 16:18:31 1226

原创 C++11多线程(十):packaged_task类的用法

std::packaged_task它包装了一可调用的目标(如function, lambda expression,bind expression, or another functionobject)以便异步调用,它和promise在某种程度上肴点像,promise保存了状态共享的值,而packaged_task保存的是一个函数。 使用std::packa...

2020-02-23 16:48:36 226

原创 C++11多线程(九):promise用法详解

std::promise用来包装一个值将数据和future绑定起来,为获取线程函数的某个值获取便利,取值是间接通过promise内部提供的future来获取的。promise的主要目的是提供一个”Set”操作,和future的get()对应。 promise头文件如下#include<future>using namespace std;se...

2020-02-23 16:32:55 563

原创 C++11多线程(八):future用法详解

C++ 11多线程不能直接从thread.join()获得想要的结果,必须定义一个变量,在线程执行时对这个变量赋值,然后执行join(), 过程比较复杂。 std::future可以从异步任务中获取结果,一般与std::async配合使用,std:async用于创建异步任务,实际上就是创建一个线程执行相应任务,然后std::future对象调用get获取该值(...

2020-02-23 16:05:04 1165

原创 C++11多线程(七):condition_variable条件变量

condition_variable条件变量提供了线程间的"等待"与“唤醒”机制,可用于多线程间同步。 condition_variable有5个函数:wait 阻塞自己,等待唤醒 wait_for 阻塞自己,等待唤醒,最多等指定的一段时间 wait_until 阻塞自己,等待唤醒,最多等待到某个时间 notify_one ...

2020-02-23 01:08:06 336

原创 C++11多线程(六):std::unique_lock类的用法

unique_lock是个类模板,工作中,一般lock_guard(推荐使用), lock_guard取代了mutex的lock()和unlock(); unique_lock比lock_guard灵活很多,可以手动控mutex解锁,效率率上差一点,内存占用多一点。还是使用上一篇的代码,处理A线程抛异常无法解锁的情况。 下面使用unique_lock来解决,代码...

2020-02-23 00:37:05 557

原创 C++11多线程(五):std::lock_guard类的用法

lock_guard类位于mutex头文件下,使用前需要包含如下语句:#include<mutex>usingnamespacestd; std::lock_guard类采用RAII手法管理某个锁对象,启动能是在对象构造时将mutex加锁,无需手动调用lock()方法,析构时对mutex解锁,这样保证在异常的情况下mutex可以在lock_...

2020-02-23 00:08:38 1335

原创 C++11多线程(四):mutex的应用

C++ 11的 mutex 比windows的功能相对丰富,和 boost mutex 基本类似,C++11 mutex主要分为以下4种std::mutex 基本mutex std::recursive_mutex 递归mutex,可以多重加锁解锁 std::timed_mutex 延时mutex, 到了一定时间自动解锁 std::recursive_t...

2020-02-21 23:03:16 302

原创 C++11多线程(三):atomic与atomic_flag的使用与原理分析

C++11提供了线程的原子操作,这些在boost库中也有,在多个线程时原子操作保证了数据的安全性。C++11的原子操作主要是atomic和atomic_flag,使用时需要包含如下头文件:#include<atomic>一.atmoic类的使用 template<>struct atomic<_ITYPE> ,...

2020-02-21 22:11:16 2280

原创 C++11多线程(二):this_thread 名字空间

C++ 11的 std::this_thread名字实现了很多线程辅助函数,例如get_id(), yeild()等,this_thread代码如下:namespace this_thread {thread::id get_id() _NOEXCEPT;inline void yield() _NOEXCEPT { // give up balance of time ...

2020-02-21 21:36:39 573

原创 C++11多线程(一):线程创建,等待,异步

C++11 新标准中引入了五个头文件来支持多线程编程,他们分别是<atomic> ,<thread>,<mutex>,<condition_variable>和<future>。简介如下:(1)<atomic>:该头文主要声明了两个类, std::atomic 和 std::atomic_flag,另外还声...

2020-02-20 14:03:20 1668

原创 windows C++多线程(十三):多线程通信

windows提供了消息机制,在写多线程代码时可以用windows消息进行通信,比如线程A, B在执行时,可以相互发送消息,实现多线程通信。 自定义消息,必须大于 WM_USER, 例如定义一个TH_MSG消息: #define TH_MSG WM_USER+30 通过PostThreadMessag...

2020-02-20 13:45:55 382

原创 windows C++多线程(十二):线程本地存储TLS(Thread Local Storage)

一、TLS简述和分类 我们知道在一个进程中,所有线程是共享同一个地址空间的。所以,如果一个变量是全局的或者是静态的,那么所有线程访问的是同一份,如果某一个线程对其进行了修改,也就会影响到其他所有的线程。不过我们可能并不希望这样,所以更多的推荐用基于堆栈的自动变量或函数参数来访问数据,因为基于堆栈的变量总是和特定的线程相联系的。 不过如果某些时候,我们就是需要依赖...

2020-02-20 13:09:19 444

原创 windows C++多线程(十一):生产者消费者模型

说到多线程,有一个很经典的模型:生产者与消费者。例如一个仓库,假设装货量是一个常数N, 当前货物数为S, 把工厂当做生产者,销售是消费者。看下面几种情况: (1)0<S<N时,可以生产,也可以销售 (2)S>N,停止生产,货物装不下了,可以销售 (3)S=0, 无法销售,需要生产。 下面用代码演示这些情况,用windows事件实现消费者与生...

2020-02-15 20:03:55 641

原创 windows C++多线程(十):Windows事件Event的用法

事件(Event)是WIN32提供的最灵活的线程间同步方式,事件可以处于激发状态(signaled or true)或未激发状态(unsignal or false)。根据状态变迁方式的不同,事件可分为两类: (1)手动设置:这种对象只可能用程序手动设置,在需要该事件或者事件发生时,采用SetEvent及ResetEvent来进行设置。 (2)自动恢复:一旦事件发生并...

2020-02-15 19:20:48 814

原创 windows C++多线程(九):C++实现程序单实例运行

windows有一些程序是单实例的,比如'任务管理器',‘控制面板’等,而大部分程序是多实例运行的,比如QQ,微信,各种浏览器等。在项目开发时有时要求程序单实例运行,C++的实现途径很多,这里提供信号量和互斥量实现程序单例启动运行的方法。(1)互斥量单例运行/*创建互斥体实现一个程序只允许允许一个实例运行*/#include<process.h>...

2020-02-15 18:27:06 169

原创 windows C++多线程(八):互斥量mutex的使用

互斥量可以对相关资源代码进行保护,在多线程同步中用的很多。互斥量在MFC和Qt中都有封装好的类,win32中的mutex和MFC,Qt的mutex的使用略有不同。 win32的互斥量使用方法(1)创建互斥量CreateMutex(2)等待事件通知WaitForSingleObject(3)执行受保护的代码(4)释放互斥量ReleaseMutex...

2020-02-15 17:39:50 638

原创 windows C++多线程(七):信号量Semaphore的使用

信号量与临界区,mutex不同,信号量在同一时刻运行多个线程访问同一资源,信号量的使用只要涉及到CreateSemaphore()、OpenSemaphore()、ReleaseSemaphore()、WaitForSingleObject()和WaitForMultipleObjects()等函数。(1)CreateSemaphore创建一个信号量内核对象HANDLE C...

2020-02-13 23:26:36 609

原创 windows C++多线程(六):临界区CRITICAL_SECTION的使用

Windows提供的临界区对是CRITICAL_SECTION,使用步骤如下:(1)创建临界区对象 CRITICAL_SECTION Section;(2)初始化临界区InitializeCriticalSection(&Section);(3)进入临界区,禁止其他线程访问EnterCriticalSection(&Section);或者使用TryEnterC...

2020-02-13 22:36:20 257

原创 windows C++多线程(五):线程同步

什么是同步,什么是异步? 生活中一个常见的例子,100赛跑,每个人一个跑道,互不干预各跑各的,这种可以看做是异步;100米接力,上一个人完成,下一个才能接力继续,这种是同步。什么是互斥? 例如高考进教室要检查,每次进去一个人,这种称为互斥。 在多线程开发时,为了保证数据安全有效,例如上一篇的卖票程序,会出现“相同的票”或者0票,这些需要做一些同...

2020-02-13 22:25:18 102

原创 windows C++多线程(四):_beginthread的使用

windows创建线程一般都使用CreateThread,该函数与CRT有冲突,尽量不要使用该函数,应该用_beginthread,结束线程用_endthread,这两个函数可以成套的使用。 使用这两个函数需要包含的头文件#include <process.h> _beginthread声明如下ACRTIMP uintptr_t __cde...

2020-02-13 19:43:33 916

原创 windows C++多线程(三):线程终止结束ExitThread与TerminateThread

终止线程运行,最好的方法是自然返回return结束。在微软创建多线程API时,C/C++运行时库还不太成熟,导致一些API的调用与CRT会出冲突,使用CreateThread创建线程,并不是很推荐的,需要使用_beginthread。谈到线程终止,就得扯扯如下两个问题了ExitThread() TerminateThread()使用以上两个函数结束线程时,正常的return...

2020-02-13 10:39:43 1760

原创 windows C++多线程(二):线程等待WaitForSingleObject与WaitForMultipleObjects

关于线程的状态,各个书籍教材,系统的定义都有细微差别,主要有这几种状态:线程就绪(创建),运行,阻塞,终止等。本篇介绍windows多线程的阻塞等待相关的函数。一 WaitForSingleObject 函数声明如下DWORDWINAPIWaitForSingleObject( _In_ HANDLE hHandle, _In_ DWORD dw...

2020-02-13 10:31:30 566

原创 windows C++多线程(一):创建线程CreateThread

在项目开发,乃至面试,都会用到多线程技术,windows提供了多线程开发的一系列API函数,各个函数的使用有些小的知识点如果不在意很容易出问题。趁着有时间,总结自己的一些使用记录及感受,如果博友看到本文,有不当之处请指正,留言。 本篇记录windows多线程开发的第一个API : CreateThread函数的使用及相关说明。 windows多线程的一些...

2020-02-13 10:16:18 1031

原创 Qt setContentsMargins()函数使用说明

函数原型:void QLayout::setContentsMargins(intleft, inttop, intright, intbottom)作用: 设置左侧、顶部、右侧和底部边距,以便在布局周围使用。如下图: ...

2020-02-12 18:22:00 1709

原创 C++四种强制类型转换

C++相对于C语言,提供了四种强制类型转换:static_cast、const_cast、reinterpret_cast和dynamic_cast 类型转换的一般形式:cast-name<type>(expression); 下面详细说明四种变换的用法一. static_cast 任何具有明确定义的类型转换,只要不包含底层co...

2020-02-12 10:27:55 132

原创 如何找出数组中第二大数(C++版)

代码如下:找出数组中的第二大数#include <stdio.h>//初始化最大值为a[0],次大值为a[1],遍历一次,每次比较并更新最大值和次大值,最后就可以得到次大值。int find_Second_Maxvalue(int* a, int size){ int max = a[0]; //最大值 int second = a[1]; //次大值 ...

2020-02-12 10:15:09 1684

原创 ffmpeg命令行视频剪辑与拼接

剪辑ffmpeg -i 1.mp4-ss 00:10:00-c copy -to 00:20:002.mp4 原视频 开始时间 结束时间 输出的视频拼接首先,把要合并的视频按顺序写到1.txt里,例如file '1.mp4'file '2.mp4'注意必须单引号然后ffmpeg...

2020-02-09 21:14:36 921 2

原创 VS2017编译zlib源码

先下载zlib源码,zlib官网:http://www.zlib.net/翻到官网下面可以看到zlib的下载链接 windows平台可以下载zip或者tar.gz的文件,目前的版本是1.2.11,下面将提供3种编译方法。一 命令行形式编译 在开始菜单找到VS2017x64_x86交叉工具命令提示符,注意这样编译的32位的版本。跳转到zli...

2020-02-03 12:32:57 937

C# Winform数值实时曲线(完整示例)

C#实现显示实时数据,并形成曲线,保存数据,完整的项目代码

2017-07-01

Qt进度条QProgressBar的使用(详细代码)

详细的工程代码与注释,讲解Qt进度条QProgressBar的使用方法,完整的代码。

2018-05-03

MusicPlayer.rar

该音乐播放器使用Qt开发,代码用QtCreator编写,下载即可使用,主要用QMediaPlayer的一些功能,可以看我的博客讲解。

2019-11-17

Qt子线程更新数据发到主线程显示.rar

Qt的子线程无法直接更新主UI,需要发送信号到主线程进行更新,我用的QTableWidget展示数据。

2019-08-18

中国象棋源码(C++/MFC)

用MFC写的中国象棋游戏,VS2015可以直接编译,有多重AI算法,有兴趣可以研究,全网最好的象棋代码。又不懂的可以看看我的博客,有讲解。

2018-12-24

ffmpeg3.2.4_Win32开发库文件

ffmpeg3.2.4_Win32开发库文件,包含头文件,静态库lib, 动态库dll.

2018-06-03

jsoncpp_sdk_x64.rar

vs2017编译的jsoncpp sdk, 包含Debug和Release版本dll, lib , include,可以和其它sdk一样直接包含到项目中使用,可以去我的博客C++专栏找使用方法。

2020-04-06

C++/OpenCV2.4.9 数字精确识别源码

利用OpenCV的图像处理技术,对图像进行灰度处理,二值分析,降噪,滤波等,识别照片中的数字,完美精确, C++ VS2015代码,有详细的代码注释,完整源码。

2017-11-02

华为C++/C/java代码规范(完整版)

最新的华为代码规范,适用于C++/C/java,高清带目录,格式标准的代码给自己和维护者都是一种享受,建议程序员多看看。

2018-03-14

侯捷:左手程序右手诗(电子书)PDF

侯捷的日常博客全部总结,关于C++开发,业余生活体验,程序员发展等,值得所有开发者看看,在你迷茫,找不到方向,不知道做什么时可以看看这本书。

2019-06-07

Halcon12与MFC数字识别详细教程

基于Halcon12的数字识别,识别精确,关于代码的解释,请关注的我的博客,在博客里我做了详细的解释。

2018-07-09

C# TCP网络通信示例:多人聊天发文件

该资源包含客户端,服务器, 用户注册到数据库(可自行裁剪该功能),通过TCP 实现聊天,发文件,可以多人同时聊天。代码有完整的注释,是完整的项目。

2018-04-02

Win10 Git Bash闪退的解决方案文件

当你的Win10系统出现Git Bash闪退时,需要该文件进行开启相关服务,可以参考我的博客进行解决。

2018-11-07

支持向量机通俗导论(理解SVM的三层境界)PDF

这应该是全网最全最清晰的SVM学习的资料了,我学了10天,终于了解了,大家可以学学看。PDF文档学会后,可以结合OpenCV的源码看看,相信你们一定有大的收获。

2018-04-13

很全的 Qt qss

这是一个Qt第三方样式表,下载后,可以直接加到项目中使用。不知道怎么用的,可以关注我的Qt专栏。使用链接:https://mingshiqiang.blog.csdn.net/article/details/108860180

2020-09-29

Qt 5.7串口助手发送接收源码

利用Qt的串口类开发的串口助手,可以收发16进制,字符的程序。完美的界面,可以实际运用,串口开发的朋友可以借鉴,绝对可靠。

2018-06-19

ffplay源码架构图.vsdx

我用visio2016画的,把ffplay源码中的各个模块都展现出来了,有兴趣的可以去看看我的博客。

2019-12-08

lua-5.3.4源码

lua5.3.4源码,导入VS2015可以直接编译,想学习分析Lua源码的可以下载,研究。

2019-01-10

FileDownlod.rar

Qt实现的网络文件下载,用QtCreator可以直接打开编译,运行,我的博客有讲解,可以去看看。

2019-08-05

(Programming in Lua)Lua程序设计Word版

Programming in Lua是Lua教程最经典的书籍,这是Word版,可以自由编辑,Lua用户可以下载

2018-08-28

空空如也

空空如也

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

TA关注的人 TA的粉丝

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