/** * 作者:张荣华 * 日期:2008-6-19 **/ 前言: 之前downpour有一个贴(http://www.javaeye.com/topic/143714)讨论了在java中如何使用mysql的master-slave模式(master-slave模式的介绍见Qieqie的这个贴:http://www.javaeye.com/topic/162717),其中readonly大大提到我们可以使用ReplicationDriver来从connection层把read或者write操作分开。这确实是一个比较好的方案,在那个帖子讨论后不久,我就在自己的机器上搭了一个mys ...
/** *作者:张荣华(ahuaxuan) *日期:2008-4-9 **/ 1背景 Spring2.5支持使用annotation来配置我们的service,比如如下代码: @Service("userService") public class UserServiceImpl extends BaseServiceSupport implements UserService { public void xxx() { } } 这样就表示这个service需要被spring管理,不过只是这样做是不够的,我们还需要在applicationcontext***.x ...
/** *作者:张荣华 *日期:2008-4-2 **/ 前言Xml和annotation都是我们在项目中常用到的技术,尤其是在配置文件这一块。很久很久以前,当jdk5.0还没有出来的时候,或者我们还没有大规模换到jdk5.0的时代,xml作为配置文件是大行其道,但是当annotation诞生之后,形式有所转变,曾经发挥巨大功能的xml开始被人们所批斗了,现下人们对annotation开始了疯狂的崇拜。那么就先说说xml的功与过,他的功我们都看在心里,就拿以前最常见的技术来说吧,struts+spring+hibernate,哪一个不用配置文件,使用配置文件谁不用xml,虽然h ...
/** *作者:张荣华 *日期:2008-2-25 **/ 之前有一篇文章讲到如何使用jamon来监控请求以及方法得调用(原文地址见:http://www.javaeye.com/post/354575 ),本文属于其姊妹篇,使用jamon监控系统的sql调用及其调用效率。 需求: 1我们知道在使用hibernate得时候,我们可以打开show sql选项,可以直接查看sql语句调用的情况,那么当我们使用其他持久技术的时候我们也需要这个功能怎么办呢,没有关系,jamon能够帮我们做到。 2 很多时候,不同的程序员会写出不同的性能的sql,有时候可能会不小心或者因为不知道而写出性 ...
        程序员的生活真是单调,除了编程还是编程,工作日编程,周末还在编程。学如逆水行舟,不进则退。所以得找点事做做,保持好自己的编程状态。        上周末做了一个根据用户ip得到对应城市,再根据对应城市得到天气预报的小东西。这个周末再次找到一个主题,原来听说有人用ruby做了一个能同时和msn,qq等工具通信的小东西。于是我也想到可以用java实现这个功能,于是经过两天的努力,终于把java和msn通信的功能做好了(java和qq通信很早之前就有 ...
/** *作者:张荣华 *日期:2007-9-30 **/   关于缓存的话题,在坛子里已经有很多讨论,简单的来说,如果一个应用中80%的时间内都在访问20%的数据,那么,这时候就应该使用缓存了。这个和长尾理论正好相悖,其实也不是相悖,只是不同的理论使用的场景不同。在80/20原则生效的地方,我们都应该考虑是否可以使用缓存。但即使是这样,缓存也有不同的用法,举个例子,一个网站的首页估计是被访问的次数最多的,我们可以考虑给首页做一个页面缓存,而如果在某个页面上,比如说javaeye的java版区只有前几个页面是访问最频繁的,(假设javaeye是使用hibernate,当然这 ...
/** *作者:张荣华(ahuaxuan) *2007-9-20 *转载请注明出处及作者 */ 首先来一段名词解释吧: 名词解释: B2B,business to business。(非电子商务中的b2b) A2A, Application to Application。(可以翻译为应用到应用) 第二个概念好像不是很常见,我暂且用来表示企业内部的应用。B2B用来表示不同企业的应用。 Message Endpoint: 消息端点,接受消息的端点(我们把企业应用之间传输的数据可以称之为消息,那么接受消息的端点就是Message Endpoint) Adapter: 这是一个非常重要的概 ...
之前看到很多关于quartz的讨论,尤其是关于quartz和集群应用的讨论是非常的激烈,很多人都共享了自己的想法,很多基本上比较统一的观点是重新启动一个job server,用来跑job,然后把这个job server独立在web container之外启动。然后各节点如果需要启动任务那么就通过db或jms来通知job server。这个方法是robbin大哥提出的,原贴见http://www.javaeye.com/topic/40970,第8楼。用这种方法比较好的处理了quartz和应用集群问题。 为了更好的说明这个问题,我画了一张图: 见图qu2 首先请大家原谅,这 ...
/** *作者:张荣华(ahuaxuan) *2007-8-15 *转载请注明出处及作者 */ 前两天在看Spring内置的拦截器的时候,发现了一个之前没有注意的类:org.springframework.aop.interceptor.JamonPerformanceMonitorInterceptor,好奇心促使我上网查了一下这个jamon。大概看了一下之后发现这个玩意还真挺好用的而且挺重要的,而且现在国内对它的介绍也很少,所以写了一篇文章和大家分享。 一,Jamon简介: Jamon的全名是:Java Application Monitor。它是一个小巧的,免费的,高性能的,线程安 ...
坛子上讨论设计模式的也挺多的,但是关于这个责任链模式还没有人提及,我对责任链模式也有些疑惑,我的疑惑是,责任链真的是一种设计模式吗,我为什么有这种疑惑呢,因为在我用到和学习的责任链一共有3种,但是n多的书上就是那么一种最基础的责任链模式。在我的心里,只要能完成责任传递的都可以称之为责任链。当然也有可能我的这种理解是错误的,但如果我的理解是错误的,那么就是说每种模式都是有固定形态的,简单的模式是有固定形态,这我承认,但是如果说所有的模式都有固定的形态我不太相信,下面我就用文章来说明我的观点。 下面我详细说说我眼里的3种责任链模式: 1, 基本版责任链 这里所谓的基本责任链模式是指书上网上到处 ...
在使用ActiveMQ的时候把ActiveMQ的控制台整合到web程序中是比较好的做法,这里有篇文章讲解了这样一个步骤http://www.oreillynet.com/onjava/blog/2007/06/integrating_activemq_web_conso.html。 原文作者:Dejan Bosanac 译者:张荣华 由于水平所限,翻译难免有不妥之处欢迎大家指正。   正文: 如果你的应用程序整合了ActiveMQ,那么再把他的web控制台也整合到你的应用中应该来说是很有意义的。它(ActiveMQ的web控制台)能为你的用户提供基本的监控和管 ...
论坛上很多人都讲设计模式,也讲了很多设计模式,现在也来说说我对一些设计模式的理解,对于一些简单的模式就不多说了,一切都在我以前写的例子中使用到了,比如说在velocity和freemarker的比较那篇文章里用到了单例,工厂,方法模板,在java邮件,在简单和复杂之间那篇文章里用到了策略,适配,在easywebwork中也使用了几种设计模式,在哪些文章我没有对设计模式进行详细的讲解是因为我觉得那些都是些常用的模式,大家肯定经常见到,一看就明白了,根本用不着讲解,而在那篇《解惑:在spring+hibernate中,只读事务是如何被优化的。http://www.javaeye.com/topi ...
/** *作者:张荣华(ahuaxuan) *2007-07-11 *转载请注明出处及作者 */ Javamail,论坛上由已经有很多的讨论,但是俺觉得还是不够完整,不完整不是说讲的不细致,而是指不全面,而是缺少high level的全面论述,所以俺来补充一下。 这篇文章的名字起得很古怪(估计还有人暗地里说文章名字取得如何如何,文章实质却是水货等等了,先不忙下结论,各位看官接着往下看便知),叫简单和复杂之间,为什么要取这么个奇怪的名字,搞得人一头雾水,其实我想要表达的意思是这样的,之前坛子上有很多人讨论过如何使用javamail(包括spring对其的封装),也有人讨论过如何通过j ...
/** *作者:张荣华(ahuaxuan) *2007-07-09 *转载请注明出处及作者 */ 强强连手, 看Freemarker和displaytag的结合 这个周末搬家,从金桥搬到了上南这边,然后又去买洗衣机空调之类,两天下来,把人整得叫一个累,还不如舒舒服服的坐在椅子上写代码呢。一切搞定之后脑海中有想起了现在手头上的做的事,如何尽可能的简化框架,目的只有一个,减少使代码量。 我比较推崇在view层使用模板技术,但是如果使用模板的话分页如果没有较好的封装将会给程序员带来很多bad small的代码,但是现在由于人力和物力的关系又没有时间去开发一个比较完善方便的分页的marc ...
/** *作者:张荣华(ahuaxuan) *2007-06-28 *转载请注明出处及作者 */ 解惑:在spring+hibernate中,只读事务是如何被优化的。          大家都知道,spring+hibernate的环境下,spring对只读事务会有特别的优化,那么spring是如何做到这个优化的呢?         Without ejb中写到,当事务被标识为只读事务时,某些可以针对只读事务进行优化的资 ...
/** *作者:张荣华(ahuaxuan) *2007-06-25 *转载请注明出处及作者 */ 让webwork零配置 第二章(实例已放出,大家可以下载运行) 又到周末了,平时没有时间,所以我的主要学习时间是放在周末,让大家久等了,上个周末说到webwork2零配置的第一章,很多人积极参与讨论,给出了很多有用的参考意见,在这里先谢谢大家,当然也有其他意见的也能理解,我想原因可能有以下几点: 1毕竟在公司里选择一个web层框架是一个重要重大的决定,很多人都是身不由己,这种经历我想大家都有过。 2正如抛出异常的爱所说,这是一个快餐型社会,很多人都比较喜欢吃快餐(现实生活中也是如此 ...
/** *作者:张荣华(ahuaxuan) *2007-06-18 *转载请注明出处及作者 */ 让webwork2零配置,第一章 一直以来我都有一个想法,想要找一个比较好的web框架,不用jsp,不用繁琐的配置,比如说struts1.x的action的配置,webwork2的action的配置,其他框架我没有用过,但是类似的,都有很多这样的配置,一个很大的项目,struts的配置文件都是上w,上十几w行,当然我早已放弃struts,投向webwork2.2的怀抱,虽然没有了form的配置,action的配置也比struts的简化了很多。但是我还是不满足,我想要的框架应该比这个还要 ...
/** *作者:张荣华(ahuaxuan) *2007-06-11 *转载请注明出处及作者 */ 简介:上次说到spring声明式事务管理的事务开始部分,按流程来讲,下面应该提交事务了, spring的声明式事务管理其实是比较复杂的,事实上这种复杂性正是由于事务本身的复杂性导致的,如果能用两三句话就把这部分内容说清楚是不现实的,也是不成熟的,而我对这部分的理解也可能是不全面的,还是那句话,希望大家和我一起把本贴的质量提交起来。 在下面的文章中,我讲会多次提到第一篇文章,第一篇文章的地址是:http://www.javaeye.com/topic/87426 如果要理解事务提交的话,理 ...
/** *作者:张荣华(ahuaxuan) *2007-06-16 *转载请注明出处及作者 */ Spring声明式事务管理源码解读 简介:事务是所有企业应用系统的核心,之前人们使用ejb的时候,容器事务管理(CMT),是slsb最令人称道的地方,据说很多人使用ejb,使用slsb就是为了cmt,但是spring出现之后,格局就变了,因为程序员又多了一种选择,就是声明式事务管理,声明式事务管理是基于AOP的,及AOP是它的底层特性,本文的目的就是为了和大家探讨一下spring的声明式事务管理,从源代码来分析它的背后的思想。(谢谢异常的建议,因为本文原来没有简介) 这个是我昨天在解 ...
/** *作者:张荣华(ahuaxuan) *2007-04-24 *转载请注明出处及作者 */ Hibernate在使用关联集合的时候有自己的几种类型,分别是set,list,map,bag等,而对应的hibernate实现是PersistentSet, PersistentList, PersistentBag等,几种集合类型的使用场合问题并不是今天要讨论的话题,今天要讨论的是如何在程序中使用我们自己写的集合类型,这一点 当然很多人人会质疑这样做的必要性,他们会问hibernate提供的集合类型已经够用了,为什么还要自己扩展呢? 事实上在有些情况下使用自己的集合类型是非常重要 ...
2007-04-16

模板:velocity和freemarker的比较

关键字: 模板技术
/** *作者:张荣华(ahuaxuan) *2007-04-16 *转载请注明出处及作者 */ 模板技术在现代的软件开发中有着重要的地位,而目前最流行的两种模板技术恐怕要算freemarker和velocity了,webwork2.2对两者都有不错的支持,也就是说在webwork2中你可以随意选择使用freemarker或velocity作为view,模板技术作为view的好处是很多,尤其和jsp比较起来优点更大,众所周知jsp需要在第一次被执行的时候编译成servlet,那么这个过程是很慢的,当然很多应用服务器都提供预编译的功能,但是在开发的时候仍然给我们程序员带来了很多痛苦,每 ...
如何给工程中的配置文件加密 解密 之前有人问过hibernate密码问题,大家都没有给出一个具体的解决方案,所以我就看了一下代码,把我的想法和实现拿出来和大家讨论一下。 我现在的环境是spring+hibernate,但是这并不影响这个加密解密的问题,其他环境应该是略有不同,但是思路肯定是一样的。 总体思路:在工程的配置文件中填写数据库密码的密文,在应用程序使用datasource的时候解密成明文以创建连接。 步骤1 使用java的中cipher类并使用DES(对称加密算法)算法对明文进行加密 ````````````````这里如何使用cipher类和DES算法的原理可以上网查找,我 ...
  用jMock来实现这一点,然而,我们至少需要定义PendingOrderRepository接口并且写一个PendingOrder的stub(桩)实现。PendingOrderRepository接口定义了一个findOrCreatePendingOrder()方法:          public  interface  PendingOrderRepository{           & ...
轮子是一个永远都说不完的话题,总有一帮子人在哪里叫嚷:“不要重复发明轮子”,然而事情总是有其对立的一面的,还有另外一帮子人在那里不停的发明轮子。好像永远都没有一个定论来标明是否还需要另外一个轮子。 如果说要拿轮子来举例子,那不防看看真实的轮子: 1 最早的时候拿木棍来当轮子搬运重物。 2 然后发展到木头做马车的轮子 3 再发展到木轮子上来包一层东西来减震之类 ••••••••• n 在到现在各种各样的轮子。 由此可见轮子是在一个不断的进步过程之中,为什么轮子在进步,因为人们需要,所以重新发明新轮子是人们的需要决定的。 那么java里面的轮子呢,为什么要重复发明java里的轮子,还是人们需 ...
  6 提交订单――用户确定她要提交订单   用例中的每一段的第二部分描述了应用程序对请求作出的反应。应用程序的反应可以描述为一个职责的集合。比如说,应用程序这样执行输入发货信息的请求: 1 核实发货时间是在将来而且至少有一个餐馆提供发货信息 2 更新未提交订单的发货信息 3 显示可以提供服务的餐馆的列表          应用程序的职责可以划分为两种。第一种职责是检验或者确定用户的输入,计算结果,更新数据库。一般说来services或者entities必须定义履行这个职责的方法。第二种 ...
        pojos in action 第三章   使用领域模型模式     当开发者发现了新的更好的途径来开发应用程序的时候,编程语言和技术也随之发展了。在上世纪九十年代的时候,用oo设计技术来解决复杂的应用程序是一种普遍被人接受的观点。然后,接下来的十年中ejb来了。在使用ejb之前的十年中,我用各种oo语言来开发程序,包括common lisp,c++,java。但是oo设计在用ejb开发程序的时候就不是那么重要了,也和平时有很大的不一样了。然而许多早期的企业应用程序十相 ...
现在公司里有一个项目,想做spring的集群,现在他们的做法是一台webserver,比如说tomcat,然后把spring的应用部署到多个applicationserver上,然后webserver通过ejb的rmi来调用applicationserver上的spring程序,就是说webserver和spring应用程序其实是在多个不同的jvm上的,他们之所以这么做说是为了提高性能,请教有经验的老手,能不能这样做,有没有人做过类似的东西,这样做有什么样的优点和缺点。 如果直接把webserver和spring应用部署到一个jvm上,然后将多台相同的部署情况的机子做集群可以吗,哪一个更好呢 ...
ahuaxuan
搜索本博客
我的相册
C21ef232-7784-3985-9b9b-f1aa3bf48f96-thumb
100_2076
共 4 张
存档
最新评论