ALL is Well!

敏捷是一条很长的路,摸索着前进着

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  30 随笔 :: 23 文章 :: 71 评论 :: 0 Trackbacks

2010年9月26日 #

     摘要: 快速排序的算法思想:
快速排序采用了分治的策略,将原问题分解为若干个规模更小但结构与原问题相似的子问题。用递归方法解决子问题,然后将这些子问题的解组合为原问题的解。
  阅读全文
posted @ 2011-04-09 17:37 李 明 阅读(2059) | 评论 (1)编辑 收藏

     摘要: 在项目中实现了一个工具(独立运行的Java工程,打成jar包后 通过 java -jar **.jar 执行的。),该工具通过配置能够实现一些业务功能,
并且该工具提供了接口与抽象类,供其他人扩展它的功能。

这就涉及到一个问题:别人在扩展它的时候,需要引入一些jar或者配置文件,本来工具依赖的jar和配置文件都记录在manifest文件中了,
不可能别人加了jar包和配置文件就要修改manifest文件的。
所以我为工具提供了另外一个入口,通过 该通过的配置文件 进行配置 路径,由于考虑到扩展的人可能多人或者多组,所以配置文件如下定义:
以ext_classpath开头的,诸如 ext_classpath_biz1等对应的路径均被加入到classpath中。
以ext_resourcepath开头的,诸如 ext_resourcepath_biz1等对应的路径均被加入classpath中。  阅读全文
posted @ 2011-04-01 20:39 李 明 阅读(13685) | 评论 (1)编辑 收藏

posted @ 2011-03-30 13:07 李 明 阅读(718) | 评论 (0)编辑 收藏

posted @ 2011-03-17 11:17 李 明 阅读(2813) | 评论 (0)编辑 收藏

     摘要: 问题:
freemarker在解析数据格式的时候,默认将数字按3位来分割,例如1000被格式化为1,000,这样做看似美观,但在实际操作时候会带来问题。例如我一个页面有一个元素,该元素的值由后台绑定且超过1000,那么当我要使用这个元素的值的时候,便会出现问题。  阅读全文
posted @ 2010-12-29 14:54 李 明 阅读(5807) | 评论 (6)编辑 收藏

     摘要: 总体上来说,jMock 是一个轻量级的模拟对象技术的实现。它具有以下特点:
1.可以用简单易行的方法定义模拟对象,无需破坏本来的代码结构表;
2.可以定义对象之间的交互,从而增强测试的稳定性;
3.可以集成到测试框架;
4.易扩充;
  阅读全文
posted @ 2010-12-17 09:28 李 明 阅读(12054) | 评论 (3)编辑 收藏

     摘要: 浅谈TDD
JUnit4的用法介绍
测试方法 @Test
@Before(SetUp)
@After(TearDown)
@Before和@After小结
@BeforeClass和@AfterClass
测试异常@Test(expected=XXXException.class)
参数化测试
  阅读全文
posted @ 2010-12-15 15:34 李 明 阅读(13195) | 评论 (1)编辑 收藏

     摘要: 本次分页组件着重于页面(Freemarker部分)、及Action部分。
至于Service及持久层处理,只是做了一个模拟的实现,实际开发中,我是应用了iBatis,封装了分页调用。
由于用法有所不同,所以就不放在源码范围内,也不在这里介绍了。
这里的分页功能只提供了 上一页、下一页、指定页 的分页,但在分页Java代码中包含了 首页、末页的实现。有需要的可自行添加。


分页的效果如图:  阅读全文
posted @ 2010-12-01 17:35 李 明 阅读(5848) | 评论 (4)编辑 收藏

     摘要: struts2 的Result type chain:基本用途是构造成一条动作链。前一个Action将控制权转交给后一个Action,而前一个Action的状态在后一个Action里仍然保持着。
但这种数据传递前提是数据要在Value stack里。
本文介绍基于Struts2 Result type 为 chian时, 通过增加拦截器、注解的方式,实现Action之间的数据传递。所传递的数据可以不在Value stack里。
实现的基本思路是Result type为chain时,在准备执行当前Action时,可以得到上一个Action对象的实例,上一个Action的实例被加入到了ValueStack中...
  阅读全文
