恩,要常动脑筋

遇到这样一个需求:

A = 1时,B=1
A=2时:
  C(一个小时内的一个时间点)在00~29之间时、B=1。
  C在30~59之间时、B=2
A=3时:
  C在00~19之间时、B=1。
  C在20~39之间时、B=2。
  C在40~59之间时、B=3。
A=4时:
  C在00~14之间时、B=1。
  C在15~29之间时、B=2。
  C在30~44之间时、B=3。
  C在45~59之间时、B=4。

看起来一个稍复杂的需求,难道用if else或者switch? 我周围真有人这么干的。再仔细观察下,用如下程序可以解决:

int B= (C+1)/(60/A);
if((C+1)%(60/A) > 0){
  //对B取上界
  B++;
}

小聪明而已,写下这个只是想提醒下自己,在编程时”要用最少的代码最好地完成最多的事”

Apache的ab能够查看tomcat运行状态

在javaeye上看到个讨论事务的帖子,帖子中提到了通过查看 tomcat线程数来判断事务设置是否合理,于是回帖问了下如何查看tomcat运行状态,楼主回帖说用 apache的 ab,现在还没时间,抽空了解一下

今天又进来一批新员工

08年的新员工今天入司了,我已经成老员工了,看着他们个个脸上新奇的,清澈的目光,唉,去年我也是那样的。 一个人一年时间能改变多少呢?回想过去,在学校呆一年,浑浑噩噩就过去了,在公司呆一年,做了大大的小小几个项目,却学到了不少的东西。 现在后悔当初在学校有大把的时间,大把的资源,不好好用来学习知识,真是莫大的浪费啊。在这工作的一年里,工作之余我投了大把的时间学习框架,以及软件开发理论,还颇有点小的成就感。 当前三大学习目标: VOA ,TDD,Refactor, 2009 ,努力。 昨天晚上,吃完饭赶忙拿起 中午收到的《TDD》看起来,由于这本书的内容相对更理论一点,我的英文水平读起来还是有点吃力,所以抱着本字典边查边看。 女朋友突然来了句”我比你幸福,因为我有个努力的,很有上进心的男朋友,而你没有”,哈哈 甜滋滋的。

PS:作为一个一年经验的员工,当然没有机会去带别人做东西,真得希望能够在这批新员工里发现一个能够与之探讨技术的人,能够与我探讨重构,测试驱动开发,以及各个框架底层的东西,知识就是在不断的交流中才能发觉更多

今天收到《Test-Driven Development》书了。

上周在当当上订的《测试驱动开发》影印版,这周一就收到了,速度啊。前阵子在项目里试着做了点TDD,现在再拿这本获得Software Development Productivity大奖的TDD入门经典把知识再巩固一下子,在后面的学习过程中的心得也会逐一写到这里。

c3p0的helper线程数目过多导致内存溢出

前阵子做得那个系统发布了,结果刚放到服务器上就出了 outOfMemery 错误。 查看发现是由于下的进程导致的:

Daemon Thread [com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0] (Running)

经过查找,发现在datasource里把c3p0的numHelperThreads设成了1000。正是由于这个线程过多导致了内存溢出,改成10就没有问题了。附上c3p0里对于 numHelperThreads的描述:

numHelperThreads Default: 3 c3p0 is very asynchronous. Slow JDBC operations are generally performed by helper threads that don’t hold contended locks. Spreading these operations over multiple threads can significantly improve performance by allowing multiple operations to be performed simultaneously.