解惑

解己之惑,解人之惑

作者:cherami (第36页共82页)

得到当前方法

在写代码的时候我们可能会需要当前的方法名,特别是在输出一些调试信息的时候,但是如果使用字符串硬写的话不太好,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个小时了,早上可以多睡会了。

SYLK: File format is not valid

做一个性能分析的报告工具,输出为CSV格式,用Excel打开的时候报错:

原来写的一个程序类似,没有任何问题,这个偏偏有问题,搜索了下,没有想到原因竟然如此的BT:
"SYLK: File format is not valid" error message when you open a file in Excel for Mac

实际上这个问题不光在Mac下有,XP下一样,CSV文件的前两个字母是ID的话就会有问题,但是只要不全是大写就没有问题了,也就是id或者Id都可以。

JR总算是恢复了

历时三个多星期,JR总算是恢复了,这次主要是Bruce在弄,这次的问题一个是机器硬件出问题了,内存条坏了一根,而512M的内存根本就不够用,服务重启后只能支撑一个小时,另外一个问题就是我们的托管到期了,而原来的机房好像带宽不太好。
这次我们换了一个全新的机器,内存也加到2G,应该会比原来好很多。
不过这次连续停止服务超过三个星期,对JR的影响不知道有多大,前后收到过几个人的来信询问情况,不过当时的恢复都比较乐观,让他们失望了。

使用AOP带来的问题

AOP绝对是个好东西,但是因为大部分的AOP实现都是通过修改字节码实现的,这就给Hot Deploy带来问题,在进行Hot Code Replace的时候JVM会抛错:Hot code replace failed – Hierarchy change not implemented,根据字面的意思,我猜测是JVM判断出原始的字节码有变化,但是JVM中的字节码是修改过的,类似子类的结构。目前还没有找到比较权威的解释,另外我对AOP也不是很熟悉,所以仅仅是猜测

推荐一个Eclipse插件:Implementors

也许有点老土了,但是这个插件确实是刚刚别人推荐给我的,而且很好用,特别是对于EJB开发之类的需要提供接口并实现的情况下,不用再自己去找实现类了。
感兴趣的自己去下载吧。

使用JBossCache作为Hibernate的二级缓存

这个是最近的工作成果,使用JBossCache作为Hibernate的二级缓存,因为JBossCache支持Transactional的缓存策略(Strategy),而且支持Cluster,Cluster还支持Invalidation的方式,比Replication方式更好,对两种方式同时支持同步和异步,还有其他很多特性,比OSCache好得多。
由于我们是把Hibernate作为服务配置的,所以CacheProviderClass使用的是org.jboss.hibernate.cache.DeployedTreeCacheProvider,需要另外一个MBean进行TreeCache的配置:
阅读全文

搞清楚自己的血型了

已经不记得有多少人问我的血型了,但是我一直不知道,从来没有输过血,也没有献过血,我这个体格的,献的话人家也不会收的。
血型是A型,当然,先看看A型血的人的气质,好像蛮符合的

爽!

闲来无事玩Travian,经常被人欺凌,上次就被人动用车子灭了一次,毫无还手之力,不甘心又重新开始玩,这次很快就近加入一个联盟,并且我隔壁最近的老大后来也加入了那个联盟,最近几天有个家伙又盯上我了,而且军力比较雄厚,没有办法请旁边的老大帮忙,好家伙,这位老大派了500多的兵过来,一下把对方派来的200多帝国兵干掉了(他也牺牲了200个兵),真是一个爽啊,我可怜的30多个兵竟然剩下一大半,让那位老大从我这里搬资源(我把号托管给他了),竟然大手一挥,不用了,那点兵一天就补回来了,可怜的我,在虚拟世界要傍大款度日

更早的文章 更新的文章

© 2025 解惑

本主题由Anders Noren提供向上 ↑