Java设计
u010805542
这个作者很懒,什么都没留下…
展开
-
能力成长模型
最近看了温伯格1986年出版的《技术领导之路》,很老的书,讲的都是一些浅显但容易被忽视的道理,就像第一章,讲作者自己玩弹子球的水平提升,时间长了,以为自己的水平提升像下图这样,每年都在逐步提升:[img]http://dl.iteye.com/upload/attachment/0067/7975/f76bda30-3ea0-3297-ae50-28330ba71e9d.jpg[/...原创 2012-05-09 00:28:01 · 341 阅读 · 0 评论 -
EBay SOA
EBay SOA PPT原创 2010-02-23 18:23:30 · 159 阅读 · 0 评论 -
关于支持RESTful的思考
现在基本上所有的MVC框架都叫喧着支持RESTful([url]http://zh.wikipedia.org/wiki/REST[/url]),最近写的Struts(for)RCP([url]http://struts4rcp.googlecode.com[/url])也来凑下热闹,这里讲下基本思路,作个参考。REST的一些要求,如:1. 客户端和服务器结构 2. 连接协议具...2008-12-04 21:49:40 · 167 阅读 · 0 评论 -
客户端设计回顾
接前面几篇回顾性文章,再说说刚做完项目中客户端框架的设计,客户端在项目初期就选择了EclipseRCP,当时给的理由是Swing太慢,现在项目做完了,没人再说这句话了,因为EclipseRCP更慢,尤其是表格控件,折腾了几个月,客户端的设计不是由我主导的,只是后期我也加入修复问题,因客户端的设计人员频繁更换,并且时间伧促,加上会EclipseRCP的开发人员又少,最后得到的...2008-11-29 20:29:28 · 402 阅读 · 0 评论 -
完成Struts(for)RCP的初始版本
经常前段时间的构想:[url=http://javatar.iteye.com/blog/258066]RCP数据传输模型回顾[/url][url=http://javatar.iteye.com/blog/264509]B/S与C/S统一控制器[/url]最近,终于实现完成了0.1版本。项目名称:Struts(for)RCP项目地址:[url]http://strut...2008-11-25 23:23:07 · 119 阅读 · 0 评论 -
每次设计,你都会从什么问题想起?
最近加入一个新的平台项目,看过基本用例后,在YY设计方案时,头脑中第一反应回答的问题:1. 中心领域模型是什么?2. 微核心是什么?3. 给用户的API是什么?4. 给扩展者的SPI是什么?5. 扩展者可否基于微核心替换任意位置上的实现?6. 服务域,实体域,会话域各是什么?7. 客户端,服务器端各自关心什么?8. 所有涉众都考虑周全了?9. 有哪些需要特殊化处...原创 2009-05-25 00:53:20 · 135 阅读 · 0 评论 -
服务化基础设施
服务化,也可以叫SOA,但在我们还是尽量避免用这个词,因为它被炒得太热,一味的套SOA的概念,容易迷失原有的方向。要向服务化推进,当然就需要搭建一些基础设施,来协助这个过程的实现,那都有哪个方面的工作要做呢,这里把我暂时想到的列一列。1. 服务的定义服务提供者要怎么暴露一个服务?服务消费者要怎么引用一个服务?肯定需要一个声明式服务定义框架,可以用注解,描述文件,...原创 2009-11-15 23:11:37 · 219 阅读 · 0 评论 -
治理与管理的区别
通常来说,治理意味着建立和执行工作组为了一起工作而一致同意的工作指南。具体来说,治理包括以下方面:* 建立授权的责任链。 * 度量评估的有效性。 * 指导组织建立满足其目标的策略。 * 控制机制以确保遵从性。 * 进行沟通以使所有相关方都获得通知。 * 治理确定谁负责制定决策,需要制定什么决策,以及使决策制定保持一致的决策。治理不同于管理。治理规划需要制定什么决...原创 2009-11-15 22:13:53 · 2691 阅读 · 0 评论 -
轻量级MVC标准
看到标题,估计有人就开始想吐了,没关系,你可以先吐完再看,现在MVC框架多如牛毛,没必要再重复发明轮子了,要声明的是,这里不是想要发明轮子,也没那个闲工夫去发明轮子,而是看到这么多MVC框架模样都差不多,想统一接口,减少迁移成本,Java世界里,最喜欢的就是定标准,然后就是一大堆的实现,估且这里也当一个标准来搞,纯属娱乐的标准。注:下面的定义都是狭义的,用于限定本次要解决的问题域,你也可以...2009-05-07 22:26:26 · 156 阅读 · 0 评论 -
服务化
最近忙于服务化改造的一些工作,目标很简单,就是把一些核心业务服务化,做一些基本的SOA治理,一般公司业务多了都有这个想法,但开始治理时,通常业务已经积重难返,说起简单的一件事,做起来却不那么容易,我们的改造计划都排到2011年了,服务框架的实现本来基于OSGi容器,UAT时感觉太冒进,改为做适配可同时运行到Servlet容器,第一个改造的是比较稳定的用户信息模型,...2009-11-01 14:20:50 · 159 阅读 · 0 评论 -
有趣的智能体
最近,老姐在做金融体系仿真的课题,让我帮她下载Swarm仿真平台和JADE智能体开发平台,一看是Java的,就搜索了一把,看起来还不错,很有借鉴意义。它的主要实现结构,有点像生命周期管理容器(像osgi, jmx等),以松耦合管理各元素,而它管理的元素就是“智能体”。“智能体”注册在“环境”中,“环境”类似于名称服务(像jndi, ldap, uddi等), 用于注册及查找各智能体,以及为...2008-11-17 00:07:03 · 213 阅读 · 0 评论 -
模块划分方式回顾
模块的划分,一直是争议比较大的地方,各种方案相去甚远,模块定义,范围,大小,分包,装配各不相同。根据不同的产品,项目,可能都会有不同的设计。如果一个公司自用的快速开发平台,它的模块应该如何设计?简单确立一下设计目标:1. 低耦合高内聚 2. 模块复用度高3. 模块可扩展性强4. 模块自描述,自包含5. 模块自发现,自装配6. 模块以业务为中心7. 模块易...2008-11-13 23:49:45 · 534 阅读 · 0 评论 -
C/S请求与B/S请求统一MVC控制器
J2EE中基于B/S的MVC框架不少,设计思想也在不停的进步,从Struts1.x开始,每个人都站在巨人的肩膀上,一步一个脚印。MVC框架主要以控制器为中心,简化模型与视图的交互过程,控制器要做哪些事?1. 页面流控制,也就是一级级forward的处理。2. 接收数据,从表单或URL上传来的数据,需要透明化接收(即:不能让业务逻辑看到接收过程)。3. 呈现数据,将数据传到页面,...2008-11-12 00:55:10 · 332 阅读 · 0 评论 -
平台开发基础原则制定
最近在构想一个新的内部使用平台,发现首先要确立一些的根本性的原则,作为设计指导,使各模块设计人员都能保持一致的方向,只有先确定了这些基础原则,在开发决策时,大家才不会争论不休,包括:1. 强类型,还是弱类型?Bean对象,还是Map集合?(1)Map的好处在于:可以统一数据模型,并作为上下文或数据总线处理,可以不用生成代码,就能对CRUD等基本功能,作运行时封装,适合于快速开发。(2)...2008-11-11 10:17:29 · 254 阅读 · 0 评论 -
关于Java泛型违反Liskov原则
Java5 增加的泛型语法,使类型模板的应用得到了提升,但它的运行期擦拭的做法(为向前兼容),令人诟病,使得一个Map集合,通过反射拿到的集合元素的泛型类型,不是实际使用类型,而是K和V(字节码编译期保留)。另一个有争议的地方是:泛型违反了里氏代换原则(Liskov's Substitution Principle),即:子类应该在任何地方都能替换父类。假设一个函数:[code...2008-11-10 17:00:10 · 191 阅读 · 0 评论 -
实现一个针对RCP应用的类似Struts的轻量级MVC框架
趁着公司项目收尾,有些空闲,写了一些回顾性的文章:[url]http://javatar.iteye.com/blog/258066[/url]基于这篇文章的思考,周未写了一个简单的实现框架:[url]http://struts4rcp.googlecode.com[/url]服务器端已完成,包括:请求接收,序列化策略,Action实例化工厂策略,拦截器链,异常转换等。客户端也...2008-11-09 00:29:20 · 148 阅读 · 0 评论 -
服务器端分包结构回顾
现在很多的Java应用都采用Eric在《DDD》中提出的域分层结构,所以大部分项目看起来像下面这个样子分包:actionservicedaodomainexceptionutil最近做的这个项目也采用了类似的结构,其中service和dao的关系是一个老生常谈的问题,dao只对数据访问进行隔离,比如:Hibernate过时了,我们需要按一套全新的持久化方...2008-10-26 16:06:35 · 235 阅读 · 0 评论 -
Scaling Architecture
[list][*] Scaling Second Life: [url]http://perspectives.mvdirona.com/2010/02/07/ScalingSecondLife.aspx[/url][*] Scaling Google: [url]http://perspectives.mvdirona.com/2009/10/17/JeffDeanDesignLes...原创 2010-02-25 10:31:46 · 106 阅读 · 0 评论 -
谈谈扩充式扩展与增量式扩展
转于自己在公司的Blog:[url]http://pt.alibaba-inc.com/wp/experience_760/generic_vs_composite_expansibility.html[/url]我们平台的产品越来越多,产品的功能也越来越多,平台的产品为了适应各BU和部门以及产品线的需求,势必会将很多不相干的功能凑在一起,客户可以选择性的使用,为了兼容更多...原创 2010-06-12 19:46:44 · 465 阅读 · 0 评论 -
Netty内存泄露
转于自己在公司的Blog:[url]http://pt.alibaba-inc.com/wp/experience_1348/netty-nio-direct-memory-leak.html[/url]在测试中发现,当不停的开关Netty的NioClientSocketChannelFactory(比如大量连接失败重连等情况下),存在Direct Memory泄露。测试代码:...原创 2011-08-02 20:09:11 · 903 阅读 · 0 评论 -
以HTTL为例讲讲模块分包&领域模型&扩展框架
注:该博客内容已加入 [url]http://httl.github.io[/url] 文档。HTTL源代码参见:[url]https://github.com/httl/httl/[/url]先来看一下HTTL的类结构设计,类图如下:[img]http://dl2.iteye.com/upload/attachment/0124/5952/5ef25bab-8b15-37...原创 2011-10-09 20:08:24 · 440 阅读 · 0 评论 -
Grizzly和Netty以及Mina简单性能对比
转于自己在公司的Blog:[url]http://pt.alibaba-inc.com/wp/experience_1336/grizzly-netty-mina-performance.html[/url]最近在服务框架中尝试增加了Grizzly传输集成,简单测试后发现,TPS(每秒处理请求数)略低于Netty,略高于Mina,相差并不是很大,但TPS比Netty稳定很多(每秒方差小...2011-07-17 02:48:41 · 340 阅读 · 0 评论 -
RPC框架几行代码就够了
转于自己在公司的Blog:[url]http://pt.alibaba-inc.com/wp/experience_1330/simple-rpc-framework.html[/url]因为要给百技上实训课,让新同学们自行实现一个简易RPC框架,在准备PPT时,就想写个示例,发现原来一个RPC框架只要一个类,10来分钟就可以写完了,虽然简陋,也晒晒:[code="java"]...2011-07-14 00:34:43 · 640 阅读 · 0 评论 -
动态代理方案性能对比
转于自己在公司的Blog:[url]http://pt.alibaba-inc.com/wp/experience_1054/dynamic_proxy_performance.html[/url]因服务框架需要用动态代理生成客户端接口的stub,所以做了一下性能评测,动态代理工具比较成熟的产品有:JDK自带的,ASM,CGLIB(基于ASM包装),JAVAASSIST,使...原创 2010-11-17 21:38:06 · 285 阅读 · 0 评论 -
防痴呆设计
转于自己在公司的Blog: [url]http://pt.alibaba-inc.com/wp/experience_1014/design-for-dummy.html[/url]最近有点痴呆,因为解决了太多的痴呆问题,服务框架实施面超来超广,已有50多个项目在使用,每天都要去帮应用查问题,来来回回,发现大部分都是配置错误,或者重复的文件或类,或者网络不通等,所以准备...原创 2010-11-05 18:58:24 · 127 阅读 · 0 评论 -
负载均衡扩展接口重构
转于自己在公司的Blog:[url]http://pt.alibaba-inc.com/wp/experience_1003/loadbalance_refactor.html[/url]项目中的一个重构的过程及理由,用于知会团队成员,在这里备一个。RPC远程调用框架中有很多可选的负载均衡策略,比如:随机,轮循,最少连接等等,这个时候就需要一个SPI扩展点,为后续增加新...原创 2010-11-05 18:53:57 · 186 阅读 · 0 评论 -
分布式服务框架常被质疑的价值
转于自己在公司的Blog:[url]http://pt.alibaba-inc.com/wp/experience_879/the-value-of-the-distributed-architecture.html[/url]每次分享分布式服务框架,讲到带来的价值时,像什么可靠高性能,服务治理等等一些常规价值,大家还能听我们吹吹,但有几条不明显的价值经常被质疑,所以写...原创 2010-11-05 18:52:57 · 109 阅读 · 0 评论 -
Hessian3.2.1在序列化32.5k字符串时的问题
转于自己在公司的Blog:[url]http://pt.alibaba-inc.com/wp/experience_929/hessian-big-string-serialize-problems.html[/url]网站出现比较奇怪的现象,线上总有些Offer信息反序化时出错,而测试环境却没有出现过,通过远程调试线上环境,发现Hessian3.2.1在处理0x33标记时,会...原创 2010-11-05 18:49:26 · 334 阅读 · 0 评论 -
配置设计
转于自己在公司的Blog:[url]http://pt.alibaba-inc.com/wp/experience_1182/sofeware-configuration-design.html[/url]Dubbo现在的设计是完全无侵入,也就是使用者只依赖于配置契约,经过多个版本的发展,为了满足各种需求场景,配置越来越多,为了保持兼容,配置只增不减,里面潜伏着各种风格,约定,...原创 2011-03-09 23:41:57 · 179 阅读 · 0 评论 -
[转]HTML5设计原理
Jeremy Keith在 Fronteers 2010 上的主题演讲今天我想跟大家谈一谈HTML5的设计。主要分两个方面:一方面,当然了,就是HTML5。我可以站在这儿只讲HTML5,但我并不打算这样做,因为如果你想了解HTML5的话,你可以Google,可以看书,甚至可以看规范。实际上,确实有人会谈到规范的内容。史蒂夫·福克纳(Steve Faulkner)会讲HTML5与可访...原创 2011-03-09 22:57:14 · 166 阅读 · 0 评论 -
使用Map参数的Webx3扩展
因Webx3是开源的,所以把这个简单的Webx3扩展发在博客上。很久没弄Web框架,因要将服务框架的控制台换成Webx3,就折腾一下,一种使用Webx3的方式如下:[b]1. 注入HttpServletRequest[/b][code="java"]public class ProvidersAction extends BaseAction { ...原创 2011-08-28 02:10:27 · 173 阅读 · 0 评论 -
魔鬼在细节中
转于自己在公司的Blog:[url]http://pt.alibaba-inc.com/wp/experience_1301/code-detail.html[/url]最近一直担心Dubbo分布式服务框架后续如果维护人员增多或变更,会出现质量的下降,我在想,有没有什么是需要大家共同遵守的,根据平时写代码时的一习惯,总结了一下在写代码过程中,尤其是框架代码,要时刻牢记的细节,...2011-05-24 14:50:44 · 249 阅读 · 0 评论 -
Dubbo扩展点重构
转于自己在公司的Blog:[url]http://pt.alibaba-inc.com/wp/dev_related_1283/dubbo-extension.html[/url]随着服务化的推广,网站对Dubbo服务框架的需求逐渐增多,Dubbo的现有开发人员能实现的需求有限,很多需求都被delay,而网站的同学也希望参与进来,加上领域的推动,所以平台计划将部分项目对公司...原创 2011-05-12 22:09:51 · 313 阅读 · 0 评论 -
一些设计上的基本常识
转于自己在公司的Blog:[url]http://pt.alibaba-inc.com/wp/experience_886/software_design_general_knowledge.html[/url]最近给团队新人讲了一些设计上的常识,可能会对其它的新人也有些帮助,把暂时想到的几条,先记在这里。[b]1. API与SPI分离[/b]框架或组件通常有两类客...原创 2010-07-05 19:28:32 · 246 阅读 · 0 评论 -
Hessian序列化不设SerializerFactory性能问题
转于自己在公司的Blog:[url]http://pt.alibaba-inc.com/wp/experience_1089/hessian-set-serializerfactory-performance.html[/url]服务框架全面重构后,因换了通讯协议,采用Magic头识别新旧版本,性能测试发现,在兼容旧版本模式下,性能下降10倍,原来一个1ms到2ms的请求,现在...原创 2010-12-27 11:38:40 · 457 阅读 · 0 评论 -
RCP数据传输模型回顾
最近在做的项目,是一个C/S和B/S混合的项目,我主要负责设计开发框架部分,最开始设计时,因时间仓促,没有细想,就草草上阵了,现在项目快结束了,回过头来想想,还是有很多地方可以完善,这里说一下数据传输这一块。因项目中B/S使用的是Struts2,所以C/S也通过Struts2提供的拦截器和Result扩展点进行了适配,使得C/S数据传输序列化与反序列化对于业务逻辑透明化,目的是...2008-10-26 10:36:02 · 689 阅读 · 0 评论 -
模块自包含部署
自动部署方案收工, 达到目标: 项目分成几十个模块和六个子系统.开发以模块为单位, 模块开发完后都被打成jar包(包括jsp,图片,js,css等全部放入jar包).模块与子系统不关联, 可以放入任何子系统.子系统只用于部署(逻辑划分), 最终打成war包.将模块的jar包放入(任意)子系统的lib目录下即可访问, 不需要作任何配置.如:将模块aaa.jar放入子系统x...2008-04-12 20:15:40 · 180 阅读 · 0 评论 -
借鉴其它领域的设计原则
工作中,我们的设计理念是否应该超越软件的狭圈?相对于其它领域,软件还是新生的,要向老一辈学习才是。设计模式本身就起源于建筑学,算是几千年思想的沉淀。呵,我先抛砖引玉,如果你有更多其它领域的设计原则/模式,不妨跟帖。-----------------单片机硬件系统设计原则 一个单片机应用系统的硬件电路设计包含两部分内容:一是系统扩展,即单片机内部的功能单...2007-06-21 15:56:06 · 234 阅读 · 0 评论 -
[转]Java在Interface方面的缺陷
转自: http://blog.csdn.net/alexjames_83/archive/2005/04/14/347726.aspxOO设计中有一个重要原则:结构(mechanism)与策略(Policy)分离。Interface是实践这一原则的重要途径。从概念上将,Interface用来扮演使用者与实现者之间的契约(contract)。我们使用Interface来定义一组Ab...2007-06-21 15:36:06 · 115 阅读 · 0 评论 -
[转]契约设计
DbC 元素先验条件。针对方法(method),它规定了在调用该方法之前必须为真的条件。后验条件。也是针对方法,它规定了方法顺利执行完毕之后必须为真的条件。不变式。针对整个类,它规定了该类任何实例调用任何方法都必须为真的条件。 DbC 六大原则 区分命令和查询。将基本查询同派生查询区分开。 针对每个派生查询,设定一个后验条件,使用一个或多个基本查询的...2007-06-14 13:17:50 · 158 阅读 · 0 评论