自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (1)
  • 收藏
  • 关注

原创 对象图 UML从入门到放弃之四

对象图提供了系统在某个特定时刻的状态快照。这是一种有用的描述系统的方法,当系统的结构是动态构建起来而不是由其静态的类结构决定时,更是如此。不过,应该对画太多的对象图保持警惕。在大部分情况下,它们都可以从相应的类图中直接推导出来,所以并不是特别有用。如果需要了解怎么画可以看这个同学的博文。

2023-10-10 15:13:51 66

原创 用例图 UML从入门到放弃系列之三

你对用例的态度一定要保持这种简洁性。如果陷入用例复杂性的黑暗面,就会被它牢牢控制。运用原力,保持用例的简单化。

2023-10-10 14:54:11 376

原创 类图 UML从入门到放弃系列之二

UML包含有许多小组件、修饰符以及其他小巧复杂的东西。UML的内容相当庞大,以至于你可以花大量的时间把自己修成一个UML语言律师,现在流行的敏捷开发倡导的是极简主义的价值观,尽量少用UML,不要太依赖它。

2023-10-09 17:11:06 262

原创 什么是UML UML入门到放弃系列

不要试图一次就把软件系统整体架构用UML绘制出来,从最简单的行为开始,绘制一幅有关具体问题的简单顺序图或者协作图,然后根据需求不断的补充和扩展。在使用图示时非常重要的一点是要能够想象出代码。我们把图示作为代码的速记,而不是替代。如果在画图时不能想象出它所表示的代码,那么就是在构建空中楼阁。停止绘图,想一想该如何把它翻译成代码。千万不要为了画图而画图。必须时刻确保自己知道正在表达什么代码。UML是一个工具,不是最终结果。作为一个工具,它可以帮助思考和交流设计。如果少量使用,它会带给你巨大的好处。

2023-10-09 15:22:53 349

原创 迭代器模式 行为型模式之十一

一种遍历访问聚合对象中各个元素的方法,不暴露该对象的内部结构。需要说明的是迭代器模式在C++ STL已经集成,可以直接使用。

2023-10-07 14:50:09 43

原创 责任链模式 行为型设计模式之十

使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象能够处理它为止。发送请求的客户端并不知道链上的哪个对象会处理这个请求,这使得系统在不影响客户端的情况下动态的组织和分配责任。纯的责任链模式一个纯的职责链模式要求一个具体处理者对象只能在两个行为中选择一个:要么承担全部责任,要么将责任推给下家,不允许出现某一个具体处理者对象在承担了一部分或全部责任后又将责任向下传递的情况。

2023-10-07 14:43:51 334

原创 访问者模式 行为型设计模式之九

在不改变数据结构的前提下,增加作用于一组对象元素的新功能。

2023-10-07 14:27:13 357

原创 备忘录模式 行为型模式之八

备忘录模式是一种行为型的,在不破坏封装的前提下,获取一个对象的内部状态,并在对象外保存该状态,当对象需要恢复到该状态时,对其进行恢复。

2023-10-07 14:08:09 293

原创 观察者模式 行为型设计模式之七

在GOF的《设计模式:可复用面向对象软件的基础》一书中对观察者模式是这样定义的:定义对象的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。当一个对象发生了变化,关注它的对象就会得到通知;这种交互也成为发布-订阅(publish-subscribe)。

2023-10-07 13:42:09 349

原创 状态模式 行为型模式之六

允许一个对象在其对象内部状态改变时改变它的行为。

2023-10-07 13:26:37 570

原创 解释器模式 行为型模式之五

给定一个语言,定义它的文法的一种表示,并定义一个解释器。比如加减乘除在代码里是一种表示,我们需要翻译成可以阅读的数学公式,并且可以供用户输入数字得到输出结果。

2023-10-07 11:43:38 235

原创 亨元模式 结构型模式之六

享元模式是一种结构型设计模式, 它允许你在消耗少量内存的情况下支持大量对象。

2023-10-05 15:10:32 88

原创 适配器模式 结构性模式之五

适配器模式是一种结构型的软件设计模式,也称包装模式,即将相对复杂的功能(可能用到多个类)封装起来,提供一个使用者想要的接口,使用者只需要调用接口,不需要知道接口里封装的内容是如何实现的。比如在面对一些第三方库或者SDK开发时,它们的接口往往与我们自己想要的接口不一致,此时适配器模式可以很好地扮演一个接口转换器的角色,将别人的接口与我们的接口对应上。

