- 博客(63)
- 资源 (18)
- 收藏
- 关注
原创 利用Qwaitcondition 控制生产消费者协作
通过分析以下的例子发现:多线程协作/同步的关键是:如何有效的设计并利用好多个线程之间公共操作的对象,以及相关的变量。如下 :如果每个线程不共用一个numUsedBytes来标识buff的元素索引的话将会大大的增加消费者和生产者的协作难度。及利用numUsedBytes来如何控制好 buffer[i % BufferSize] 不会取到生产者还没有向buff中写入的元素#incl
2013-12-18 16:38:01
680
转载 c++ vector 如何释放内存
1:1. vector容器的内存自增长 与其他容器不同,其内存空间只会增长,不会减小。先来看看"C++ Primer"中怎么说:为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储。设想一下,当vector添加一个元素时,为了满足连续存放这个特性,都需要重新分配空间、拷贝元素、撤销旧空间,这样性能难以接受。因此STL实现者在对vec
2013-10-30 16:12:29
3058
3
原创 va 的注释宏
以下是三个va宏。va宏的具体文档将资源下载 名称 :VA_宏帮助文档将要注释的类名拷贝。 将光标放到空白处从va工具栏中选中该宏名即可///////////////////////////////////////////////////////////////////////////////类名 :$clipboard$///基类 :$BaseClassName=KL
2012-09-11 15:15:24
718
原创 GooglTest GoogleMock 实践感想三
googletest 过滤器失效:通过在int _tmain(int argc, _TCHAR* argv[])中设置 testing::GTEST_FLAG(filter) = "testsuit.*";后再注销 该过滤器,执行全部的测试suit时,显示仍旧执行根据以上过滤器的用例。将工程的×.vcxproj.user删除后 运行正常
2012-09-11 15:05:20
659
原创 c++ rvalue 的在派生类中的使用,注意事项
用c++11的新增rvalue 进行拷贝构造 ,赋值函数重载 。但在执行时却调用左值拷贝构造,赋值函数最终发现是在拷贝构造,赋值函数中调用基类的对应的右值拷贝构造,赋值函数有误。现记录更正如下class a{a(const&rhs){}{}a& operator=(const a&& rhs){}};class
2012-09-11 14:58:11
278
原创 boost 文件映射
boost 的文件映射的使用非常简单两个类就搞定了。file_mapping mapped_region但当映射的region和文件大小一样时,当文件大于1g时 产生异常,此时只能分段映射文件才能避免以上问题。region的粒度由获得 std::size_t page_size = mapped_region::get_page_size();2:向region中写入数据,
2012-09-11 09:44:04
862
原创 boost serialize 的小问题 宏不起作用
最近使用boost进行开发,感到很不错。今后还要陆续将自己的感想记下在使用boost 的序列化时。当序列话派生类时遇到问题。总是提示 ”unregist class“ ,但明明在类声明,定义文件中添加了相关的宏...h#include ///发布以后,后面的字符串就不能改了,否则就无法读取旧版本文件BOOST_CLASS_EXPORT_KEY2(clas
2012-09-11 09:33:55
749
原创 boost serialize 派生类的问题
最近使用boost进行开发,感到很不错。今后还要陆续将自己的感想记下在使用boost 的序列化时。当序列话派生类时遇到问题。总是提示 ”unregist class“ ,但明明在类声明,定义文件中添加了相关的宏。h#include ///发布以后,后面的字符串就不能改了,否则就无法读取旧版本文件BOOST_CLASS_EXPORT_KEY2(class1
2012-09-11 09:25:09
218
原创 关于分析 设计的感想
什么是分析,设计?分析:对业务领域进行抽象&&提出要解决的问题(遇到的困难)?设计:给出解决分析中提出的问题的方案。只是一味的建立类,对象等 对问题域已有的东西进行整理只是分析的一部分工作 。没有提出要解决的问题的分析不是好分析。设计:(设计方案)不能针对分析出的问题给出解决的设计方案不是好设计。设计的使命就是解决问题。只是一味的对分析结果进行细化不是设计的目的,是陷入了为
2012-05-24 16:16:49
337
原创 GooglTest GoogleMock 实践感想三 死亡测试初步(2)
关于googletest的死亡测试的问题:当被测函数在动态库中并有assert()断言,运行对应的测试用例时弹出警告对话框,每次都要认为的选择是否继续执行。当这种情况很多时,就很繁琐了。 帮助中说设置运行标识 testing::GTEST_FLAG(catch_exceptions) =0 ;可以忽略异常捕获。但对于assert() 属于被测的动态库时,始终弹出
2012-04-25 10:29:39
1107
原创 GooglTest GoogleMock 实践感想三 死亡测试初步(1)
刚接触到死亡测试时,感到很新鲜。但按着找到的例子运行后还显示运行错误。例子源码为void Foo() {// Foo() 该函数在实际运行时异常退出 int *pInt = 0; *pInt = 42 ; } TEST(FooDeathTest, Demo) { EXPECT_DEATH(Foo(), ""); } 修改
2012-04-24 10:17:32
1140
原创 GooglTest GoogleMock 实践感想二
三googletest 的测试方法实践感想1固件在王上找到了一些介绍googletest的文章。下面将自己的实践感受总结一下。由于使用c++开发,所以不可避免的要用到c++类。如何对每个进行测试,或者说限制如何限制测试类的生存期。这个问题是很普遍的,但没有见到各个文章的具体说明。其实就是googltest的事件机制(固件)分为全局(FooEnvironment),测
2012-04-05 17:10:08
482
原创 GooglTest GoogleMock 实践感想一
最近开发新项目,负责数据模型的开发。有机会从零开始编码,趁机将一直以来关注但没有实践的googletest实践一把。下面将一些感受记录如下,也是个积累。一:环境搭建版本:下载googletest的最新版本 1.60.用Vs2010进行编译。boost_1.49注:之前的1.5在vs2010下编译有问题。环境变量: GMOCK_DIR =D:\gmock-1.
2012-04-05 16:54:31
1110
1
转载 Boost 的事件管理架構:Signal / Slot
Boost 的事件管理架構:Signal / Slot分类: window编程 Linux编程2012-01-09 17:40 64人阅读 评论(0) 收藏 举报 Boost 的事件管理架構:Signal / Slot(上)这篇文章写的很好,但国内需要翻墙才能看到,故转载至此,方便大家转载:http://kheresy.wordpress.com/2011/
2012-03-19 21:55:42
1065
原创 关于vs2010下 vc的支持多国语言 在win7和xp下的问题
这两天给公司做产品的安装工程 用正版installshield2009.操作系统windos7(64bit)出现了几个问题再次一一列举以备日后参考问题1: 在win7下 is2009 经常死机崩溃。有时在制作发行时。有时鼠标点击feature时。给技术支持询问回答是:重装看看。 重装后运行几次就又开始crash。把产品部的同事郁闷坏了。 再向技术支持询问。回答:
2011-10-26 17:54:36
2888
1
原创 回调函数
回调函数的含义:模块1的a函数调用模块2的b函数,b函数却调用由模块1中定义的c函数。则c函数称之为回调函数。回吊函数也可以用常规函数的调用方式进行调研。回调函数是事件处理机制的基础,相关知识点:函数指针。消息处理待详细描述。。
2011-09-20 09:35:32
318
原创 系统模块划分思考
以前开发软件时,一个系统中的各个模块各自管理自己的数据,并将数据管理和应用开发绑定在一起。当从局部开发的角度看还看不到局限性,并且由于开发者自己可以自主的采用适合自己的数据管理方案,所以在一定程度上还可以提高开发速度。
2011-07-20 09:02:17
214
原创 关于调试心态
<br />1:<br />调试程序,尤其是出现了莫名其妙情况时。不要心急,先制定一个调试计划包括<br /> <br />要调试的哪几个可能是引起错误的方面,<br /> <br />调试工程的版本,类型。<br /> <br />2:<br />当没有头绪时先放松一下啊,<br />睡大觉当心态平和后再工作,往往是半功倍。
2011-05-12 09:05:00
280
原创 关于 CSharp 调用 C++ dll
由于c#和Cli的执行码可以通过反汇编得到源码(只是听说,没有实际操练)。对于一些不想公开的代码,可以用c++编写再由 C#。从网上找到了几个方法1:c#->c++2:c#->cli->c++具体描述参见:http://www.cppblog.com/mzty/archive/2008/03/12/44280.html个人认为 方法1:过于繁琐,在C#工程中还要对输出函数进行再声明,更重要的是 在调试时经常会警告堆栈不匹配造成冲突(很烦)相比较方法2虽然还有增加cli工程,但思路比较清楚,简单我推荐。不过要
2011-05-12 08:58:00
1327
原创 cli 调用 c++ dll 链接错误 LNK2028 LNK2019
最近写一个cli程序(B)对另一个c++dll(C)进行包装 再由Csharp程序(A)通过调用B,调用C中的函数/类。C编译真确,编译B时出现如下链接错误错误error LNK2028: 无法解析的标记(0A00000C) "public: __thiscall CXXXKPlateLimit::MyLibName(void)" (??0CKkkkPlateLimit@@$$FQAE@XZ),该标记在函数 "public: int __clrcall clrLimite::笑嘻嘻inder::Fi
2011-05-11 15:55:00
2680
原创 关于抽象类的边界划分
最近负责完成一个框架的设计以及编写。对其内部的基类的接口划分有点感想:问题,在最根本的基类中将所有子类的接口都定义出来???可能吗?1:基类中只包含其子类中一定要包含的成员变量。对于,那些不是在所有子类中包含的成员变量不要写在基类中,可以增加派生层次,以便包含对应的成员变量的。2
2011-03-10 21:47:00
399
原创 net 下输出调试信息
<br /> <br />在vc中可以使用trace宏打印调试信息<br />在netframe中就不行了。<br /> <br />可以使用Debug类进行输出调试信息<br /> <br />e.g:<br /> <br /> <br /><br /> Debug::Listeners->Add( gcnew TextWriterTraceListener( Console::Out ) );<br /> Debug::AutoFlush = true;<br /> Debug::Indent();<b
2011-01-05 19:18:00
423
原创 net frame 中的数据类型转换 String^ int
<br /><br />net Frame中基本数据类型的转换<br />见Convert类<br /> <br />可以满足大多数的数据类型的转换 <br />见帮助,可以到csdn的资源下载中下载类库查看工具 wincv.exe<br /> <br />eg:<br /> <br /><br /> //to find by convert<br /> <br />String^ strTest = gcnew String(" ");<br /> <br /> int ikkk = 890;<br />
2011-01-05 19:13:00
397
原创 关于mt.exe 嵌入清单出错的排出
场景介绍:将之前在xp系统下,vs2005下运行正常的的程序移到WINDOWS7系统下vs2005。由于在最后将清单文件内嵌到执行程序时出错,(出现怪字符)mt.exe : general error c101008d: Failed to write the updated m
2010-10-18 15:53:00
1030
原创 VC 编译选项的使用点滴 warring lnk4908
1:在项目-sitting-连接器-输入-忽略特定库设置中输入MSVCRTD.LIB或者在命令行中输入 /NODEFAULTLIB:msvcrtd.lib都可。2:在项目-sitting-连接器-命令行 :输入/VERBOSE:LIB 可以在编译时列出链接的所需要的lib库。
2010-07-15 09:42:00
338
转载 ON_COMMAND_RANGE宏和ON_COMMAND 使用的注意点
VC++中的ON_COMMAND_RANGE宏(附例子) 转贴+补充转自:http://www.cnblogs.com/wqj1212/articles/1089066.htmlVC++中的ON_COMMAND_RANGE宏和ON_COMMAND等宏一样,是用来声明消息处理函数的,与ON_COMMAND不同的是,此宏可用来定义一组消息的处理函数。两个宏的用法是:ON_COMMAND(id,memberFxn)ON_COMMAND_RANGE(id1,id2,memberFxn)看起来其中memberFxn似
2010-06-25 15:08:00
712
原创 获取即时鼠标坐标的集中方法(更新中)
<br />来自编程技巧与维护<br /> <br />1:消息法<br /> 利用onmousemove来获取鼠标坐标<br />2:利用定时器定时激发回调函数得到坐标<br />3:利用多线程得到鼠标坐标<br />4:利用钩子函数得到鼠标坐标
2010-06-24 11:15:00
206
原创 解决scrollbar的npos值超过32767
<br /><br />前两天在编程技巧与维护中看到一个解决scrollbar的npos值超过32767就不能正常显示的问题。<br />又在网上找了找资料现整理如下。以备后用<br />提问1<br />希望在CScroolView中连续的输出图形,并且要求能连续查看所有的该次任务的所有历史输出,但是当坐标值超出32767时,绘图便出现问题。对此MDSN的解释是 <br /> <br />ote Under Windows 95, all screen coordinate
2010-06-12 11:10:00
972
原创 并行计算的数据读取粒度的一点感想
前些天开发了一个程序,主要功能是控制多个进程对一个软件锁的读取/写入访问操作,保证多个进程同时启动,读软件锁的访问不能冲突,造成死锁等问题。 采用的方法是使用CSingleLock建立全局的进程锁,对各个进程对软件锁的读取进行控制。 感到其中最重要的是如何确定每次用进程锁锁定的代码范围,以及每次对软件锁操作的数据粒度的划分。1:避免嵌套锁定范围。造
2010-04-21 16:22:00
574
原创 安装后运行smapls错误
前两天,做了个安装程序,将动态库等,运行程序放在同一个目录下,运行正常。然后在同事的机子上做一个安装程序。用INSTALLSHIELD将动态库,EXE等打包。 安装后,一运行,弹出对话框显示:“无法定位程序输出点SMaPLS,于动态库KERNEL32.DLL”。当时有点懵!!在我的机子上运行没有问题呀?? 记得以前出项过这个问题,还写个记录记下来了。因为
2010-04-20 14:39:00
491
原创 Fibonacci number数列
今后要关注多线程,多核下编程了。其中一个重要的方面是如何将线性的计算算式转换为多个平行计算的算式,从而利用上多线程,多核。 以下是一个初级问题。 今天看到Fibonacci number数列,网上一查,知道中文翻译成斐波纳契数列。几年前流行的达芬奇密码一书,其中一个谜题,是这样一组数字,13,3,2,21,1,1,8,5,要求是把这组数字重新组合成有规律
2010-02-02 11:48:00
376
原创 关于windows批处理的一点总结1
前一阵应需要写了一个批处理文件,用于批量执行vc,installshiel的工程,而不用每次都打开IDE界面进行编译。 下面进行一下总结: 1:使用到的批命令 @echo offgotopauseif else 等 其中遇到疑惑的有 嵌套 if else 语句解决方法: if-else必须在同一行,如果不语句较长,需要分行写,则用^连接
2010-01-06 16:38:00
1391
1
原创 应用程序运行 Error 1706 错误
问题:2009-11-27前天,在启动用用程序的时候,弹出对话框,提示: “The feature you are trying to use is on a network resource that is unavailable”以及提示:"Click OK to try again, or enter an alternate path t
2009-11-27 16:07:00
2241
转载 VC初学者入门系列之二:消息循环
适用读者:VC初学者并有C++基础。http://www.vckbase.com/document/viewdoc/?id=1048VC初学者入门系列之一:窗口类的诞生 一、传统SDK程序的消息循环 在传统的SDK程序中,消息循环是很简单的,也许你不信,那我们就看看下面这段代码吧:#include LRESULT CALLBACK WndProc (HWND, UINT, WPA
2009-11-17 09:12:00
305
转载 VC初学者入门系列之一:窗口类的诞生
适用读者:VC初学者并有一定的 C++ 基础出处:http://www.vckbase.com/document/viewdoc/?id=1048一、什么是窗口类 在Windows中运行的程序,大多数都有一个或几个可以看得见的窗口,而在这些窗口被创建起来之前,操作系统怎么知道该怎样创建该窗口,以及用户操作该窗口的各种消息交给谁处理呢?所以VC在调用Windows的API(Create
2009-11-17 09:08:00
324
转载 掌握文本文件读写的方法
了解二进制文件的读写方法C++文件流:fstream // 文件流ifstream // 输入文件流ofstream // 输出文件流//创建一个文本文件并写入信息//同向屏幕上输出信息一样将信息输出至文件#include#includevoid main(){ ofstream f1("d://me.txt"); //打开文件用于写,若文件不存在就创建它 if(
2009-10-29 15:22:00
1121
原创 再次修改 屏蔽、修改ToolBar的右键菜单
之前写的 屏蔽、修改ToolBar的右键菜单 小文章。经过使用发现问题: 当应用程序启动时工具条停靠在Mainframe上,通过鼠标拖拽工具条,在右键显示context菜单可以修改菜单项的caption。但是如果用用启动时工具条就漂浮在mainframe的工作区中。上就不能正确修改菜单项的caption。 经过分析通过Lbuttondown/doublelbud
2009-10-26 10:49:00
424
原创 关于动态库接口的参数传递问题
这两天要在主控程序中C添加一个接口以便调用动态库A中的对应函数 A中接口原型原型为(示例隐去实际名称)BOOL OpenViewA(CString strPro1,CString strPro2,CString strPro3){。。。return TURE;}由于C中原先有类似的接口OpenViewCC就将其拷贝一份,改改名字。其原始原型为
2009-10-21 09:14:00
896
Wincv net frame 的类库查看工具
2011-01-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人