C/C++
shawn
刻苦,认真,善于钻研,善于总结,对人真诚,友好,喜欢交朋友。
展开
-
vc++调用webservice
正在看着AV(AreCont)SDK的时候,老大突然让我转到soap上,原因是刚进公司的我,第一项任务便是研究ONVIF(so many specifications),当然主要的还是看core specification,这是一个axis,bosch and sony 三大牛x整出来的标准规范,为开发网络视频设备软件开发商提供一个标准规范,但是至今为止仍只是少数公司加入了标准规范的行列,可能是他原创 2010-04-22 16:49:00 · 10736 阅读 · 13 评论 -
CComboBox 改变大小时注意事项
<br />MFC中的CComboBox类中用MoveWindow改变大小时,它的高度实质上是设置了list box的高度,<br />即combobox显示区域的高度,这里要注意!!!原创 2011-02-10 17:12:00 · 1382 阅读 · 0 评论 -
类导出dll库方式
<br />在我的资源中 。<br />原创 2011-03-16 11:20:00 · 431 阅读 · 0 评论 -
好文章整理
1.关于#pragma warninghttp://dev.csdn.net/article/66/66106.shtm2.installshield 使用:http://www.cnblogs.com/Cindy_weiwei/archive/2009/05/19/1460230.html3.NTDLL.DLL): 0xC0000005: Access Violation问题:A-------在内部进行调试的时候发现,是调用了new操作符的缘故。 很不理解,在dll中调用new操作符会出现这么一个问题,网原创 2011-05-15 19:37:00 · 763 阅读 · 0 评论 -
global class object互使用注意事项
看effective c++中说明这一点,有点怀疑,所以试了一下,下面会说明怀疑点:GlobalTest.h源代码:#ifndef GLOBALTEST_H#define GLOBALTEST_Hclass GlobalTest{ public: GlobalTest(); virtual ~GlobalTest(); int GetA(){return m_a;} protected: private:原创 2011-03-26 22:37:00 · 957 阅读 · 0 评论 -
内存分配失败的处理
<br />看到effective c++中内存分配的处理,编写代码便于以后的理解:<br />1. 基本版:<br />#include <new.h>#include <iostream>using namespace std;int PrintError(size_t size){ cout<<"memory failed in allocation/t"<<size<<endl; return 0; //return 1; if executes here, then t原创 2011-03-29 11:28:00 · 5720 阅读 · 0 评论 -
条款10: 如果写了operator new就要同时写operator delete (转自effective c++ second edition)
<br /><br />让我们回过头去看看这样一个基本问题:为什么有必要写自己的operator new和operator delete?<br />答案通常是:为了效率。缺省的operator new和operator delete具有非常好的通用性,它的这种灵活性也使得在某些特定的场合下,可以进一步改善它的性能。尤其在那些需要动态分配大量的但很小的对象的应用程序里,情况更是如此。<br />例如有这样一个表示飞机的类:类airplane只包含一个指针,它指向的是飞机对象的实际描述(此技术在条款34进原创 2011-03-31 10:19:00 · 587 阅读 · 0 评论 -
条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用 (转自effective c++ second edition)
<br /><br />本条款听起来很复杂,其实不然。它只是一个很简单的道理,真的,相信我。<br />先看第一种情况:返回一个局部对象的引用。它的问题在于,局部对象 ----- 顾名思义 ---- 仅仅是局部的。也就是说,局部对象是在被定义时创建,在离开生命空间时被销毁的。所谓生命空间,是指它们所在的函数体。当函数返回时,程序的控制离开了这个空间,所以函数内部所有的局部对象被自动销毁。因此,如果返回局部对象的引用,那个局部对象其实已经在函数调用者使用它之前被销毁了。<br />当想提高程序的效率而使函原创 2011-04-01 10:06:00 · 802 阅读 · 0 评论 -
条款34: 将文件间的编译依赖性降至最低 (转自effective c++ second edition)
<br /><br />假设某一天你打开自己的C++程序代码,然后对某个类的实现做了小小的改动。提醒你,改动的不是接口,而是类的实现,也就是说,只是细节部分。然后你准备重新生成程序,心想,编译和链接应该只会花几秒种。毕竟,只是改动了一个类嘛!于是你点击了一下"Rebuild",或输入make(或其它类似命令)。然而,等待你的是惊愕,接着是痛苦。因为你发现,整个世界都在被重新编译、重新链接!<br />当这一切发生时,你难道仅仅只是愤怒吗?<br />问题发生的原因在于,在将接口从实现分离这方面,C++做得不原创 2011-04-01 10:27:00 · 575 阅读 · 0 评论 -
类与类之间的转化,重载user-defined类型运算符
#include #include using namespace std;#include #include #include class d_Hello;/** * probeMatch message format in the received data soap:body.*/class d_probeMatch{public: d_probeMatch() { memset(m_d_Types,0,50); memset(m_原创 2011-03-31 11:06:00 · 689 阅读 · 0 评论 -
windows thread的简单使用
<br />由于主要使用pthread-win32,所以对windows自带的线程没那么熟练,写个例子练下手:<br />#include <windows.h>#include <winbase.h>#include <process.h>#include <stdio.h>#include <stdlib.h>#pragma comment(lib,"MSVCRT.LIB")HANDLE event;HANDLE mutex;unsigned int __stdcall原创 2011-03-31 17:46:00 · 5841 阅读 · 1 评论 -
typeid和异常
转自 :http://www.cppblog.com/smagle/archive/2010/05/14/115286.html同时必须注意vc6.0对typeid的支持性不够好 ,很简单的一点:原创 2011-04-07 10:12:00 · 732 阅读 · 0 评论 -
timer 定时器
<br />链接资料:<br />http://blog.csdn.net/yuntongsf/archive/2009/12/03/4936161.aspx<br />http://apps.hi.baidu.com/share/detail/18082112<br /> <br />个人代码:<br />// TimerExample.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <windows.h>int _tmain原创 2011-05-30 20:27:00 · 609 阅读 · 0 评论 -
文件操作
<br />基本用法:<br />http://blog.csdn.net/yingfox/archive/2007/12/06/1921600.aspx<br /> <br />个人写的代码:<br />#include <stdio.h> #include <stdlib.h>#include <windows.h>int main() { char szFileName[MAX_PATH]; ZeroMemory(szFileName, MAX_PATH); strcpy原创 2011-05-28 17:58:00 · 801 阅读 · 0 评论 -
c++编译器偷偷做的事
贴一:http://blog.csdn.net/ACb0y/archive/2011/02/11/6179167.aspx贴二:http://kmplayer.iteye.com/blog/674710以上是其中一部分。对于c++类中带有虚拟函数时,显示多态特性时,编译器做的事情:1.默认会为每一个class object生成一个虚拟函数表指针,该指针指向一个外部的虚拟函数表,表内存有type_info信息和虚拟函数信息。2.默认情况下构造函数会初始化这个虚拟函数表指针,析构函数会释放该虚拟函数表指针指向的原创 2011-04-13 11:15:00 · 675 阅读 · 0 评论 -
网络编程实践学习报告
1. socket的keepalive ---以后详述2. 完成端口的工作线程取包过程,返回结果, msdn有错。--以后详述 。3.原创 2011-06-03 09:42:00 · 871 阅读 · 0 评论 -
windows内存映射
为了说明内存映射的使用方式,下面是个人写的例子:首先创建了一个大于2GB的文件,并写入一定量地测试数据,代码如下:HANDLE hFile = CreateFile("media.mp3", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); //TODO: change the size of the file. if (hFile == INVALI原创 2011-05-07 10:02:00 · 1487 阅读 · 0 评论 -
深度探索c++模型读后记录
1。c++类中的函数,static成员是放在类外的,也就是说在类外可以直接使用。2。原创 2011-01-16 19:01:00 · 546 阅读 · 0 评论 -
tinyxml用法学习
通过在http://www.grinninglizard.com/tinyxml/ 下载tinyxml最新的release版,解压后可以在docs下我们可以查看tinyxml的节本用法,为了快速的掌握,可以在class Hierarchy 中打开TiXmlBase可以发现其类图结构。下面是我个人为了掌握或者说测试tinyxml,写的代码://#define TIXML_USE_STL#include "tinystr.h"#include "tinyxml.h"#include //tes原创 2011-01-14 11:51:00 · 2456 阅读 · 2 评论 -
一点链表知识
链表的一点东东 。。。原创 2010-07-08 14:43:00 · 418 阅读 · 0 评论 -
关于getchar()
<br />typedef struct binaryTree { struct binaryTree *left; struct binaryTree *right; struct binaryTree *parent; int key;} BTree, * pBTree;void CreateBTree(pBTree root){ int nodeValue; pBTree pRoot = root; pBTree node = (pBTree)malloc(原创 2010-08-01 19:55:00 · 430 阅读 · 0 评论 -
一个有趣的bug
<br /> 苦战了3个小时终于发现了问题所在,忍不住发泄一下,随便抽取我写的其中的两个类说明一下问题<br />在ScriptControl类中:<br />// ScriptControl.h: interface for the CScriptControl class.////////////////////////////////////////////////////////////////////////#if !defined(AFX_SCRIPTCONTROL_H原创 2010-08-18 17:42:00 · 1089 阅读 · 0 评论 -
一个关于dll导出类的对象指针的delete问题
今天下午的几个小时除了沉浸于分析视频流外,还遇到了一个让我头大的问题就是:在delete从dll导出类定义的对象指针的时候失败了,内存泄露,内存泄露是我踏入社会这几个月来最常见的问题了。用java,c#习惯后,突然搞C++,内存会让你头大无语,终于没找到问题所在,只能找解决方案了,穷举了下:终于决定采用在dll中增加两个全局函数然后将这两个全局函数导出,同过在调用的工程中调用这两个函数。其中一个函数返回一个对象指针,另外一个函数当然是对该指针的释放了,不用说,这种方式搞定了,不过仍然不晓得为原创 2010-08-19 17:18:00 · 2531 阅读 · 1 评论 -
一个越界的的问题
<br />在项目工程实践中,因为在写c、c++代码的时候很少注意添加异常的获取,所以在写一个小的算法时,导致了我整个工程的崩溃。<br /> char *a = new char[3]; a[1] = 'a'; a[2] = 'b'; a[3] = 'c'; delete a; <br />以上代码很少人会用,也有很少人会注意,可是一不小心就会这么用了(当然上面是随便写的小例子),<br />毕竟数组和指针还是有一定的区别,比如上面的代码可以明显的看到,如果采用的是固定大小的数组<br /原创 2010-08-25 14:37:00 · 510 阅读 · 0 评论 -
一种最基本的保存错误记录的方式
<br /> 个人的第一个项目未采用c++或mfc或java或c#那种捕获异常的方式来查找程序出错点或为维护提供方便。而是通过在程序中采用了另外一种方式,具体内容如下:<br /> Example1:<br /> ClassA实现文件中:<br />/*以下代码基本属于描述,非程序源代码。<br /> extern FILE *stream;<br /> int ClassA::Action()<br /> {<br />i原创 2010-08-28 19:36:00 · 611 阅读 · 0 评论 -
windows 操作系统的SEH 异常处理
<br />由于工作中出现服务器崩溃的情况,不得不采用一些比较好的异常处理机制:<br /> <br /> <br />char g_szBuff[100];LONG OilFilter(char **ppchBuffer){ if(*ppchBuffer == NULL) { *ppchBuffer = g_szBuff; MessageBox(NULL,"there",NULL,MB_OK); return(EXCEPTION_CONTINUE_EXECUTION);原创 2010-09-15 14:31:00 · 747 阅读 · 0 评论 -
find方法in algorithm和stl vector同时使用
刚用stl,很久之前学过的,但是很久没用了,最近做项目需要,随便写测试程序的时候发现不看确实不行。一个类型的对象能被放入容器,且支持容器的各项操作,需要符合下列条件:对象的构造和拷贝● 容器的insert、assign 等操作实际上是对一个对象的副本进行操作● 一个类型的对象能被放入容器、且支持容器的各项操作,需符合下列条件:● (最好)有默认构造函数● 必须有复制构造函数● 必须有T& operator=(const T& other) 形式的赋值操作 比较操作 ● 基于RBTree原创 2010-12-01 16:45:00 · 1701 阅读 · 0 评论 -
支持通用框架的threadpool代码
------2010-12-1------线程池稍微模型,但是明显存在的一个大问题是---我的线程类实现的机制有问题:在每个start函数中创建线程,在创建线程之前,调用了sem.wait()函数,这样的话,主线程在创建第一个thread的start函数就wait在哪里,主线程无法继续走下去了 。。。悲哀,明天继续考虑其他的方式。---shawn------2010-12-2------原创 2010-12-01 21:55:00 · 700 阅读 · 0 评论 -
对threadpool的性能测试
<br />自己编写的threadpool(http://www.oschina.net/code/snippet_102078_2072或者http://jaff20071234.download.csdn.net/),没有正规的文档,只能自己编写程序进行性能测试了。<br /> <br />1。<br />创建一个threadmanage对象只含有10个线程,同时运行10000个任务,每个任务的工作是循环50次打印字符串。<br />创建一个threadmanage对象只含有100个线程,同时运行100原创 2010-12-03 14:40:00 · 1795 阅读 · 1 评论 -
gsoap常见使用方法
网上有很多gsoap客户端或者服务器端最常见的例子,在这里我就不多讲了,主要讲解一下不太常见的一些内容,自己琢磨出来的一些东西,供给大家参考一下。 通过wsdl2h -h可以查看wsdl2h命令的一些option,而最常用的一些有如下几个:-s 命令意味着产生的头文件不要使用stl-t 后面接typemap.dat文件,默认包含进typemap.dat前缀名也可以通过在该文件中包含定义如下格式:tt = "http://www.onvif.org/ver10/schema"那么原创 2010-10-28 16:52:00 · 4847 阅读 · 4 评论 -
使用基本的ace类通信 c/s
正在学习ACE,在http://www.oschina.net/code/snippet_102078_2515中,已经将代码贴出,实现采用ACE的基本socket相关类。原创 2010-12-22 15:32:00 · 661 阅读 · 0 评论 -
red-black tree
detailed introduction :http://www.cs.auckland.ac.nz/software/AlgAnim/red_black.html原创 2010-11-03 10:11:00 · 492 阅读 · 0 评论 -
11月初至11月5号
这段时间公司参加展会去了,仅仅留下研发人员在公司,真是一个自己学习的好机会啊。 从周一开始本来是要看公司的技术文档,包括boost,ace,stl等等等等。看着看着就没耐心了,最重要的是现在还没到发挥的时间,所以临时没打算浪费时间看这个,所以不留神开始逛起开源中国了。。。 开始下载cygwin,在cygwin上安装了gcc,vim等工具,耍起了命令,好爽,连续耍了两天,基本的命令,编写小程序,编写库,调用库,编写最简单的makefile也差不多了。中间去了一趟展会原创 2010-11-05 15:48:00 · 660 阅读 · 0 评论 -
pthread semaphore用法
#include #include #include #define NUM_THREADS 3#define TCOUNT 5 //单线程轮询次数#define COUNT_LIMIT 7 //发送信号的次数int count = 0; //全局的累加量pthread_mutex_t count_mutex;pthread_cond_t count_threshold_cv;void *inc_count(void *t) { int i;原创 2010-11-15 17:27:00 · 5577 阅读 · 1 评论 -
openssl库的基本使用
<br />openssl的基本介绍:<br /> <br />http://www.360doc.com/content/09/1225/16/116188_11957810.shtml<br /> <br />openssl的基本代码编写方式:<br /> <br />http://blog.chinaunix.net/u1/43260/showart_437480.html<br /> <br />在我的资源中有已经编译好的windows下可以使用的openssl的库文件和头文件 。原创 2010-11-16 17:16:00 · 6492 阅读 · 1 评论