2023-09-28 14:51:06 395

原创 代理模式 结构型模式之四

代理模式是一种常见的设计模式,它允许你在不直接访问对象的情况下,通过一个代理对象来控制对该对象的访问。这个代理对象可以作为客户端和实际对象之间的中介,从而实现一些特定的控制功能,比如限制访问、记录访问日志等。怎么理解呢,我们一般来说存在一个实际的对象,这个对象包含了丰富的业务方法,我们当然可以暴露出来给所有人使用。但是有时候我们并不希望这些方法没没有限制的使用,比如某个方法是重启服务器。如果这个方法不加约束的暴露给所有人,那将会是一场灾难。

2023-09-28 14:24:43 434

原创 装饰模式 结构性模式之三

通过采用组合而非继承的手法, Decorator模式实现了在运行时 动态扩展对象功能的能力,而且可以根据需要扩展多个功能。避免 了使用继承带来的“灵活性差”和“多子类衍生问题”Decorator类在接口上表现为is-a Component的继承关系,即 Decorator类继承了Component类所具有的接口。但在实现上又 表现为has-a Component的组合关系,即Decorator类又使用了 另外一个Component类。

2023-09-28 13:12:51 68

原创 抽象工厂模式 创建性模式之五

抽象工厂模式是什么呢,抽象工厂模式让一个具体的工厂可以生产多类的产品,也就是它从工厂方法模式种的一厂一产品,变成了一厂多产品的模式。有朋友问了,简单工厂模式不就是一厂多产品么,没错聪明的你发现了问题。但是简单工厂模式,它只有一个唯一的厂。而抽象工厂模式,却可以根据基类的抽象工厂,派生出N多个厂,这就是其本质的区别。

2023-09-28 09:57:46 321

原创 内联函数 C++的进修系列之二

内联函数(Inline Functions)是一种在编程语言中的概念,它用于在编译时将函数的代码直接插入到函数调用的地方,而不是通过函数调用的方式进行执行。换句话说,编译器会将内联函数的代码复制到调用处,以消除函数调用的开销。

2023-09-27 14:43:31 68

原创 友元 C++进修之路系列

友元(Friend)是C++中一种特殊的,它允许一个类或函数访问另一个类的私有成员。友元在一些特殊情况下非常有用,但也应谨慎使用,因为它会打破封装性和数据隐藏原则。当一个类或函数被声明为另一个类的友元时,它就能够绕过访问权限进行访问,即使这些成员在普通情况下对外是不可见的。友元的作用类似于家庭中的密友,可以借助其特殊身份获得其他成员私有信息的访问权。然而,友元并不是简单的双向关系,即A类是B类的友元,B类也是A类的友元,这种关系并不成立。。

2023-09-27 14:22:41 65

原创 设计模式的六大原则

设计模式的提出都是为了解决一个常见的问题而总结出来的办法。所以当你思考采用何种设计模式的时候,你应该先问问自己当前问题的是什么?根据问题去选取合适的设计模式。等你熟悉了设计模式的以后,你会发现部分设计模式之间存在包含关系,甚至很相像,但是不同的设计模式解决的问题是不一样的。当我们在设计一个模块的时候可以从以下几个角度去考虑:这个模块与其他模块的关系是什么样的?模块中哪些部分是不变的,哪些部分是在不断变化的,是如何变化的?类与类之间的关系是怎么样的,为什么需要依赖,怎么可以不依赖?要不要加一个接口。

2023-09-27 10:23:04 219

原创 桥接模式 结构型模式之二

将抽象与实现分离,使它们可以独立变化。

2023-09-26 15:43:06 252

原创 工厂方法模式 创建型模式之四

工厂方法模式定义一个创建对象的接口,让子类决定实例化那个类,也就是让类的实例化推迟到子类中进行。因为当需要增加一个新的产品时,我们需要增加一个具体的产品类和与之对应的具体子工厂,然后在具体子工厂方法中进行对象实例化,所以称为工厂方法模式。这个模式非常符合“开闭原则”,当需要增加一个新的产品时,我们只需要增加一个具体的产品类和与之对应的具体工厂即可,无须修改原有系统。同时在工厂方法模式中用户只需要知道生产产品的具体工厂即可,无须关系产品的创建过程,甚至连具体的产品类名称都不需要知道。

