10 2013 档案

摘要:UML类图几种关系的总结在UML类图中,常见的有以下几种关系:泛化(Generalization),实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)1.泛化(Generalization)【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。【箭头指向】:带三角箭头的实线,箭头指向父类2.实现(Realization)【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现.【箭头指 阅读全文
posted @ 2013-10-27 23:32 springbarley 阅读(240) 评论(0) 推荐(0) 编辑
摘要:Boost.Signals用法详解当你面对需要用多段代码来处理一个事件的情况时,典型的解决方案有:用函数指针进行回调,或者直接对产生事件的子系统与处理事件的子系统之间的依赖性进行编码。这种设计常常会导致循环的依赖性。通过使用 Boost.Signals, 你将获得灵活性和解耦。要开始使用这个库,首先要包含头文件 "boost/signals.hpp". [2] Boost.Signals 库和 Boost.Regex 库是本书所讨论的库中仅有的需要编译和链接才能使用的库。编译的过程很简单,在线文档中已有详尽的描述,这里我不再复述。以下例子示范了 signals 和插槽(sl 阅读全文
posted @ 2013-10-24 18:49 springbarley 编辑
摘要:THIS IS AN EVOLVING WIKI DOCUMENT. If you find an error, or can fill in an empty box, please fix it! If there's something you'd like to see added, just add it.General Purpose EquivalentsMATLABnumpyNoteshelpfuncinfo(func)orhelp(func)orfunc?(in Ipython)get help on the functionfuncwhichfunc(See 阅读全文
posted @ 2013-10-20 22:00 springbarley 编辑
摘要:事件──── 是每个 GUI 应用不可舍割的一部分,因为所有的 GUI 应用程序都是基于事件驱动的。从 GUI 程序启动开始,它就回应同户的不同类型的事件。除了用户,也有其它因素可以产生事件,例如:互联网连接,窗口管理器,定时器等等。所以,当我们调 MainLoop() 的时候,我们的程序就开始等待事件的产生,直至应用程序退出。一个简单的例子 下面我们将以一个 move envet 事件为例子。当我们一个窗口到一个新的位置的时候 ,就会产生一个 move envet 事件,其类型是 wx.MoveEvent,对应的 Binder 是 wx.EVT_MOVE。#!/usr/bin/pyt... 阅读全文
posted @ 2013-10-14 16:58 springbarley 编辑
摘要:类似于rime的rime::Class实现方式。C++模板实现的通用工厂方法模式1.工厂方法(FactoryMethod)模式工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。工厂方法模式结构示意图工厂方法模式是简单工厂模式的衍生,解决了许多简单工厂模式的问题。首先完全实现‘开-闭原则’,实现了可扩展。其次更复杂的层次结构,可以应用于产品结果复杂的场合。工厂方法模式很好用,但在 阅读全文
posted @ 2013-10-12 16:54 springbarley 阅读(855) 评论(0) 推荐(0) 编辑
摘要:c++模板类分类:C++2012-08-20 21:287108人阅读评论(2)收藏举报c++编译器instantiationiostreamlinker编程c++模板类分类:数据结构2010-04-02 11:40152人阅读评论(0)收藏举报理解编译器的编译模板过程如何组织编写模板程序前言常遇到询问使用模板到底是否容易的问题,我的回答是:“模板的使用是容易的,但组织编写却不容易”。看看我们几乎每天都能遇到的模板类吧,如STL, ATL, WTL, 以及Boost的模板类,都能体会到这样的滋味:接口简单,操作复杂。我在5年前开始使用模板,那时我看到了MFC的容器类。直到去年我还没有必要自己编 阅读全文
posted @ 2013-10-12 14:17 springbarley 编辑
摘要:/MD、/MT、/LD(使用运行时库)Visual Studio 2008 其他版本 1(共 1)对本文的评价是有帮助 - 评价此主题更新:2007 年 11 月允许您指示多线程模块是否是 DLL,并可以选择运行时库的零售版本或调试版本。/MD[d]/MT[d]/LD[d]备注选项说明/MD使应用程序使用运行时库的多线程并特定于 DLL 的版本。定义 _MT 和 _DLL,并使编译器将库名 MSVCRT.lib 放入 .obj 文件中。用此选项编译的应用程序静态链接到 MSVCRT.lib。该库提供允许链接器解析外部引用的代码层。实际工作代码包含在 MSVCR90.DLL, 中,该库必须在运行 阅读全文
posted @ 2013-10-11 14:05 springbarley 阅读(308) 评论(0) 推荐(0) 编辑
摘要:分类: Windows 2008-12-23 10:01 987人阅读 评论(0) 收藏 举报ciostreammfclibrary多线程import最近做项目碰到了一个关于在动态库中使用MFC以及在静态库中使用MFC的问题,我的工程在DEBUG编译链接时都没有问题,可是到了RELEASE编译时在链接的时候就出现如下的错误:nafxcw.lib(array_s.obj) : error LNK2005: "public: __thiscall CStringArray::CStringArray(void)" (??0CStringArray@@QAE@XZ) alread 阅读全文
posted @ 2013-10-11 14:01 springbarley 阅读(774) 评论(0) 推荐(0) 编辑
摘要:一、前言本篇将介绍一些gtest的基本使用,包括下载,安装,编译,建立我们第一个测试Demo工程,以及编写一个最简单的测试案例。二、下载如果不记得网址, 直接在google里搜gtest,第一个就是。目前gtest的最新版本为1.3.0,从下列地址可以下载到该最新版本:http://googletest.googlecode.com/files/gtest-1.3.0.ziphttp://googletest.googlecode.com/files/gtest-1.3.0.tar.gzhttp://googletest.googlecode.com/files/gtest-1.3.0.tar 阅读全文
posted @ 2013-10-11 11:35 springbarley 阅读(679) 评论(0) 推荐(0) 编辑
摘要:c运行时库与c标准库的区别c标准库包括常用的数学函数、字符串操作函数等等,这些函数都是由编程高手写的,效率高,很少出错,而且是完全符合c语言标准的函数。c运行库可以说是c标准库的扩展集,它是完全包含c标准库,但是在此基础之上添加了一些额外的函数(目前我所知道的就是由于操作系统的不同而导致的)。比如说c标准库的strcpy函数负责字符串的拷贝,但是由于缺少对目地字符串缓冲区大小的控制,极有可能导致缓冲区溢出(大量的缓冲区溢出攻击都是由于这种漏洞而产生的);相反,Windows提供了能够实现同样功能的安全的字符串拷贝函数,减少了缓冲区攻击的可能,strcpy_s。这些函数是以c运行库的方式提供的, 阅读全文
posted @ 2013-10-11 09:19 springbarley 阅读(406) 评论(0) 推荐(0) 编辑
摘要:抽象工厂[编辑]维基百科,自由的百科全书跳转至: 导航、 搜索以统一塑模语言中的类型图来表示抽象工厂抽象工厂模式(英语:Abstract factory pattern)是一种软件开发设计模式。抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。在正常使用中,客户端程序需要创建抽象工厂的具体实现,然后使用抽象工厂作为接口来创建这一主题的具体对象。客户端程序不需要知道(或关心)它从这些内部的工厂方法中获得对象的具体类型,因为客户端程序仅使用这些对象的通用接口。抽象工厂模式将一组对象的实现细节与他们的一般使用分离开来。举个例子来说,比如一个抽象工厂类叫做DocumentCrea 阅读全文
posted @ 2013-10-10 16:09 springbarley 编辑
摘要:隐式链接(静态调用方式): 由编译系统完成对DLL的加载和应用程序结束时DLL卸载的编码(如还有其它程序使用该DLL,则Windows对DLL的应用记录减1,直到所有相关程序都结束对该DLL的使用时才释放它),简单实用,但不够灵活,只能满足一般要求。隐式的调用:需要把产生动态连接库时产生的.LIB文件加入到应用程序的工程中,想使用DLL中的函数时,只须说明一下。隐式调用不需要调用LoadLibrary()和FreeLibrary()。程序员在建立一个DLL文件时,链接程序会自动生成一个与之对应的LIB导入文件。该文件包含了每一个DLL导出函数的符号名和可选的标识号,但是并不含有实际的代码。LI 阅读全文
posted @ 2013-10-10 11:28 springbarley 阅读(2020) 评论(0) 推荐(0) 编辑
摘要:之前简单写过如何创建lib和dll文件及简单的使用(http://blog.csdn.net/betabin/article/details/7239200)。现在先再深入点写写dll的加载方式。dll的加载方式主要分为两大类,显式和隐式链接。具体名词解释如下:隐式链接有时称为静态加载或加载时动态链接。显式链接有时称为动态加载或运行时动态链接。这样我们就大概理解了这两种链接方式了,然后我们再来讲讲如何具体的操作。在隐式链接下,使用 DLL 的可执行文件链接到该 DLL 的创建者所提供的导入库(.lib 文件)。使用 DLL 的可执行文件加载时,操作系统加载此 DLL。客户端可执行文件调用 DL 阅读全文
posted @ 2013-10-10 11:20 springbarley 阅读(1541) 评论(0) 推荐(0) 编辑
摘要:本文将创建一个简单的动态链接库,并编写一个应用台控制程序使用该动态链接库,并提出了与实现相关的几个问题,供初学者交流。本文包含以下内容:创建动态链接库项目向动态链接库添加类创建引用动态链接库的应用程序在控制台应用程序中使用类库的功能更丰富的simpledll类和相关问题参考资料创建动态链接库项目:1、打开MicrosoftVisualStudio2010,选择File->New->Project。2、在NewProject中选择InstalledTemplates->VisualC++->Win32。3、选择Win32ConsoleApplication,设置名称:si 阅读全文
posted @ 2013-10-10 10:55 springbarley 编辑
摘要:VS2010 动态库开发——第一章 演练:创建和使用动态链接库 (C++)转载自[http://www.cnblogs.com/sdlypyzq/archive/2012/01/17/2324215.html]Visual Studio 2010 其他版本 Visual Studio 2008 Visual Studio 2005我们将创建的第一种类型的库是动态链接库 (DLL)。 使用 DLL 是一种重用代码的绝佳方式。 您不必在自己创建的每个程序中重新实现同一例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它们即可。本演练涵盖以下内容:创建新的动态链接库 (DLL) 项目。向 阅读全文
posted @ 2013-10-10 10:44 springbarley 编辑
摘要:install解释:TARGETS版本的install命令 install(TARGETS targets... [EXPORT ] [[ARCHIVE|LIBRARY|RUNTIME|FRAMEWORK|BUNDLE| PRIVATE_HEADER|PUBLIC_HEADER|RESOURCE] [DESTINATION ] [PERMISSIONS permissions...] [CONFIGURATIONS [Debug|Release|...]] [COMPONE... 阅读全文
posted @ 2013-10-09 17:18 springbarley 编辑