
architecture
文章平均质量分 71
追寻北极
没有月亮的晚上,我们相信星光。没有路可走的时候,我们相信远方.--
展开
-
软件架构模式
软件体系结构通常被称为架构,指可以预制和可重构的软件框架结构。架构尚处在发展期,对于其定义,学术界尚未形成一个统一的意见,而不同角度的视点也会造成软件体系结构的不同理解,以下是一些主流的标准观点。组成派 Mary Shaw在《软件体系结构:一门初露端倪学科的展望》中为“软件架构”给出了非常简明的定义:软件系统的架构将系统描述为计算机组件及组件之间的交互(The architect转载 2014-01-07 16:59:19 · 1035 阅读 · 0 评论 -
Berlin: Web API设计原则
1,不要考虑端点2,不要在API中包里领域模型3,目的明确之后再设计API3,不要孤独使用GET PUT4,不要将错误码选择限制为200和5005,不要忽略缓存6,不需要版本7,不要对内容协议进行扩展http://www.infoq.com/cn/news/2013/10/gotober-do-dont-webapi转载 2013-12-19 14:34:37 · 851 阅读 · 0 评论 -
技术博客整理
1,http://blog.youkuaiyun.com/phinecos/archive/2007/08/25/4612341.aspxhttp://www.ibm.com/developerworks/cn/java/j-jee/http://blog.youkuaiyun.com/longronglin/category/228840.aspx http://it.dianping.com/ht原创 2010-03-19 14:01:00 · 25789 阅读 · 0 评论 -
软件设计通用原则整理
软件设计通用原则 其中1-5的原则关注所有软件实体(类、模块、函数等)的结构和耦合性,这些原则能够指导我们设计软件实体和确定软件实体的相互关系1,单一职责2,开放封闭原则3,liskov替换原则原则4,依赖倒置5,接口隔离 6-8的原则关注包的内聚性,这些原则能够指导我们对类组包6,重用发布等价7,共同重用原则8,共同封闭原则 9-11的原原创 2013-12-19 15:27:09 · 1870 阅读 · 0 评论 -
软件设计中的一些常见原则 总结
1,单一职责解释:每个类只做一件事,并且只有一个可以引起变化的原因 目的:高内聚 低耦合2,开闭原则3,里氏替换4,依赖倒置5,接口隔离6,迪米特法则原创 2013-12-17 15:09:38 · 747 阅读 · 0 评论 -
JAVA api设计的一些原则
1,将api与其实现置于不同的包中2,将api放入高层包中,实现可以放在底层包中3,考虑将大型api拆分成若干个小包4,考虑将api与其实现包归置到不同的java文档中5,避免api与实现类内部依赖6,避免不必要的api碎片7,不要将公共实现类放在api包中8,不要在调用和实现类之间创建依赖9,不要将不相关的api放在同一个包中10,不要将api与spi(服务提原创 2013-12-19 11:29:49 · 1289 阅读 · 0 评论 -
API设计的注意事项和流程
1,好学 好记2,看了就知道干啥(以名释义)3,不用容易记错4,容易扩展5,有完整性API设计流程a,仔细研究需求b,设计之前先写用例c,研究同一类库中类似的API设计d,先设计,后实现e,找人帮你评测APIf,多写几个例子程序g,做好扩展的准备h,内部API没评测之前不要发布宁缺毋滥API设计原则1,命名名字要能解释自己,原创 2013-12-19 15:05:21 · 1141 阅读 · 0 评论 -
类的设计原则总结整理
a,单一职责原则我们把职责定义为“变化的原因”。如果你能够想到多于一个动机去改变一个类,那么这个类就具有多于一个的职责l,Rectangle类具有两个方法,一个方法把矩形绘制在屏幕上,另一个方法计算矩形面积,这个设计违反了SRP。Rectangle类具有两个职责。第一个职责提供了矩形几何形状数学模型;第二个职责是把矩形在一个图形用户界面上绘制出来2,软件设计真正要做到的许多内容,就是发原创 2013-12-20 11:19:18 · 904 阅读 · 0 评论 -
java包的设计原则整理总结
前3个原则关注包的内聚性,这些原则能够指导我们如何把类划分到包中。后3个原则关注包的耦合性,这些原则帮助我们确定包之间的相互关系。包的内聚性原则--粒度1,重用发布等价原则一个包的重用粒度(granule of reuse)可以和发布粒度(granule of release)一样大。我们说重用的任何东西都必须同时被发布和跟踪a,由于重用性必须是基于包的,所以可重用的包必须包含可重原创 2013-12-20 16:46:59 · 2357 阅读 · 0 评论 -
杂谈网站演化~~
1,网站刚建立的时候,一切从简,ssh迅速构建网站,运行在apache/nginx+tomcat+mysql中。2,随着流量的增大,网站的访问速度越来越慢,这个时候就想到了,对应用做集群,apache做集群或者或者nginx做反向代理,哇哈哈,问题解决。3,用了集群,用户的响应速度上来了,可是session丢失的问题出现了,集群中一台机子挂了,这个机子上的session就木了,只能慢慢解决原创 2014-04-20 13:53:18 · 749 阅读 · 0 评论 -
百万级PHP网站架构工具箱,高并发架构方案
在了解过世界最大的PHP站点,Facebook的后台技术后,今天我们来了解一个百万级PHP站点的网站架构:Poppen.de。Poppen.de是德国的一个社交网站,相对Facebook、Flickr来说是一个很小的网站,但它有一个很好的架构,融合了很多技术,如 Nigix、MySql、CouchDB、Erlang、Memcached、RabbitMQ、PHP、Graphite、Red5以及Tsu转载 2014-08-20 17:23:54 · 1105 阅读 · 0 评论 -
又拍网架构中的分库设计
又拍网是一个照片分享社区,从2005年6月至今积累了260万用户,1.1亿张照片,目前的日访问量为200多万。5年的发展历程里经历过许多起伏,也积累了一些经验,在这篇文章里,我要介绍一些我们在技术上的积累。又拍网和大多数Web2.0站点一样,构建于大量开源软件之上,包括MySQL、PHP、nginx、Python、memcached、redis、Solr、Hadoop和RabbitMQ等等。又转载 2014-08-20 17:31:32 · 664 阅读 · 0 评论 -
分布式消息队列Kafka集群安装
kafka是LinkedIn开发并开源的一个分布式MQ系统,现在是Apache的一个孵化项目。在它的主页描述kafka为一个高吞吐量的分布式(能将消息分散到不同的节点上)MQ。在这片博文中,作者简单提到了开发kafka而不选择已有MQ系统的原因。两个原因:性能和扩展性。Kafka仅仅由7000行Scala编写,据了解,Kafka每秒可以生产约25万消息(50 MB),每秒处理55万消息(110转载 2014-08-12 11:03:02 · 857 阅读 · 0 评论 -
广告系统数据采集方法介绍
a,采集数据1,分析访问日志。 优点:统计简单,门槛较低。 缺点:a,局限于web服务器提供的日志 b,大型网站日志分散,耗费分析集群的cpu资源和硬盘资源 c,实时性差。2,嵌入js脚本 优点 a.数据全面 b,实时查看 c,数据管理方便,入库存储方便统计。 缺点:a,嵌入的js会增加web服务器的负担 b,要有专门的分析服务器,进行统计分析。门槛较高。原创 2014-08-11 14:33:11 · 2018 阅读 · 0 评论 -
广告系统设计之分析
使用Apache等日志做统计的弊端:1,日志结构不易解析2,HTTP头部参数可能缺失3,客户端缓存导致漏记4,混有无效的错误请求5,日志的写并发不好,导致错记统计系统的特点1,高并发频繁写2,原子性、非事务难点:1,少错漏2,快入库3,速统计数据入库的解决方法:1,单条日志有原子性,一致性要求不高2,增加缓冲层,批量延原创 2014-08-11 14:11:57 · 1481 阅读 · 0 评论 -
使用HAProxy、PHP、Redis和MySQL支撑10亿请求每周架构细节
详情见:http://www.youkuaiyun.com/article/2014-08-14/2821203转载 2014-08-16 22:26:34 · 713 阅读 · 0 评论 -
Web网站架构设计考虑的因素
1 Web负载均衡1.1 - 使用商业硬件实现最常用的F5 与citrix netscaler。比如12306前端的web好像用的就是F5 的BIGIP。如果公司资金足够的话,相对使用开源软件来说理方便。优点:维护方便,性能稳定 缺点:费用太高 1.2 - 使用开源软件可选择使用lvs或者nginx做web应用的负载均衡。 Lvs工作在tcp转载 2014-10-23 10:46:47 · 604 阅读 · 0 评论 -
从程序员到CTO的Java技术路线图
在技术方面无论我们怎么学习,总感觉需要提升自已不知道自己处于什么水平了。但如果有清晰的指示图供参考还是非常不错的,这样我们清楚的知道我们大概处于那个阶段和水平。 Java程序员高级特性 反射、泛型、注释符、自动装箱和拆箱、枚举类、可变 参数、可变返回类型、增强循环、静态导入 核心编程转载 2014-11-08 23:13:43 · 819 阅读 · 0 评论 -
理解UML中类的四种关系
关联关系(association):关联在图中表示为普通实线。是认识的关系,没有生命期的依赖。一般表示一种引用。就像两个陌生人一样互相认识了,成为朋友,而这两个人是互相独立的生命个体,这就是关联关系(双向关联)。而如果A认识B,而B不认识A,则是单向关联。还有一个自身关联,姑且认为是自我认知吧。 聚合(aggregation): 聚合就是“has-a”。实线空心菱形。转载 2014-10-23 10:57:39 · 614 阅读 · 0 评论 -
黑盒测试
首先说说测试中的类型。其实测试分的各种种类是根据不同的情形来划分的。如果是按测试阶段来划分就有:单元测试、继承测试、系统测试、验收测试。按是否运行来划分就有:静态测试、动态测试。按测试是否查看源代码来划分:白盒测试和黑盒测试。而按软件架构形态划分:面向对象软件测试、web系统软件测试、嵌入式系统软件测试。按其他类划分:回归测试、冒烟测试、确认测试、恢转载 2014-10-23 10:58:39 · 1216 阅读 · 0 评论 -
从coding fan到真正技术专家
面向对象的思维方法转载 2014-10-25 11:51:13 · 1074 阅读 · 0 评论 -
面向对象的思维方法
面向对象的思维方法作者:范凯E-mail: robbin_fan@yahoo.com.cn我是从学习Java编程开始接触OOP(面向对象编程),刚开始使用Java编写程序的时候感觉很别扭,因为我早以习惯用C来编写程序,很欣赏C的简洁性和高效性,喜欢C简练而表达能力丰富的风格,特别忍受不了Java运行起来慢吞吞的速度,相对冗长的代码,而且一个很简单的事情,要写好多类,一个类调用一个类转载 2014-10-25 11:48:09 · 759 阅读 · 0 评论 -
软件的架构与模式之经典架构模式简介
根据Linda Rising的《Pattern Almanac》一书,已知的架构模式有七十多种。这是一个只多不少的统计,其中包括了很多通常认为是设计模式的模式,比如Bridge,Facade,Interpreter,Mediator等模式通常认为是设计模式,但是在许多情况下,也可以作为架构模式出现,因此也常常被当作架构模式。 Layers架构模式 在收集到用户对软件的要求之转载 2014-11-13 09:22:26 · 799 阅读 · 0 评论 -
面向服务的体系架构(SOA)和业务组件(BC)的思考
什么是业务组件(BC)组件化、模块化是软件开发中一个很重要的概念,基于面向服务体系架构(Service Oriented Architecture,SOA)下,如何实现组件化,有各种实现方式,下面通过对各种组件概念的对比,从技术角度提出业务组件(Business Component,BC)定义,并结合对总线模式的分析,给出企业服务总线和类总线的实现方案。企业架构(EA)关于转载 2014-11-13 09:48:19 · 1680 阅读 · 0 评论 -
J2EE 架构下业务组件(BC)实现
业务组件松耦合设计-OSGI业务组件以 Web 服务的方式提供接口,通过企业服务总线连接,业务组件内部为了实现高可复用性和高效性,采用基于 OSGi 标准进行构建模块,实现内部模块之间的松耦合,即在业务组件内部基于 OSGi 标准进行模块化设计,将业务组件进一步分解为松耦合的模块(Bundle),使得业务组件本身更加灵活。基于 OSGi 标准,业务组件内部的模块通过一个具有动态加载转载 2014-11-13 09:43:16 · 855 阅读 · 0 评论 -
软件架构模式的种类
在做软件架构设计时,根据不同的抽象层次可分为三种不同层次的模式:架构模式(Architectural Pattern)、设计模式(Design Pattern)、代码模式(Coding Pattern)。架构模式是一个系统的高层次策略,涉及到大尺度的组件以及整体性质和力学。架构模式的好坏可以影响到总体布局和框架性结构。设计模式是中等尺度的结构策略。这些中等尺度的结构实现了一些大尺度转载 2014-11-13 09:20:50 · 554 阅读 · 0 评论 -
大型网站架构模式
网站架构模式关于什么是模式,这个来自建筑学的词汇是这样定义的:“每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复工作”。模式的关键在于模式的可重复性,问题与场景的可重复性带来解决方案的可重复使用。分层分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职转载 2014-11-13 09:21:47 · 626 阅读 · 0 评论 -
软件体系架构模式在 J2EE 中的应用
层体系架构模式层(layer)体系架构模式就是把应用系统分解成子任务组,其中每个子任务组处于一个特定的抽象层次上。1.1 概述层架构模式组织成一个层次结构,每一层为上层服务 (Service Provider),同时也作为下层的客户端。在一些层次系统中,除了包含一些输出函数外,内部的层只对相邻的层可见。这样的系统中构件在一些层实现了虚拟机(在另一些层次系统中层是部分不透明的转载 2014-11-13 09:26:43 · 1205 阅读 · 0 评论 -
OO系统设计师之路 笔记1
1,软件架构是一种思想,一个系统蓝图,对软件结构组成的规划和职责设定。而软件框架是一个实现,一个半成品,是针对一个特定问题的解决方案和辅助工具。因此,架构是一个逻辑的构成,而框架是一个可用的半成品2,J2EE规范描述了一系列逻辑部件,描述了这些部件的职责和它们的规范,约定了这些部件之间交互的接口和协议、标准,规划出一个如何利用这些逻辑部件来实现一个应用系统的蓝图。J2EE是一个软件架构。而根据原创 2014-11-14 14:27:07 · 1167 阅读 · 0 评论 -
Spring 异常处理HandlerExceptionResolver
Spring的异常统一处理非常简单,首先我们需要看一下Spring中定义的HandlerExceptionResolver接口:[java] view plaincopyprint?/** * Interface to be implemented by objects than can resolve exceptions throw原创 2014-11-14 16:45:59 · 2223 阅读 · 0 评论 -
OO系统设计师之路 笔记2
1,件工程,既谓工程,必能遵循而重复。只有这样才能降低成本,压缩进度,减少沟通,提高质量。可重复的才有意义2,给出的草图,基本上是不动脑子的。照搬了业务实体,每个实体前加了一个控制类,只用了一个界面,整个过程只是把用例场景又重新模拟了一遍.3,虽然是一个很简单的草图,但是我们已经完成了80%的工作,同时也为后面的工作打下了非常好的基础。这个草图用最简单最快速的方式把用例场景转化成逻辑场景,原创 2014-11-15 14:46:57 · 735 阅读 · 0 评论 -
面向对象方法中的数据库设计 笔记
1,OR-mapping被仅仅当成数据库物理表和对象之间的简单一一对应,其本质还是先设计数据库再设计类。再强调一次“面向对象设计解决业务执行逻辑问题,数据库设计解决数据高效的问题”,它们本质上是两个领域的设计,只是由OR-mapping来连接它们。要采用面向对象方法,首先要忘记数据库的存在,采用对象分析方法,先把对象分析和定义出来,保证业务执行逻辑能够被这些对象很好的完成。达到这一点后,再来考虑对原创 2014-11-15 15:03:52 · 770 阅读 · 0 评论 -
T售前经验谈
在IT界,成功的完成一个项目需要销售人员、售前人员、项目实施人员(开发人员)、售后服务人员等密切协作。本文从售前技术支持人员的角度,对售前技术支持工作的过程进行了描述,根据作者在售前的经验,提出了各环节的应该注意的要点,希望能对售前人员的工作有一定的帮助。1. 售前人员需要具备的素质售前人员应该是项目开发人员与业务销售人员的桥梁。在业务销售人员眼中,售前人员扮演的是技术人员或技术专转载 2014-10-15 17:27:13 · 1063 阅读 · 0 评论 -
分析与设计数据库模型的简单过程
近期在做一个业务系统的分析和数据模型设计,工作这几年也做过好几个项目的数据库模型的设计,期间也算是积累了一定的经验吧,这次有机会就写写我的数据库模型设计过程与方法。在数据库设计中,设计的目标就是要建立E-R图(实体-关系图),在PowerDesigner中就是要建立概念模型或者逻辑模型。既然是实体-关系图,所以整个建模的核心就是围绕建立“实体”对象和找到实体之间的“关系”。实体分为两部分:标识转载 2014-10-15 17:25:58 · 1141 阅读 · 0 评论 -
PowerDesigner模型设计
绪论Sybase PowerDesigner(简称PD)是最强大的数据库建模工具,市场占有率第一,功能也确实十分强大,现在最新版本是15.1,已经支持最新的SQL Server 2008等数据库,另外在PD15中还增加了好几种模型,界面也得到了进一步的美化,做出来的图更漂亮了。下面是一个在PD15中新建模型的窗口:PD本身除了进行数据库建模以外,还可以建业务模型、UML模型转载 2014-10-15 17:22:06 · 1177 阅读 · 0 评论 -
在PowerDesigner中设计概念模型
在概念模型中主要有以下几个操作和设置的对象:实体(Entity)、实体属性(Attribute)、实体标识(Identifiers)、关系(Relationship)、继承(Inheritance)、关联(Association)、关联连接(Association Link)。实体实体就是我们抽象出的对象,比如:一个选课系统中,学生、教师、班级、课程等等都是实体。实体属性就是一个实转载 2014-10-15 17:17:32 · 914 阅读 · 0 评论 -
权限设计例子
好像以前做的那个数据库设计大家都没太看懂,究其原因似乎大家都比较习惯使用PowerDesinger来设计。而我用Excel画出来的图大家看着特别别扭,而且还没有总体的图,也没有ER图,所以大家也就没有心情看了吧。呵呵。 PowerDesinger学习了一下,感谢Hayden Han 写的《PowerDesigner使用教程 —— 概念数据模型 》,通过这个文章学会了如何使用Pow转载 2014-10-15 17:29:40 · 719 阅读 · 0 评论 -
软件项目中需求调研浅析
大家好,由于本人前段时间一直在客户那做项目的需求调研,所以未及时更新博客,此次博文就本人在做需求调研的体会与大家分享下需求调研的经验。在需求调研中,遇到了许多问题。如果你是一位需求调研的“新手菜鸟”,那么可以看看本文,也许会对你的第一次需求调研有些许帮助!如果你是一位需求调研的“大牛”,也可以看看本文,为小弟指点迷津!什么是软件项目需求调研?由于我也是第一次参加项目的需求调研,所以转载 2014-11-19 09:07:55 · 6516 阅读 · 0 评论 -
软件架构(software architecture)
软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口_(计算机科学)来实现。软件体系结构是构建转载 2014-11-19 09:27:27 · 4422 阅读 · 0 评论 -
OSGi 入门篇:模块层
1 什么是模块化模块层是OSGi框架中最基础的一部分,其中Java的模块化特性在这一层得到了很好的实现。但是这种实现与Java本身现有的一些模块化特性又有明显的不同。 本文介绍模块层的一些基础知识,以及OSGi联盟在设计模块层时所做的一些考虑。OSGi标准走到今天,并不是凭空想出来的,它的产生恰恰是为了弥补之前一些技术的缺陷。模块化其实就是计算机科学中常见的一个概念: “将一个大型转载 2014-11-24 10:56:41 · 1027 阅读 · 0 评论