解惑

解己之惑,解人之惑

日:2007年1月11日

KISS

记得最开始学习Java的时候就被它的KISS原则深深吸引了,因为那个时候正在为c++的各种语法而头疼。做了这么多年的Java开发,也感觉Java确实在语法和跨平台上符合它的这个原则,现在,Java的内容扩展越来越广,学习Java,使用好Java越来越需要对OO、设计模式、敏捷开发等深入理解并实践。
随着struts、spring和hibernate在国内的普及,越来越多的人得到提高,当然,我们也看到了以EasyJF为代表的国内开源力量的发展,在那些通用框架的基础上,他们期望能够进一步简化,实际上,我也在做这个工作,虽然我很欣赏spring和hibernate的灵活性,但是那么多的配置文件也是一个很头疼的事情,根据我自己的经验,很多应用没有必要进行配置,根据一定的规则就可以直接得到配置,为什么还要配置呢?即使是使用JDK5的新特性元数据进行简单配置我也感觉不是很必要,所以,我开始了我的大轮子计划,为自己定制一个最精简,最快速(性能和开发速度)的框架,在验证自己的设计能力的同时也可以强迫自己去学习别人的代码(但是不会全部照搬,也不会过度设计,需要的时候再重构),而且,这个框架我打算几乎完全自己构建,能够自己写的一定自己写,目前为止只使用了log4j和cglib这两个第三方的包,连连接池都是自己写的。在构造这个大轮子的过程中,我会把自己的心得体会写下来和大家交流。

使用ThreadLocal消除循环依赖

昨天刚刚说了在用Cglib完成我的持久层的设计,我实现了一个通用的clone方法,但是有一个问题,因为我在后台保留了一个和数据库记录对应的对象,其他的部分要使用的时候都是从那个记录clone一个出来,为了防止潜在的修改,必须进行深度clone,刚开始我就是用了一个简单的递归clone,但是不行,在存在关系的时候就会无休止的clone下去,最后StackOverflowError了。本来想把刚刚创建的保存下来标记一下,但是多线程不太好处理,最后想到的就是使用ThreadLocal,把刚刚clone出来还未进行深度clone的那个对象保存到ThreadLocal,如果它的关系类clone的时候需要使用对应的记录就直接返回那个引用而不是再clone,这样就不会StackOverflowError了。

IT行业的流动率

一般的IT公司的流动率都是非常的高的,我第一家公司是东软,去的是一个刚刚成立的部门,有80多人,我是刚做满了2年走的,而这个时候,和我一起去的人已经走了70%以上了,第二家公司是个刚刚成立的新公司,只有6个人,我做了半年就走了,我前脚刚走,又有两个人走了。从网上搜索到的消息看,IT公司的流动率有25%,和我经历的这些公司差不多。不过,有些公司也是例外,例如我现在的公司,我已经做了两年了,从我刚开始进这个公司到现在,真正走的人只有4个(其中一个走了半年又回来了),公司一共有30多个人,在这两年中,新招的人有8个,所以现在这个公司的流动率是非常的低的,当然,这个也得益于公司的宽松体制,因为公司不考勤,工作的进度安排比较合理,公司的整体氛围也不错。呵呵,不过很巧的是这走的几个人,都是我所在的组的头,第一个走的,是原来我这个组的组长,后来提拔为经理,但是后来还是自己出去创业去了,第二个走的就是接替他的新组长,做了一个月,第三个走的就是接替第二个的组长,做了一个月的组长也走了,第四个因为刚刚买房压力可能比较大,刚刚走。

© 2025 解惑

本主题由Anders Noren提供向上 ↑