2023-09-26 15:04:40 204

原创 简单工厂模式 创建型模式(非GoF经典设计模式)

简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

2023-09-26 14:30:37 305

原创 单例模式 创建型模式之一

一句话来说就是,某个类只能有一个实例,提供一个全局的访问点。单例模式的要点有三个:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。

2023-09-26 14:11:58 386

原创 建造者模式 创建型模式之三

想要搞清楚建造者模式,首先先要了解建造者模式种四个角色的定位。

2023-09-25 19:50:00 241

原创 原型模式 创建型模式之二

DP书上的定义为:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。其中有一个词很重要,那就是拷贝(既clone)。可以说,拷贝(clone)是原型模式的精髓所在。其中拷贝分为深拷贝和浅拷贝。被复制的对象的所有变量都含有与原来的对象相同的值,而所有对其他对象的引用都仍然指向原来的对象。把引用对象的变量指向复制过的新对象,而不是原有的被引用的对象。Clone的时候使用深复制。

2023-09-25 18:55:50 475

原创 中介者模式 行为型模式之四

用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同时做出相应的处理。多个类相互耦合,形成了网状结构。将上述网状结构分离为星型结构。对象 Colleague 之间的通信封装到一个类中单独处理。1、中国加入 WTO 之前是各个国家相互贸易,结构复杂,现在是各个国家通过 WTO 来互相贸易。2、机场调度系统。

2023-09-24 17:35:12 41

原创 外观模式 结构型模式之一

无论是“门”还是“面”,指代的都是某系统的外观部分,也就是与外界接触的临界面或接口,所以门面模式常常也被翻译为“外观模式”。利用门面模式,我们可以把多个子系统“关”在门里面隐藏起来,成为一个整合在一起的大系统,来自外部的访问只需通过这道“门面”(接口)来进行,而不必再关心门面背后隐藏的子系统及其如何运转。门面模式(Facade)可能是最简单的结构型设计模式,它能将多个不同的子系统接口封装起来,并对外提供统一的高层接口,使复杂的子系统变得更易使用。说白了就是为复杂的系统做一个统一的调用接口。

2023-09-24 17:24:28 91

原创 策略模式 行为型模式之三

策略模式(Strategy Design Pattern),定义一堆算法类,并将每个算法分别封装起来,让它们可以互相替换,被封装起来的算法具有独立性外部不可改变其特性。

2023-09-24 16:45:10 36

原创 模板方法模式 行为型模式之二

抽象模板类,负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成。模板方法:定义了一套算法的骨架,按某种顺序调用其包含的基本方法。基本方法:是算法骨架/流程的某些步骤进行具体实现,包含以下几种类型,抽象方法:在抽象类中声明,由具体子类实现。具体方法:在抽象类中已经实现,在具体子类中可以继承或重写它。钩子方法:在抽象类中已经实现,包括用于判断的逻辑方法和需要子类重写的空方法两种。

2023-09-24 16:03:20 48

原创 命令模式 行为型模式之一

(Command Pattern)又叫动作模式或事务模式。指的是将一个请求封装成一个对象,使发出请求的责任和执行请求的责任分割开,然后可以使用不同的请求把客户端参数化,这样可以使得两者之间通过命令对象进行沟通,从而方便将命令对象进行储存、传递、调用、增加与管理。命令模式是一种对象行为型模式。命令模式就是对命令的封装,就是把一系列的操作写到一个方法中,然后供客户端调用就行了。

2023-09-24 15:38:46 48

原创 主动对象模式

代理者被调用的时候会创建具体“调用请求”对象,对象中包含了执行这个方法必须的参数和数据的返回方式。对应的执行者的方法将被调用。对象分为主动对象和被动对象,主动对象内部包含一个线程,可以自动完成动作或改变状态,而一般的被动对象只能通过被其他对象调用才有所作为。调度的决定可能决定与多个规则:关键字顺序,入队的顺序,要满足的执行条件或等待发生的事件,如:在一个数据结构中出现空闲区。总的来说,主动对象模式的主要优点是能够提高系统的并发性,从而提高系统的吞吐率,适合于需要进行多线程处理和并发访问同一资源的场景。

