5 奕双

尚未进行身份认证

我要认证

行如逆水行舟,不进则退!

等级
TA的排名 5w+

OpenCV Mat 图像的拷贝方法分析

1、通过构造函数拷贝// 函数声明Mat(const Mat& m);// 函数实现的源码inlineMat::Mat(const Mat& m) : flags(m.flags), dims(m.dims), rows(m.rows), cols(m.cols), data(m.data), datastart(m.datastart), dataend(m.dataend), datalimit(m.datalimit), allocator(m.al

2020-06-24 10:36:44

C++实现如何对当前目录下的所有文件进行重命名

#include <iostream>#include <string>#include <io.h>#include <sstream>using namespace std;bool RenameFileNames(string strPath, string newPath);bool RenameFileNames(string oldPath,string newPath){ intptr_t hFile = -1; str.

2020-06-19 11:08:53

工业相机像元与像素之间的关系

1、假设一个相机的像元是5.5um2、相机镜头的倍数是1x、2x、3x、5x、10x、20x3、那么每一个像素的大小为(5.5/1、5.5/2、5.5/3、5.5/5、5.5/10、5.5/20),即相当于标定之后的结果。那么对于一个实际尺寸为100*100mm的产品,采用2x的镜头,那么拍摄出来的图像像素大小有多大。即2x的镜头标定为5.5/2 = 2.75um100mm = 100*1000um = 100000um即最终的像素大小为100000/2.75 = 36363.64(

2020-06-17 16:07:23

C语言常用的排序算法实现

1、冒泡排序void bubble_sort(int arr[], int len) { int i, j, temp; for (i = 0; i < len - 1; i++) for (j = 0; j < len - 1 - i; j++) if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j +

2020-06-12 17:32:23

C语言读写文本文件的几种模式,读取文件的例子

打开文件的函数原型FILE *fopen( const char * filename, const char * mode );读、写文件的几种模式模式 描述 r(read) 具有文件的读权限。 w(write) 具有文件的写权限。 a(append) 在文件的末端添加数据。 b(binary) 文件的类型为二进制文件。 t(text) 文件的类型为文本文件。 + 具有文件的读写权限。 r:以只读的方式打.

2020-06-12 10:54:03

C++使用min,max过程中出现无法找到标识符的问题

1、出问题的原因以及解决方案(1)可能存在多种库包含using namespace std;等相关的min,max库,引起的冲突。解决方案:尽量少直接使用using naspece std;命名空间,可以使用std::min,或者std::max作用于来操作。(2)可能存在min,max里面的参数类型不一致引起的问题。例如int num1 = 100;long num2 = 1000;std::min(num1,num2);在上述例子中,就会出现min报错,可以通过将min函数里面的参数强

2020-06-11 10:27:53

MFC应用程序死机原因排查

1、任务管理器中的内存排查内存是否增加2、任务管理器中的GDI对象排查GDI对象个数是否增加3、数组越界排查4、指针释放排查

2020-05-22 12:32:23

C/C++系列 --- typedef与函数指针

typedef是一种有趣的声明方式,它为一种类型引入新的名字,而不是为变量分配空间。一般情况下,typedef用来简洁地表示指向其他东西的指针。以signal()原型的声明为例。signal()是一种系统调用,用于通知运行时系统,当某种特定的软件中断发生时调用特定的程序。当你调用signal(),需要通过参数传递告诉它中断的类型以及用于处理中断的程序。signal()声明如下:...

2019-10-20 13:17:13

「算法原理与实现」归并排序

一、分治模式许多有用的算法在结构上是递归的:为了解决一个给定的问题,算法一次或多次递归地调用其自身以解决紧密相关的若干子问题。这些算法典型地遵循分治法的思想:将原问题分解为几个规模较小但类似于原问题的子问题。递归的求解这些问题,然后再合并这些子问题的解来建立原问题的解。分治模式在每层递归都有三个步骤:分解原问题为若干子问题,这些子问题是原问题的规模较小的实例。解决这些子问题,递归地...

2019-10-17 11:21:47

「算法原理与实现」插入排序与循环不变式

1、循环不变式与插入排序的正确性示例:对A = <5,2,4,6,1,4>进行插入排序动图示例演示上图表明A = <5,2,4,6,1,4> 进行插入排序的算法是如何工作的。下标j指出正被插入到手中的“当前元素”。在for循环(循环变量为j)的每次迭代的开始,包含元素A[1..j-1]的子数组构成了当前排序好的元素,剩余的子数组A[j + 1......

2019-10-17 11:19:15

C++系列 --- 消息机制原理(事件驱动)

1、消息消息简单的说就是通过输入设备向程序发出指令要执行某个操作。具体的操作是你写的一系列代码,称为消息处理函数。在SDK中消息其实非常容易理解,当窗口建立后便会有一个函数(窗口处理函数)开始执行一个消息循环,我们还可以清楚的看到消息处理的脉络。一个switch case语句就可以搞定,消息循环知道遇到WM_QUIT消息才会结束,其余的消息均被拦截后调用相应的处理函数。但在...

2019-09-19 18:51:52

C++系列 --- Windows消息驱动原理分析

一、消息驱动创建窗口后,要对窗口的行为负责。操作系统不断的向应用程序发送消息,通知它发生了什么事情。当Widnows向程序发送消息时,它调用程序中的一个函数,这个函数的参数精确地描述了Windows发送的消息。在程序中称其为窗口函数或消息处理函数。它是一个自定义的回调函数。原型如下:LRESULT CALLBACK WindowProc(HWND hwnd,UINT hMsg,W...

2019-09-17 22:44:51

C++系列 --- 信号量同步详解

一、线程同步1、线程同步多线程程序设计大多会涉及线程间相互通信。主线程在创建工作线程以后,工作线程之间还需要通过通信机制来协同工作。一种比较好的方法就是使用事件内核对象。事件内核对象是一种用于多线程同步和他们之间的通信手段。同步可以保证在一个时间内只有一个线程对某个共享资源有控制权。2、汽车东西走向与南北走向协调的问题二、事件内核对象1、事件内核对象事件内核...

2019-09-16 22:14:14

C++系列 --- Interlock和CreateMutex中线程锁的代价原理剖析

一、双线程的并发1、两个变量自加操作进行双线并发操作2、实例#include <iostream>#include <Windows.h>#include <process.h>using namespace std;int g_Cnt_1 = 0; // 计数器int g_Cnt_2 = 0; // 计数器BOOL b...

2019-09-15 22:57:28

C++系列 --- 线程同步临界区原理

1、临界区对象临界区对象是定义在数据段中的一个CRITICAL_SECTION结构,Windows内部使用这个结构记录一些同步信息,确保在同一段时间只有一个线程访问数据段中的数据。临界区对象相关函数:// 初始化临界区对象资源void InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection);// 进入临界区...

2019-09-14 22:11:07

C++系列 --- 操作系统乱序推进线程指令的本质剖析

C/C++运行期库1、概念在实际的开发过程中,一般使用C/C++运行期函数_beginthreadex代替CreateThread函数。_beginthreadex首先申请一些用于线程同步的变量,然后调用CreateThread需要用#include <process.h>头文件同样,使用_endthreadex代替ExitThread。该函数首先释放用于线程同步...

2019-09-13 22:09:45

C++系列 --- 低优先级的线程为什么会被先执行

一、线程的优先级线程的优先级范围从0(最低)到31(最高)。当你产生线程时,并不是直接以数值制定某优先级,而是采用两个步骤。第一个步骤是指定“优先级等级(Priority Class)”给进程,第二步骤是指定“相对优先级”给该进行的所有线程。其中的代码在CreateProcess的dwCreationFlags参数中指定。如果你不指定,系统默认给的是NORMAL_PRIORITY_CLAS...

2019-09-12 23:06:04

C++系列 --- 线程内核对象

一、线程内核对象线程内核对象就是一个包含了线程状态信息的数据结构。每次对CreateThread函数的成功调用,系统都会在内部为新的线程分配一个内核对象。系统提供的管理线程的函数就是依靠访问线程内核对象来管理实现的。线程内核对象结构线程创建内核对象时,系统对它的各个成员进行初始化1> 线程上下文句柄每个线程都有自己的一组CPU寄存器,成为线程的上下文。这组寄存器的值...

2019-09-11 21:58:27

C++系列 --- 检查程序只有一个运行实例以及自动隐藏控制台

一、检查程序只有一个运行实例通过创建CreateMutex#include <iostream>#include <Windows.h>using namespace std;int main(){ cout << "In this process!\n" << endl; // 创建互斥锁 HANDLE hMutex ...

2019-09-09 22:05:36

进程内存修改器

一、原理设计一个名为MemChange的应用程序,让它修改Test.exe进程里面的内容。每个进程占用的内存空间是离散的,所以要访问进程内存种的一个值,就需要遍历整个64K---2G的地址空间。难点1.MemChange如何访问Test的进程空间解决方案:MemChange程序中使用CreateProcess把Test.exe拉起来,这样MemChange就可以访问Test.exe...

2019-09-03 23:17:13

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享达人
    分享达人
    成功上传6个资源即可获取