毕业后就很少写东西了,工作近两年了,技术长进了不少,但思维还是那么局限。来北京已经三个多月了,抗过了头两个月的高压期,现在基本上已经适应这种高压生活了,可喜的是自己某些方面还是得到领导的认可。至少可以不坐冷板凳了,至少可以写“程序”。
程序是什么,代码的堆砌?无论答案怎么,但至少现在是在堆砌代码,而且是在乱堆之上进行堆。从对编程疯狂到现在,学习的东西:J2se jsp servlet Struts Struts2 Spring Hibernate... SOA android 。。。flex..,这是些令人兴奋的东西,而这些东西还有其他牛X的技术,出身中国太少了。中国作坊式的软件企业,出不了牛B的技术。
开发不应该为了实现需求而不择手段。昨天,今天都在改一个令人发狂的程序。导出excel功能,其中涉及到的数据非常多,但也是在可处理的范围之内。然后接手时确实不敢相信自己的眼睛,导出 excel查询条件限制少时,数据多,导出竟然50分钟!!!!!上帝!数据查询,出来3000以上的数据,作3000以上的循环,在循环在内处理数据,查询N次数据库N>30 ,这样导出程序需要与数据库select 的次数3000*N>90000 90000次以上select 50分钟导出已经不错了,说明服务器配置不错没有死掉。一直来以来都非常避讳“码农”这个词,然而我们确实在做码农。
决定软件性能有:程序和数据库。没有良好的持久层设计,优化程序架构、细节只能是在一定程度上提升性能。excel导出的每条数据要关联N条数据,这样就加大了数据量,所谓"完美"数据库设计是跑不快的,数据库设计应当允许字段的冗余。循环内查询是不可能的,只能将数据缓存在循环外,放宽查询条件,将需要的数据提前查询出 来,存入内存(Map),在循环内将数据取。这只是一个折中的办法,在数据量很多时,条件控制不好,有可能会造成内存溢出。目前也没有非常有效的方法,但通过sql将所有数据一次join出或许是可行的,在访问量允许,数据库抗压能力允许时,该方法应该会比循环内查询或循环外缓存效率要高。
程序员应该把自己放在设计者的角色,不是在写程序而是在设计一件很美好的东西,我们不是在工作,而是在创造,或许我们的世界会更美好些。