自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (11)
  • 收藏
  • 关注

原创 深度学习-吴恩达 作业 Tensorflow环境部署

吴恩达老师作业时,tensorflow模块经常出现找不到变量或函数,是由于吴恩达老师用的是低版本的tensorflow。

2022-11-21 08:59:27 803 1

原创 CMakelists.txt 编写语法说明

CMakelists.txt 编写语法说明,包含手册和地址。

2022-06-30 11:51:00 378

原创 fprintf() 用法

初学linux C库,能见到它的原型如下:int fprintf(FILE *stream,const char *format,...)查程序例时,见到如下调用:fprint(stderr,"Cannot open output file.\n");见百度文库“fprintf详解”:fprint()与printf()函数相比多出来了第一个参数FILE *stream,其意义是将打印的内容输出到文件流指针stream所指向的流。所谓流,通常是指程序输入或输出的一个连续的字节序列,设备(例如鼠标....

2022-06-30 11:41:46 4791

转载 wireshark抓包新手使用教程

原博文地址:https://www.cnblogs.com/linyfeng/p/9496126.html此处仅为方便查找。Wireshark是非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程各种问题定位。本文主要内容包括: 1、Wireshark软件下载和安装以及Wireshark主界面介绍。 2、WireShark简单抓包示例。通过该例子学会怎么抓包以及如何简单查看分析数据包内容。 3、Wireshark过滤器使用。通过过滤器可以筛选...

2021-01-03 18:46:42 275

原创 gdb 调试设置断点方法

源文见:https://jingyan.baidu.com/article/39810a233acd5af637fda63b.html1、break + 行号,设置对应行号为断点2、break + 函数名称,设置对应函数为断点3、info break, 可以查看断点信息4、delete + 断点编号, 删除对应编号的断点5、clear + 行号,删除对应行号断点6、delete + (编号起点-编号终点),删除起点和终点的所有断点(包括起点和终点)7、disable + 断点编号

2020-11-07 20:04:42 1544

原创 C++ 类内常量定义 static const

在C++类内定义常量常用方式static const ,enum, 或const等形式。static const :在头文件中CTest类内声明如下:static const int SIZE = 10; // 类内声明,同时初始化,仅适用于整型变量,ints/chars/bools等, ...

2020-04-05 18:06:48 3410

原创 Invalid <param> tag: Cannot load command parameter ....

ROS机器人开发建模编辑URDF文件,运行launch文件,报如下错误:Traceback (most recent call last): File "/opt/ros/kinetic/lib/xacro/xacro", line 33, in <module> xacro.main() File "/opt/ros/kinetic/lib/python2.7...

2019-10-20 11:17:42 2220 2

原创 虚拟机Ubuntu16.04 提示 The system is running in low-graphics mode

安装的虚拟机Ubuntu16.04 64位本可以正常使用,在安装了许多软件包后,出现The system is running in low-graphics mode错误,如下图:尝试多种方法,以下方法适用:1.Ctrl+ALT+F1~Fn 进入控制台2.输入用户名和密码进入系统3.输入以下命令: cd /etc/X11 sudo cp xorg.c...

2019-08-18 13:40:11 637

转载 Q_DECLARE_METATYPE与qRegisterMetaType

源至:https://www.cnblogs.com/cute/archive/2011/03/02/1969166.html基本理解Q_DECLARE_METATYPE 如果要使自定义类型或其他非QMetaType内置类型在QVaiant中使用,必须使用该宏。 该类型必须有公有的 构造、析构、复制构造 函数 qRegisterMetaType 必须使用该函数的两种情况 如果...

2019-02-27 14:33:19 360

转载 【C++学习笔记】static_cast与dynamic_cast

原文:https://blog.csdn.net/baidu_35679960/article/details/80821222 1、隐式转型(向上转型,即将派生类对象赋值给基类)C++允许向上转型,即将派生类的对象赋值给基类的对象是可以的,其只不过是将派生类中基类的部分直接赋给基类的对象,这称为向上转型(此处的“上”指的是基类),例如:class Base{ };class Der...

2018-12-23 18:29:30 155

原创 【C++学习笔记】父类指针指向子类对象

        虚函数的作用主要是实现了多态的机制。简而言之就是用父类型的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。但仅仅可调用父类含有的函数,非父类函数不能调用。普通虚函数调用假设我们有下面的类层次:#include &lt;iostream&gt;using namespace std;class A{public:    A(){};    ~...

2018-12-23 13:18:57 5030 2

转载 【C++学习笔记】虚函数实现多态原理

源至:https://blog.csdn.net/haoel/article/details/1948051 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RT...

2018-12-22 22:15:25 519

原创 【C++学习笔记】 虚函数与纯虚函数概念

源至:https://blog.csdn.net/hackbuteer1/article/details/7558868虚函数:定义一个函数为虚函数,不代表函数为不被实现的函数,定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。(注意:子类中非基类虚函数不能被基类调用)纯虚函数:定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承...

2018-12-22 20:57:27 187

原创 Git 库概念

源至:https://www.cnblogs.com/lianghe01/p/5846525.html或参考:http://www.bootcss.com/p/git-guide/Git最让你迷惑的无非是它里面的各种概念了,如果是刚开始接触Git希望看完本篇介绍之后有一个清晰的认识,笔者认识也有限这里只说说个人对使用Git的感受,说一下它里面的几个最常用的概念的理解。       在初...

2018-12-16 21:28:00 355

原创 Smartgit :Remove Discard Delete

Remove:从仓库中移除选中的文件或目录,可通过Discard还原文件,也可删除本地文件;Discard:放弃检测到本地更改的操作,还原修改暂存(Index)或HEAD状态;Delete:删除本地选中的文件,对未Commit或stage的文件,删除后无法还原,Commit或stage的文件,删除后可通过Discard还原。...

2018-12-16 19:35:00 1686 1

原创 Qt5 学习参考资料之--QSqlRelationalTableModel

源博客位置:http://www.qter.org/portal.php?mod=view&amp;aid=58 导语       QSqlRelationalTableModel继承自QSqlTableModel,并且对其进行了扩展,提供了对外键的支持。一个外键就是一个表中的一个字段和其他表中的主键字段之间的一对一的映射。例如,student表中的course字段对应的是course...

2018-12-10 21:31:32 673

原创 Qt5 学习参考资料之--QSqlTableModel

源博客地址:http://www.qter.org/portal.php?mod=view&amp;aid=57 导语       在上一篇我们讲到只读的QSqlQueryModel模型其实也可以实现编辑功能的,但是实现起来很麻烦。而QSqlTableModel提供了一个一次只能操作单个SQL表的读写模型,它是QSqlQuery的更高层次的替代品,可以浏览和修改独立的SQL表,并且只需...

2018-12-10 21:29:28 647

原创 Qt5 学习参考资料之--QSqlQueryModel

源博客位置:http://www.qter.org/portal.php?mod=view&amp;aid=56----------------------------------------------------------------------------------------------------------------------------------------------...

2018-12-10 21:24:12 1659

转载 StructLayout特性

StructLayout特性StructLayout特性          公共语言运行库利用StructLayoutAttribute控制类或结构的数据字段在托管内存中的物理布局,即类或结构需要按某种方式排列。如果要将类传递给需要指定布局的非托管代码,则显式控制类布局是重要的。它的构造函数中用 LayoutKind值初始化 StructLayoutAttribute 类的新实例。 L

2016-02-20 10:14:03 282

原创 关于C#托管代码与非托管代码的理解

C#托管代码是什么?托管代码(Managed Code)实际上就是中间语言(IL)代码。代码编写完毕后进行编译,此时编译器把代码编译成中间语言(IL),而不是能直接在你的电脑上运行的机器码。程序集(Assembly)的文件负责封装中间语言,程序集中包含了描述所创建的方法、类以及属性的所有元数据。托管代码在公共语言运行库(CLR)中运行。这个运行库给运行代码提供了多种服务,通常来说,

2016-02-20 09:27:08 5477

转载 MATLAB 输入输出文件

输入输出方式,即从数据文件读取数据或将结果写入数据文件。MATLAB提供了一系列低层输入输出函数,专门用于文件操作。1、文件的打开与关闭1)打开文件在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。fopen函数的调用格式为:fid=fopen(文件名,‘打开方式’)说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。文件名...