2023-09-24 15:01:19 58

原创 【计算机视觉-从入门到精通系列】 第一章 基础知识

​​​​​​1.1齐次坐标想要对一个三维向量进行旋转缩放应该怎么办?显然,左乘一个旋转缩放矩阵R就可以了,例如式(1.1)那如果想要对这个向量进行平移呢?当然,可以在式(1.1)的基础上加上一个平移向量t,如式(1.2)因此要对一个三维向量X进行旋转、缩放、平移到X'需要进行如下操作式(1.3)从式(1.3)可以看出,要进行三维坐标变换,需要借助一个旋转缩放矩阵R和一个平移向量t才能完成。在实际应用中,进行多种变换时,往往...

2021-11-10 10:43:35 3052

原创 【计算机视觉-从入门到精通系列】 第二章 相机模型

计算机视觉是一门研究如何让计算机“看”世界的学科。人要看到世界需要眼睛,计算机要看到世界同样也需要“眼睛”,计算机的“眼睛”主要就是相机。实际应用中,相机的种类纷繁复杂,包括手机和平板电脑的相机,传统的胶片相机、普通的数码相机、专业的量测相机等,还包括双目相机、RGBD相机、激光雷达等新型相机。为了精准描述相机成像过程,需要建立起对应的数学模型,这就是相机模型。相机模型是用来描述相机将三维世界中的坐标点映射到二维图像平面的过程,其中最常用也是最简单的是针孔模型,如(图2-1)所示。

2021-11-06 14:04:59 2161

原创 【计算机视觉-从入门到精通系列】 第三章 立体匹配

我们先来做一个简单的实验,拿出两只笔,钢笔、铅笔、圆珠笔都可以,左右手各拿一支笔,然后将两支笔的笔尖慢慢地对上。怎么样?是不是很容易。然后闭上一只眼,再重复以上的实验,如何?比较难对上对不对。为什么会这样呢?要解释以上现象,需要借助计算机视觉中的一些基本概念。第一个概念是视差(Disparity)。视差就是从有一定距离的两个点上观察同一个目标所产生的差异。想要很好的理解视差,得从凸透镜成像(图1)说起。如果凸透镜成像原理也不清楚,可以翻阅初中课本,或者咨询度娘。人眼与大部分...

2021-11-05 18:19:27 1532 1

转载 C++标准库:bitset 用法整理 (来自网易 happyboy200032的博客)

std::bitset是STL的一部分,准确地说,std::bitset是一个模板类,它的模板参数不是类型,而整形的数值(这一特性是ISO C++2003的新特性),有了它我们可以像使用数组一样使用位。下面看一个例子:#includestd::bitset bs;//它是一个模板,传递的参数告诉编译器bs有8个位。我们接着看上面的代码,通过上面两行的代码我们得到

2015-09-18 11:45:01 492

原创 CListCtrl,SetItemState 高亮(显示蓝色)

这个问题不知道为什么网上给出各种蛋疼答案,其实很简单m_List.SetFocus();m_List.SetItemState(i, LVNI_FOCUSED|LVNI_SELECTED, LVNI_FOCUSED|LVNI_SELECTED);搞定,不谢,请叫我及时雨。

2015-01-20 15:21:16 3620

转载 EnterCriticalSection 多线程操作相同数据遇到的问题(线程锁)

在编程中常遇到这样的问题。线程A、Bdou

2014-10-30 09:15:28 2302

原创 c#调用c++dll找不到入口点,一秒搞定

看了那么多人在网上解决这个问题。我即

2014-08-12 12:12:16 1863

转载 如何解决VC++ 6.0 在win7下的兼容性问题

liu很多学习编程的同学都遇到这样的问题,在Windows操作系统下使用Visual C++ 6.0编程时,如果点击菜单中的【打开】或者【添加】,或者按快捷键,都会弹出下图的对话框,出现程序崩溃并退出的情况。        出现这种问题的原因是VC6.0和其他软件冲突所致,网上一般认为是和Office2007或者Office2010冲突,有人说是和Office里的vos

2014-08-06 11:17:07 7845

Visual Assist X

Visual Assist X

2014-10-27

空空如也

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

TA关注的人

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