![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 64
Mr. HLW
这个作者很懒,什么都没留下…
展开
-
opencv 双边滤波
原理讲解,因为下面这篇文章都讲解清楚了,主要就是一个公式,通过计算颜色差异的权重与高斯滤波的权重乘积即可。OpenCV双边滤波详解及实代码实现_青城山小和尚-CSDN博客_opencv 双边滤波ggopencv学习(二十二)之双边滤波bilateralFilter_烟雨博客-CSDN博客_bilateralfilter核心就是颜色差异较大时整个w权重趋向于0,因此相当于保留边界;当颜色差异不大时r约等于1,因此整个w就约等于高斯滤波,即平坦区域做高斯滤波,边缘保留。直接给.原创 2021-10-24 21:41:20 · 395 阅读 · 0 评论 -
Windows跨进程共享内核对象
对于Windows内核对象,如互斥锁,信号量,线程对象,文件映射对象等,有时候需要多个进程共享这些对象以协同完成任务,此时就需要跨进程来共享内核对象,对于内核对象判定最简单方法就是在创建过程中有一个 LPSECURITY_ATTRIBUTES 参数。共享内核对象有三种方法: 一、继承对象句柄对于每个进程,系统会分配一个句柄表,句柄表中的每个句柄有个标志位来代表该句柄是否可以继承。当该进...原创 2018-11-04 18:11:46 · 1216 阅读 · 0 评论 -
__stdcall、__cdcel和__fastcall三者的区别
转载:https://www.cnblogs.com/yejianyong/p/7506465.html__stdcall、__cdecl和__fastcall是三种函数调用协议,函数调用协议会影响函数参数的入栈方式、栈内数据的清除方式、编译器函数名的修饰规则等。调用协议常用场合 __stdcall:Windows API默认的函数调用协议。 __cdecl:C/C++默认的函数...转载 2018-11-03 10:17:55 · 198 阅读 · 0 评论 -
STL的基本算法
#include <iostream>#include<functional>#include<list>#include<vector>#include<set>#include<iterator>#include<algorithm>#include<memory>原创 2018-10-08 15:59:39 · 270 阅读 · 0 评论 -
effective c++ 条款31 将文件的编译依存关系降到最低
考虑以下代码class A{public: A() { cout << "A" << endl; } ~A() { cout << "des A" << endl; } void output() { cout << "A" << endl; }};class B原创 2018-10-07 20:45:11 · 349 阅读 · 0 评论 -
effective c++ 条款45 -- 运用成员函数模板接受所有兼容类型
此条款意思大概就是说在类模板中,在copy构造与赋值操作中要兼容所有可能类型。考虑一下代码:template<class T>class C{public: C(T a) :m_t(a) {} C(const C& c) { cout << "copy 1" << endl; } template<class U&g...原创 2018-10-07 20:18:52 · 202 阅读 · 0 评论 -
c++设计模式--代理模式
意图:为其他对象提供一种代理以控制对这个对象的访问。主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。示例场景:去移动营业厅充话费,但是在代理处必须要一次性充值大于50元,...原创 2018-05-16 20:01:35 · 210 阅读 · 0 评论 -
C++ 默认构造函数
先说C++新手一般的误解:1.任何一个类如果没有定义默认构造函数,编译器会自动合成一个默认构造函数。2.编译器合成出来的默认构造函数,会显式的设定类中成员变量的值。先看一个最基本的例子:从图中可以看到对象a并没有被初始化,即编译器没有为类A合成一个默认构造函数。其实C++标准委员会曾叙述,如果没有任何用户声明的构造函数,那么会有一个默认构造被隐式构造出来,但是这个隐式声明出来的默认构造函数将是一个...原创 2018-04-27 08:45:27 · 1279 阅读 · 0 评论 -
Windows文件映射
几乎所有的应用程序都离不开对文件的操作,一般的步骤是打开文件,读写文件,关闭文件。但是,频繁的读写操作效率会很低,并且如果文件很大的情况,全部读入缓冲区也不现实,微软提供了一个叫映射文件的技术,可以完美解决上面的问题。我暂时的理解就是文件映射后得到一个指针,对这个指针进行任何操作(添加,修改数据)都是直接修改的文件。用途1:使用内存映射文件加载和执行exe和dll,可以大大节省页面文件空间(暂...原创 2018-11-11 17:44:43 · 4441 阅读 · 0 评论 -
Windows下实现socketpair进行进程通信
前言:行动是治愈拖延的良药,现代人所谓的拖延症都是对自己懒惰的借口。一直说要看看libevent源码,却又一直拖着忙着,不知道在忙些什么。我说在公司看着那一堆乱七八糟的源码都看下去了,为什么不能花点时间来研读下别人的优秀的源码呢?同学说那是因为在公司那是被动的,而这个是主动的,想想也挺有道理。。这篇文章是看libevent的第一篇记录,libevent是基于信号来分发消息,对于信号的描述结构...原创 2018-11-28 22:05:05 · 2053 阅读 · 0 评论 -
快速高斯滤波(用两个一维代替二维)
高斯函数分离特性二维方式是根据kernel的大小以及sigma大小生成一个 size*size的卷积核,然后再做卷积。计算量是imgWidth*imgHeight*size*size,但如果用两个一维来替代,则计算量是imgWidth*imgHeight*size*2,计算量大大减少。具体做法假设现在是5*5的卷积核,先对整幅图像整体做x方向的卷积,如下此时原图(3,3)位置的像...原创 2019-08-24 13:10:38 · 5263 阅读 · 6 评论 -
c++ 实现delegate(支持普通函数与成员函数)
最近开始写了一些c#的东西,有个delegate的东西蛮有意思。比如如下C#代码using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace CSharpConsole{ public...原创 2019-07-27 20:11:53 · 1638 阅读 · 0 评论 -
Tomcat配置Http下载服务器,MFC下载文件
去http://tomcat.apache.org/下载Tomcat,下载JDK,JRE,配置开发环境,但是在cmd中进入Tomcat目录bin目录,虽然我的环境变量都配置正确了,但执行service.bat install Tomcat的时候报错The JAVA_HOME environment variable is not defined correctlyThis environme...原创 2019-04-20 19:05:26 · 554 阅读 · 0 评论 -
完整的IOCP模型 Echo服务器及代码分析
首先,先感谢http://www.cnblogs.com/talenth/p/7068392.html 这篇博文,作者写的通俗易懂,语言幽默,偶然一次在公交车上见到这篇博文相见恨晚,一口气读下来很长一篇,有了整体的认知,又翻看代码,查看其它资料,反复研究每个细节,终于IOCP模型基本懂了,下面给出一些心得。建议先看一遍上面提及的博客,再看这篇文章,应该会很快就能理解。IOCP模型也称完成端口,...原创 2018-12-18 21:59:11 · 1044 阅读 · 0 评论 -
数据结构-堆
在看libevent时看到它用小根堆来管理时间,忽然猛地发现堆的概念有点忘了(上一次看数据结构是两年半之前的一个暑假),所以此处复习一下。堆是利用完全二叉树来维护的一种数据结构,存取操作时间复杂度在O(1)-O(log n)之间,完全二叉树就是除了最后一层外,其他所有层都是满节点,且最后一层如果缺少节点,缺的部分应该在最右边。堆分为两种类型,大根堆与小根堆,以大根堆为例,每个节点都小于它的父节...原创 2018-12-06 20:44:51 · 299 阅读 · 0 评论 -
CONTAINING_RECORD宏的使用
在看IOCP模型中看到一个CONTAINING_RECORD宏,用于根据一个结构体的一个成员获取这个结构体的首地址。宏定义如下 #define CONTAINING_RECORD(address, type, field) ((type *)( \ (PCHAR)(address) - \ ...原创 2018-12-12 15:42:26 · 365 阅读 · 2 评论 -
shared_ptr的注意点
对于C++新手而言,面对复杂的项目中指针的四处传递,或者异常后的处理,很容易引起申请了内存没有释放的问题,c++11给出了智能指针来简化这一问题,常用的是shared_ptr。shared_ptr构造出的对象来管理一块内存,结构如下:其中ptr指向了一块内存空间,ret_count存储了有多少shared_ptr对象引用了这块内存。当引用计数为0时,删除这块内存。但是使用它如果用的不恰当,也会引...原创 2018-11-27 20:25:48 · 1003 阅读 · 0 评论 -
sigslot(c++信号槽库)源码分析
最近本来开始看libevent的源码的,里面看到一个叫Reactor模式,然后又感觉跟观察者模式有点像,就去找他们的区别,偶然又发现了一个信号槽的库sigslot。本来我是写过一段时间的QT的,体会过QT信号槽的便捷,竟然有人用c++写出这个库,当然是要看一下的。关于信号槽机制让一个信号与槽进行绑定,然后不管在任何位置发射信号,这个槽函数都会相应,所以方便性不言而喻。它的首页地址是http://s...原创 2018-12-02 12:24:52 · 1231 阅读 · 0 评论 -
结构体内存对齐原则
C/C++中,最常见的数据类型有char,int,short,float ,double,long等,在各个系统或编译器中可能所占的字节数不太一样,此文围绕win7 64位,vs2015环境下来讲解。先看下图通过sizeof获得的各个类型所占字节数:相信看此文的人对什么是结构体,为什么要用结构体已经很熟悉了,不再赘述。直接看它的对齐原则:在内存中,声明一个结构体对象它所占的内存中的数据成员是按声明...原创 2018-04-15 22:21:14 · 378 阅读 · 0 评论 -
模版方法模式
简述模版方法模式(Template Method Pattern)定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。简述模式结构优缺点使用场景案例分析代码实现版权所有:一去丶二三里,转载请注明出处:http://blog.csdn.net/liang19890820模式结构UML 结构图:AbstractClass(抽象类)...原创 2018-03-03 17:35:56 · 258 阅读 · 0 评论 -
观察者模式
观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式的应用场景: 1、 对一个对象状态的更新,需要其他对象同步更新,而且其他对象的数量动态可变。 2、 对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节。抽象主题(Subject)角色:主题角色把所有对观察考对象的引用保存在原创 2018-01-09 20:49:40 · 228 阅读 · 0 评论 -
copy构造函数与copy assignment操作符的区别
一、拷贝构造,是一个的对象来初始化一边内存区域,这边内存区域就是你的新对象的内存区域赋值运算,对于一个已经被初始化的对象来进行operator=操作class A; A a; A b=a; //拷贝构造函数调用 //或 A b(a); //拷贝构造函数调用 ///////////////////////////////转载 2016-07-09 08:45:40 · 1297 阅读 · 0 评论 -
拒绝对象的赋值与复制做法
有时候,一个类中的资源是独一无二的,应拒绝用复制构造函数的方法或重载=运算符时,需要怎么做呢?有些人想将copy构造函数或copy asssignment操作符设为private,某些情况下,可能行得通,类外的确不可以直接调用,但如果使用成员函数或friend函数呢?所以,下面介绍一种奇淫技巧:首先我们建立一个基类class Uncopyable{protected: Uncop原创 2016-07-09 08:38:40 · 312 阅读 · 0 评论 -
指针的安全转化dynamic_cast
注意:基类指针不可以转化为派生类指针!!!通常人的做法都是直接强制转化,那样实际上是不安全的。可以先看一下这个博客的讲解,然后再看我下面的代码http://blog.sina.com.cn/s/blog_4eaff3e10101jope.html#include#include#includeusing namespace std;class C1{public: C原创 2016-07-08 18:47:50 · 348 阅读 · 0 评论 -
cctype
#include#includeusing namespace std;int main(void){ char ch; //cin >> ch; cin.get(ch); if (isspace(ch)) { cout << '\a'; } //cout << S << endl; system("pause");}函数名称 返回值isalnum() 如果原创 2016-07-08 18:45:46 · 398 阅读 · 0 评论 -
不能返回局部对象的引用
#include#includeusing namespace std;string make_plural(size_t, const string&, const string&);const string &shorterString(const string &, const string &);const string &mainip(const string&);char原创 2016-07-08 18:42:12 · 654 阅读 · 1 评论 -
对象资源管理及智能指针的简单用法
C++中的资源常常是动态分配内存,如果仅仅分配了,却不还给系统,就会造成内存泄漏。内存是众多资源中之一,其它常见资源还有GDI里的画笔,画刷对象,互斥锁mutex,数据库连接对象,socket等等,不管什么对象,不再使用时都需要返还给系统。先看一段简单的代码:A* A::create(){ A * temp = new A(); return temp;}void A::f()原创 2016-07-08 17:21:11 · 555 阅读 · 0 评论 -
c++调用pytho模块实例
前一节配置完了环境后只是简单测试了一下,这一节要通过实例讲解来了解里面的api#include #includeusing namespace std;int main(int argc, char** argv){ Py_Initialize(); if (!Py_IsInitialized())//检测是否已初始化,成功返回0 { cout << "初始化失败!!"原创 2016-07-10 06:09:12 · 816 阅读 · 0 评论 -
C++调用Python之环境配置
1.首先添加include目录和lib目录可能出现无法打开python34_d.lib的问题,解决方法:1.将python安装目录下libs目录里的python27复制一份并命名为python27_d.lib2.修改include目录下的pyconfig.h,将#define Py_DEBUG注释掉最简单的测试代码:#include int main(i原创 2016-07-09 23:04:43 · 765 阅读 · 0 评论 -
虚函数表
C++ 虚函数表解析 陈皓http://blog.csdn.net/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,R转载 2016-07-09 08:56:23 · 298 阅读 · 0 评论 -
令operator= 返回一个reference to this
一、 函数返回值说到operator=的返回值,那么先必须要说一下函数的返回值。函数的返回值用于初始化在调用函数处创建的临时对象,函数的返回值分值类型和引用类型。1、 返回值类型 返回值类型, 即告诉编译器在调用函数处创建的临时对象是函数返回对象的一个值类型。 Test Fun() { Test a;转载 2016-07-09 16:59:11 · 417 阅读 · 0 评论 -
Sigleton模式
当有时候需要一个类只能有一个实例化对象的时候,可以考虑单例模式(Sigleton模式)原理:用一个特殊方法来实例化所需要的对象。实现方式:将构造函数,赋值,拷贝构造都设为私有,设置一个私有静态对象成员变量,只留出一个静态的接口获取这个唯一的实例。c++代码如下 [cpp] view plain copy#include<iostream> //#inclu...原创 2018-01-09 20:44:16 · 437 阅读 · 0 评论 -
Strategy模式
描述来自 http://www.cnblogs.com/jiese/p/3181099.htmlStrategy模式将逻辑(算法)封装到一个类(Context)里面,通过组合的方式将具体算法的实现在组合对象中实现,再通过委托的方式将抽象接口的实现委托给组合对象实现将算法的逻辑抽象接口(DoAction)封装到一个类中(Context),再通过委托的方式将具体的算法实现委托给具体的S原创 2018-01-09 20:43:16 · 239 阅读 · 0 评论 -
struct和class比较,以及简单的内存布局
论何时该使用struct何时该使用class?struct本身可以像class一样,声明public protected private等存取段来控制权限,或者默认的使用完全public的一个接口,以及virtual function,以及单一继承,多重继承,虚拟继承等等等 ,如下两段代码时完全等同的class Stu{public://....function};st原创 2018-01-09 12:48:06 · 812 阅读 · 0 评论 -
c++对象模型
先看如下代码,一个二维点的类:class Point{public: Point(float xval); virtual ~Point(); float x()const; static int PointCount();protected: virtual ostream &print(ostream &os)const; float _x; static int _p原创 2018-01-09 10:27:40 · 236 阅读 · 0 评论 -
c++调用python发送邮件
python代码import smtplibfrom email.mime.text import MIMETextfrom email.header import Headerdef SendEmail(addr,content): # 第三方 SMTP 服务 mail_host="smtp.sina.com" #设置服务器 mail_user="h原创 2016-08-15 11:11:57 · 487 阅读 · 0 评论 -
C++解析XML
下载地址 http://sourceforge.net/projects/tinyxml/ 官网有详细的文档以及API介绍 感觉像javaXML解析文件一样好用读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。TinyXML是一个开源的解析XML的解析库,能够用于转载 2016-08-30 16:21:01 · 957 阅读 · 0 评论 -
socket发送邮件
#include#include#pragma comment(lib,"ws2_32.lib") using namespace std;SOCKET m_socket;void recv(SOCKET sock);void Send(SOCKET sock,char *content,int len);void base64_encodar(char *in_str, int原创 2016-08-07 21:46:00 · 633 阅读 · 0 评论 -
c++11 正则表达式
#include #include #include using namespace std;bool match(const string name, const string rgx){ const regex pattern(rgx); //构造正则对象 match_results result; bool valid = regex_match(name, result,原创 2016-08-27 22:18:00 · 494 阅读 · 0 评论 -
c++用liburl进行http通讯
目录索引:一、LibCurl基本编程框架二、一些基本的函数三、curl_easy_setopt函数部分选项介绍四、curl_easy_perform 函数说明(error 状态码)五、libcurl使用的HTTP消息头六、获取http应答头信息七、多线程问题八、什么时候libcurl无法正常工作九、关于密码十、HTTP验证十一、代码示例 1.基本的htt转载 2016-07-09 22:07:16 · 2233 阅读 · 0 评论