2014-06-23 17:13:22 5223

转载 Matlab中下标,斜体,及希腊字母的使用方法

Matlab中下标,斜体,及希腊字母的使用方法下面是Matlab官方列出来的Tex代码列表,包含了绝大部分的希腊字母和数学符号 Character SequenceSymbolCharacter SequenceSymbolCharacter Sequ

2014-04-03 20:33:38 2235

转载 new 和malloc 的区别

1. malloc()函数1.1 malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针,分配失败返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。1.2 voi...

2014-01-24 19:10:32 505

转载 VS2005 操作快捷键

Ctrl+E,D ----格式化全部代码Ctrl+E,F ----格式化选中的代码CTRL + SHIFT + B生成解决方案CTRL + F7 生成编译CTRL + O 打开文件CTRL + SHIFT + O打开项目CTRL + SHIFT + C显示类视图窗口F4 显示属性窗口SHIFT + F4显示项目属性窗口CTRL + SHIFT + E显示资源视图

2014-01-02 20:56:39 1947

转载 MFC笔记——CString Format()用法

在MFC程序中,使用CString来处理字符串是一个很不错的选择。CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的字符串。CString的Format方法给我们进行字符串的转换带来了很大的方便,比如常见的int、float和double这些数字类型转换为CString字符串只需一行代码就可以实现。  先看看Format用于转换的格式字符:  %c        

