
架构设计
文章平均质量分 61
系统设计方法
写了程序换酒钱
Want to be a geek!!!
展开
-
单模
对于资源管理和特殊的对象管理,这个模式很有效 #ifndef TEST_H#define TEST_H#include using namespace std;class Test{public: static Test& getTestClass(); ~Test(){cout void setI(int a) {i = a;原创 2012-06-05 22:28:51 · 869 阅读 · 0 评论 -
修饰器
修饰器模式在java中很普遍(I/O操作的类),下面是我在C++中的实现 都是继承的同一个基类,但是在实现的时候,有的实现的很高层,一些没有实现相关的接口的可以使用那些实现了高级功能的类来实现功能。#ifndef BASECLASS_H#define BASECLASS_H#include using namespace std;class baseClas原创 2012-06-05 22:30:58 · 1008 阅读 · 0 评论 -
Factory模式
工厂模式有两种,一种是一个工厂只有一条流水线,只能生产一种特定的产品(小工厂);还有就是大工厂,一个工厂有好多条流水线,能够生产好多种产品,但是你接订单的时候必须要挑好流水线号,生产出相应的产品。 小工厂: Factory 为工厂的基类,有一个纯虚函数factoryMethod();原创 2012-07-17 09:39:45 · 994 阅读 · 0 评论 -
建造者模式
建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。和工厂模式相比,就是我连生产线都提供给你了,还明确了生产的工序。 一个是以工厂为中心,一个是以产品为中心。 下图是简单的描述图 #ifndefPRODUCT_H#de原创 2012-07-18 09:16:48 · 803 阅读 · 0 评论 -
Prototype模式
有时候我们已经创建了一个对象,但是我们想再得到这个对象的一个副本,复制构造函数是很好的选择,当然必要的封装能够优化结构和少打点代码(有点工厂的味道,给你用就行了)。 对于Prototype模式模式,我使用More Effective C++中的例子。 我到一家餐厅吃饭,离我不远的顾客正在吃饭,我看他狼吞虎咽的,不由的好原创 2012-07-18 19:45:59 · 1268 阅读 · 0 评论 -
adapt模式
代码都是人写的,每个人的生存体验都是不一样的,做事的风格也是。就能方法取名来,有些人喜欢java的大小骆驼,有些人则是下划线控。 现在你要写一个类,类中有一个函数,项目很严谨,名字都规定好了。你以前的的一个接口类能够派上用场,可是函数名却很是不同,叫你粘贴复制你感觉面子上挂不住,那现在你就需要一些adapt(改编,适应)。原创 2012-07-18 23:42:20 · 2089 阅读 · 0 评论 -
Proxy模式
Proxy模式是构造型的设计模式之一.所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后),进行某些特别的处理。 根据这些“特别处理”的不同,有以下几种常见的代理模式:- Remote proxy:远程代理。该代理可以让客户端透明地引用一个存在于不同地址空间(远程或本地)的对象。- Virtu原创 2012-07-20 10:45:01 · 998 阅读 · 0 评论 -
TemplateMethod模式
父类已经提供好了算法模板,子类负责具体实现各步算法。在使用TemplateMethod模式时一定对算法的分析很透彻,不然模板定下来,一旦改变就很困难了。 TemplateMethod模式在Android框架中使用的很多。例如Activity对象的几个状态。 其中就定义了onCreat原创 2012-07-20 16:04:29 · 815 阅读 · 0 评论 -
责任链模式
责任链模式(Chain of Responsibility)的目标是使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 举个例子。你到银行去办理业务,只是简单的存个钱,也许ATM就解决你的问题。如果你是为了交费用的,那等去柜台,但你却是来咨询金融产品的,会有专员接待你,事实上你原创 2012-07-21 09:48:55 · 832 阅读 · 0 评论 -
FlyWeight模式
设计模式中的享元模式,避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类). 使用面向对象的技术时,虽然在开发过程中能过简化设计,可是在一切是对象的思想下,在一些小粒度,大数量的应用中,可能会导致对象数极具增大,导致消耗太多的内存。比如文本编辑器,如果一个字符就是一个对象,那么可想而知对象数是对少。原创 2012-07-22 09:57:12 · 1209 阅读 · 0 评论 -
Command模式
命令(Command)模式属于对象的行为模式【GOF95】。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 适用性:在软件系统中,行为请求者与行为实现者之间通常呈现一种紧耦合的关系。但在某些场合,比如要对行为进行原创 2012-07-23 14:12:01 · 1071 阅读 · 0 评论 -
策略模式
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 策略模式在应用时,是根据不同的使用情况动态的选择使用的算法,对于客户来说,提供了很好的可扩展性和封闭性。 下面是代码示例: #ifndef原创 2012-08-07 20:07:04 · 877 阅读 · 0 评论 -
Linux服务器编程(1)
Linux服务器编程(1)前言虽然有OSI七层标准协议,但是现在Internet上的实际协议是四层的TCP/IP协议族,从上倒下,分别是应用层,传输层,网络层和数据链路层。其是一个分层,多协议的通讯体系。每一层通过不同的协议完成不同的功能,上层使用下层提供的服务,如下图所示。 数据链路层数据链路层实现了网卡接口的驱动程序,来处理在数据在物理媒介的传输。不同的物理网络,比如以太网,令牌环,wlan,原创 2015-08-04 18:06:00 · 977 阅读 · 0 评论 -
docker和nodejs
去年买了一本docker书,本来想玩玩,可是了各种事情,一直闲着,最近在玩nodejs,突然想起可以把他们两个合一起玩。 我做过一段时间的APP后台开发,主要是RESTful API开发,主要使用C++和PHP开发,这期间还开源了一个FastCGI开发的框架ccfast。那么玩nodejs也是弄弄restful api开发。js的语法比较简单,20分钟差不多,然后看的nodejs入门那边书,其中讲原创 2015-10-17 20:58:15 · 3483 阅读 · 0 评论 -
基于nodejs+socket.io的chatrobot
最近在玩nodejs,可是想服务器和终端进行实时的数据交互,不想基于麻烦的long-polling,那么websocket是最佳的选择。 首先生成一个app。 我们新建一个servers文件夹,其中新建一个websocketserver文件夹,然后新建websocketserver.js 文件。"use strict";var websocketserver = {}websocketserv原创 2015-11-22 10:48:55 · 1829 阅读 · 0 评论 -
基于nginx_http_push_module模块让nginx变成Comet Server
基于http协议搭建各种服务已经成为一种大势,但是基于http协议的客户端和服务器端的交互却是个难题,没办法http协议天生如此,其是无状态的协议,每次交互建立链接,结束断开.客户端和服务器交互很简单,请求描述功能接口的url即可,带上参数.可是服务器要和客户端交互,那就有些困难.下面是几种方法.1.客户端轮询,最差的一种,客服端和服务器端都在白忙活,浪费资源.2.long-polli原创 2014-12-20 12:06:38 · 3215 阅读 · 0 评论 -
a cpp fastcgi framework
ccfast这是一个基于FastCGI和C 的基于HTTP的Resuful API开发框架。其依赖于fastcgi库,boost库,libmysql ,libredis,其中用了C 11的特性。前端web服务器我们使用Nginx,需要的配置如下: location ~* ^/ccfast/. \.do$ { fastcgi_pass 127.0.0.1:10原创 2015-02-26 20:45:30 · 1465 阅读 · 0 评论 -
ccfast更新-支持基于Redis的Session
这是一个基于FastCGI和C++的RESTful API开发框架。其依赖于fastcgi,boost,libmysqlpp,jsoncpp,其中用了C++11的特性。现已初步添加了基于Redis的Session支持。ChangeLog 1. 基于Redis的Session管理 2. 代码结构调整前端web服务器我们使用Nginx,需要的配置如下:location ~* ^/ccfast/.+\原创 2015-06-07 11:55:07 · 1050 阅读 · 0 评论 -
使用nginx作为websocket的proxy server
WebSocketWebSocket协议为创建客户端和服务器端需要实时双向通讯的webapp提供了一个选择。其为HTML5的一部分,WebSocket相较于原来开发这类app的方法来说,其能使开发更加地简单。大部分现在的浏览器都支持WebSocket,比如Firefox,IE,Chrome,Safari,Opera,并且越来越多的服务器框架现在也同样支持WebSocket。在实际的生产环境中,要求多原创 2015-12-12 22:44:51 · 50291 阅读 · 0 评论 -
我也来谈谈分布式并行计算---------one
今天中午回学校食堂吃饭,女朋友问我分布式并行计算式什么?说下背景,女朋友考上研究生现在正在选导师。我就给她举了个例子,比如一个大规模的问题,一台计算机计算需要一个月,现在分解成30个可以同时进行的子问题,然后再30台计算机上算,只需要一天的时间。我本人从来没有读过这方面的专业论文或者书籍,关于这方面的了解只是一些资讯网站和我自己乱想想。那今天我也来说说鄙人的拙见。分布式并行计算是一种解决问原创 2014-02-28 17:08:43 · 2323 阅读 · 0 评论 -
REST,http,服务器开发
REST风格原创 2014-11-07 21:05:04 · 1605 阅读 · 0 评论 -
为什么智能家居只闻名不见影
为什么智能家居只闻名不见影对于智能家居这行我算不得老人,但是也不算个新人。第一次听到这个名词是在大二的时候,班主任对我说的。那时我开始接触嵌入式linux和ZigBee无线网开发。其实在大三的时候,我就开始做类似于小米插座那样的设备,可是还是因为资金和技术(主要是硬件方面和设计)问题,仅仅停留在纸上谈兵。在我大四找工作的时候,老班问我希望找哪方面的工作,我说嵌入式智能家具吧,可是老班有些神伤,对我说原创 2015-07-07 09:28:54 · 2200 阅读 · 2 评论 -
智能硬件和驾驶安全是否存在创业的兴奋点?
我在上海黄浦区工作,住的很远,每天都要在高架上堵车很久。今晚实在无聊,就在公交车上给自己来了个头脑风暴。我看见一个小伙手腕上带着一个运动手环,我在公交车上,旁边都是各种私家车,晚高峰比较赌,南京宝马车主的暂时性精神病。然后我从这些开始考虑智能硬件(这边特指手环),开始考虑手环对于车主行车安全是否可以有应用市场。开车忌讳疲劳驾驶,情绪驾驶。那么我的第一个问题是向医学方面的童鞋提出: 1.人在疲劳的状原创 2015-09-12 22:23:38 · 1389 阅读 · 0 评论 -
基于nginx的TCP Proxy实现数据库读写分离
nginx很早就支持tcp proxy,但是一直不知道其使用,最近在nginx blog上看见了,一些实践者将其运用到数据库访问的负载均衡以及实现读写分离,来提高数据库的吞吐量,这里我不会讲具体的搭建实现,只是最一些理论上的设计猜想。直接上图 db集群,分为读db和写db,写db向读db同步数据。读db只能读,写db只能写,图中读写各一个,只是一个例子,实际需要根据业务来配置读写服务器比例。ngi原创 2016-02-26 15:33:20 · 4751 阅读 · 2 评论 -
SBA--以服务为基础的架构
做过一段时间的后台架构,当时只是个小的公司用工具类app后台,并发小,业务简单,当时就快速简单的完成了,但是架构设计方面还是要好好学习的。2015年微服务架构和restful架构风格大行其道,一直想明白mircoservice和soa这两者到底有什么关系,然后在nginx官网发现了一本书,那么就来开始研究。 本篇从两者的共同开始讲起,SBA(Service-base architectures)原创 2016-03-01 09:10:21 · 8230 阅读 · 1 评论 -
前后端分离开发部署模式
身体出了点小毛病,这周基本在家养病,转文章一篇,以激励学习。在开始讨论这个话题之前我们先来认识一下传统的开发模式。一、传统开发模式相信很多做过Web开发童鞋应该都会经历这样一种开发模式,利用后端语言提供的模版引擎编写HTML/XML页面,比如:PHP 开发有 Smarty模板引擎Java web工程有jsp页面Python 各个Web框架都有各自的模板引擎NodeJS 的express你懂得转载 2016-03-12 09:50:44 · 19392 阅读 · 0 评论 -
Spark--用Java开发微服务
这个说的Spark不是apache的Spark,这边说的是一个java的web application的框架。 官网:http://sparkjava.com/我做过一段时间的后台架构开发,使用的是微服务架构,主要使用了C++和PHP,大部分是PHP,C++只是用在API结构频率很高的地方,大部分的还是使用的PHP完成,使用C++是比较痛苦的,虽然借助与nginx,不需要解析HTTP协议,但是还是原创 2016-05-28 18:18:28 · 9010 阅读 · 0 评论