2013年11月8日

30. 代码实例-设计模式-回调方式使用模板方法

摘要: 1)模板类package com.jd.consume.dao.mysql;import java.sql.SQLException;import java.util.Collection;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.ibatis.sqlmap.client.SqlMapClient;/** * 批量更新数据 * @author guanpanpan * * @param */public abstract class BatchUpdate { public final stati... 阅读全文

posted @ 2013-11-08 16:39 关攀攀 阅读(255) 评论(0) 推荐(0)

27. 代码实例-spring声明式事务

摘要: (1)spring配置文件: 1 2 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 30000033 34 35 1036 37 38... 阅读全文

posted @ 2013-11-08 16:38 关攀攀 阅读(241) 评论(0) 推荐(0)

26. linix脚本启动java程序

摘要: (1)linux脚本文件: 1 #!/bin/bash 2 3 export JAVA_HOME=/opt/jdk1.6.0_21 4 export PATH=$JAVA_HOME/bin:$PATH 5 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 6 baseDirForScriptSelf=$(cd "$(dirname "$0")"; pwd) 7 LIB_CP=:""$baseDirForScriptSelf""/WEB 阅读全文

posted @ 2013-11-08 16:33 关攀攀 阅读(266) 评论(0) 推荐(0)

37.1. 数据库设计

摘要: 数据库设计从业务数据冗余程序三个角度考虑,业务来确定相关的实体,实体和表之间是有映射关系的,可以是一个表一个实体,也可以是几个表一个实体。所有的表或者对应实体或者是纯粹的关系表。考虑关系表是不是应该升级成一个实体表,要从业务上来判断,几个实体要不要合成一个实体要考虑实体的生命周期和业务含义。数据冗余是发现数据库设计问题的一个突破口,但怎么消除冗余还是要从实体之间的关系来考虑。具体来就是该不该合成一个表,还是从两个中抽离一个表,两个表再指向抽离的表等变更方式,如果从业务实体的角度可以决定,那就用业务实体来决定。有的时候业务实体会表现出两种设计都说的过去的情况,这时就要从程序开发的角度怎么简单方便 阅读全文

posted @ 2013-11-08 15:54 关攀攀 阅读(202) 评论(0) 推荐(0)

26. 23种经典模式

摘要: 对变化的封装,分离变化。创建型Abstract Factory一系列相关对象的创建。不同产品,有相同的系列。Builder同样的构建过程可以创建不同的表示Factory Method(类)子类进行实例化Prototype通过原型实例拷贝创建新对象Singleton一个类只有一个实例结构型Adapter转换接口Bridge抽象的实现分离Composite树形,整体和部分一致对待Decorator动态添加职责,有本体和装饰器实例:商品拆单,按商家,按库房,又加入按商品,metric监控等。(注意和责任链的关系)Facade子系统提供统一接口。1.了解少。2.子系统易变化Flyweight共享细粒度 阅读全文

posted @ 2013-11-08 15:51 关攀攀 阅读(349) 评论(0) 推荐(0)

27. 编程中常见的其它模式

摘要: (一)事件处理模型发布事件,轮询线程来取得事件进行处理,如Swing(二)生产消费模型线程的协作方式,用来避免无效轮询(三)回调模板模型模板方法的一种简单写法 阅读全文

posted @ 2013-11-08 15:49 关攀攀 阅读(173) 评论(0) 推荐(0)

24. 设计原则

摘要: 总的来说是高内聚低耦合,内聚是把变化点进行封装,耦合还是要有的,只是要尽量少,不同内聚点的联系方式有两种,一种就是继承,一种就是组合。组合又分为基于接口组合还是基于类组合,基于接口就可以灵活的改到聚合点的实现,只要符合接口的规范就可以。(一)抽象现实世界和程序对象之间的映射关系。不是像(相似)建模,是要对解决的问题进行抽象建模,要解决的问题是可能发生改变的,所以组织对象的时候要考虑把可能的变化封装起来。这件事很重要,怎么把现实问题一步步映射成对象,再到代码的经验,就是领域驱动建模了。(二)封装变化业务在不断变化,,想要程序可以持续使用,就要在需求变化时容易改变程序。可以把变化的东西抽成一个方法 阅读全文

posted @ 2013-11-08 15:47 关攀攀 阅读(228) 评论(0) 推荐(0)

数据迁徙经验总结

摘要: 在京东这一段时间做了很多数据的迁徙,做一些总结。(以sqlserver迁徙至mysql为例)迁徙的需求:业务数据从sqlserver迁徙至mysql,尽量减少系统停用的时间。迁徙流程:中间件接写,开启changelog原来sqlserver的读取写入统一由中间件接管,保证读写统一。中间件写入时把变更信息记录到changelog表。changelog(主键,变更主键,变更表,变更类型,状态,创建时间,修改时间),状态为0全量迁徙准备sqlserver离线库,上线全量迁徙程序,把离线库数据全量迁徙至mysql。sql插入全使用insert or update可重复执行。全量迁徙检验检验sqlser 阅读全文

posted @ 2013-11-08 15:45 关攀攀 阅读(417) 评论(0) 推荐(0)

合众天恒期间软件过程小结

摘要: (一)需求-开发-测试关系现公司很多需求在产品提出后,是否完善是个问题,在实际工作中,发现测试测试功能要从开发处问得需求,开发在开发的过程当中要承担很大的需求任务,当然开发确实要思考需求,但这不妨碍产品提出更完善的需求。建议如下:软件工程中对需求的是否合格的标准是是否可测试***需求完成后,测试使用需求文档生成测试用例用于测试,需求文档告诉测试测什么,开发告诉测试怎么测。***测试不仅仅是测试程序是否正确,同时也对对需求的完备性进行测试。注:敏捷开发中开发兼职需求,但需求依然是完备的。(二)需求调研经验1. 大领导,弄清系统的价值。以及协调相关调研工作。成果:系统目标,用例图。2. 系统用户的 阅读全文

posted @ 2013-11-08 15:43 关攀攀 阅读(193) 评论(0) 推荐(0)

多线程

摘要: CountDownLatch latch latch = new CountDownLatch(dbMax)ExecutorService executorService = Executors.newFixedThreadPool(size);executorService.execute(new UserinfoRunable(dbNo, tableNo));executorService.shutdown();try { latch.await();} catch (InterruptedException e1) { log.error("threadLatch.await( 阅读全文

posted @ 2013-11-08 15:38 关攀攀 阅读(352) 评论(0) 推荐(0)

导航