05 2015 档案
摘要:【1】什么是简单工厂模式?核心思想:用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。理解:根据条件生成不同的实例。利用多态的特性,调用同名方法,不同的实例将得到不同的结果。【2】代码示例如下:代码如下:#include #include using name...
阅读全文
摘要:1】什么是策略模式?坊间的解释都比较拗口,而且不好理解。所谓策略模式,先构建一个策略(即子类的实例),再利用这个具体的实例构建一个策略对象,通过调用策略对象的接口可以达到相应具体策略的结果。【2】策略模式代码示例代码示例:/* * 策略模式 */#include #include #includ...
阅读全文
摘要:【1】什么是装饰模式?装饰模式:动态地给一个对象添加一些额外的职责。【2】装饰模式代码示例:代码如下:#include #include using namespace std;class Person{private: string m_strName;public: Person(s...
阅读全文
摘要:【1】什么是代理模式? 为其他对象提供一种代理,并以控制对这个对象的访问。 【2】代理模式代码示例: 示例代码: #include <iostream> #include <string> using namespace std; class SchoolGirl { public: string
阅读全文
摘要:【1】什么是工厂方法模式?定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。【2】工厂方法模式代码示...
阅读全文
摘要:【1】什么是原型模式?原型模式即复制,或者克隆模式。【2】原型模式代码示例:代码示例1:#include #include using namespace std;class Prototype{private: string str;public: Prototype(string s...
阅读全文
摘要:1】什么是模板方法模式?又叫模板方法模式,在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情冴下,重新定义算法中的某些步骤。【2】模板方法模式代码示例:代码示例1:#include #include using namespace std;class ...
阅读全文
摘要:【1】什么是外观模式? 为子系统中的一组接口提供一个统一的高层接口。这一接口使得子系统更加容易使用。 【2】外观模式的代码示例: 代码示例: #include <iostream> #include <string> using namespace std; class Sub1 { public:
阅读全文
摘要:【1】什么是建造者模式?将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。【2】建造者模式代码示例:代码示例1:#include #include #include using namespace std;class Person{public: virtual voi...
阅读全文
摘要:【1】什么是观察者模式?观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,让他们能够自动更新自己 【2】观察者模式代码示例:代码示例如下:#include #include #include using namespa...
阅读全文
摘要:【1】什么是抽象工厂模式?为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类【2】抽象工厂模式的代码示例:代码示例:#include #include using namespace std;class IUser{public: virtual void getUser()...
阅读全文
摘要:【1】什么是状态模式?不同的状态,不同的行为。或者说,每个状态有着相应的行为。【2】状态模式的代码示例:代码示例:#include #include using namespace std;class Work;class State;class ForenonnState;class State{...
阅读全文
摘要:【1】什么是适配器模式?将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。【2】适配器模式的代码示例:代码示例如下1:#include #include using namespace std;class Adaptee{pub...
阅读全文
摘要:【1】什么是备忘录模式?在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态。【2】备忘录模式的代码示例:代码示例如下:#include #include #include using namespace std;class Memo{p...
阅读全文
摘要:【1】什么是组合模式?将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。【2】组合模式代码示例:代码示例:#include #include #include using namespace std;class Component{public:...
阅读全文
摘要:【1】什么是迭代器模式?【2】迭代器模式代码示例:代码示例:#include #include using namespace std;class Iterator;class Aggregate{public: virtual Iterator *createIterator() = 0;}...
阅读全文
摘要:一、懒汉模式 即第一次调用该类实例的时候才产生一个新的该类实例,并在以后仅返回此实例。 需要用锁,来保证其线程安全性:原因:多个线程可能进入判断是否已经存在实例的if语句,从而non thread safety。 使用double-check来保证thread safety。但是如果处理大量数据时,
阅读全文
摘要:【1】什么是桥接模式?【2】桥接模式的代码示例示例代码:#include #include using namespace std;class HandsetSoft{public: virtual void run() = 0;};class HandsetGame : public Han...
阅读全文
摘要:【1】什么是命令模式?命令模式:【2】命令模式的代码示例:代码示例:#if 0#include #include using namespace std;/* * 运算基类 */class Operation{public: double numberA; double numberB;...
阅读全文
摘要:【1】什么是责任链模式?责任链模式:【2】责任链模式的代码示例:代码示例:#include#includeusing namespace std;class Request{public: string requestType; string requestContent; int...
阅读全文
摘要:【1】什么是中介者模式?中介者模式:【2】中介者模式代码示例:代码示例:#include#include using namespace std;class Mediator;class ConcreteColleague1;class ConcreteColleague2;class Collea...
阅读全文
摘要:【1】什么是享元模式?享元模式:【2】享元模式的代码示例:#include #include #include using namespace std;class Flyweight{public: virtual void operation(int) = 0;};class Concret...
阅读全文
摘要:解释器模式【1】什么是解释器模式?解释器模式:拟定一种 “语言”,定义该语言文法的一种表示,并定义一种解释器,这个解释器使用该表示文法来解释语言中的句子。【2】解释器模式代码示例:(1)代码示例1:#include #include #include using namespace std;clas...
阅读全文
摘要:【1】什么是访问者模式? 今天学习访问者模式,访问者模式是A对象访问了B对象的一种模式。非也。那么,何谓访问者模式呢?其实真难理解!因为这个名字就TMD超晦涩,让人听不懂,或许只是此名本身有且仅有的一个抽象意义而已。何谓抽象意义呢?如果你理解了《类的概念》大概你才会有所参透。我一直理解:抽象是多态...
阅读全文
摘要:设计模式分为三种类型,共23类。 创建型模式:单件模式、抽象工厂模式、建造者模式、工厂方法、原型模式。 结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状...
阅读全文
摘要:type() 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的。 比方说我们要定义一个Hello的class,就写一个hello.py模块: 当Python解释器载入hello模块时,就会依次执行该模块的所有语句,执行结果就是动态创建出一个Hello的clas
阅读全文
摘要:全文基于Python 2.7 macOS 10.12.2 werkzeug是Python实现的WSGI规范的使用函数库。什么是WSGI?如何理解CGI,WSGI 网上的说明很多,在文章的开始,我想要强调两点 WSGI是一种服务器和客户端交互的接口规范 理解web组件:client, server,
阅读全文
摘要:引言 本文主要梳理了flask源码中route的设计思路。首先,从WSGI协议的角度介绍flask route的作用;其次,详细讲解如何借助werkzeug库的Map、Rule实现route;最后,梳理了一次完整的http请求中route的完整流程。 flask route 设计思路 源码版本说明
阅读全文
摘要:共享就是一个内存区域的数据被多个处理器访问,伪共享就是不是真的共享。这里的共享这个概念是基于逻辑层面的。实际上伪共享与共享在cache line 上实际都是共享的。CPU访问的数据都是从cache line 中读取的。如果cpu 在cache 中找不到需要的变量,则称缓存未命中。 未命中时,需要通...
阅读全文
摘要:Python中对象方法的定义很怪异,第一个参数一般都命名为self(相当于其它语言的this,比如:C#),用于传递对象本身,而在调用的时候则不 必显式传递,系统会自动传递。 今天我们介绍的主角是super(), 在类的继承里面super()非常常用, 它解决了子类调用父类方法的一些问题, 父类多次
阅读全文
摘要:NPTL提供了互斥体 pthread_mutex_t 类型进行线程同步,防止由于多线程并发对全局变量造成的不正确操作。使用 pthread_mutext_t 对数据进行保护已经可以实现基本的数据同步,NPTL又提供了pthread_cond_t 条件变量与pthread_mutext_t一起使用实现...
阅读全文
摘要:mysql事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等。这样,这些数据库操作语句就构成一个事务。注意一下几点: 在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务。 事务处理
阅读全文
摘要:wsgiref 是Python标准库给出的 WSGI 的参考实现。 wsgiref是官方给出的一个实现了WSGI标准用于演示用的简单Python内置库,它实现了一个简单的WSGI Server和WSGI Application(在simple_server模块中) WSGI是Python Web 开
阅读全文
摘要:一、C\C++ 运行时库编译选项简单说明 问题:我的dll别人没法用 运行时库是个很复杂的东西,作为开发过程中dll制作需要了解的一部分,这里主要简单介绍一下如何选择编译选项。 在我们的开发过程中时常会遇到这样的问题: 1. 我的VS版本比较高(比如:VS2012),我想制作一个dll,封装了几个函
阅读全文
摘要:go语言中的http.Handle和http.HandleFunc go的http库中Handle和HandleFunc的第一个参数都是pattern,即请求路径,区别在于第二参数。 Handle func Handle(pattern string, handler Handler) { Defa
阅读全文
摘要:__new__方法的使用 只有继承于object的新式类才能有__new__方法,__new__方法在创建类实例对象时由Python解释器自动调用,一般不用自己定义,Python默认调用该类的直接父类的__new__方法来构造该类的实例,如果该类的父类也没有重写__new__,那么将一直按此规矩追溯
阅读全文
摘要:void *thread1() if((temp = pthread_create(&thread[0], NULL, thread1, NULL)) != 0) 提示:invalid conversion from 'void* (*)()' to 'void* (*)(void*)'=====...
阅读全文
摘要:事务的隔离级别 为了解决这些问题,数据库管理软件采用了一些·办法设置了事务的隔离等级。隔离等级越高,数据越安全,但性能越低。 MySQL查看当前数据库的隔离级别命令是: mysql> SELECT @@tx_isolation; 更改隔离级别(开启事务之前更改): mysql> SET TRANSA
阅读全文
摘要:经典进程同步与互斥问题读者---写者问题1.问题描述一个数据对象若被多个并发进程所共享,且其中一些进程只要求读该数据对象的内容,而另一些进程则要求写操作,对此,把只想读的进程称为“读者”,而把要求写的进程称为“写者...
阅读全文
摘要:【1】strlen 与 sizeof有何区别?(1)sizeof操作符的结果类型是size_t,它在头文件中typedef为 unsigned int 类型。该类型保证能容纳实现所建立的最大对象的字节大小。(2)sizeof是操作符,strlen是函数。(3)sizeof可以用类型做参数,strle...
阅读全文
摘要:vs开发环境配置及常见错误 http://www.360doc.com/content/15/0610/16/6973384_477179688.shtml VS中ProjectDir的值以及$(ProjectDir)../的含义 ProjectDir代表包含xxx.sln的路径,如E:\code\
阅读全文
摘要:两种方法对于你的程序调用动态库时没有任何区别,只是你在编程时,步骤是不一样的。显式调用麻烦了点,但可以没有相应的lib库;隐式调用,使用起来比较 简单,有函数的声明(头文件.h)就可以了,但必须有lib库。 在VC中两种方式的具体方法: 一、动态库的隐示调用: 在 VC 工程中直接链接静态输入库XX
阅读全文
摘要:【1】空类为什么可以创建对象呢? 示例代码如下: 1 class Test 2 { 3 }; 4 void main() 5 { 6 Test t1; 7 cout构造函数的函数名必须与类名相同,而且没有返回值,更不能用void来修饰。默认访问权限是public的,并且inline函数【常识】 构造函数允许重载。【各个不同的构造函数创建的对象就是所谓的天生不同性】 构造...
阅读全文
摘要:一道笔试题的思考:记得,找工作时,遇到了这样的一道笔试题。记不清是那个公司的笔试题,反正觉得自己当时还真费了一点功夫的,但是也就搞定了一部分,结果还是被另一部分给鄙视啦!现在静下来分析实现如下:题目:用C++设计一个不能被继承的类不能被继承?不能被继承?不能被继承?按照继承的理论知识分析,我们只要把...
阅读全文
摘要:只允许对象生成于堆内?怎么理解?肿么办?假如,手头上有一个类Person,当你在程序中写下Person rn时,编译器悄悄地做了两件事:调用constructor构造对象rn,而在弹栈时,调用destructor析构对象rn。对象rn的构造和析构全部由编译器负责,这是栈的特性!诸所周知,对象rn生成...
阅读全文
摘要:Web 应用框架,或者简单的说是“Web 框架”,其实是建立 web 应用的一种方式。从简单的博客系统到复杂的富 AJAX 应用,web 上每个页面都是通过写代码来生成的。我发现很多人都热衷于学习 web 框架技术,例如 Flask 或这 Django 之类的,但是很多人并不理解什么是 web 框架
阅读全文
摘要:在实际应用中,我们经常需要使用定时器去触发一些事件。Python中通过线程实现定时器timer,其使用非常简单。 threading 中有个 Timer 类。它会新启动一个线程来执行定时任务,所以它是非阻塞函式。 看示例: 输出结果: Hello Timer! Process finished wi
阅读全文
摘要:struct ifreq ifrf; ::memset(&ifrf,0,sizeof(ifrf)); ::strncpy(ifrf.ifr_name, ifr[addrCount].ifr_name, sizeof(ifrf.ifr_name)); theErr = ::ioctl(tempSock
阅读全文
摘要:C++调用虚函数的时候,要根据实例(即this指针指向的实例)中虚函数表指针得到虚函数表,再从虚函数表中找到函数的地址。#includeclass shape {public: int a; shape(int t) { a=t; } virtual void area() ...
阅读全文
摘要:#includeclass shape {public: int a; shape(int t) { a=t; } virtual void area()=0;};class circle: public shape { public: void area(); circl...
阅读全文
摘要:C++堆和栈的分配 栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等,其操作方式类似于数据结构中的栈。 堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,注意它与数据结构中的堆是两回事,分配方式类似于链表。 全局区(静态区)(sta
阅读全文
摘要:#include using namespace std;struct A1{ int a; static int b; };struct A2{ int a; char c;};struct A3{ float a; char c;};struct A4{...
阅读全文
摘要:#include using namespace std;class A{ int m_a; int get() { return m_a; } virtual void set(int a) { m_a = a; } vi...
阅读全文
摘要://a.cpp class A{ public: int fun(int x){ return (x*x+1000); } }; void tt() { } //b.cpp class A{ public: int fun(int x); }; void tt(); int yy() { tt();
阅读全文
摘要:用类去定义对象时,系统会为每一个对象分配存储空间。如果一个类包括了数据和函数,要分别为数据和函数的代码分配存储空间。按理说,如果用同一个类定义了10个对象,那么就需要分别为10个对象的数据和函数代码分配存储单元,如图8.4所示。能否只用一段空间来存放这个共同的函数代码段,在调用各对象的函数时,都去调...
阅读全文
摘要:1.对象与对象之间的成员变量是相互独立的。要想共用数据,则需要使用静态成员和静态方法。 2.只要在类中声明静态成员变量,即使不定义对象,也可以为静态成员变量分配空间,进而可以使用静态成员变量。(因为静态成员变量在对象创建之前就已经被分配了内存空间) 3.静态成员变量虽然在类中,但它并不是随对象的建立
阅读全文
摘要:#includeclass A{ const int a; int b;};void main(){ A obja;}编译出现如下错误:error C2512: 'A' : no appropriate default constructor available;如果将const去...
阅读全文
摘要:设计模式:面向对象设计的六大原则 (绝对详细) 目录 前言 六大原则 单一职责原则 开闭原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特原则 总结 前言 很久没有写博客了,一直给自己找借口说太忙了,过几天有空再写,几天之后又几天,时间就这么快速的消逝。说到底就是自己太懒了,不下点决心真是不行。
阅读全文
摘要:先简单了解下哈希函数和哈希冲突的概念。 非哈希表的特点:关键字在表中的位置和它之间不存在一个确定的关系,查找的过程为给定值一次和各个关键字进行比较,查找的效率取决于和给定值进行比较的次数。 哈希表的特点:关键字在表中位置和它之间存在一种确定的关系。 哈希函数:在元素关键字k和位置p之间建立一种映射关
阅读全文