
系统设计 - System Design
AlexanderHu
京东运营体系移动研发部门创建人,负责京东物流仓储、配送、大家电和客服售后、乡村电商5大条线移动互联网业务的产品设计和研发工作。之前作为研发负责人创建京东全国物流配送“青龙”系统。入选京东技术十年50牛人。多次代表京东参与行业技术和业务交流,扩大京东研发对外影响力。Sourceforge.net 上2个开源项目的发起人。国内第一部 jBPM 工作流技术图书唯一作者(电子工业出版社出版,被多家培训机构选为指定教材)。在工作期间获得7项技术专利,带领团队申报数十项技术专利。具有掌控互联网高吞吐量应用、复杂业务逻辑企业级应用以及移动客户端应用的产品设计、技术研发和团队管理经验。
展开
-
23种经典设计模式的java实现_3_桥接模式
桥接模式的适用:你不希望在抽象和它的实现部分之间有一个固定的绑定关系。例如:程序的实现部分在运行时需要被选择或者切换。类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。这时Bridge模式使你可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充。对一个抽象实现的修改需要对客户不产生影响,即客户的代码不必重新编译。有许多类要生成。这种情况下你必须将一个对象分解成两个部原创 2007-06-22 17:21:00 · 3621 阅读 · 12 评论 -
幂等性及5点注意事项
幂等性——是系统的接口对外一种承诺(而不是实现),承诺只要调用接口成功,外部多次调用对系统的影响是一致的。声明为幂等的接口会认为外部调用失败是常态,并且失败之后必然会有重试。查询、删除一般是幂等性的更新、插入视情况而定吧对于BS应用而言,要注意Post方式对幂等性的影响,至少要阻止刷新时重复提交推荐Get方式Rest风格的SOA架构,来保证幂等性对于Schedul(计划任务、定时任务、Worker原创 2012-08-03 18:19:36 · 12413 阅读 · 1 评论 -
一些你需要知道的Java编程代码规范
首先,强烈推荐你先参考Sun官方的Java代码/编程规范: http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html 你可以打破以上的任一规则,不过一定要有个好理由,并且记录下来。永远,永远,永远不要在没有记录堆栈跟踪信息(stack trace)或是重新抛出异常的情况下捕获异常,俗称“吃掉异常”。用log.原创 2009-11-21 18:57:00 · 2128 阅读 · 1 评论 -
编程的本质
程序员们每天为之忙碌而编写的程序归根到底是由什么组成的?——数据和算法。想想是不是这样? 那么,究竟是“数据/结构”重要?还是“算法”更重要呢?思考一下我们为什么要编写程序?——处理数据。不是么,无论是存储和读取、发送和接收、监听和订阅、服务端与客户端,我们翻来覆去,玩的就是一堆“数”。因此可以想象,如果程序建立在一个不佳的数据模型之上,改进的成本将远远大于建立在不原创 2009-08-17 15:31:00 · 1698 阅读 · 1 评论 -
什么叫系统的可扩展性?
看是否符合以下2点:简单的增加服务器数量即可提高系统的吞吐量等性能指标。支持单点登录。注意不是“应用程序”的可扩展性。原创 2009-04-27 23:18:00 · 3374 阅读 · 1 评论 -
面向对象的设计和开发不得不说的一些事
好歹干软件架构设计和开发也有几个年头了,自诩对四人帮(Gang of 4)那23种套路中的至少十几种也能变着法、甚至变着“态”的把它们用在最适合出现的地方。作为开发者,其实这些年头干的比较多的事还是看代码,看Java代码,看别人的Java代码:顶级高手的代码,比如Rod Johnson的Spring代码,简单的说就是在实现复杂的功能的同时具有良好的效率和开放性、扩展性。不过,这句话说起来简单,原创 2008-01-09 20:52:00 · 1986 阅读 · 2 评论 -
23种经典设计模式的java实现_1_抽象工厂模式
抽象工厂模式的适用:一个系统要独立于它的产品的创建、组合和表示时。一个系统要由多个产品系列中的一个来配置时。当你要强调一系列相关的产品对象的设计以便进行联合使用时。 当你提供一个产品类库,而只想显示它们的接口而不是实现时。示例说明:有三种抽象的产品:墙、门、房间。对这三种抽象产品有两组具体实现:卧室和起居室。那么,我们的抽象工厂就可以根据客户的指令(即调用参数)去生产卧室和起居室的房间(墙和门原创 2007-06-13 13:45:00 · 1760 阅读 · 2 评论 -
23种经典设计模式的java实现_2_适配器模式
适配器模式的适用:你想使用一个已经存在的类,而它的接口不符合你的需求。你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口,那么对象适配器可以适配它的父类接口(仅适用于对象Adapter)。示例说明:这个例子模拟了对一个特定组织系统——Organiza原创 2007-06-15 10:54:00 · 1422 阅读 · 0 评论 -
23种经典设计模式的java实现_5_职责链模式
对于职责链模式,一般是这么定义的:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,即——将这些对象连成一条(处理)链,并沿着这条链传递该请求,直到这条链结束同时有一个对象处理它为止。最经典的职责链模式应用就是JavaEE规范中web.xml的filter了,filters按照配置的顺序,依次处理根据其mapping条件过滤得到的web请求(response)/应答(re原创 2007-07-28 16:27:00 · 5712 阅读 · 2 评论 -
如何利用回调模式去解决问题
在软件的设计/实现过程中,我的同事经常会遇到这样一个场景:需要在一个可重用的、大范围的方法中调用若干个不确定的方法或一系列不确定的操作。在这种情况下,我经常建议他们使用“回调”这种技巧去解决问题。回调模式和接口、抽象这两个概念是紧密相关的,在这里简要的说明一下。接口(Interface):说明类该做什么而不指定如何去做。抽象(abstract)的道理也大致如此。回调,这个模式一般是这么原创 2007-07-19 22:52:00 · 2381 阅读 · 0 评论 -
23种经典设计模式的java实现_4_生成器模式
23种经典设计模式的java实现之生成器模式在这里我们使用一个构建房屋的场景来说明“生成器”——builder模式的使用。这个模式的定义是:1、当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。2、当构造过程必须允许被构造的对象有不同的表示时。简单的说,它有点像工厂模式,但是最终生成“产品”的是Director而非Factory,Director可以使用的bu原创 2007-06-30 12:08:00 · 2198 阅读 · 0 评论 -
平等对待第三方的“微内核+插件”设计思想
“微核+插件”体系组装。但凡有生命力的产品,都是在扩展性方面设计的比较好的,因为没有哪个产品可以覆盖所有需求,对于开源软件尤其如此。所以,产品只有具有良好的扩展性,允许用户或第三方参与进来,进行二次开发,才能保持生命力。怎么样的扩展性才是最好的?通常来讲,就是没有任何功能是硬编码的,所有的功能都可被用户替换。那要如何才能做到这样?一个重要的原则就是:平等对待第三方。也就是凡是原作者能实现的功能,第转载 2014-07-31 11:14:47 · 7896 阅读 · 0 评论