- 博客(419)
- 资源 (49)
- 问答 (8)
- 收藏
- 关注
原创 C++设计模式之命令模式(command)(行为型)
一 定义命令模式(Command):将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求进行排队或记录请求日志,以及支持可撤销的操作。二 ULM图...
2020-04-15 09:43:26 500
原创 SlickEdit配置保存路径
SlickEdit多了一些配置之后保存文件的路径:C:\Users\Administrator\Documents\My SlickEdit Config其中Users\Administrator可能根据每个人电脑用户的不同而有所不同。...
2020-04-04 09:56:14 580
原创 C++设计模式之中介者模式(mediator)(行为型)
一 定义中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。二 ULM图角色抽象中介者(Mediator):中介者定义一个接口用于与各同事(Colleague)对象通信。具体中介者(ConcreteMediator):具体中介者通过协调各同事对象实现协作行为。了解并维护它的各个同事。抽象同...
2020-03-31 19:34:56 307
原创 C++设计模式之备忘录模式(memento)(行为型)
一、定义备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将对象恢复到原先保存的状态。二、 ULM图角色:(1)Originator(发起人):负责创建一个Memento,用以记录当前时刻它的内部状态,并可以使用备忘录恢复内部状态。Originator可以根据需要决定Memento存储Originator的哪些...
2020-03-30 16:20:51 307
原创 C++设计模式之观察者模式(observer)(行为型)
一 定义观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。观察者模式又叫做发布-订阅(Publish-Subscribe)模式、模型-视图(Model-View)模式、源-监听器(Source-Listener)模式。Observer模式应该可以说是应用最多、影响最广的模式之一,因为...
2020-01-20 11:05:01 1017
原创 C++设计模式之状态模式(state)(行为型)
一 定义状态模式:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂的情况。把不同状态的操作分散到不同的状态对象里去完成。在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的(stateful)对象,这样的对象状态是从事先定义好的一系列值中取出的。当一个这样...
2020-01-18 11:12:09 3501 1
原创 C++设计模式之策略模式(strategy)(行为型)
一 定义策略模式是指定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。也就是说这些算法所完成的功能一样,对外的接口一样,只是各自实现上存在差异。策略模式把对象本身和运算规则区分开来,其功能非常强大,因为这个设计模式本身的核心思想就是面向对象编程的多形性的思想。二 ULM图环境类(Context):用一个Concr...
2020-01-17 11:18:18 840
原创 C++设计模式之模板模式(template)(行为型)
一 定义模板方法模式是一种类的行为型模式,在它的结构图中只有类之间的继承关系,没有对象关联关系,模板方法模式(Template Method Pattern)官方定义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。抽象模板中包含三种类型的方法:基本方法、模板方法和钩子方法(Hook Method)。基本方法——基...
2020-01-17 10:35:58 1701
原创 C++设计模式之代理模式(proxy)(结构型)
一 定义代理模式:为其他对象提供一种代理以控制对这个对象的访问。代理模式分类(1)远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。(2)虚拟代理,是根据需要创建开销很大的对象。通过他来存放实例化需要很长时间的真实对象。例如:图片加载的时候。(3)安全代理,用来控制真是对象访问时的权限。(4)智能指引,是指当调用真实的对象...
2020-01-16 15:30:04 650
原创 C++设计模式之外观模式(facade)(结构型)
一 引言外观模式(Facade)其实在开发过程中使用评率十分频繁,或间接或直接使用,尤其是在当前各种第三方SDK 中,相当大的概率使用了外观模式,通过一个外观类使用的整个SDK的接口只有一个统一的高层接口,降低了用户对接成本,也对用户屏蔽了具体实现细节。二 定义外观模式:外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层...
2020-01-15 17:57:27 504
原创 C++设计模式之享元模式(flyweight)(结构型)
一 定义享元模式(Flyweight):运用共享技术有效地支持大量细粒度的对象。享元模式的优点:1)享元模式的优点在于它可以极大减少内存中对象的数量,使得相同对象或相似对象在内存中只保存一份。2)享元模式的外部状态相对独立,而且不会影响其内部状态,从而使得享元对象可以在不同的环境中被共享。享元模式的缺点:1)享元模式使得系统更加复杂,需要分离出内部状态和外部状态,这使得程序的逻辑复杂...
2020-01-14 14:52:20 697 1
原创 C++设计模式之组合模式(composite)(结构型)
对于树形结构,当容器对象(如文件夹)的某一个方法被调用时,将遍历整个树形结构,寻找也包含这个方法的成员对象(可以是容器对象,也可以是叶子对象,如子文件夹和文件)并调用执行。(递归调用) 由于容器对象和叶子对象在功能上的区别,在使用这些对象的客户端代码中必须有区别地对待容器对象和叶子对象,而实际上大多数情况下客户端希望一致地处理它们,因为对于这些对象的区别对待将会使得程序非常复杂...
2020-01-12 21:04:36 1846
原创 C++设计模式之装饰器模式(decorator)(结构型)
一、模式动机比如,给自家宠物小狗的画框需要不同的颜色等。一般有两种方式可以实现给一个类或对象增加行为: •继承机制,使用继承机制是给现有类添加功能的一种有效途径,通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的,用户不能控制增加行为的方式和时机。 •关联机制,即将一个类的对象嵌入另一个对象中,由另一个对象来...
2020-01-12 16:35:07 858
原创 C++设计模式之适配器模式(adapter)(结构型)
一、结构型模式概述 结构型模式(Structural Pattern)描述如何将类或者对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构。 结构型模式可以分为类结构型模式和对象结构型模式: •类结构型模式关心类的组合,由多个类可以组合成一个更大的系统,在类结构型模式中一般只存在继承关系和实现关系。 ...
2020-01-12 15:25:48 1770
原创 C++设计模式之桥接模式(bridge)(结构型)
设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时至少有如下两种设计方案:第一种设计方案是为每一种形状都提供一套各种颜色的版本。第二种设计方案是根据实际需要对形状和颜色进行组合。假设我们需要对每种图形需要10种颜色,使用方案一,那么总共需要4种图形*10种颜色=40个类。如果我们使用方案二需要4种图形+1...
2020-01-12 11:27:23 1104
原创 C++设计模式之原型模式(prototype)(创建型)
一、原型(Prototype)模式概述DP书上的定义为:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。其中有一个词很重要,那就是拷贝(既clone)。可以说,拷贝(clone)是原型模式的精髓所在。其中拷贝分为深拷贝和浅拷贝。浅复制:被复制的对象的所有变量都含有与原来的对象相同的值,而所有对其他对象的引用都仍然指向原来的对象。深复制:把引用对象的变量指向复制过的新对象,而不是...
2020-01-11 11:38:56 1136
原创 C++类成员指针
类成员指针类成员指针是指可以指向类的非静态成员的指针。成员指针指向的是类的成员。类的静态成员不属于任何对象,因此无须特殊的静态成员的指针,指向静态成员的指针和普通函数指针没有什么区别。当初始化一个类成员指针时,令其指向类的某个成员,但是不指定该成员所属的对象,直到使用成员指针时,才提供成员所属的对象。数据成员指针类成员指针的使用*表示当前声明的名字是一个指针,但是在*之前必须添加cla...
2019-12-25 11:20:21 671
原创 C++ Most vexing parse(C++最头疼的解析)
首先需要了解,在C++中,如下三种方式声明了同一个函数:int f(double d); //声明接受一个double参数d,返回值为int类型的函数 int f(double (d));//效果一样,参数名外的括号会被忽略 int f(double);//直接省略参数名 同样地,如下三种方法也声明了同一个函数:int g(double (*pf)()); //声明返回值为...
2019-12-24 15:58:08 2226
原创 奇异递归模板模式(CRTP: Curiously Recurring Template Pattern)
学无止境,不断更新。。。奇异递归模板模式(curiously recurring template pattern,CRTP)是C++模板编程时的一种惯用法(idiom):把派生类作为基类的模板参数。一般形式// The Curiously Recurring Template Pattern (CRTP)template<class T>class Base...
2019-12-23 19:18:45 917
原创 在win10上如果使用slickedit + mingw编译代码和debug调试
环境:OS:win10slickedit:V23mingw:mingw—x86-64-7.3.1这里主要介绍的是如何使用slickedit和mingw编译代码,所以安装slickedit和mingw步骤省略,我这里安装的是qt5.12.6自带mingw。安装好mingw后,需要添加path到系统。步骤一:桌面上右击This PC--->Proterties---&g...
2019-12-21 12:31:37 937
原创 source insight 4高亮鼠标点击的变量或者函数
在source insight中看代码,有时候为了方便需要高亮某一个变量,在source insight 4中按F8就可以高亮黄色显示某一个变量。这种方法是挺不错的,但是如果快速阅读代码或者分析代码时,需要在几个变量间不停快速切换的时候,如果对这几个变量都按了F8,对阅读代码的视觉还是有一定影响的。在这种情况下,如果我们鼠标点击哪个变量,哪个变量就高亮对阅读和分析更有利。在source insig...
2019-12-21 09:56:02 2523
原创 C++存储区
全局变量和局部变量的存储区域不同,全局变量存放在静态数据区,局部变量存放在栈区。但还有一个小点就是存放在静态数据区的变量是由低地址向高地址存放的,但存放在栈区的变量却是由高地址向低地址存放的,存放在静态数据区的还有静态局部变量和静态全局变量。#include <iostream> using namespace std; int allval1 = 3, allval2...
2019-12-14 20:51:08 115
原创 C++之constexpr详解
constexpr表达式是指值不会改变并且在编译过程就能得到计算结果的表达式。声明为constexpr的变量一定是一个const变量,而且必须用常量表达式初始化:constexpr int mf = 20; //20是常量表达式constexpr int limit = mf + 1; // mf + 1是常量表达式constexpr int sz = size(); //之后当siz...
2019-12-14 20:34:04 83851 2
转载 Google 是如何做 Code Review 的?
作者 | 帅昕 xindoo责编 | 屠敏出品 | CSDN 博客我和几个小伙伴一起翻译了Google前一段时间放出来的Google’s Engineering Practices documentation(https://github.com/google/eng-practices),翻译后的GitHub仓库:https://github.com/xindoo/eng-pract...
2019-12-13 14:00:46 199
原创 C++之namespace详解
1.namespace基本用途2.匿名的namespace用途3.内嵌namespace4.inline namespace
2019-12-12 20:23:13 196
原创 C++之using类型别名和typedef详解
1. typedef基本使用2.using基本使用3.using的好处4.c++11和c+14中对typedef和using的使用
2019-12-12 20:22:03 370
原创 C++之virtual关键字详解
1. virtual函数2. virtual 继承3. virtual对引用的影响4.virtual对dynamic_cast的影响5.virtual--->c++模型
2019-12-12 20:13:59 262
原创 C++之特殊函数
1. 构造函数2.析构函数(virtual, noexcept,pure virtual)3.拷贝构造函数4.拷贝赋值运算符5.移动构造函数6.移动赋值运算符7.委托构造函数
2019-12-12 20:09:00 216
原创 C++之指针和引用详解
指针和引用的区别: 1.指针是一个实体,而引用仅是个别名; 2.引用必须被初始化,指针不必; 3.引用只能在定义时被初始化一次,之后不可变;指针可以改变所指的对象; 4.可以有const指针(如char * const ptr = &value),但是没有const引用(其实引用也算是有的,引用只能在定义时被初始化一次,之后不可变。)...
2019-12-12 20:05:04 1076
原创 搜狗输入法与自定义的slickedit快捷键有冲突
搜狗输入法与自定义slickedit的快捷键ctrl+,有冲突,解决方法如下:步骤一:右键点击输入法,然后弹出的界面中选择“设置向导”。步骤二:点击“输入法管理”后面的:“打开输入法管理器”。如下所示:步骤三:在“搜狗输入法快捷键”中修改即可,我这里修改为了ctrl+backspace。...
2019-12-09 08:51:45 391
原创 source insight 4 在context window中显示行号
source insight 4默认在context window中不显示行号的,有时候显示行号比较方便。具体步骤如下:步骤一:在context window显示代码的地方,右键点击context window,弹出界面如下,然后点击Context Window Options...步骤二,在弹出的窗口中选择Show line numbers,如下图所示:还可以对cont...
2019-12-07 10:53:18 1739
原创 secureCRT设置背景颜色和目录(文件夹)颜色
设置背景颜色:步骤一:Options--->Global Options...如下图所示:步骤二:Terminal--->Appearance--->ANSI Color,点击右边的Normal colors的第一个配色框【设置背景颜色的】。步骤三:在右下角的Hue,Sat,Lum中分别填写128,240,51(数值按照个人喜欢的进行配置,我比较喜欢Sola...
2019-12-04 10:37:22 5416 2
原创 win10中用命令行打开画图
新安装了win10系统,画图不太好找。直接用命令行打开也快。步骤一:win+r打开命令行,输入mspaint回车即可:
2019-12-04 10:21:23 4229
原创 secureCRT8.5.4同一标签中打开多个会话
安装了最新版的secureCRT8.5.4,同一个tab/tile中打开多个会话窗口。步骤如下如所示:
2019-12-04 10:19:01 3075
原创 source insight 4 设置换行符为linux换行符,删除行结尾的空格
window和unix的换行符是不同的,分别为:Windows(CR/LF),Unix(LF)。我们一般在Windows上编写代码,如何把source insight 4的换行符设置为unix的呢?步骤如下:步骤一:Options--->Preferences...,如下图:步骤二:在弹出的对话框中选择Files--->Other,在Default line end...
2019-11-29 17:48:32 6533 2
原创 Source Insight 4.0 快捷键设置多行注释与反注释
步骤一:Options--->Key Assignments,如下图步骤二:在Command:中输入Edit:comment,会过滤后出现Edit:CommentLines和Edit:Un-Comment Lines两行。其中,第一个是注释多上的,第二个是取消多行注释的。步骤三:点击Assign New Key按钮,然后关闭弹出的对话框,由于我喜欢的Ctrl+/已被Looku...
2019-11-28 20:09:40 17345 4
slickedit2014 V19
2015-02-01
gvim编辑器 加强版vim
2012-04-15
total commander
2012-03-29
Unix网络编程实用技术与实例分析
2011-11-06
毕业设计论文:电子信息管理系统
2010-04-24
sourceinsight4.0.0085
2017-04-10
C++ Concurrency_In_Action c++11多线程编程
2017-03-01
slickedit 2016(v21) pro crack 破解
2016-11-25
xshell V4.0
2015-07-08
小新v4000安装win10系统,请问如何修改默认快捷键?
2015-10-14
linux上slickedit如何调试守护进程?有么有调试过的?能否详细说明下
2015-08-27
centos6.5 64位上gdb调试无法使用了
2015-06-25
net-snmp中通过subagent方法,如何把多个Table编译成一个可执行文件?
2015-06-09
net-snmp在agent端如何实现MODE_GETNEXT的代码?
2015-06-03
net-snmp表中数据的获取、添加、修改、删除是怎么实现的?
2015-06-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人