解惑

解己之惑,解人之惑

日:2007年8月9日

得到当前方法

在写代码的时候我们可能会需要当前的方法名,特别是在输出一些调试信息的时候,但是如果使用字符串硬写的话不太好,API好像也不带对应的功能,如果细心的话,异常信息里面是带出错的方法名的,我们可以dump stack trace并分析得到当前方法的方法名,实际上有更好的方法,和dump stack trace类似:
public static String getCurrentMethodName() {
    StackTraceElement element=Thread.currentThread().getStackTrace()[3];
    return element.getClassName()+"."+element.getMethodName();
}
为什么是3呢?从0到2分别是:
java.lang.Thread.dumpThreads
java.lang.Thread.getStackTrace
xxx.Xxxx.getCurrentMethodName:也就是你定义这个工具方法的类

浏览器回退的问题

这个是同事今天遇到的问题,有一个Form,里面有几个下拉列表Select和一个输入框Input,点击按钮进入下一个页面,在下一个页面有一个后退按钮,点击后退按钮(调用的就是history.back())返回前面的页面,页面上根据Form的内容拼接的一个字符串的内容不太对,那个Input输入框的部分的内容不正确,其它的下拉列表的内容是正确的,看了下他的代码,发现是使用document.write在页面加载过程中直接输出的,这个问题以前遇到过,但是我只是猜测浏览器的工作原理,没有找到权威的论据:
Input输入框是有一个defaultValue属性的,就是页面最开始的时候的值,如果用户修改输入框的值,那么变化的是value值,而如果进入下一个页面,然后使用浏览器的回退功能返回,那么页面加载的时候还是先加载的那个defaultValue的值,用户修改的那些值在页面完成加载后才会变化。所以同事遇到的那个问题可以通过页面的onLoad解决或者window.setTimeout解决。
明天到公司验证下,加些JavaScript应该可以确定这个过程。

坐公交和性能优化

今天本来想把长城宽带给退掉的,但是到了九点他们还没有上班,就没有等,然后不是按照平时早上坐的线路(一般都坐583,一趟车就可以到公司),而是按照晚上下班的转车方案,结果和平时一样到的公司,在这个过程中联想到性能优化。
第一点是路径问题,对于性能优化就是解决耗时问题,好的方案可以节省很多时间,少走弯路。原来的一趟车,是很方便,而且是起点站,上车有座,这个和多数人在开发系统的时候图自己省事一样,完全不关心性能是否好。
第二点是瓶颈问题,转车的方案本来可以更加省时的,坐第一趟车,九站才花了不到15分钟,但是转车后,在八百伴附近的那个隧道,从快进隧道到出隧道不到100米的距离也花了十分钟,这个就是瓶颈问题,瓶颈就是系统负载太重的地方。

呵呵,坐公交车无聊想的事情。不过,今天的无心之举到是给自己又省了很多时间,原来每天上班至少要花3个小时在路上,用这个转车的方案,只要2个小时了,早上可以多睡会了。

© 2025 解惑

本主题由Anders Noren提供向上 ↑