- 博客(33)
- 资源 (2)
- 收藏
- 关注

原创 设计模式---原型模式(Prototype)
原型模式(Prototype),用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。先看UML图和对应C++代码:#include #include using namespace std;class People{ public: People(string name,int age):Name(name),Age(age){}
2012-03-01 23:49:20
649

原创 设计模式---工厂模式(Factory)
工厂模式(Factory),专门实例化类的对象,隐藏类对象的创建过程。先看UML图和对应C++代码:#include using namespace std;class base{ public: virtual void foo() = 0; virtual ~base(){}};class derived1:public bas
2012-02-29 21:07:32
619

原创 设计模式---代理模式(Proxy)
代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。先看UML图和对应C++代码:对应C++代码:#include using namespace std;class base{ public: virtual void foo() = 0; virtual ~base(){}};class derived1:
2012-02-29 20:29:00
582

原创 设计模式---策略模式(strategy)
策略模式(strategy)策略模式(strategy),它们定义了算法家族,分别封装起来,让它们之间可以替代,此模式让算法的变化,不会影响到使用算法的客户。不废话,看UML图和对应C++代码:对应C++代码:/*** date:2012/02/27* Item:Learn strategy pattern* name:smile**/#include
2012-02-28 23:36:03
591

原创 设计模式---装饰模式(decorator)
装饰模式(decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。说白了就是扩展一个类的功能,而又不想用继承。不废话先看UML和一段代码吧:对应代码:#include using namespace std;class People{ public: People(string name,stri
2012-02-28 22:58:32
539
原创 回首这10年
2011年加入csdn,如今已经过了10个年头,虽然平时工作经常参考csdn上一些博主的文章,但自己的账号好多年都没有登陆过了。趁着程序make期间就摸鱼登上来了。看了看当年发的一些文章,那些字里行间的困惑,那些认知上的稚嫩,现在看来也挺有趣。当年那么想做游戏,结果毕业后并没有去做游戏,最终还是向钱看了,因为太缺钱了。当年学习毫无方向,大多浅尝辄止,虽然毕业顺利进入大厂,但技术真的一般,只是运气好点。这些年真的好辛苦,但主要是个人经历问题,走了弯路,想弯道超车自然就很辛苦。幸运的是选择了当程
2022-01-18 16:30:23
2427
原创 python文件操作
import sysfrom matchKey import *def readKeyconf(filename): try: keystream = open(filename) except Exception: return None keyconf = {} atts = {} key = None fo
2017-02-12 22:57:25
366
原创 python
import sysimport datetimeimport time'''体育 xxxshow pv 2体育 xxxshow uv auncee体育 xxxclick pv 3体育 xxxclick uv ancdejx体育 yy
2017-01-15 12:06:43
428
原创 对象技术OOA/D
在设计一个应用程序系统过程中,用例编写是非常重要的,需要抓住参与者及其目标,采用涉众—目标—用例列表的形式将需求细化。根据用例的描述,专家的建议,以及重用现有模型来创建领域模型,其难点在于抽象概念类。根据领域模型、用例来创建系统顺序图明确系统操作(一般对应用户输入),有必要时还需要为系统操作创建操作契约(详述最复杂和微妙的系统操作)。然后进入对象设计阶段,主要关注的是领域层,而在UI层,领
2013-10-09 08:48:06
3699
原创 网络编程基础---服务器分发
前天开始研究网络编程这块,感觉理解起来还是很容易,这多亏了我看过windows核心编程这本书。不多说了,先上代码:#include "stdafx.h"#include #include #include #include #include using namespace std;#pragma comment(lib,"ws2_32.lib")vect
2012-04-20 00:31:10
1009
原创 优秀的程序员应该具备的素质
我一直思考一个优秀的程序员应该具备怎么样的素质?这个问题我想几乎每一个干这一行的人都想过。答案是没有一个标准。每个人看法都不同。但是真正的大师给任何人感觉都会觉得他必定是一个优秀的程序员。所以我认为:如果不知道如何成为优秀的程序员那就把自己变成大师吧。那什么又是大师?似乎又是一个说不清楚的问题呢。这就是我要阐明的问题:思想的境界大师的思想境界绝对不同于一般人,那这些境界是在
2012-04-10 14:04:36
829
原创 mvc架构理解
最近一段时间看了不少书,主要是数据结构和算法以及UML和模式设计这两本书,就寻思着捣鼓点东西。软件这东西还真不是说想写就可以写的,首先你必须知道写什么啊。你连需要什么都不知道根本就没办法写。然后我就思考着写个阅读书籍的程序,当然要带界面的了,可以查看读书记录时间,可以查看书籍信息(读过的,没读的,要读的),可以调出word文档,可以打开pdf阅读器按指定路径打开电子书==本来以为很容易
2012-04-05 11:50:15
725
原创 对象思想,对象分析,对象设计,迭代,敏捷建模
在面向对象的软件设计中,最重要的是对象思想,至于图形UML或者UML CASE工具是毫无意义的,这些东西只是图形表示法,只是方便于软件设计,同对象思想的地位是不能等价的。面向对象分析------->>领域模型------------>>概念类面向对象设计------->>交互图-------------->>软件类以上OOA/D和UML之间的关系,首先进行OOA/D,然后运用UML图形
2012-03-25 00:43:25
638
原创 常用数据结构和算法基础
templateclass List{ private: struct Node //double link { Node(const Object& orig = Object(),Node* p = NULL,Node* d = NULL):mb(orig), prev(p
2012-03-22 22:28:07
1035
原创 常用的排序算法分析
//插入排序 将P位置的元素插到前P+1个元素中的正确位置,保证在P位置的时候前面的//的元素是处于排序状态//时间复杂度O(N*N)的时间界templatevoid insertionSort(vector& a){ int j; for(size_t p = 1;p < a.size();p++) { Comparable temp = a[p];
2012-03-20 23:36:09
654
原创 一道简单题目的数据结构算法分析
问题描述:一个保存有阿拉伯数字与字母的字符串,存在重复的字符,用以下哪一种容器可以最快的统计出每个字符出现的次数?A vector B set C map D hashtable#include #include #include #include using namespace std;int hash(int element){ return el
2012-03-19 11:27:06
685
原创 如何才能走向成功?
这个问题真的是困扰过我很久,我也想不想平淡的人都困扰过这个问题,也许这就是所谓的浮躁。在你没成功前考虑这个问题简直是浪费时间。但是人总是明知道做某些事情是浪费时间却还是会做。想想自己20多年的学习生涯非常惭愧,留在记忆里的几乎都是玩耍的影子,唯一让自己欣慰的是高一上半年那种近似疯狂的学习。其实我是一个很聪明的人,应该说是那种绝顶聪明的人,因为我是个很容易沉迷的人。那年高一我被人称学
2012-03-16 11:59:54
990
1
原创 UML类关系之关联和聚合的区别
关联:分为双向关联,单项关联,自身关联双向关联:class C2;class C1{ C2 *p;};class C2{ C1 *p;};上述代码反应的就是一个双向关联关系,我们来看下内存结构类C1知道类C2,类C2也知道类C1,他们可以互相调用对方的方法。单向关联:class C2;class C1{ C2 *p
2012-02-27 17:02:03
1979
原创 关于多线程同步问题
研究Windows核心编程也很有一阵子了,对于多线程同步这个问题渐渐有一点自己的理解。我觉得搞清楚这个问题必须弄清楚以下几个概念:1.并发2.共享3.加锁先说并发,这个要清楚线程调度是个怎么回事,一句话概括就是:处于相同优先级的可调度状态的线程是并发执行的。再说共享,进程类的任何线程都可以访问进程资源(包括全局对象==)。然后是加锁,先要知道为什么要加锁,原因就是并发的
2012-02-24 11:47:15
652
原创 互锁函数,原子操作方式,关键代码段
多个线程访问共享资源时会发生同步问题。根本原因是因为Windows是抢占式多线程环境。线程在执行的时候随时可能被中断(运行完一个cpu时间或有更高优先级的线程要运行)例如://Define a global variable.long g_x = 0;DWORD WINAPI ThreadFunc1(PVOID pvParam) { g_x++; ret
2012-02-20 10:57:52
2361
原创 关于C++中很难懂又必须懂的一些知识
1.Name Return Value这属于编译优化方面的知识2.Name mangling这属于编译器编译时期的行为3.The Life Of Temporary Object这属于执行期语义4.Virtual Table这属于了类继承体系和面向对特性以及对象模型5.Data Member Layout这属于对象模型6.Bitwise Copy这属于构
2012-02-17 10:32:58
1370
原创 Exception Handling
C++异常处理机制是很难懂的知识,长时间来我都很惧怕它今天我就来剖析下这个机制吧!C++的Exception Handling由三个主要的语汇组件构成:1.一个throw子句。2.一个或多个catch子句。3.一个try区段。这些是语法,记住就可以了。我们要研究的是,发生了异常之后会伴随着发生些什么?这里我先提出一个术语,这个术语叫unwinding the sta
2012-02-17 09:54:23
1591
原创 学习:设计模式 可复用面向对象软件的基础 【引言】
1.1什么是设计模式问题一:什么是设计模式?提供相关问题的解决方案问题二:一个模式的基本要素是什么?模式名称(pattern name)问题(problem)解决方案(solution)效果(consequences)1.2smalltalk MVC中的设计模式类的模型/视图/控制器(Model/view/controller)模型Model是应用对象,视图
2012-01-07 00:51:40
1439
原创 C++抽象数据类型,如何抽象
C++是个多范式的语言,所以C++难学,所以C++强大,可比起java,C#,用C++来做软件开发,开发周期要长很多。为什么呢?这是因为C++的自由度高,换句话说自由度越高地语言,开发软件的周期越长,这是有一定道理的自由度过高就不容易掌控,java和C#它们的库很强大,这在一定程度上就限制了自由度,相当于提供了一套模式,方法,开发人员不需要去为实现这些东西而操心然而C++程序员却需要为
2012-01-05 23:11:35
7229
原创 C++的宏观与微观
宏观世界是由微观世界所组成,这是亘古不变的道理,C++同样是这样如果说生物是由原子组成的,那么C++就是由对象模型组成的,对象模型就相当于原子模型,对象模型的变化和互相联系形成了目前C++一切的特性再说C++宏观,C++的宏观表现为面向对象,由此细分了封装,继承,多态,反应到微观上就是对象模型,对象模型的扩展,对象模型转化。C++语言特性是建立在这种对象模型的基础上的,并不是空想而来的
2012-01-01 15:17:54
1066
原创 所谓多态本质
请看代码!#include using namespace std;class people{ public: people():age(0),name(""){} people(int i,string s):age(i),name(s){} virtual void sleep() { cout << "p
2012-01-01 14:04:49
2569
2
原创 C++中的域
这一段时间一直在琢磨对象模型,现在看到个问题都想用模型来解释,不过确实如此,几乎什么都可以用对象模型来解释搞这个模型就绝对离不开域到底域是什么?这个恐怕不是三言两语说的明白的,每个人都有一定的概念,但是可能大不相同C++上指的是作用域{}一对大括号就对应了一个作用域,学过C++的都知道,作用域里的局部变量出了作用域就消亡了(根本原因是栈恢复)而对于静态变量,编译器编译的时候做了
2011-12-31 09:32:39
4147
原创 函数调用时的栈帧结构以及临时变量的深入研究
C++代码:#include#includeusing namespace std;class base{public: base():id(0){} base(int i):id(i){} base(const base &orig):id(orig.id){cout << "called copy constructor" << endl;}privat
2011-12-17 17:41:59
2432
原创 C++对象模型的一点理解
这两天一直在研究对象模型的问题,发现这个问题确实不好理解,但通过反汇编,对于汇编下,数据段,代码段有了一定的认识。经过两天的研究测试发现当一个类被定义了之后,数据和函数是分离的,函数是放在断码段的,函数名标示函数的起始地址,往下就是函数内部的指令当创建一个类的object时,栈上开辟空间来容纳其中的数据变量,然后调用构造函数来初始化数据成员,如何调用构造函数我至今也不太清楚。。。#in
2011-12-11 22:50:31
555
原创 C++派生类对象模型
#include using namespace std;class base{ public: base(){} virtual ~base(){} int get()const{return num;} private: int num;};class base1{ public: base1(){} virtual ~base1()
2011-12-10 17:30:28
534
原创 Vector部分实现
#ifndef _MY_VECTOR_H#define _MY_VECTOR_H#include #include templateclass MyVector{ public: class iterator { public: iterator():pelem(NULL){} iterat
2011-12-07 16:52:22
1996
原创 稍微对String类的一点改进
#ifndef _STRING_H_H#define _STRING_H_H#include using namespace std;class String;ostream& operator << (ostream &os,const String &str);istream& operator >> (istream &in,String &str);String
2011-12-02 17:14:27
737
原创 string练练手
#ifndef _STRING_H_H#define _STRING_H_H#include using namespace std;class String;ostream& operator << (ostream &os,const String &str);istream& operator >> (istream &in,String &str);class
2011-12-02 13:20:20
713
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人