自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

?.?的专栏

大爷来玩呀~

  • 博客(135)
  • 资源 (14)
  • 收藏
  • 关注

原创 NSQ 单机测试(单个 topic)

nsq 环境搭建官方文档官方文档中文版官方文档中文版PDFnsq 虚拟机测试(单个 topic)测试环境objectdescribecpu2memory8Gnsqd count1nsqlookup1message size1KBmessage count100000topic count1channel count20/100client count20/100测试报告channel count

2020-05-29 15:37:18 1166

原创 条款 17:以独立语句将 newed 对象置入智能指针

条款 17:以独立语句将 newed 对象置入智能指针Store newed objects in smart pointers in stanalone statements.processWidget(std::shared_ptr<Widget>(new Widget), priority());上述代码可能引起资源泄露,因为该行代码会执行三件事:调用 priority执行 new Widget调用 std::shared_ptr 构造函数编译器能够保证 new W

2020-05-20 22:43:40 280

原创 条款 16:成对使用 new 和 delete 是要采用相同形式

条款 16:成对使用 new 和 delete 是要采用相同形式Use the same form in corresponding uses of new and delete.std::string * stringArray = new std::string[100];delete stringArray;上面程序会产生未定义行为,至少后 99 个 string 的析构函数不会被调用,需要成对使用 new/delete 和 new []/delete []需要注意尽量减少下列 typ

2020-05-20 22:42:51 240

原创 条款 15:在资源管理类中提供对原始资源的访问

条款 15:在资源管理类中提供对原始资源的访问Provide access to raw resources in resource-managing classes.int dausHeld(const Invectment*);有些 API 会需要直接指涉资源,通常情况是参数为某对象指针,此时要求资源管理类能够返回原始资源的指针资源管理类提供原始资源的指针,通常是 get() 函数,如 shared_ptr 和 auto_ptr 实现一般对原始资源的转换由显示转换或者隐式转换来实现,一般

2020-05-20 22:40:33 200

原创 条款 14:在资源管理类中小心 copying 行为

条款 14:在资源管理类中小心 copying 行为Think carefully about copying behavior in resource-managing classes.class Lock{public: explict Lock(Mutex* pm) : _mutexPtr(pm) { lock(_mutexPtr); } ~Lock() { unlock(_mutexPtr); }private: Mutex* _mutexPtr;};Mu

2020-05-20 22:39:55 162

原创 条款 13:以对象管理资源

