- 博客(91)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 笔记
阅读设计模式时,先理解里面的概念,在后续的学习中,可减少很多困难。接口:一个对象能接受的所有操作集合称为该对象的接口。(通俗理解,public方法)对象的类型:用来标示特定的接口。对象的类:对象的实现,包括了成员,内部状态,操作实现。举例:两个对象以及其接口:Window{open,clos},Door{clock,unclock}如果对像BlackHouse:Door{c
2015-10-23 16:04:05 579
原创 笔记
字节序小头:将低字节作为开始,存储在开始地址大头:将高字节作为开始,存储在开始地址存储的基本单位是字节,所以多字节类型在存储时,会按照一个顺序拆分成一个个字节,然后存储。例:存储0x1234地址 0x01 0x02小头 34 12大头 12 34字节对齐1、规则: 1-指定对齐字节和自身中取最小的。 2-结构体以结构体中的最大成员
2015-10-23 10:51:43 498
原创 申请数组内存空间时做了哪些事情
申请数组时,除了分配申请的空间之外,还会分配一些空间存储和这块内存相关的信息1、_CrtMemBlockHeader,放在申请的内存空间之前,包括两部分:[1]这块内存的相关信息。[2]申请内存之前连续4个字节,值为fdtypedef struct _CrtMemBlockHeader{// Pointer to the block allocated just before th
2015-10-22 09:41:38 1921
原创 状态模式
当一个对象可能有N中状态,而且每种状态下对象的行为都不一样,同时状态间的关系较为复杂时,使用状态模式。状态模式是针对此对象每种状态定义一个类,每个类中都有此对象的指针,在每个类中处理和状态相关的动作(函数)。此对象包含这些这些状态类的指针族,同时有一个表示当前状态的指针,同时变化这个指针的值来修改当前状态对应的动作。在非必须使用状态模式的情况下,不要使用,这个实现类太多,同时代码阅读性
2015-08-27 15:38:11 352
原创 访问者模式
访问者模式比较绕。她主要有两个东西,一个是元素,一个是访问者。他们的关系时,元素接受访问者,访问者访问元素。在元素接受访问者时,将访问者传递给元素。在这个函数中,访问者访问这个元素,这时将这个元素传递给访问者。一般情况下不需要用到访问者模式。还没理解什么情况下需要用到这个模式。
2015-08-27 15:19:10 388
原创 职责链模式
当一件事情需要一级一级的向下传递时,可以用职责链的方式。又分其它几个情况1、在这个职责链中每个节点都有相应操作,这样用职责链是最好的选择2、在这个职责链中只有最后一个才做相应的处理,前面的节点都是起到传递和搜寻最后一个节点的作用。则此时,可以用职责链也可以用表驱动来实现。职责链模式是将我们需要用户去一级一级的寻找处理者,变为用户找到一个处理者,然后这个处理者处理后由这个处理
2015-08-27 14:28:47 350
原创 观察者模式
当存在一对多的关系时,我们设计一个观察者,用来处理一个变化引起的相关变化动作。设计一个观察者,观察者维护一系列对象族,这些对象族都是由相应动作需要做出变化者自己注册的。当一个变化发生时,会通知观察者这个变化,然后观察者会遍历所有对象族,通知相应对象
2015-08-27 11:31:57 284
原创 装饰模式
装饰模式对于一个已有的类,需要对其增加一些小的功能属性,同时这些功能属性和这个类本身关联性不是很强,这时使用装饰模式而不使用继承。装饰模式即提供一个新类,这个新类由被装饰的类组合而成(被装饰类指针),同时增加装饰功能。
2015-08-27 11:20:54 283
原创 组合模式
当构建层次结构时,比如像树时。每一个节点都可以由简单节点构成,而当前这个节点又是上一个节点的简单节点。我们不想要区分这些简单节点和复杂节点。我们可以定义一个接口类,这个接口类中包括了要使用的共有接口,然后不论简单还是复杂节点都继承这个类。如此我们以后再使用和遍历这个树时,对待每个节点可以直接向对待这个接口类一样,不必要去区分不同的节点。
2015-08-27 10:54:59 304
原创 桥接模式
当一个对象受多个因素变化影响时,可以将这些因素抽象出来(也可以留一个作为主类)。对每个因素抽象一个抽象类,然后在一个主类中,对每个抽象类拥有一个指针。通过这个指针来变化没个因素。比如,一支笔(CPen)有尺寸和颜色两个因素,我们可以把颜色抽象出来成(CColor),然后在CPen中有一个CColor的指针pColor,这样当颜色因素变动时,我们只需要变化pColor就可以了。本质上是,
2015-08-27 10:34:17 350
原创 Adapter
类适配:适配类去继承要适配的类,提供目标接口函数,在目标接口函数调用现有函数。就是对要适配的类进行一次封装对象适配:适配类有一个要适配类对象,提供目标接口函数,在目标接口函数通过适配对象调用其现有函数。就是对其一次组合封装。适配是通常是对几个类的现在有函数组合使用。
2015-08-27 09:52:08 340
原创 模板模式
又叫模板方法模式,在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情冴下,重新定义算法中的某些步骤。在一个方法中定义一个算法的骨架:在父类中提取所有子类的公共部分,而这些公共部分中的某一个步骤在子类中不一样时,想这部分抽取成一个虚函数。而将一些步骤延迟到子类中:上面提取的虚函数在子类中具体实现。
2015-08-26 16:41:39 314
原创 Builder
主要有两部分组成Builder:提供各个小组件的生产方法Director:用Builder提供的组件安装一定的组装逻辑,组装成产品
2015-08-26 15:40:49 335
原创 生成模式
生成模式:Factory,着重于生产一系列产品,这些产品都有相同的功能,但是每个功能的做法和具体实现不一样。Builder,着重于生产一系列产品,这些产品都可以由“一堆零件”中的部分零件组合而成。
2015-08-26 15:23:19 562
原创 工厂模式
述求:我要使用一个东西:1、我只需要关心 1.1我从哪里拿到它 1.2我怎么使用它2、其它诸如怎么生产的,我使用时它内部怎样工作的我都不关心实现我要使用一个东西:1、我需要看到 1.1一个生产工厂,有一个生产次东西的接口 1.2一个接口类,里面有我要使用的每个方法函数2、具体怎么生产放到子类工厂实现,使用东
2015-08-26 11:22:28 330
转载 应用程序无法启动,因为应用程序的并行配置不正确。
问题:执行VC的exe程序,报错“应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行sxstrace.exe工具。” 解决方法:方法一:在类似C:\Program Files\Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT 下找到了下列文件
2015-01-27 14:57:10 4410
转载 应用程序无法启动,因为应用程序的并行配置不正确。
问题:执行VC的exe程序,报错“应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行sxstrace.exe工具。”解决方法:方法一:在类似C:\Program Files\Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT
2015-01-27 14:54:39 7726
原创 编码规范——头文件
1、头文件 头文件依赖是导致编译时间过长的罪魁祸首 1.1头文件只包含对外的接口声明,不应包含内部使用的函数。 1.2头文件只包含声明,实现都应放入cpp。 1.3头文件职责要单一 1.4头文件向稳定方向包含 1.5禁止头文件循环依赖 1.6禁止包含无用的头文件,减少依赖 1.7头文件自包含:该头文件包含所有自己编译通过需要的头文件,
2015-01-05 17:49:45 1461
转载 STL学习
1、 为了保证安全,所有的push_back和insert插入的都是插入对象的拷贝而非元对象。2、 使用empty()而不是使用size()==0来判断是否为空。3、 font()、back()使用前一定判断是否为空,返回的是对象。4、 STL提供了很多容器区间函数,用来进行区域操作,效率比自己写高很多。5、 erase返回是删除对象的下一个迭代子,用来循环删除。iter=eras
2014-12-09 09:08:03 454
原创 模板类特例化,模板函数特例化
templateclass Test{public: void out() { cout }private: T myT;};模板类特例化:template class Test;模板类特例化后,会对所有的类函数进行编译,可以检查出潜藏的错误。 模板函数特例化 void Test::out(){cout 特例化后,此类的该函
2014-12-08 17:57:32 2717
转载 NSIS详解
NSIS特别说明:某些脚本需要额外的DLL支持,如MPC关联程序,就有可能需要InstallOptionsEx.dll,另外,可能需要编译语言头文件如:SimpChinese.nsh,可能需要把 !define 全部替换为 !insertmacro MUI_DEFAULT,别的语言以此类推!还有一些大家需要自己在制作过程中去摸索!在此就不一一指出.脚本结构:安装程序属性-页
2014-09-02 10:49:22 12722
转载 NSIS脚本实例(引)
; 安装程序初始定义常量 !define PRODUCT_NAME "银驼铃MSAP2000网元管理软件" !define PRODUCT_VERSION "1.0" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRO
2014-09-02 10:45:15 2213
转载 NSIS的一些变量
$PROGRAMFILES程序文件目录(通常为 C:\Program Files 但是运行时会检测)。$COMMONFILES公用文件目录。这是应用程序共享组件的目录(通常为 C:\Program Files\Common Files 但是运行时会检测)。$DESKTOPWindows 桌面目录(通常为 C:\windows\desktop 但是运行时会检测
2014-09-02 10:43:51 8960
转载 开源网站
–free Open source, 国外最著名的开源组织,上面可以找到成千上万的开源项目,包括apache ,mysql ,php,phpbb,…. http://search.csdn.net/ CSDN搜索,CSDN还是有非常多的编程资源的,用它的搜索能搜出不少东西。代码类别也比较全面。 http://snippets.org/
2014-08-24 19:23:17 532
转载 Mac图片格式转换
不知道苹果怎么想的,七八种图片数据类型格式,转换起来非常麻烦。本文摘抄了几种转换的方法,供参考。将NSImage转换为CIImage #import // convert NSImage to bitmapNSImage * myImage = [self currentImage];NSData * tiff
2014-08-14 11:05:22 813
转载 C++实现CD抓轨转WAV
现在介绍一下C++实现CD抓轨转WAV,CD抓轨的方法有好几种,现在介绍其中一种。我们 可以通过API函数CreateFile获得设备句柄,再用API函数DeviceIoControl来实现对设备 的访问获取信息。再此还会用到WAVE文件结构WAVEFORMATEX,再把读到的信息写到文件里 生成WAVE格式的文件。我们要用到的头文件有: ntddcdrm.h(NTDDK开发包) wini
2014-05-21 14:21:04 1500
转载 Windows & Mac 光盘刻录软件
Nero 这款最著名的光盘刻录软件终于推出其免费的版本了,对刻录要求不高的用户又有了一个新的选择。根据官方的描述,最新的 Nero 9 免费版仅包含有 CD 和 DVD 的简单数据刻录和光盘复制功能,只有在升级至Nero 9 完整版才可以使用其他特性和功能,例如音频和视屏的刻录功能。当然,优秀的免费刻录软件也有很多,借此之际,介绍一些 Windows 与 Mac 上常用的光盘刻录软件。虽然大部分软
2014-05-15 11:56:17 7175
转载 刻录CD-R:cdrecord 和cdparanoia之Linux基本的应用程序
刻录CD-R:cdrecord 和cdparanoia之Linux基本的应用程序(下)以下命令按4x的速度“刮写”所有的音轨,每个音轨存为不同的*.wav文件:cdparanoia -S 4 -B "1-"注意你有足够的硬盘空间。如果你设置双系统启动,你也可以使用DOS上的分区。如果要写音频文件到CD-R(W)上,我可以使用:cdrecord -v spee
2014-05-14 18:13:09 3713 1
转载 阿拉伯语字母表
阿拉伯语属阿非罗一亚细亚语系闪米特语族,是世界主要语言之一,是西亚和北非22个国家和地区的官方语言,使用人口约2亿。它是联合国6种工作语言之一,是全世界穆斯林通用的语言。阿语方言众多,现代标准阿拉伯语采用以《古兰经》为代表的典范的文学语言,书面语与口语不尽相同,与大马士革方言接近。阿拉伯语有28个字母,都是辅音。元音没有字母(其实字母ى和و表示i和u,字母y与i的符号不同,u与w同用一个符号ِ
2014-05-12 10:48:38 102550
转载 各种ISO 8859字符集
ISO/IEC 8859-1 (Latin-1) - 西欧语言ISO/IEC 8859-2 (Latin-2) - 中欧语言ISO/IEC 8859-3 (Latin-3) - 南欧语言。世界语也可用此字符集显示。ISO/IEC 8859-4 (Latin-4) - 北欧语言ISO/IEC 8859-5 (Cyrillic) - 斯拉夫语言ISO/IEC 8859-6 (Arabic) - 阿拉伯
2014-05-09 16:50:37 4499
转载 删除所有svn文件(一个目录和其各级子目录下的) 两种方法
[1]用find命令和其action来实现[2]用rm直接实现$ cd /tmp/xxx$ rm -rf `find . -name .svn`就可以实现了。删除SVN目录及从服务器端删除SVN版本库文件方法详解在学习SVN的过程中,你可能会遇到这样的问题,如何删除SVN目录?如何从服务器端彻底删除SVN版本库中部分文件夹或文件夹?本文为你一一解答
2014-04-17 10:47:13 12450
原创 使用编码格式转换工具将cpp文件由GB18030转成UTF8
使用编码格式转换工具将cpp文件由GB18030转成UTF8在MacOS终端批量转换文件编码格式命令 a.查找目录下所有的cpp文件并转换编码格式,生成的新文件后缀名是cpplgnn(与原cpp文件区分开,可自定义) find /Users/apple/Mac_WKY/turboedit/tags/v1.1.3 -name "*.cpp" -exec sh -c "iconv -f
2014-03-31 11:33:27 4808
转载 Mac 环境变量
最近使用苹果笔记本,下载了一个rar解压缩的软件,是命令行程序,得加入到系统的环境变量中。网上搜了一下,需要添加到~/.bash_profile文件中,但是看了一下,我电脑上并没有这个文件,但是有一个~/.profile(这些文件都是隐藏文件,通过ls -a才能查看到)文件,在这个文件里面添加:export PATH=/Users/apple/apps/rar:$PATH这句话是典
2014-03-28 17:39:49 636
转载 如何判断一个程序是C编译的还是C++编译的
如果编译器在编译cpp文件那么__cplusplus 就会被定义 如果是一个c文件在被编译那么__STDC__就会被定义__STDC__是预定义宏。当它被定义后,编译器将按照ansic标准来编译你的c程序。ANSIC标准定义了以下6种可供C语言使用的预定义宏: __LINE__ 在源代码中插入当前源代码行号
2014-03-26 11:24:41 3312
转载 SVN
SVN服务器搭建和使用(一) Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说.首先来下载和搭建SVN服务器.现在Subversion已经迁移到apache网站上了,下载地址:http://subversion.apache.org/packages.html这是二进制文件包的下载地址,你可在左侧的导航栏找到源代码,文档的下载地址.wi
2014-03-25 23:31:12 443
转载 打印机API
AbortDoc 取消一份文档的打印AbortPRinter 删除与一台打印机关联在一起的缓冲文件 AddForm 为打印机的表单列表添加一个新表单 AddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号 AddMonitor 为系统添加一个打印机监视器 AddPort 启动“添加端口”对话框,答应用户在系统可用端口列表中加
2014-03-21 09:45:37 5483 1
CD导入,Mac、Win、Linux平台
2014-05-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人