c++
sjtu_chenchen
硕士毕业于上海交通大学,先后就职于各类大厂,在java、devops、大数据实时计算方向有深入的研究
展开
-
排序
#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;void swap(int *a, int *b) { *a = *a ^ *b; *b = *a ^ *b; *a = *a ^ *b;}//插入排序//比如 49, 38, 65, 97, 76, 13, 27。当i指向76时原创 2015-09-26 20:40:09 · 390 阅读 · 0 评论 -
备忘录模式
概念Memento模式也叫备忘录模式,是行为模式之一,它的作用是保存对象的内部状态,并在需要的时候(undo/rollback)恢复对象以前的状态。应用场景如果一个对象需要保存状态并可通过undo或rollback等操作恢复到以前的状态时,可以使用Memento模式。 1)一个类需要保存它的对象的状态(相当于Originator角色) 2)设计一个类,该类只是用来保存上述对象的状态(相当于Mem原创 2015-09-29 20:55:25 · 576 阅读 · 0 评论 -
状态模式
概念State模式也叫状态模式,是行为设计模式的一种。State模式允许通过改变对象的内部状态而改变对象的行为,这个对象表现得就好像修改了它的类一样。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转译到表现不同状态的一系列类当中,可以把复杂的判断逻辑简化。角色和职责Context:用户对象 拥有一个State类型的成员,以标识对象的当前状态; Stat原创 2015-09-29 22:15:46 · 477 阅读 · 0 评论 -
迭代器模式
概念Iterator模式也叫迭代模式,是行为模式之一,它把对容器中包含的内部对象的访问委让给外部类,使用Iterator(遍历)按顺序进行遍历访问的设计模式。在应用Iterator模式之前,首先应该明白Iterator模式用来解决什么问题。或者说,如果不使用Iterator模式,会存在什么问题。 1.由容器自己实现顺序遍历。直接在容器类里直接添加顺序遍历方法 2.让调用者自己实现遍历。直接暴露原创 2015-09-29 22:22:18 · 457 阅读 · 0 评论 -
二叉树
#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;#include<stack>struct Node { int data; Node *lChild; Node *rChild;};//先序遍历:根节点、左结点、右结点void preOrder(Node *root) {原创 2015-09-25 22:16:25 · 351 阅读 · 0 评论 -
链表java与c++实现
package pack;class Node { int num; //数据域 Node next; //指针域 Node(int num) { this.num = num; } }class List { Node head = null; //头结点 Node tail = null; //尾结点 static in原创 2015-09-24 14:49:27 · 702 阅读 · 0 评论 -
most of 1-1000
#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;void search(int arr[] ,int len) { int a[100] = {0}; int max = 0; for (int i = 0; i < len; i++) {原创 2015-09-22 19:52:55 · 403 阅读 · 0 评论 -
原型模式
概念Prototype模式是一种对象创建型模式,它采取复制原型对象的方法来创建对象的实例。使用Prototype模式创建的实例,具有与原型一样的数据。 1)由原型对象自身创建目标对象。也就是说,对象创建这一动作发自原型对象本身。 2)目标对象是原型对象的一个克隆。也就是说,通过Prototype模式创建的对象,不仅仅与原型对象具有相同的结构,还与原型对象具有相同的值。 3)根据对象克隆深度层次原创 2015-09-28 20:45:10 · 502 阅读 · 0 评论 -
建造者模式
概念 Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。对象的创建:Builder模式是为对象的创建而设计的模式- 创建的是一个复合对象:被创建的对象为一个具有复合属性的复合对象- 关注对象创建的各部分原创 2015-09-28 20:23:43 · 418 阅读 · 0 评论 -
代理模式
概念Proxy模式又叫做代理模式,是构造型的设计模式之一,它可以为其他对象提供一种代理(Proxy)以控制对这个对象的访问。所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后),进行某些特别的处理。类图角色和职责1)subject(抽象主题角色): 真实主题与代理主题的共同接口。 2)RealSubject(真原创 2015-09-28 21:05:59 · 431 阅读 · 0 评论 -
简单工厂模式
概念 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。模式中包含的角色及其职责 1.工厂(Creator)角色 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。 2.抽象(Product)角色 简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的原创 2015-09-28 19:18:51 · 385 阅读 · 0 评论 -
单例模式
概念 单例模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。GoF对单例模式的定义是:保证一个类、只有一个实例存在,同时提供能对该实例加以访问的全局访问方法。应用场合 1) 在多个线程之间,比如初始化一次socket资源;比如servlet环境,共享同一个资源或者操作同一个对象 2) 在整个程序空间使用全局变量,共原创 2015-09-28 19:01:08 · 445 阅读 · 0 评论 -
c++文件操作总结
#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;#include "fstream";class Teacher {public: Teacher() { this->age = 0; strcpy(this->name, ""); } Tea原创 2015-09-13 10:01:01 · 1798 阅读 · 0 评论 -
c++ STL总结
#define _CRT_SECURE_NO_WARNINGS#pragma warning(disable : 4996)#include <iostream>using namespace std;#include <vector>#include <algorithm>#include <string>#include <deque>#include <stack>#inclu原创 2015-09-16 14:44:35 · 608 阅读 · 0 评论 -
c++函数返回局部变量
char* func() { char arr[] = "Hello,World\n"; // arr[] 所有元素保存在栈内存上 return arr; // 返回局部变量或临时变量的地址 /*即返回了指向栈内存的指针,而返回后栈内存都会被自动回收,main里面接收到的地址指向的内存已经不存在,变为野指针 */} int main() {原创 2015-08-22 15:22:36 · 1630 阅读 · 0 评论 -
c++操作符重载
/*-----MyString.h-----*/class MyString { friend ostream& operator<<(ostream &out, MyString &s);private: int m_len; char *m_p;public: MyString(); MyString(const char *p); MyStr原创 2015-08-22 20:46:20 · 929 阅读 · 0 评论 -
观察者模式
概念Observer模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态。Observer模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步。角色和职责Subject(被观察者) 被观察的对象。当需要被观察的状态发生变化时,需要通知队列中所有观察者对象。Subject需要维持(添加,删除,通知)一个观察原创 2015-09-29 20:22:16 · 559 阅读 · 0 评论 -
责任链模式
概念Chain of Responsibility(CoR)模式也叫职责链模式或者职责连锁模式,是行为模式之一,该模式构造一系列分别担当不同的职责的类的对象来共同完成一个任务,这些类的对象之间像链条一样紧密相连,所以被称作职责链模式。例1:比如客户Client要完成一个任务,这个任务包括a,b,c,d四个部分。 首先客户Client把任务交给A,A完成a部分之后,把任务交给B,B完成b部分,…,直到原创 2015-09-29 19:25:25 · 1500 阅读 · 0 评论 -
命令模式
概念Command模式也叫命令模式 ,是行为设计模式的一种。Command模式通过被称为Command的类封装了对目标对象的调用行为以及调用参数。在面向对象的程序设计中,一个对象调用另一个对象,一般情况下的调用过程是:创建目标对象实例;设置调用参数;调用目标对象的方法。但在有些情况下有必要使用一个专门的类对这种调用过程加以封装,我们把这种专门的类称作command类。整个调用过程比较繁杂,或者存在多原创 2015-09-29 19:01:58 · 370 阅读 · 0 评论 -
策略模式
概念Strategy模式也叫策略模式是行为模式之一,它对一系列的算法加以封装,为所有算法定义一个抽象的算法接口,并通过继承该抽象算法接口对所有的算法加以封装和实现,具体的算法选择交由客户端决定(策略)。Strategy模式主要用来平滑地处理算法的切换 。角色和职责 Strategy:策略(算法)抽象。 ConcreteStrategy:各种策略(算法)的具体实现。 Context:策略的外部原创 2015-09-29 19:34:38 · 559 阅读 · 0 评论 -
外观模式
概念Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种。Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。这个一致的简单的界面被称作facade。角色和职责1) Façade 为调用方定义简单的调用接口。 2) Clients 调用者。通过Facade接口调用提供某功能的内部类群。 3) Packages 功能提供者原创 2015-09-28 22:49:46 · 376 阅读 · 0 评论 -
中介者模式
概念Mediator模式也叫中介者模式,是由GoF提出的23种软件设计模式的一种。Mediator模式是行为模式之一,在Mediator模式中,类之间的交互行为被统一放在Mediator的对象中,对象通过Mediator对象同其他对象交互,Mediator对象起着控制器的作用。角色和职责用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示的相互引用,从而降低耦合;而且可以独立地改变它们之间原创 2015-09-29 20:01:20 · 485 阅读 · 0 评论 -
访问者模式
概念Visitor模式也叫访问者模式,是行为模式之一,它分离对象的数据和行为,使用Visitor模式,可以不修改已有类的情况下,增加新的操作角色和职责。角色和职责抽象访问者(Visitor)角色:声明了一个或者多个访问操作,形成所有的具体元素角色必须实现的接口。具体访问者(ConcreteVisitor)角色:实现抽象访问者角色所声明的接口,也就是抽象访问者所声明的各个访问操作。抽象节点(Eleme原创 2015-09-29 21:15:55 · 420 阅读 · 0 评论 -
解释模式
概念角色和职责Context:解释器上下文环境类。用来存储解释器的上下文环境,比如需要解释的文法等。 AbstractExpression : 解释器抽象类。 ConcreteExpression:解释器具体实现类。案例#include <iostream>using namespace std;#include "string"class Context{public:原创 2015-09-29 22:18:49 · 585 阅读 · 0 评论 -
设计模式概述
UML介绍:http://blog.csdn.net/jiuqiyuliang/article/details/8552956 java23种设计模式:http://blog.sina.com.cn/s/blog_5d4d130a0100hlix.html设计模式基本原则最终目的:高内聚,低耦合 1) 开放封闭原则 (OCP,Open For Extension, Closed For Mo原创 2015-09-28 18:37:00 · 457 阅读 · 0 评论 -
桥接模式
概念Bridge 模式又叫做桥接模式,是构造型的设计模式之一。Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。角色和职责1) Abstraction 抽象类接口(接口或抽象类)维护对行为实现(I原创 2015-09-28 21:47:23 · 359 阅读 · 0 评论 -
抽象工厂
概念 抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。工厂模式:要么生产香蕉、要么生产苹果、要么生产西红柿;但是不能同时生产一个产品组。抽象工厂:能同时生产一个产品族。模式中包含的角色及其职责抽象工厂(Creator)角色 抽象工厂模式的核心,包含对多个产品结构的声明,原创 2015-09-28 19:59:06 · 417 阅读 · 0 评论 -
工厂模式
概念 工厂方法模式同样属于类的创建型模式又被称为多态工厂模式 。工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。 核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。类图角色和职责 1)抽象工厂(Creator)角色 工厂原创 2015-09-28 19:39:33 · 351 阅读 · 0 评论 -
装饰模式
概念装饰( Decorator )模式又叫做包装模式。通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案。装饰模式就是把要添加的附加功能分别放在单独的类中,并让这个类包含它要装饰的对象,当需要执行时,客户端就可以有选择地、按顺序地使用装饰功能包装对象。类图角色和职责适用于: 装饰者模式(Decorator Pattern)动态的给一个对象添加一些额外的职责。就增加功能来说原创 2015-09-28 21:18:01 · 459 阅读 · 0 评论 -
适配器模式
概念Adapter模式也叫适配器模式,是构造型模式之一,通过Adapter模式可以改变已有类(或外部类)的接口形式。角色和职责适用于:是将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。案例#include <iostream>using namespace std;class Current18v{public: void use1原创 2015-09-28 21:29:23 · 396 阅读 · 0 评论 -
组合模式
概念Composite模式也叫组合模式,是构造型的设计模式之一。通过递归手段来构造树形的对象结构,并可以通过一个对象来访问整个对象树。角色和职责Component (树形结构的节点抽象) - 为所有的对象定义统一的接口(公共属性,行为等的定义) - 提供管理子节点对象的接口方法 - [可选]提供管理父节点对象的接口方法Leaf (树形结构的叶节点) Composite(树形结构的枝节点)适用原创 2015-09-28 22:03:51 · 361 阅读 · 0 评论 -
享元模式
概念Flyweight模式也叫享元模式,是构造型模式之一,它通过与其他类似对象共享数据来减小内存占用。角色和职责1)抽象享元角色: 所有具体享元类的父类,规定一些需要实现的公共接口。 2)具体享元角色: 抽象享元角色的具体实现类,并实现了抽象享元角色规定的方法。 3)享元工厂角色: 负责创建和管理享元角色。使用场景:是以共享的方式,高效的支持大量的细粒度的原创 2015-09-28 23:11:36 · 421 阅读 · 0 评论 -
模板模式
概念Template Method模式也叫模板方法模式,是行为模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。应用场景具有统一的操作步骤或操作过程具有不同的操作细节存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同总结:在抽象类中统一操作步骤,并规定好接口;让子类实现接口。这样可以把各个具体的子类和操作步骤接原创 2015-09-29 16:59:35 · 425 阅读 · 0 评论 -
c++友元实现操作符重载
运算符重载的本质是一个函数#include <iostream>using namespace std;class A {private: int m_a; int m_b; friend A operator+(A &a1, A &a2);//友元函数访问私有属性,实现二元运算符重载 friend A operator++(A &a); //友元函数访问私有属性,实原创 2015-08-22 16:14:29 · 3255 阅读 · 0 评论 -
c++引用返回值
引用作为函数的返回值时,函数的返回值可以理解为函数返回了一个变量(事实上,函数返回引用时,它返回的是一个指向返回值的隐式指针),因此,值为引用的函数可以用作赋值运算符的左操作数。另外,用引用返回一个函数值的最大好处是,在内存中不产生被返回值的副本。#include <iostream>using namespace std;double array[5] = {1.1, 1.2, 1.3, 1.4原创 2015-08-22 15:10:45 · 799 阅读 · 0 评论 -
openssl开源程序dh算法解析之dh_check.c
/*检查dh自身参数,dh公钥大小是否合适*/#include <stdio.h>#include "cryptlib.h"#include <openssl/bn.h> //自定义OpenSSL 实现大数管理的结构及其函数#include <openssl/dh.h>/*- * Check that p is a safe prime and * if g is 2, 3 or 5, c原创 2015-06-08 21:56:32 · 2505 阅读 · 0 评论 -
openssl开源程序dh算法解析之dh_ameth.c
#include <stdio.h>#include "cryptlib.h"#include <openssl/x509.h>#include <openssl/asn1.h>#include <openssl/dh.h>#include <openssl/bn.h>#include "asn1_locl.h"#ifndef OPENSSL_NO_CMS# include <ope原创 2015-06-08 21:48:01 · 3830 阅读 · 0 评论 -
openssl中dh算法实现
Openssl的DH实现在crypt/dh目录中,各个源码如下:(1) dh.h 定义了 DH 密钥方法数据结构以及各种函数。(2) dh_asn1.c DH密钥参数的DER 编解码实现。(3) dh_lib.c 实现了通用的 DH 函数,设计层面的。(4) dh_gen.c 实现了生成 DH 密钥参数。(5) dh_key.c 实现openssl 提供的默认的DH_METHOD,实原创 2015-06-07 22:13:30 · 3601 阅读 · 0 评论 -
OpenCSP开源程序解析之OPENCSP_Keyset.cpp
#include ".\opencsp_keyset.h"#include ".\opencsp_provider.h"#include ".\opencsp_alg.h"#include ".\opencsp_hash.h"#include ".\opencsp_key.h"#include ".\opencsp_mutex.h"#include ".\opencsp_cardacce原创 2015-06-05 23:14:52 · 968 阅读 · 0 评论 -
OpenCSP开源程序解析之OPENCSP_Key.cpp
#include ".\opencsp_key.h" #include ".\opencsp_m$csp.h" #include ".\opencsp_alg.h" OPENCSP_M$CSP* OPENCSP_Key::_csp; OPENCSP_Key::OPENCSP_Key(ALG_ID algId, DWORD dwFlags) :_hKey(0), _原创 2015-06-05 23:13:16 · 1321 阅读 · 0 评论