2013-12-19 14:13:22 597

转载 MFC笔记——GetSafeHwnd()和GetSafeHandle()的主要区别

GetSafeHwnd()和GetSafeHandle()的主要区别:1.使用者不同:(1)窗体使用:GetSafeHwnd()用于获取窗体的安全句柄(即HWND),有了HWND我们就可以方便的对HWND指向的窗体进行所需的操作了;(2)GDI对象使用:GetSafeHandle(),用于获取GDI对象的句柄。注意:在使用指针时强烈建议这

2013-12-10 17:30:07 12663

原创 MFC 自定义消息

消息映射、循环机制是Windows程序运行的基本方式。VC++ MFC 中有许多现成的消息句柄,可当我们需要完成其它的任务,需要自定义消息,就遇到了一些困难。在MFC ClassWizard中不允许添加用户自定义消息,所以我们必须手动在程序中添加相应代码,以便可以象处理其它消息一样处理自定义消息。自定义消息的步骤如下:(1)建立Single Document的MFC Applica

2013-12-02 15:06:21 633

转载 Windows映射模式

Windows应用程序绘制图形时使用的是一种逻辑单位,每个逻辑单位的大小由映射模式决定, 这个逻辑单位既可以与设备单位(屏幕或打印机上的一个像素点)相同,也可以是一种物理单 位(如毫米),还可以是用户自定义的一种单位。在Windows应用程序中,只要与输出有关系,都 要使用映射模式。本文的目的是帮助读者了解映射模式的一些基本知识,并对在使用中经常 出现的一些问题提出解决方案。一、映射模式基

2013-11-29 18:45:26 504

转载 MoveWindow()或SetWindowPos()

用CWnd类的函数MoveWindow()或SetWindowPos()可以改变控件的大小和位置。void MoveWindow(int x,int y,int nWidth,int nHeight);void MoveWindow(LPCRECT lpRect);第一种用法需给出控件新的坐标和宽度、高度;第二种用法给出存放位置的CRect对象;例:CWnd *pWnd

2013-10-10 21:29:52 528

转载 GetWindowRect和GetClientRect

GetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置。GetClientRect取得窗口客户区(不包括非客户区)在客户区坐标系下的RECT坐标,可以得到窗口的大小,而不能得到相对屏幕的位置,因为这个矩阵是在客户区坐标系下(相对于窗口客户区的左上角)的。  ClientToScreen把客户区

2013-10-10 15:58:57 510

转载 struct和class的区别

struct是C语言的概念,在标准C中,标准C中是不允许在结构中声明函数的,而在C++的类中是可以声明函数的。      但是在C++中struct和class意义一样,唯一不同就是struct里面默认的访问控制是public,class中默认的访问控制是private。在C++中struct中也可以构造函数、析构函数、它们之间也可以继承      下面的代码演示了struct继承

2013-10-09 14:34:41 525

转载 友元函数、友元类

1. 什么是友元函数?    一个类的私有数据成员通常只能由类的函数成员来访问,而友元函数可以访问类的私有数据成员,也能访问其保护成员2. 友元函数的用处体现在哪里?    2.1 使用友元函数可提高性能,如:用友元函数重载操作符和生成迭代器类    2.2 用友元函数可以访问两个或多个类的私有数据,较其它方法使人们更容易理解程序的逻辑关系3. 使用友元函数前应注意:   

2013-10-09 11:26:55 494

转载 GetWindowLong与SetWindowLong

GetWindowLong        函数功能:该函数获得有关指定窗口的信息,函数也获得在额外窗口内存中指定偏移位地址的32位度整型值。  函数原型:LONG GetWindowLong(HWND hWnd,int nlndex);  参数:  hWnd:窗口句柄及间接给出的窗口所属的窗口类。  nlndex:指定要检索的基于0的的偏移量。有效值的范围从0到窗口额外内存空间的字