posted @ 2010-11-19 17:25 李 明 阅读(5284) | 评论 (2)编辑 收藏

     摘要: 默认情况下,freemarker的变量必须有值,如果没有被赋值的变量在页面上使用就会抛出异常,出错的信息都会显示在页面上,让人感觉不爽(开发时还可以忍忍)。
以下介绍四种解决办法。  阅读全文
posted @ 2010-11-17 13:54 李 明 阅读(2317) | 评论 (0)编辑 收藏

     摘要: 统一处理系统中的异常并将其以固定的格式显示在页面上。

当使用js做前台的表单验证的时候,提示用户的输入有问题,则可以使用 Message.showMsg('...'),提示信息也会显示在同一个位置。

这样就实现了异常提示信息的统一展示了。

这是一个比较简易的实现,只提供一个思路。  阅读全文
posted @ 2010-11-16 14:53 李 明 阅读(2784) | 评论 (0)编辑 收藏

     摘要: 在上一篇 Hessian构建分布式系统应用 的基础上,我们对程序进行改进。
现在有以下比较突出的问题:
a.如果hessian服务端我要做的业务很多,怎么办?
我要定义很多个接口,然后再写实现类,最烦的是还要配置它。
我的设想是,hessian服务只提供一个归口,再此对外的接口实现中反射调用具体的业务类。

b.客户端在调用时,每次调用远程接口都要用以下代码吗:  阅读全文
posted @ 2010-10-17 22:10 李 明 阅读(1696) | 评论 (1)编辑 收藏

     摘要: Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单、快捷。
采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。

本文将分为以下几个内容:
一、一个简单的Hessian调用例子
二、Spring+Hessian的例子
三、使我们的调用变得通用

第一�%  阅读全文
posted @ 2010-10-17 21:11 李 明 阅读(2816) | 评论 (0)编辑 收藏

     摘要: 通过上一篇 利用自定义Java注解实现资源注入 介绍的方法,我们实现了通过自定义注解完成了对DataSource资源的注入,但在实际应用中,我们通常不希望去显式的去声明这样的MyAnnotationBeanProcessor对象来帮助我们完成注入,而是希望通过Spring帮我们“悄悄地”完成。  阅读全文
posted @ 2010-10-04 10:31 李 明 阅读(8223) | 评论 (1)编辑 收藏

     摘要: 这里是想介绍一下如何通过Java的注解机制,实现对bean资源的自动注入。主要介绍实现方法,至于例子的实用性不必讨论。
需求:一个应用有两个数据库,分别为DB-A,DB-B。
假设持久层框架使用iBatis来完成,那么SqlMapClient对象在创建时,对于两个不同的DB连接要有两个不同的SqlMapClient对象,
假设我们有一个Service类为MyService.java,该类中有两个SqlMapClient对象分别对应着DB-A、DB-B。  阅读全文
posted @ 2010-10-04 10:19 李 明 阅读(5333) | 评论 (0)编辑 收藏

     摘要: 继上一篇 扩展Spring-实现对外部引用的属性文件的 属性值 进行加密、解密 ,这次要实现的是对整个外部属性文件进行加密,Spring在加载这个外部属性文件时进行解密。
分析过程与在 扩展Spring-实现对外部引用的属性文件的 属性值 进行加密、解密 中介绍的基本一致,只不过这次的入口就在 PropertiesLoaderSupport.java 这个抽象类的loadProperties方法。代码片段:(注意注释部分)  阅读全文
posted @ 2010-10-02 12:44 李 明 阅读(4368) | 评论 (8)编辑 收藏

     摘要: 当我们在使用Spring进行开发时,我们经常使用占位符引用属性文件的属性值来简化我们的配置及使我们的配置具有更高的灵活性和通用性。
使用这种方式的好处这里就不赘述了,这里要讲的是怎样对此外部属性文件的属性值进行加密、解密。  阅读全文
posted @ 2010-09-30 14:34 李 明 阅读(2738) | 评论 (0)编辑 收藏

     摘要: 此程序需要ganymed-ssh2-build210.jar包。
下载地址:http://www.ganymed.ethz.ch/ssh2/
为了调试方便,可以将\ganymed-ssh2-build210\src下的代码直接拷贝到我们的工程里,
此源码的好处就是没有依赖很多其他的包,拷贝过来干干净净。

此程序的目的是执行远程机器上的Shell脚本。  阅读全文
posted @ 2010-09-26 13:03 李 明 阅读(13587) | 评论 (7)编辑 收藏