ALL is Well!

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

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

2010年9月3日 #

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

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

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

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

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

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

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


分页的效果如图:  阅读全文
posted @ 2010-12-01 17:35 李 明 阅读(5831) | 评论 (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 李 明 阅读(5268) | 评论 (2)编辑 收藏

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

     摘要: 一个Java应用程序的日志里,出现了很不和谐的记录:
java.io.IOException: Too many open files

在网上查了一些关于此异常的解决方案,基本上都是说要扩大linux系统的文件句柄数限制。
但如果程序对于Socket、Stream等使用后没能及时关闭的话,扩大这个文件句柄数限制是治标不治本的。

  阅读全文
posted @ 2010-09-14 19:36 李 明 阅读(11084) | 评论 (2)编辑 收藏

     摘要: 他山之石可以攻玉。
Spring为我们提供了一个PropertyPlaceholderConfigurer,它能够使Bean在配置时引用外部属性文件。
可以将BeanFactory定义中的一些属性值放到另一个单独的标准Java Properties文件中。
我们在部署应用时只需要在属性文件中对一些属性进行修改,而不用对主XML定义文件或容器所用文件进行复杂和危险的修改。
让我们看看下面的例子:  阅读全文
posted @ 2010-09-13 15:44 李 明 阅读(4873) | 评论 (2)编辑 收藏

     摘要:
LINUX常用命令(基础)

1. man 对你熟悉或不熟悉的命令提供帮助解释

eg:man ls 就可以查看ls相关的用法

注:按q键或者ctrl+c退出,在linux下可以使用ctrl+c终止当前程序运行。

  阅读全文
posted @ 2010-09-13 10:09 李 明 阅读(306) | 评论 (0)编辑 收藏

     摘要: cglib版本为cglib-nodep-2.2.jar.
本次只为演示在使用中出现的Java内存泄漏的问题,以及如何解决这样的问题。
cglib的应用是非常多的,但是当我们使用它的时候,如果一不小心,等出了问题再去查,就比较杯具了。所以好的解决方案就是写代码时就注意这些细节。
近期项目在做压力测试,就暴露了内存泄漏的Bug,cglib的使用不当,就是原因之一。  阅读全文
posted @ 2010-09-09 17:00 李 明 阅读(3621) | 评论 (1)编辑 收藏

     摘要: Quartz版本为1.8.3
Spring版本为2.5

自定义作业表 QRTZ_JOB。
其中定义 作业标识、作业名称、类名、触发器名称、触发器脚本等。
下面看看在Spring中如何配置Quartz。
  阅读全文
posted @ 2010-09-06 19:08 李 明 阅读(2453) | 评论 (0)编辑 收藏

     摘要: 接上一篇Maven2 学习笔记[5]-构建一个Java Application项目。
一个一个来处理不符合我们需求的地方。

1.问题:在QrtzPrj.jar的同一目录下并没有lib文件夹,也没有依赖的jar包。
这个问题的解决办法便是引入Maven的maven-dependency-plugin插件。
内容如下:(配置在 ... 中)  阅读全文
posted @ 2010-09-04 11:37 李 明 阅读(1746) | 评论 (0)编辑 收藏

     摘要: 这个 Java App 项目,包含的东西还是蛮多的。
在我构建这个项目的过程中遇到了很多问题,让我着实的痛苦了一天,在这一天中,我在网上看到很多构建类似项目的文章,但写的都不是很详细。至少不能满足我的需求。
对于像我这样,需要在1天内就要搞定打包的人来讲,这确实很失望。
所以我要把我构建这个项目的过程,记录下来,希望能对 与我有类似需求的人 有一些帮助。
里面的一些配置也许不够完美,还请指正。谢谢。  阅读全文
posted @ 2010-09-04 10:48 李 明 阅读(750) | 评论 (0)编辑 收藏

     摘要: 搭建repository私服的用处有很多。
除了如何如何管理好jar包外,还有就是当 maven2 无法自动获取某个jar包时,(例如 oracle的jdbc jar包)
我们需要手动下载此jar包,将其上传至我们得私服,填写groupId,artifactId,version等信息。
然后再在pom.xml里进行依赖配置。  阅读全文
posted @ 2010-09-03 14:15 李 明 阅读(875) | 评论 (0)编辑 收藏

     摘要: 位于Maven2安装目录conf文件夹下的settings.xml文件,是maven2作为全局性质的配置。
打开刚刚安装的Maven2的settings.xml文件,里面基本都是被注释掉了的。
settings.xml有主要有下面几个配置节点:

localRepository:用于设置本地仓库的位置。如果不设置此节点,则本地仓库在 ${user.dir}/.m2/repository。  阅读全文
posted @ 2010-09-03 13:34 李 明 阅读(627) | 评论 (0)编辑 收藏

     摘要: 1.创建一个项目
建立一个文件夹mvntest(由于我是在做测试,所以随便建立一个文件夹,但习惯上,这应该是我们的Workspaces。)
通过cmd切换到此文件夹下:
cd mvntest
mvn archetype:create -DgroupId=com.jn -DartifactId=HW -DpackageName=com.jn
然后看看 mvntest的文件夹下发生了什么变化。  阅读全文
posted @ 2010-09-03 13:00 李 明 阅读(457) | 评论 (0)编辑 收藏

     摘要: 1.下载
2.安装
3.环境变量配置  阅读全文
posted @ 2010-09-03 12:36 李 明 阅读(399) | 评论 (0)编辑 收藏

     摘要: 1.删除相关Software
2. 下载Maven插件
3.重新启动MyEclipse
4.配置在MyEclipse中配置 Maven
5.在MyEclipse中使用Maven  阅读全文
posted @ 2010-09-03 08:56 李 明 阅读(17768) | 评论 (7)编辑 收藏