条款 13:以对象管理资源Use objects to manage resources.依赖人为的 delete 掉 new 出来的资源,基本是行不通的,忘记、过早 return、代码修改等都会引起资源没有被正确释放导致内存泄露以对象管理资源的两个关键想法:获得资源后立即放入对象,这个观念又被称为:资源取得时机便是初始化时机,即 RAII(Resource Acquisition Is Initialization)管理对象运用析构函数确保资源被释放void f(){ std

2020-05-20 22:39:08 148

原创 条款 12:复制对象时勿忘其每一个成分

条款 12:复制对象时勿忘其每一个成分Copy all parts of an object.当 class 添加新变量时,所有 copy、copy assignment 函数需要处理这些成员变量的复制存在继承关系时,derived class 的 copy 和 copy assignment 函数务必要调用父类的相关复制函数,确保所有成员变量被处理copy 函数与 copy ass...

2020-04-28 22:24:18 156

原创 条款 11:在 operator= 中处理“自我赋值”

条款 11:在 operator= 中处理“自我赋值”Handle assignment to self in operator=.什么是自我赋值“自我赋值”发生在对象赋值给自己时class Widget { ... };Widget w;...w = w; // 赋值给自己// 潜在的自我赋值a[i] = a[j];// 潜在的自我赋值*px = *py;// ...

2020-04-28 22:23:49 182

原创 条款 10:令 operator= 返回一个 reference to *this

条款 10:令 operator= 返回一个 reference to *thisHave assignment operators return a reference to *this.为了下列实现“连锁赋值”,需要令赋值操作符返回一个操作符左侧实参的引用a = b = c = 15;Widget& operator=(const Widget& ths){ ...

2020-04-28 22:22:55 181

原创 条款 09:绝不在构造和析构过程中调用 virtual 函数

条款 09:绝不在构造和析构过程中调用 virtual 函数Never call virtual functions during construction or destruction.假设子类各有不同的记录日志实现,有可能会出现下面这种代码class T {public: T(); virtual void Log() const = 0;};T::T() {...

2020-04-16 22:52:32 244

原创 条款 08:别让异常逃离析构函数

条款 08:别让异常逃离析构函数Prevent exceptions from leaving destructors.如果析构函数吐出异常,可能导致不明确行为,如下面 vector 销毁时会调用所有元素的析构函数,这会导致不明确行为class A { ... ~A() {...} // 假设析构函数会吐出异常};void f() { std::vector...

2020-04-16 21:58:29 173

原创 条款 07:为多态基类申明 virtual 析构函数

条款 07:为多态基类申明 virtual 析构函数Declare destructors virtual in polymorphic base classes.class TimeKeeper {public: TimeKeeper(); ~TimeKeeper(); ...};class AtomicClock : public TimeKeeper {...

2020-04-14 23:30:21 152

原创 条款 06:若不想使用编译器自动生成的函数,就该明确拒绝

条款 06:若不想使用编译器自动生成的函数,就该明确拒绝Explicitly disallowa the use of compiler-generated functions you do not want.如何阻止编译器自定生成 copy 构造函数和 copy assignment 函数?申明成员函数为 private 且不实现class A{public: ...p...

2020-04-14 22:33:08 173

原创 条款 05:了解 C++ 默默编写并调用了哪些函数

条款 05:了解 C++ 默默编写并调用了哪些函数Know what functions C++ silently writes and calls.C++ 编译器会自动创建哪些函数对于一个空类,编译器可能默默生成下面四个函数。class A {};class A {public: A() {...} A(const A& rhs) {...} ~...

2020-04-14 22:32:33 179

原创 条款 04:确定对象被使用前已被初始化

条款 04:确定对象被使用前已被初始化Make sure that objects are initialized before thre’re used.c++ 不保证下面语境初始化int x;class Point{ int x, y;};Point p;某些语境会被初始化为0,某些语境不能保证。一般的,如果是 C part of C++,而且初始化会招致运...

2020-04-14 22:31:57 141

原创 条款 03:尽可能使用 const

条款 03:尽可能使用 constUse const whenever possibleconst 修饰指针和常量char greeting[] = "Hello";char* p = greeting; // non-const pointer, non-const dataconst char* p = greeting; // non-const pointer, ...

2020-04-14 22:25:21 142

原创 条款 02:尽量以 const,enum,inline 替换 #define

条款 02:尽量以 const,enum,inline 替换 #definePrefer consts,enums,and inlines to #defines.宁可以编译器替换预处理器#define ASPECT_RATIO 1.653也许 ASPECT_RATIO 不会被编译器感知,即可能提前被预处理器移走了,导致 ASPECT_RATIO 可能没进入记号表(symbol ta...

2020-04-06 17:18:38 191

原创 条款 01:视 C++ 为一个语言联邦

条款01:视 C++ 为一个语言联邦View C++ as a federation of languages.C++ 次语言组成部分CObjectc-Oriented C++Template C++STLC++ 高效守则依情况变化,取决于使用哪一部分。如内置类型(C-like)pass-by-value 通常比 pass-by-reference 高效,而对于 Objec...

2020-04-06 17:16:37 252

原创 MongoDB命名规范

命名介绍了MongoDB中集合与数据库的常用命名规范集合UTF-8 字符不能是空字符串("")不能包含 \0 字符(空字符),这个字符标识集合名的结束不能以 “system.” 开头,这是为系统保留的前缀不在集合中包含字符 “$”使用 “.” 来分隔不同命名空间的子集合,如一个博客可能包含两个子集合,blog.posts和blog.authors,而blog本身可以不存在数据...

2019-07-15 23:10:44 8362

原创 MongoDB 安装

MongoDB 安装下载MongoDB Download CenterVersion: 3.6.13(previous release)OS: REHEL 7.0 Linux 64-bit x64Package: shellmongodb-org-server-3.6.13-1.el7.x86_64.rpm // 服务端程序mongodb-org-mo...

2019-07-04 14:55:13 361

原创 C# 改进版 HttpServer 框架

效果图Program.csnamespace ConsoleApp{ class Program { static void Main(string[] args) { int port = 9999; MyHttpServer httpServer = new MyHttpServer(10)...

2019-06-14 17:21:35 4968

原创 用例建模

用例建模需求建模需求分析确定功能性需求和非功能性需求需求规约形成需求规约文档使需求分析师和客户达成共识用例参与者与系统交互的外部用户主要和次要参与者主要参与者:启动用例,系统必须响应主要参与者次要参与者:除主要参与者不同类型参与者人类参与者外部系统参与者输入/输出设备参与者计时器参与者用例模型中文档化用例用例名称: 名称概述: 用例描述依赖: 是否...

2019-06-14 11:55:20 1186

原创 设计模式简介

设计模式简介设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性...

2019-06-03 21:13:07 166

原创 访问者模式

访问者模式在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。意图主要将数据结构与数据操作分离。主要解决稳定的数据结构和易变的操作耦合问题。何时使用需要对一个对象结构中的对...

2019-06-03 21:05:58 148

原创 模板模式

桥接模式在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。意图定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。主要解决一些方法通用,却在每一个子类都重新写了这一方法。...

2019-06-03 21:04:58 134

原创 策略模式

策略模式在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。意图定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决在有多种算法相似的情况下,使用 if…...

2019-06-03 21:03:10 507

原创 空对象模式

空对象模式在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方。意...

2019-05-31 17:17:04 173

原创 状态模式

状态模式在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。意图允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。主要解决对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。何时使用代...

2019-05-31 16:18:34 243

原创 观察者模式

观察者模式当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。意图定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。何时使用一个对象(目标...

2019-05-31 15:39:14 148

原创 备忘录模式

备忘录模式备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。意图在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。主要解决所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。何时使用很多时候我们总是需要记录一...

2019-05-31 14:21:33 210

原创 中介者模式

中介者模式中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。意图用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。主要解决对象与对象之间存在大量的关联关系,这样势必会...

2019-05-28 23:54:26 189

原创 迭代器模式

迭代器模式迭代器模式(Iterator Pattern)是各种编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。意图提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。主要解决不同的方式来遍历整个整合对象。何时使用遍历一个聚合对象。如何解决把在元素之间游走的责任交给迭代器,而不是聚合对...

2019-05-25 10:51:25 151

原创 解释器模式

解释器模式解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。意图给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。主要解决对于一些固定文法构建一个解释句子的解释器。何时使用如果一种特定类...

2019-05-24 23:11:25 137

原创 命令模式

命令模式命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。意图将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。主要解决在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进...

2019-05-23 22:28:05 155

原创 责任链模式

责任链模式顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。意图避免请求发送者与接收者耦合在一起,让多...

2019-05-22 21:29:15 113

原创 代理模式

代理模式在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。意图为其他对象提供一种代理以控制对这个对象的访问。主要解决在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,...

2019-05-22 20:10:39 144

原创 享元模式

享元模式享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。我们将通过创建 5 个对象来画出 20 个分布于不同位置的圆来演示这种模式。由于只有 5 种可用的颜色,所以 color 属性被用来...

2019-05-21 22:00:32 129

原创 外观模式

外观模式外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。意图为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。...

2019-05-21 21:00:07 225

原创 装饰器模式

装饰器模式装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。我们通过下面的实例来演示装饰器模式的用法。其中,我们将把一个形状装饰上不同的颜色,同时又不改变形状类。意图动态地给一个对...

2019-05-21 20:03:18 126

原创 组合模式

组合模式组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。意图将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合...

2019-05-19 00:48:27 149

MFC RTTI代码(博客中使用资源)

博客中使用的完整源码【MFC(2)】,仿真了 MFC 的 RTTI。博客地址: http://blog.csdn.net/raito__/article/details/51684826

2016-06-20

MyMFC(博客使用资源)

博客使用资源,博客地址: http://blog.csdn.net/raito__/article/details/51684826

2016-06-17

MyMFC代码(博客中使用资源)

博客中使用代码: http://blog.csdn.net/raito__/article/details/51684826

2016-06-17

MyMFC代码(博客使用资源)

博客中需要使用到的资源。 http://blog.csdn.net/raito__/article/details/51684826

2016-06-15

C++ MFC 餐饮管理系统

基于C++ MFC 开发的餐饮管理系统,包含完整项目源码,可用VC6.0或VS打开,打开即可直接运行或修改,无需其他环境配置,源码包含相关注释,适合初学MFC的童鞋学习之用。 数据库用的是ACCESS 2000。 纯原创,1分很便宜噢~

2015-07-19

算法导论第三版答案

算法导论第三版答案 文字版本 超清晰不失帧

2015-06-26

哈工大操作系统实验

哈工大 操作系统 实验 完整 打包 1.系统初始化 2.系统接口 3.进程管理 4.进程同步 5.I/O设备管理 6.内存管理

2015-06-26

算法导论 第三版 英文 文字版 清晰

算法导论 第三版 英文 文字版 清晰 原版

2015-06-26

深入理解计算机系统(第二版) pdf 英文原版

深入理解 计算机系统 pdf 英文 计算机 文字版 超清晰

2015-06-25

java局域网QQ

简易的java局域网QQ程序

2014-10-30

java推箱子

java推箱子游戏,课程作业,程序设计,一共30关 包含选关、跳关、悔步操作 UI界面

2014-10-30

无栈非递归中序遍历二叉树

无栈非递归中序遍历二叉树,不用辅助栈,允许改变LLING和RLINK的值

2014-10-30

C语言中序线索化

C语言中序线索化

2014-10-30

空空如也

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

TA关注的人

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