-
记下来
2005-01-16
public class A {
public void pp() {
Throwable th = new Throwable();
StackTraceElement[] element = th.getStackTrace();
System.out.println(element.length);
for (int i = 0; i < element.length; i++) {
System.out.println(element[i]);
}
}public static void main(String[] args) {
A a = new A();
a.pp();
}
}结果:
2
com.ai.uaap.admin.util.A.pp(A.java:14)
com.ai.uaap.admin.util.A.main(A.java:24)瞧瞧,一个都不会少!
-
代理的三种形式
2004-12-20
1、普通的代理,就是应用了proxy模式,最简单、直观。但是如果接口很多,针对每个接口实现一个Proxy,那就麻烦了。
2、Dynamic Proxy通过在运行期构建一个此接口的动态实现类完成对目标对象的代理。Dynamic Proxy通过在运行期构建一个此接口的动态实现类完成对目标对象的代理。
3、使用CGLib返回的动态代理类,则是目标代理类的一个子类,并非某个接口的实现。
下面这个图说的很明白(出自《Spring 开发指南》V0.8 预览版,作者:夏昕)

-
装机器太复杂了
2004-12-16
昨天新机器终于到手了,预装的XP,不会用,格掉装2000。之后装驱动自是不必多说,接着又装了大约7个小时的经常要用到的软件,一边装我一边记录,最后大吃一惊,靠,30多个。
2000的SP4 诺顿 USB2.0 Direct X 震荡波补丁 RPC漏洞补丁 ie6 SP1 office2000 Project Acrobat Reader j2sdk j2sdkee DreamWeaver ISO的工具 Oracle Client Weblogic PL/SQL Developer UltraEdit MSN snagit(抓图) Flashget idea(写java代码) winrar winzip foxmail QQ Rational XDE eclipse vss 金山词霸 金山快译 这些还大部分是最基本的,还不全。装一次机器太折腾人了,以前的project能不能正常的run心里还没底呢…………
-
在struts的ActionForward中添加参数
2004-12-13
配置文件大概如下:
<action-mappings>
<action path="/account"
name="accountForm"
parameter="action"
scope="request"
type="com.ai.uaap.admin.web.action.AccountAction">
<forward name="listOK" path="/AccountMaster.jsp" />
<forward name="removeOK" path="/account.do?action=list" redirect="true" />
</action>我在执行完remove的方法之后的代码是return mapping.findForward("removeOK")。这时就会访问account.do?action=list这个地址,以前我想在account.do?action=list之后继续添加参数(例如account.do?action=list&abc=123)不知道该怎么实现。
今天看到一个资料给出了实现:
String path = mapping.findForward("removeOK").getPath();
ActionForward forward = new ActionForward(path + "&abc=123", true);
//这里的true是Redirect
return forward;ok,搞定^_^。以前干嘛吃的,怎么这么简单都没想到。
-
痛苦的页面设计
2004-12-09
公元2004年12月8日,一天的时间我都在做“权限模块”的html页面,目的就是看看页面流转是否合理,用户用起来是否方便,以及页面上面的信息是否丰富。这一天的工作用一句话总结就是——过程是痛苦的,结果也是不美丽的。对自己做的东西总感觉不伦不类,实在是力不从心(举个例子,自认为自己对页面颜色搭配没感觉,看不出美与丑)。为什么会这样呢,原因就是这个工作在理想情况下应该是多个人完成的。
UI设计人员和我一起设计页面流转;美工和我一起设计页面的布局、显示;脚本人员为页面提供一些丰富的表现效果……你不要说我懒,不要说我总想依赖别人,关键是我对这些东西没太大兴趣,即便是有兴趣也未必能做出一个像模像样的、有专业水准东西来。哎,说来说去那还是只是一个愿望,现实就是还要硬着头皮做呀,只是要多花些时间。
-
Session Facade
2004-12-08
又要使用EJB了,已经很久很久没接触EJB了,n多东西都陌生了,于是前两天去下载了xPetstore来看看。看xpetstore-ejb版本的过程中发现action基本只调用一个Session Bean——PetstoreEJB。再去看看这个PetstoreEJB,发现它包括了几乎全部的业务方法,也就是说他要和所有的Entity Bean打交道。OK,这就明白了,这个PetstoreEJB实际就是一个Session Facade,它的粒度比较粗,这样客户端调用起来就方便了,只需要调用一次Session Facade的方法就能搞定一个业务(这是最理想的情况)。使用Session Facade的同时还有一个重要的好处就是减少了网络的远程调用次数,客户端就不需要为了一个业务而调用好几次服务端的Session Bean。
-
难以定义的事物有多种定义——“架构”就是其中的一个
2004-11-11
……架构是人类创建自身世界的第一表现形式。人类以逼真自然的方式来创建架构,并接受自然规律的检验,这些规律支配着自然界,也支配着人类世界。……
——李.柯贝伊……架构实际并不存在,只有架构的作品存在。架构存在于头脑中……它只是等待着展现它的载体出现。架构又确实存在,它是不可测事物的化身。……
——Louis Kahn到一堆书籍中去寻找架构就像到屠夫的店中去寻找一头绵羊,要找的东西的确在那儿,但却需要以一种特殊的方式来寻找。
——Paul Shepheard架构就是别人给你说不明白,书籍给你讲不清楚的东东,只有自己去慢慢体会。
——十度







