与第三方系统交互的方案设计 系统与第三方交互时,一般采用Http(s)+xml或webservice。有时出于各种考虑,我们不希望采用Axis等重型手段,相反地,希望以轻量级的方式来实现。但是轻量级的实现方式需要我们手工编写各种代码,随着系统的复杂对提高,我们将遇到各种问题,比如:第三方的API7发生变化;本系统的重复代码块增加;Copy的代码散落各处;各种配置信息无法统一起来;业务的扩展需要调用更多第三方API。...
利用Specification模式检索缓存数据 随着缓存技术的引入,网站前台的检索速度大大提高,随之而来的一个问题是检索。通常的经验都是写几个Sql语句,但是现在不同,我们需要从内存中检索数据。如何解决呢?我的方式是使用Specification模式。 Specification模式 把 每一个检索条件转化为对象。我们可以对象进行组合,然后对内存数据进行筛选,这样就可以达到目的。 为什么要采用Specifica...
Map的应用(持续更新) 最近在工作中,用到的Map的特性,与大家分享一下: 1、进行字母频次统计,词组统计等等public class Statistic { private Map<String,Long> statistic= new HashMap<String,Long>(); public void add(String key,Long value...
发一个在学习Junit3.81源码时的小demo 此代码,是在阅读unit3.81源码时写的,虽然有些粗糙,但是可以理解junit的设计思想:) 一、类得基本介绍 1、command包 a、command,抽象命令类 b、SingleCommand,单一命令 c、CommandSuite,复杂命令 ...
至2011年7月的的读书目录 好读书,视野才能开阔。分享我读过的书籍:) 一、领域模型 1、领域驱动设计。我无法评价他,因为我为它着迷。 2、UML彩色建模。业务分析的好书,简约而不简单。如果有业务建模经验话,你会爱上他 。 3、领域驱动实战2008。感觉亏大了,不好。只记得【工作单元】。 3、think in u...
工作第一年 到了7月,说明我已经毕业了一年了,工作了一年。一年不算短,可以发生很多事情,许许多多。 记得在2009下半年的求职期间,不断地被鄙视,被拒接,直到11月才找到工作。 记得最深的一次,就是在支付宝面试时,被面哭了。说起来很是惭愧,不过很感谢那位面试官,因为他给我指明成长途径:如果不能在优秀的团队里工作,就找到一位高手作为你的师傅;如果不找到师傅,就自学,阅读源码就是...
在线交易模型的4p(下) 一、 product 产品可以定义为:“人们向市场提供的能满足消费者或用户某种需求的任何有形物品和无形服务”【 http://baike.baidu.com/view/1214.htm 】。 这与 Source 区别是产品是面向市场,针对特定人群。举个例子,以深圳世界之窗为例。在深圳世界之窗,人们可以游览景点,观看演出等等。然后华侨城公司决定把这些服务提供给市场,于是针对儿童...
用“主线+事件”的方式来编写代码 业务是主线和事件组合。 主线是什么?主线就是在完成用户的业务目标时,所涉及到的活动。 事件是什么?在每一个活动中,相关事物的状态变化。 回顾以前的编程经验,我们关注活动,忽略事件。 举一个常见的例子来说。小明在购物网站购物,进行支付并成功后,购物网站要做件事: 1 、更新订单状态, 2 、插入支付记录 3...
运用ViewObject收集信息,利用DTO传递信息 信息的处理需要经过三大步骤 收集、加工、传递。在J2EE体系中,也是如此,总的来说可以如下:收集:接受来自页面的数据,组装数据到页面,验证数据有效性,装配数据。加工:进行业务处理,产出各种数据。传递:组装数据,并转为各种格式,传送到目的地。对于J2EE...
在线交易平台---配额管理模块的设计 1、 配额管理模块设计的思路: a、引入账户模型。通过引入账户模型,可以通过控制配额账户的活动,我们可以允许透支,可以规定额度,也可以冻结其账户。另外系统可以追溯配额的使用情况,来龙去脉。 b、引入生产者和消费者模型。配额的产生和配额的使用是两个不同的活动。我把前一种活动产生的配额叫生产配额,后一种叫消费配额。 生产配额是有...
在线交易模型的4p(上) 市场营销的就是4p,产品(product)、价格(price)、渠道(place)、促销(promotion)。这是市场营销的四大要要素,同时也是电子商务的核心。要想建立一个优秀在线交易平台,就要从这四个方面入手。对于从事电子商务的软件工程师来说,必须要了解这四个要素,这是建立领域模型的依据。围绕电子商务的4p,我...
对象转化为Xml 内部系统与外部系统对接时,需要进行数据交换,一般是采用XML格式。目前的OXM已基本满足要求,但是对于更加的复杂XMl数据,仍需要手工编写。 由于是手工编写ORM,编写风格、方式因人而异。我也尝试写一个,同时和大家交流心得。 代码说明: 1、两个类Person和Address,一个Peson有多个Address 2、使用Dom4j ...
浅淡ViewObject 的设计 如何降低页面的复杂性,如何降低页面的代码量,如何减少 JSP 页面烦人的 <IF><ELSE> 标签。方法之一就是用好 ViewObject 。 在我所在接触过的系统中,我曾经看到过全能的 ViewObject 。数据持久化需要他,业务逻辑需要他、页面展示需要他。以至于造成以下情况:...
利用Listener模式解决复杂业务逻辑 在传统的编程模型中,对数据更改是同步操作。 举一个常见的例子来说。小明在购物网站购物,进行支付并成功时。购物网站要做四件事: 1 、更新订单状态, 2 、插入支付记录 3 、编写订单日志。 4 、通知支付系统,回调成功。 在系统实现过程,我们通常采用如下代码完成这些任务 public void successToPay(Purc...
重构代码的新的体会 重构代码的过程就是发现知识,探索规律的过程。第一件事情,就是要发现隐藏在泥潭中的各种概念。然后把这些概念意义提炼出来、抽取出来。这个过程犹如发现团队所需要的人才一样。一旦发现某个概念,我们便可以了解到他们能做什么,不能做什么。第二件事情,就是观察代码在做什么事情,已超过一个屏幕的代码,其中必然蕴含着各种缺陷,当我看到一个超6屏的代码时,我就想到一个孤独的程序员,...
在线交易模型-引子 电子商务大行其道,对于技术人员来说怎么应对,关键是了解电子商务涉及到的业务活动以及要素,经分析有以下几个主题 1、电子商务的4p(上) 2、电子商务的4p(下) 3、产品描述 4、产品采购 5、商品组合 6、价格策略 7、配额管理 8、渠道分销 9、优惠政策 10、订单预定 11、订单支付...
利用Enum解决多种登陆方式 1、需要解决的问题: a、避免出现坏味道,比如过多的if,else;b、增加新的登陆方式可以减少修改成本2、为了解决以上问题,将引入以下几个关键点:a、引入Login视图对象。b、使用枚举型。3、具体实现如下。/**登陆值对象 * Date: 2010-11-24 * Time: 21:30:26 */public class Login { priv...
访问历史 的实现 最近访问历史记录的实现,废话不多说,上代码。 1、VisitRecordpublic class VisitRecord { /**标志**/ private String id; /** 标题 */ private String title; public VisitRecord(){} public VisitRecord(String id,...
枚举类在Struts2中的运用 虽然枚举类已经在jdk1.5中已经推出来,但是它的应用还不是很广泛,究竟其原因,有以下几个方面:虽然hibernate,ibatis可以支持enun,但是出于稳定性的原因,大多数公司选择旧的、稳定的版本。 前端框架strut2对enum的支持不够,无法轻松的映射枚举型,增加开发难度。...
商品分类以及统计 在卓越网首页的左边,或者当当网的左边,都有商品分类列表,并会显示旗下的商品有多少种。如何在计算机中描述?那可定是用树来表示。但要高效地完成这个功能会面临哪些问题? 1、怎么统计某一分类的商品种类 2、如果更改某一分类商品种类数量,怎么通知其他节点 3、对于非叶子节,是否要记录商品数, 4、如果增加新的商品类型,又怎么做 对于这些问题...