随笔分类 - 设计
包括软件设计,数据库设计等
摘要:简介及适用场景 如果想在数据仓库中快速查询结果,可以使用greenplum。 Greenplum数据库也简称GPDB。它拥有丰富的特性: 第一,完善的标准支持:GPDB完全支持ANSI SQL 2008标准和SQL OLAP 2003 扩展;从应用编程接口上讲,它支持ODBC和JDBC。完善的标准支持使得系统开发、维护和管理都大为方便。而现在的 NoSQL,NewSQL和Hadoop 对 S...
阅读全文
摘要:分类分布式网络爬虫包含多个爬虫,每个爬虫需要完成的任务和单个的爬行器类似,它们从互联网上下载网页,并把网页保存在本地的磁盘,从中抽取URL并沿着这些URL的指向继续爬行。由于并行爬行器需要分割下载任务,可能爬虫会将自己抽取的URL发送给其他爬虫。这些爬虫可能分布在同一个局域网之中,或者分散在不同的地...
阅读全文
摘要:SpidermanSpiderman 是一个Java开源Web数据抽取工具。它能够收集指定的Web页面并从这些页面中提取有用的数据。 Spiderman主要是运用了像XPath、正则、表达式引擎等这些技术来实现数据抽取。项目结构:依赖关系如下:webmagicwebmagic采用完全模块化的设计,功...
阅读全文
摘要:1.1 CodeSmith一款人气很旺国外的基于模板的dotnet代码生成器官方网站:http://www.codesmithtools.com官方论坛:http://forum.codesmithtools.com/default.aspx版权形式:30天试用开源:否需要先注册确认后才能下载1.2 MyGeneratorMyGenerator是又一个国外很不错的代码生成工具,有人觉得比CodeSmith简单、好用。所有api可以在帮助菜单中找到。官方网站:http://www.mygenerationsoftware.com/portal/default.aspx官方论坛:版权形式:免费开源
阅读全文
摘要:嵌入或链接 Excel 工作表通过对象命令在插入菜单上的绘图在 VisioloadTOCNode(2, 'summary'); 使用 插入 菜单上 对象 命令在 Visio 绘图中插入 Excel 工作表。 可以嵌入或链接的现有 Excel 工作表或您可以嵌入一个新的 Excel 工作表。 为此,请使用以下方法根据您的具体情况之一。 嵌入或链接现有的 Excel 工作表 loadTOCNode(3, 'summary'); 启动 Visio,然后打开绘图。 单击 插入 菜单上的 对象 ,然后单击 从文件的创建 。 单击 浏览 。 在 浏览 对话框中,找到您要插入
阅读全文
摘要:状态模式(State Pattern)是设计模式的一种,属于行为模式。 定义(源于Design Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。 意图:允许一个对象在其内部状态改变时改变它的行为 适用场景: 1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。 2.一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。类图结构:这样的话让程序更加面向对象状态模式的好处是将与特定状
阅读全文
摘要:首先看一个对于数据库操作的程序:#include <iostream>using namespace std;class DataOper{public: void insertStu(){ cout<<"开连接..."<<endl; cout<<"开启事务..."<<endl; cout<<"执行insert()操作"<<endl; cout<<"提交事务..."<<endl; cout<<&q
阅读全文
摘要:之前已经看过装饰器模式,但是感觉不是很清晰,但是有一种情况下出的代码,一定是装饰器。Widget* aWidget = new BorderDecorator( new BorderDecorator( new ScrollDecorator( new TextField( 80, 24 ))));可以看到,层层嵌套,每个类都可以按照一定的顺序嵌套多次。比如将顺序改为如下:Widget* bWidget = new ScrollDecorator( new BorderDecorator( new ScrollDecorator( new TextField( 80, 24 ))));出现的结
阅读全文
摘要:什么是代理?在我们的日常生活中的例子非常多。比如上网有的时候使用代理服务器,通过代理上网,这就是代理的一个非常常见的例子。从这里边可以看到3个对象:真实网路对象,代理对象还有客户端对象。真实对象和代理对象还都有访问网络的方法所以抽象出网络对象。对应的类图关系如下:如图:真实的网络被隐藏起来,我们访问的是代理的网络对象,同时我们可以在访问代理对象的同时动态的加上比如验证用户,清除用户信息的方法。生成的文件如下:client.hclass Client{public: Client(); virtual ~Client();};client.cpp#include "Client.h&q
阅读全文
摘要:场景:序列生成器系统中统一的序列生成程序,整个系统统一一套!那么就用单例模式吧!首先看看单例模式1)类持有一个自己的实例,而且还是个静态实例。2)类的构造函数为私有属性。3)用以获得实例的方法为静态方法。看看类图然后看一段试例程序:#include <iostream>using namespace std;class Singleton{private: Singleton();//注意:构造方法私有 virtual ~Singleton(); static Singleton* instance;//惟一实例 int var;//成员变量(用于测试) public: stati
阅读全文
摘要:首先看看书上的例子吧!人穿衣服的例子!类图就不画了,就是简单的类结构。代码如下:#include <iostream>using namespace std;class person{private: string name;public: person(string name){ this->name = name; } void wearTShirts(){ cout<<"大T恤"<<endl; } void wearBigTrouser(){ cout<<"跨裤"<<endl; }
阅读全文
摘要:原文出自http://chjavach.iteye.com/blog/698743容错恢复机制 容错恢复机制是应用程序开发中非常常见的功能。那么什么是容错恢复呢?简单点说就是:程序运行的时候,正常情况下应该按照某种方式来做,如果按照某种方式来做发生错误的话,系统并不会崩溃,也不会就此不能继续向下运行了,而是有容忍出错的能力,不但能容忍程序运行出现错误,还提供出现错误后的备用方案,也就是恢复机制,来代替正常执行的功能,使程序继续向下运行。 举个实际点的例子吧,比如在一个系统中,所有对系统的操作都要有日志记录,而且这个日志还需要有管理界面,这种情况下通常会把日志记录在数据库里面,方便后续的管理,但
阅读全文
摘要:首先看一下策略模式的意图定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。结构适用性许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法。 需要使用一个算法的不同变体。例如,你可能会定义一些反映不同的空间/时间权衡的算法。当这些变体实现为一个算法的类层次时[ H O 8 7 ] ,可以使用策略模式。 算法使用客户不应该知道的数据。可使用策略模式以避免暴露复杂的、与算法相关的数据结构。 一个类定义了多种行为, 并且这些行为在这个类的操作中以多个条件语句的形式出现。将相关的条件分支移入它们各自的S t r a
阅读全文
摘要:首先看一段程序,目的是完成一个计算器的计算,面向过程的写法#include "stdafx.h"#include <string>#include <iostream>using namespace std;int main(int argc, char* argv[]){ int strNumA,strNumB; int strOperator; cout<<"请输入数字A:\n"; cin>>strNumA; cout<<"请选择运算符号(1,+,2,-,3,*,4,/):\n&q
阅读全文