• 记下来

    2005-01-16

    Tag:学习

    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

    Tag:学习

    1、普通的代理,就是应用了proxy模式,最简单、直观。但是如果接口很多,针对每个接口实现一个Proxy,那就麻烦了。

    2、Dynamic Proxy通过在运行期构建一个此接口的动态实现类完成对目标对象的代理。Dynamic Proxy通过在运行期构建一个此接口的动态实现类完成对目标对象的代理。

    3、使用CGLib返回的动态代理类,则是目标代理类的一个子类,并非某个接口的实现。

    下面这个图说的很明白(出自《Spring 开发指南》V0.8 预览版,作者:夏昕)

  • 装机器太复杂了

    2004-12-16

    Tag:工作

        昨天新机器终于到手了,预装的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心里还没底呢…………

  • 配置文件大概如下:
    <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

    Tag:工作

        公元2004年12月8日,一天的时间我都在做“权限模块”的html页面,目的就是看看页面流转是否合理,用户用起来是否方便,以及页面上面的信息是否丰富。这一天的工作用一句话总结就是——过程是痛苦的,结果也是美丽的。对自己做的东西总感觉不伦不类,实在是力不从心(举个例子,自认为自己对页面颜色搭配没感觉,看不出美与丑)。为什么会这样呢,原因就是这个工作在理想情况下应该是多个人完成的。

        UI设计人员和我一起设计页面流转;美工和我一起设计页面的布局、显示;脚本人员为页面提供一些丰富的表现效果……你不要说我懒,不要说我总想依赖别人,关键是我对这些东西没太大兴趣,即便是有兴趣也未必能做出一个像模像样的、有专业水准东西来。哎,说来说去那还是只是一个愿望,现实就是还要硬着头皮做呀,只是要多花些时间。

  • Session Facade

    2004-12-08

    Tag:学习

        又要使用EJB了,已经很久很久没接触EJB了,n多东西都陌生了,于是前两天去下载了xPetstore来看看。看xpetstore-ejb版本的过程中发现action基本只调用一个Session Bean——PetstoreEJB。再去看看这个PetstoreEJB,发现它包括了几乎全部的业务方法,也就是说他要和所有的Entity Bean打交道。OK,这就明白了,这个PetstoreEJB实际就是一个Session Facade,它的粒度比较粗,这样客户端调用起来就方便了,只需要调用一次Session Facade的方法就能搞定一个业务(这是最理想的情况)。使用Session Facade的同时还有一个重要的好处就是减少了网络的远程调用次数,客户端就不需要为了一个业务而调用好几次服务端的Session Bean。

  • ……架构是人类创建自身世界的第一表现形式。人类以逼真自然的方式来创建架构,并接受自然规律的检验,这些规律支配着自然界,也支配着人类世界。……
    ——李.柯贝伊

    ……架构实际并不存在,只有架构的作品存在。架构存在于头脑中……它只是等待着展现它的载体出现。架构又确实存在,它是不可测事物的化身。……
    ——Louis Kahn

    到一堆书籍中去寻找架构就像到屠夫的店中去寻找一头绵羊,要找的东西的确在那儿,但却需要以一种特殊的方式来寻找。
    ——Paul Shepheard

    架构就是别人给你说不明白,书籍给你讲不清楚的东东,只有自己去慢慢体会。
    ——十度