2013-09-21 20:26:51 891

原创 VC 树形控件(CTreeCtrl)的使用

树形控件是用于构造树形的结构,其中有一个根接点(Root)然后下面有许多子结点,而每个子结点上有允许有一个或多个或没有子结点。MFC中使用CTreeCtrl类来封装树形控件的各种操作。通过调用BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );创建一个窗口,dwStyle中可以使用以下一些树形

2013-09-20 20:45:22 1060

原创 CFile类 操作详解

各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时间内编写出高效的代码,因而熟练的掌握文件操作是十分重要的。本文将对Visual C++中有关文件操作进行全面的介绍,并对在文件操作中经常遇到的一些疑难问题进行详细的分析。  1.文件的查找   当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找

2013-09-18 09:53:55 764

原创 UpdateData函数的使用

UpdateData,顾名思义,是用来刷新数据的。UpdateData(TRUE) -- 刷新控件的值到对应的变量UpdateData(FALSE) -- 拷贝变量值到控件显示。例如窗口中用 DDX_Text(pDX, IDC_EDIT1, m_usercode); 将IDC_EDIT1编辑框控件与m_usercode变量做了关联,如果修改m_usercode之后要想对应控

2013-09-17 20:23:46 621

转载 strlen与sizeof的区别

1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。2.sizeof是算符,strlen是函数。3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。4.数组做sizeof的参数不退化,传递给strlen就退化为指针

2013-09-16 20:27:17 494

原创 在MFC下如何定义全局变量和全局函数VC++

用MFC制作的工程由很多文件构成,它不能象一般C++程序那样随意在类外定义全局变量,在这里要想定义能被工程内多个文件共享的全局变量和函数必须用一些特殊方法才行。实际上有多种方法可以实现,这里只介绍两种方法。    一、在应用程序类中定义  用MFC生成的工程中都有一个名为CxxxApp的类,它派生于CWinApp类。这个类主要进行程序的初始化,生成文档、视图对象等工作。我们可以把需

2013-09-16 19:33:10 610

原创 VC++ 打开提示 “Microsoft (R) Developer Studio 已停止工作"解决办法

1. 下载FileTool.exe,并解压下载地址http://support.microsoft.com/kb/241396/zh-cn2. 打开VC6.0,点击File-Open Workspace,选择刚解压出来的FileTool.dsw,并确定3. 点击Bulid-Build FileTool.dll,生成FileTool.dll文件4. 把生成的FileTool.dll文件拷贝到

2013-09-13 17:21:41 1580

原创 vc++如何看数组元素

数组在程序里随处可见,调试程序的时候需要看数组里每个元素的值以确认程序运行是否正确。如果是固定大小的数组很简单,把数组变量拽到watch窗口里,点开加号就能看到了。如果是动态分配的就不行了,拽过去只会看到一个地址。想看它里面的值得把每个元素循环输出,很麻烦。最近学了一招,可以直接看到动态分配的数组的值。直接看截图吧。这是个控制台的程序,加个断点,按f5,程序停在那。在w

2013-07-31 09:56:26 1379

吴恩达老师深度学习作业 L2W3-TensorFlow教程

包含第二课第三周作业全部数据、代码、作业说明文档。 你将学习在TensorFlow中执行以下操作: • 初始化变量 • 创建自己的会话(session) • 训练算法 • 实现神经网络

2022-11-21

Head First设计模式PDF高清完整中文版

★前言介绍了这本书的用法 ★第1章至第11章陆续介绍了设计模式:Strategy、Observer、Decorator、Abstract Factory、Factory Method、Singleton、Command、Adapter、Facade、TemplatMethod、Iterator、Composite、State、Proxy。 ★第12章介绍了如何将两个以上的设计模式结合起来成为新的设计模式(例如,著名的MVC模式),作者称其为复合设计模式。 ★第13章介绍了如何进一步学习设计模式,如何发掘新的设计模式等主题。 ★附录A介绍了剩下的设计模式:Bridge(桥接)、Builder(生成器)、Chainof Responsibility(责任链)、Flyweight(蝇量)、Interpreter(解释器)、Mediator(中介者)、Memento(备忘录)、Prototype(原型)、Visitor(访问者)。 另外,第1章至第9章还穿插介绍了四个OO基本概念(抽象、封装、继承、多态),以及九个OO原则(Principle)。千万不要轻视这些OO原则,因为每个设计模式背后都包含了几个OO原则的概念。很多时候,在设计出现两难情况时我们必须回归到OO原则,以方便判断取舍。 可以这么说:OO原则是我们的目标,而设计模式是我们的做法! 目录 概览 引子 1 设计模式入门 欢迎来到设计模式世界 2 观察者模式 让你的对象知悉现况 3 装饰者模式 装饰对象 4 工厂模式 烘烤OO的精华 5 单件模式 独一无二的对象 6 命令模式 封装调用 7 适配器模式与外观模式 随遇模式 8 模板方法模式 封装算法 9 选代器与组合模式 管理良好的集合 10 状态模式 事物的状态 11 代理模式 控制对象访问 12 复合模式 模式中的模型 13 与设计模式相处 真实世界中的模式 附录A:剩下的模式

