`
文章列表
     从UML关系的角度去审视,类之间的关系,可以从结构上去判断,但是这只是一个参考,大多数情况下还要看业务逻辑上的意图。      常见的结构一个类中方法的形参是另一个类,一般是依赖关系。       但是,同样是一个类以属性的形式注入到另一个类中,如果是user-a的关系,比如人和斧子,人利用斧子,这显然是依赖关系,我们通常在spring中配置依赖关系,通常是一个service使用另一个service的接口。       一个类作为另一个类的属性,有可能也是关联或者聚合的关系。比如客户和订单,是一对多的关系,客户可以有多个订单,从编程实现上可以表现为属性的形式。比如飞机场和 ...
贫血模型与充血模型的讨论很多了,贫血模型是指建立的模型只有getset方法,只有属性没有行为,理想的领域模型是domain中包含大多数业务逻辑,service起到门面的作用,并且放置事务,如果采用贫血模型,现实中我们还是采用贫 ...
什么是好的代码? 以下是我的一点感想,可能回答不完整,欢迎大家补充。   好的代码一定要有好的设计和规范来保证。仅以此篇来与项目组的同事们达成共识,在编程实现中考虑这些问题,并在代码检查中贯彻下去,这才是真正的目的。   这些条条框框大家说起来可能都懂,但是不是将这种思想真正的印记在脑子里,贯彻在行动上,产出的代码是不是能成为好的代码,这是一个素养问题,与程序员平时的   积累、思考有关。   (1)代码粒度合适    每个类包含的方法合适,每个方法包含的代码量合适,而非满屏一个方法。切实的方法是对大的方法类,有一定的敏感性,书写短小精悍的代码。怎么创建粒度合适的代码呢?设计 ...
ClassA=function(){ this.a='a'; this.b='b'; this.method=function(){ alert(1) } } ClassA.prototype.method=function(){ alert(2) } var a=new ClassA(); a.method();    这时候会alert(1) 还是alert(2)呢??答案是alert(1)      JS中的方法会首先在实例中查找方法method,如果没有在父类中查找,如果没有在原型中查找。      我们定义JS ...
http://www.iteye.com/topic/517835?page=2   代理模式通常是对原有对象的控制,不会增加新的行为,比如说原来干什么还是干什么,常见的比如cglib加上事务机制,但是没有增加新的行为,原有的服务未变。但是装饰模式通常会加上新的行为,而且行为可以动态进行组合,可以有任意顺序,比如给墙刷颜色,先刷底色,再刷红色,再刷绿色,也可以先刷底色,再刷绿色,再刷红色。      代理模式和装饰模式都可以构造成在新类中引用对原有类,构成原有类的委托,这样就可以对原有类进行控制了,可以加新的行为,也可以加上其他控制。   不过有一点疑问,代理者和被代理者是聚合关 ...
      金融机构中存在大量的金融产品,这些产品有很多级层次关系。形成了树形的结构。以往这种树形结构的存储方式采用PARENT_NODE的方式进行存储,可以利用oracle的递归函数查询一个节点的所有上级或者下级节点。 数据示意图如下:        问题1:树形结构的层级关系不定,对任意级别的节点进行树形结构的汇总。如对A、B、C节点进行汇总数据,但是选择A、B、C不定所以不能把sql写死,比如先汇总C再汇总B。可以利用oracle的CONNECT_BY_ROOT,得到每个节点的根节点,这样就可以按照root节点进行group by了。      select level, conn ...
以下是部分引用《DB2数据库性能调整和优化》,对于oracle也是这三种方式,这三种方式出现在执行计划中,因此十分有必要搞清楚内在算法原理。   对于多表的join一般是采取先join2张表,然后在join下一张表。     1、NestLoops          相当于2个循环,通常是在有索引时进行。 在嵌套循环连接中,将扫描第一个(或外部)表,以查找满足查询规则的行。对于在外部表中找到的每一行,数据库服务器将在第二个(或内部)表中搜索其相应的行。是通过索引扫描还是通过表扫描来访问外部表则取决于该表。如果有过滤条件,数据库服务器首先会应用它们。(也就是说where或者on条件 ...
还是按照敏捷的思想不到非常需要这个文档就不写这个文档,UML图也是一样。   但是我发现使用UML把设计意图表达出来 第一非常清晰。   第二容易发现设计的问题和逻辑的缺漏,比如实体间的关系,反正图上就这些实体,那么我们一一检查两者关系好了。   我个人进行设计、交流的时候使用UML,通常是2个或者多人,每个人先有自己的想法然后边讨论,边画图,图也画好了,设计也出来了,做到非常清晰,并且可以作为以后工作交接、备忘的设计文档,如果以后有改动,就把图拿出来,在上面修改,这样也做到了设计与文档同步。我不太建议用UML生成代码,我很推荐headfirst 设计模式中的UML,只要能清晰地说 ...
在企业级的应用中,我个人还是认为向spring靠拢,使用unchecked expcetion,毕竟系统中内部调用是相对封闭的,你可以进行控制,而且一次处理就够了,没必要在系统中各层都是异常处理代码,耦合严重。 如果你做个框架或者就是供外部系统调用的,必须让调用者知道发生了什么事情,你无法处理,那么就使用checked expcetion。 另外,spring中如果在事务中抛出了checkedException,spring的事务管理默认是不进行回滚的,必须进行声明,所以如果使用spring还是使用checkedException.
  好的设计的特点:高内聚、松耦合、封装、单一职责、可扩展、易读。这些设计的要求可以通过设计模式来解决。   设计模式只是为了达到良好设计的一个方法。按照敏捷的思想,简单设计是目标。不要臆想未来的可能而使 ...

ETL点滴

    博客分类:
  • ETL
    ETL首先会有一个数据抽取的过程,将其他数据源的数据抽取到本地库中。       考虑到安全因素,我们不会对其他系统的表进行运算,我们只是抽取系统需要的字段,将数据load到本系统库中。
问题:流程如何终止?         配置文件使得流程转到最后一个action,但是OS_WFENTRY中的state始终为 ACTIVATED,即激活状态,OS_CURRENTSTEP中将会存在大量的记录,而无法清除,并move到历史表OS_HISTRORYSTEP中。           解决方法:      结束一个流程的配置方法有2种      (1) 令action finish属性为true      (2) 创建一个无任何action的step      源码中可发现这两种方案都可以使得工作流的State为Completed --4 完成 ,且已经测试成功。OS ...
   OSWorkflow比起JBPM是比较低级的工作流,很多功能需要开发,但是非常灵活,对比较简单的流程,如商业银行绩效考核中的帐户归属流程、定性考核流程是比较适合的。      在使用过程中,项目组发现了一些问题,现总结如 ...
大数据量导出Excel可以采用POI、JXL等等开源框架。目前,在项目中采用的是POI。   客户要求导出5w条数据,考虑到并发,这对于系统内存是个挑战,系统使用tomcat,据说tomcat的jvm内存只能升级为2g有待考证。   在网上google了半天,将结果总结如下:   1、可以采用分批导出,从IBatis取出数据后,List分为几个subList,或者直接分页多次查出集合,然后传入excel接口。   (1)如果只为一个sheet页,需要记录结束行,关闭流,保存文件后,会使jvm可以回收某些内存(只是可以回收,而非立刻回收)。然后再重新打开该文件导入数据。 (2)也 ...
package com.resoft.prophet.util; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.util.ArrayList; import java ...
Global site tag (gtag.js) - Google Analytics