2018-12-22

设计模式:可复用面向对象软件的基础(完整书签).pdf

《设计模式:可复用面向对象软件的基础》是引导读者走出软件设计迷宫的指路明灯,凝聚了软件开发界几十年设计经验的结晶。四位顶尖的面向对象领域专家精心选取了最具价值的设计实践,加以分类整理和命名,并用简洁而易于重用的形式表达出来。本书已经成为面向对象技术人员的圣经和词典,书中定义的23个模式逐渐成为开发界技术交流所必备的基础知识和语汇。

2018-12-22

图解设计模式-高清.PDF

第1部分 适应设计模式  1 第1章 Iterator模式——一个一个遍历  1 1.1 Iterator模式  2 1.2 示例程序  2 Aggregate接口  3 Iterator接口  5 Book类  5 BookShelf类  5 BookShelfIteraotr类  6 Main类  7 1.3 Iterator模式中的登场角色  8 1.4 拓展思路的要点  9 不管实现如何变化,都可以使用Iterator  9 难以理解抽象类和接口  9 Aggregate和Iterator的对应  9 容易弄错“下一个”  10 还容易弄错“最后一个”  10 多个Iterator  10 迭代器的种类多种多样  10 不需要deleteIterator  10 1.5 相关的设计模式  11 1.6 本章所学知识  11 1.7 练习题  11 第2章 Adapter模式——加个“适配器”以便于复用  13 2.1 Adapter模式  14 2.2 示例程序(1)(使用继承的适配器)  14 Banner类  15 Print接口  16 PrintBanner类  16 Main类  16 2.3 示例程序(2)(使用委托的示例程序)  17 Print类  18 PrintBanner类  18 2.4 Adapter模式中的登场角色  18 2.5 拓展思路的要点  19 什么时候使用Adapter模式  19 如果没有现成的代码  20 版本升级与兼容性  20 功能完全不同的类  20 2.6 相关的设计模式  20 2.7 本章所学知识  21 2.8 练习题  21 第2部分 交给子类  23 第3章 Template Method模式——将具体处理交给子类  23 3.1 Template Method模式  24 什么是模板  24 什么是Template Method模式  24 3.2 示例程序  24 AbstractDisplay类  25 CharDisplay类  26 StringDisplay类  27 Main类  28 3.3 Template Method模式中的登场角色  28 3.4 拓展思路的要点  29 可以使逻辑处理通用化  29 父类与子类之间的协作  29 父类与子类的一致性  29 3.5 相关的设计模式  30 3.6 延伸阅读:类的层次与抽象类  30 父类对子类的要求  30 抽象类的意义  30 父类与子类之间的协作  31 3.7 本章所学知识  31 3.8 练习题  31 第4章 Factory Method模式——将实例的生成交给子类  33 4.1 Factory Method模式  34 4.2 示例程序  34 Product类  35 Factory类  35 IDCard类  36 IDCardFactory类  36 Main类  37 4.3 Factory Method模式中的登场角色  37 4.4 拓展思路的要点  39 框架与具体加工  39 生成实例——方法的三种实现方式  39 使用模式与开发人员之间的沟通  40 4.5 相关的设计模式  40 4.6 本章所学知识  41 4.7 练习题  41 第3部分 生成实例  43 第5章 Singleton模式——只有一个实例  43 5.1 Singleton模式  44 5.2 示例程序  44 Singleton类  44 Main类  45 5.3 Singleton模式中的登场角色  46 5.4 拓展思路的要点  46 为什么必须设置限制  46 何时生成这个唯一的实例  46 5.5 相关的设计模式  47 5.6 本章所学知识  47 5.7 练习题  47 第6章 Prototype模式——通过复制生成实例  49 6.1 Prototype模式  50 6.2 示例程序  50 Product接口  51 Manager类  52 MessageBox类  52 UnderlinePen类  53 Main类  54 6.3 Prototype模式中的登场角色  55 6.4 拓展思路的要点  56 不能根据类来生成实例吗  56 类名是束缚吗  56 6.5 相关的设计模式  57 6.6 延伸阅读:clone方法和java.lang.Clonable接口  57 Java语言的clone  57 clone方法是在哪里定义的  58 需要实现Cloneable的哪些方法  58 clone方法进行的是浅复制  58 6.7 本章所学知识  58 6.8 练习题  59 第7章 Builder模式——组装复杂的实例  61 7.1 Builder模式  62 7.2 示例程序  62 Builder类  63 Director类  63 TextBuilder类  64 HTMLBuilder类  65 Main类  65 7.3 Builder模式中的登场角色  67 7.4 相关的设计模式  69 7.5 拓展思路的要点  69 谁知道什么  69 设计时能够决定的事情和不能决定的事情  70 代码的阅读方法和修改方法  70 7.6 本章所学知识  70 7.7 练习题  70 第8章 Abstract Factory模式——将关联零件组装成产品  73 8.1 Abstract Factory模式  74 8.2 示例程序  74 抽象的零件:Item类  77 抽象的零件:Link类  78 抽象的零件:Tray类  78 抽象的产品:Page类  79 抽象的工厂:Factory类  79 使用工厂将零件组装称为产品:Main类  80 具体的工厂:ListFactory类  81 具体的零件:ListLink类  82 具体的零件:ListTray类  82 具体的产品:ListPage类  83 8.3 为示例程序增加其他工厂  84 具体的工厂:TableFactory类  85 具体的零件:TableLink类  86 具体的零件:TableTray类  86 具体的产品:TablePage类  87 8.4 Abstract Factory模式中的登场角色  87 8.5 拓展思路的要点  89 易于增加具体的工厂  89 难以增加新的零件  89 8.6 相关的设计模式  89 8.7 延伸阅读:各种生成实例的方法的介绍  90 8.8 本章所学知识  91 8.9 练习题  91 第4部分 分开考虑  93 第9章 Bridge模式——将类的功能层次结构与实现层次结构分离  93 9.1 Bridge模式  94 9.2 示例程序  95 类的功能层次结构:Display类  96 类的功能层次结构:CountDisplay类  97 类的实现层次结构:DisplayImpl类  97 类的实现层次结构:StringDisplayImpl类  98 Main类  98 9.3 Bridge模式中的登场角色  99 9.4 拓展思路的要点  100 分开后更容易扩展  100 继承是强关联,委托是弱关联  100 9.5 相关的设计模式  101 9.6 本章所学知识  101 9.7 练习题  102 第10章 Strategy模式——整体地替换算法  103 10.1 Strategy模式  104 10.2 示例程序  104 Hand类  105 Strategy接口  106 WinningStrategy类  106 ProbStrategy类  107 Player类  109 Main类  109 10.3 Strategy模式中的登场角色  111 10.4 拓展思路的要点  112 为什么需要特意编写Strategy角色  112 程序运行中也可以切换策略  112 10.5 相关的设计模式  113 10.6 本章所学知识  113 10.7 练习题  113 第5部分 一致性  117 第11章 Composite模式——容器与内容的一致性  117 11.1 Composite模式  118 11.2 示例程序  118 Entry类  119 File类  120 Directory类  121 FileTreatMentException类  122 Main类  122 11.3 Composite模式中的登场角色  124 11.4 拓展思路的要点  125 多个和单个的一致性  125 Add方法应该放在哪里  126 到处都存在递归结构  126 11.5 相关的设计模式  126 11.6 本章所学知识  127 11.7 练习题  127 第12章 Decorator模式——装饰边框与被装饰物的一致性  129 12.1 Decorator模式  130 12.2 示例程序  130 Display类  131 StringDisplay类  132 Border类  132 SideBorder类  133 FullBorder类  134 Main类  135 12.3 Decorator模式中的登场角色  136 12.4 拓展思路的要点  137 接口(API)的透明性  137 在不改变被装饰物的前提下增加功能  138 可以动态地增加功能  138 只需要一些装饰物即可添加许多功能  138 java.io包与Decorator模式  138 导致增加许多很小的类  139 12.5 相关的设计模式  139 12.6 延伸阅读:继承和委托中的一致性  140 继承——父类和子类的一致性  140 委托——自己和被委托对象的一致性  140 12.7 本章所学知识  142 12.8 练习题  142 第6部分 访问数据结构  145 第13章 Visitor模式——访问数据结构并处理数据  145 13.1 Visitor模式  146 13.2 示例程序  146 Visitor类  147 Element接口  148 Entry类  148 File类  148 Directory类  149 ListVisitor类  150 FileTreatmentException类  151 Main类  151 Visitor与Element之间的相互调用  152 13.3 Visitor模式中的登场角色  154 13.4 拓展思路的要点  155 双重分发  155 为什么要弄得这么复杂  155 开闭原则——对扩展开放,对修改关闭  155 易于增加ConcreteVisitor角色  156 难以增加ConcreteElement角色  156 Visitor工作所需的条件  156 13.5 相关的设计模式  157 13.6 本章所学知识  157 13.7 练习题  157 第14章 Chain of Responsibility模式——推卸责任  161 14.1 Chain of Responsibility模式  162 14.2 示例程序  162 Trouble类  163 Support类  163 NoSupport类  164 LimitSupport类  164 OddSupport类  165 SpecialSupport类  165 Main类  166 14.3 Chain of Responsibility模式中的登场角色  167 14.4 拓展思路的要点  168 弱化了发出请求的人和处理请求的人之间的关系  168 可以动态地改变职责链  168 专注于自己的工作  169 推卸请求会导致处理延迟吗  169 14.5 相关的设计模式  169 14.6 本章所学知识  169 14.7 练习题  169 第7部分 简单化  171 第15章 Facade模式——简单窗口  171 15.1 Facade模式  172 15.2 示例程序  172 Database类  173 HtmlWriter类  174 PageMaker类  175 Main类  176 15.3 Facade模式中的登场角色  176 15.4 拓展思路的要点  177 Facade角色到底做什么工作  177 递归地使用Facade模式  178 开发人员不愿意创建Facade角色的原因——心理原因  178 15.5 相关的设计模式  178 15.6 本章所学知识  178 15.7 练习题  179 第16章 Mediator模式——只有一个仲裁者  181 16.1 Mediator模式  182 16.2 示例程序  182 Mediator接口  185 Colleague接口  186 ColleagueButton类  186 ColleagueTextField类  187 ColleagueCheckbox类  188 LoginFrame类  188 Main类  191 16.3 Mediator模式中的登场角色  191 16.4 拓展思路的要点  192 当发生分散灾难时  192 通信线路的增加  193 哪些角色可以复用  193 16.5 相关的设计模式  193 16.6 本章所学知识  193 16.7 练习题  194 第8部分 管理状态  195 第17章 Observer模式——发送状态变化通知  195 17.1 Observer模式  196 17.2 示例程序  196 Observer接口  196 NumberGenerator类  197 RandomNumberGenerator类  198 DigitObserver类  198 GraphObserver类  199 Main类  199 17.3 Observer模式中的登场角色  200 17.4 拓展思路的要点  201 这里也出现了可替换性  201 Observer的顺序  202 当Observer的行为会对Subject产生影响时  202 传递更新信息的方式  202 从“观察”变为“通知”  203 Model/View/Controller(MVC)  203 17.5 延伸阅读:java.util.Observer接口  203 17.6 相关的设计模式  204 17.7 本章所学知识  204 17.8 练习题  204 第18章 Memento模式——保存对象状态  207 18.1 Memento模式  208 18.2 示例程序  208 Memento类  209 Gamer类  210 Main类  211 18.3 Memento模式中的登场角色  215 18.4 拓展思路的要点  216 两种接口(API)和可见性  216 需要多少个Memento  217 Memento的有效期限是多久  217 划分Caretaker角色和Originator角色的意义  217 18.5 相关的设计模式  218 18.6 本章所学知识  218 18.7 练习题  218 第19章 State模式——用类表示状态  221 19.1 State模式  222 19.2 示例程序  222 金库警报系统  222 不使用State模式的伪代码  223 使用了State模式的伪代码  224 State接口  226 DayState类  226 NightState类  227 Context接口  228 SafeFrame类  228 Main类  231 19.3 State模式中的登场角色  232 19.4 拓展思路的要点  233 分而治之  233 依赖于状态的处理  233 应当是谁来管理状态迁移  233 不会自相矛盾  234 易于增加新的状态  234 实例的多面性  235 19.5 相关的设计模式  235 19.6 本章所学知识  235 19.7 练习题  236 第9部分 避免浪费  237 第20章 Flyweight模式——共享对象,避免浪费  237 20.1 Flyweight模式  238 20.2 示例程序  238 BigChar类  240 BigCharFactory类  241 BigString类  242 Main类  244 20.3 Flyweight模式中的登场角色  244 20.4 拓展思路的要点  245 对多个地方产生影响  245 Intrinsic与Extrinsic  246 不要让被共享的实例被垃圾回收器回收了  246 内存之外的其他资源  247 20.5 相关的设计模式  247 20.6 本章所学知识  247 20.7 练习题  247 第21章 Proxy模式——只在必要时生成实例  249 21.1 Proxy模式  250 21.2 示例程序  250 Printer类  251 Printable接口  252 PrinterProxy类  253 Main类  254 21.3 Proxy模式中的登场角色  254 21.4 拓展思路的要点  255 使用代理人来提升处理速度  255 有必要划分代理人和本人吗  256 代理与委托  256 透明性  256 HTTP代理  256 各种Proxy模式  257 21.5 相关的设计模式  257 21.6 本章所学知识  257 21.7 练习题  257 第10部分 用类来表现  259 第22章 Command模式——命令也是类  259 22.1 Command模式  260 22.2 示例程序  260 Command接口  261 MacroCommand类  262 DrawCommand类  263 Drawable接口  263 DrawCanvas类  264 Main类  265 22.3 Command模式中的登场角色  268 22.4 拓展思路的要点  269 命令中应该包含哪些信息  269 保存历史记录  269 适配器  269 22.5 相关的设计模式  271 22.6 本章所学知识  272 22.7 练习题  272 第23章 Interpreter模式——语法规则也是类  273 23.1 Interpreter模式  274 23.2 迷你语言  274 迷你语言的命令  274 迷你语言程序示例  275 迷你语言的语法  278 终结符表达式与非终结符表达式  279 23.3 示例程序  279 Node类  281 ProgramNode类  281 CommandListNode类  282 CommandNode类  283 RepeatCommandNode类  284 PrimitiveCommandNode类  285 Context类  285 ParseException类  286 Main类  287 23.4 Interpreter模式中的登场角色  288 23.5 拓展思路的要点  289 还有其他哪些迷你语言  289 跳过标记还是读取标记  290 23.6 相关的设计模式  290 23.7 本章所学知识以及本书的结束语  290 23.8 练习题  290 附录  293 附录A 习题解答  294 附录B 示例程序的运行步骤  359 附录C GoF对设计模式的分类  361 附录D 设计模式Q&A  362 附录E 参考书籍  365

2018-12-22

完整版ASP.NET Core 2.0 中文说明文档API

ASP.NET Core 是一个跨平台的高性能开源框架,用于生成基于云且连接 Internet 的新式应用程序。 使用 ASP.NET Core,您可以: 建置 Web 应用程式和服务、IoT 应用和移动后端。 在 Windows、macOS 和 Linux 上使用喜爱的开发工具。 部署到云或本地。 在 .NET Core 或 .NET Framework 上运行。

2018-12-19

Smartgit 32位系统

Git使用官网的客户端是采用命令行的形式的,对我这种新手来说太难了。我们需要搞一个有图形界面的,就是SmartGit。

2018-12-16

C Primer Plus

本书全面讲述了C语言编程的相关概念和知识。 全书共17章。第1、2章学习C语言编程所需的预备知识。第3到15章介绍了C语言的相关知识,包括数据类型、格式化输入输出、运算符、表达式、流程控制语句、函数、数组和指针、字符串操作、内存管理、位操作等等,知识内容都针对C99标准;另外,第10章强化了对指针的讨论,第12章引入了动态内存分配的概念,这些内容更加适合读者的需求。第16章和第17章讨论了C预处理器和C库函数、高级数据表示(数据结构)方面的内容。附录给出了各章后面复习题、编程练习的答案和丰富的C编程参考资料。 本书适合希望系统学习C语言的读者,也适用于精通其他编程语言并希望进一步掌握和巩固C编程技术的程序员。 出版社:人民邮电出版社

2018-12-09

CTreeCtrlko控件

可参考的简单树控件操作,详细见代码,有注释

2013-09-22

组合框 父子对话框 操作

程序包含:主对话框上粘贴子对话框操作,通过改变组合框上选项,更新主对话框上子对话框,有详细注释,大家共同学习

2013-09-22

UVZ格式文件阅读

uvz电子文档的阅读器,使用很方便,网上资源较少

2013-07-15

卡尔曼滤波与组合导航

学习导航滤波教材,本书系统的介绍了各种导航系统的工作原理和惯性导航系统的综合方法和综合后的性能。重点介绍了卡尔曼滤波与组合导航技术。

2013-04-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除