`
phpxiaoxin
  • 浏览: 252938 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

年度总结

阅读更多

在离职的最后时刻发上来总结,作为一个一个终结,也作为新的开始......

 

-------------------------------------

 

在公司工作已经有一年多了,在这一年的时间里,我经历了“临沂房产365”、“春天巴士”、“slackiss”,并一步一个台阶的走进了java的世界,完成了技术的积累,以及思想的飞跃。在这个过程中,公司为我搭建了一个平台,贾同学是一个引导者,而房同学、范同学则属于三人同行,在这里,感谢那些曾经帮助过我的人,谢谢你们。


一、临沂房产365

临沂房产365是我进入公司后的第一个项目,也是我学习java的第一个项目,采用了比较经典的ssh框架架构。在此之前,完成php程序的时候,完全是面向对象的,没有什么很好的复用性,也没有什么封装。最多就是在被include的文件中写入几个调用数据库的方法,注意这里是方法,还不是类,再加上几句session判断的代码就可以完成一个简单的新闻系统了。所谓的框架就是通过模板思想将php代码与html分离。而struts+spring+hibernate让我知道了,怎么是真正的复用,以及面向对象的好处。经过封装的hibernate,我们处理数据的时候只需要一个getHibernateTemplate()就一切ok了,而且一旦domain设计完毕,配置好对应的xml文件,行了,数据库你就不用管了。再加上打成jar包,那叫一个爽,这才是真正的封装,这才是真正的复用。struts采用的mvc的思想也是以前没有接触过的。虽然说相比于php的混杂到一起的写法,struts的action+xml配置文件+jsp/freemarker要繁琐的多,但是正是这种繁琐,实现了数据组装、控制器、页面显示的分离。让程序在变得繁琐的同时也变的清晰,变得可以多人协作分别开发。这里用到了freemarker技术,他的标签简化了页面层的操作,让显示变的方便容易,再加上其宏的功能,实现了页面的复用,可谓方便至极。

二、春天巴士

春天巴士是做的时间最长的一个项目,从8月份一直到现在。这个项目开始,我除了是一名程序员之外,也同时担任起了美工的工作。我还是很喜欢美工工作的。春天巴士项目让我的web技术有了一个全面的了解。从css到javascript,从struts2到guice\ibatis,从前台的页面缓存到数据库缓存,从eclipse到netbeans,从tomcate到jboss/glassfish,从windows到linux。在这个过程中,有的是广度层面的,而有的则是深度层面的。

eclipse、netbeans、tomcate、jboss/glassfish、guice\ibatis、struts2、sitemesh等等属于广度上的技术积累,可以应用于项目开发,出现普通问题都可以解决。这里想起来刚进公司的时候,每当程序报个错误,就不知道如何是好了,首先不知道出了什么问题,其次就更不知道如何去解决他。想想那时候多么的弱小啊。其实问题很简单,看一下报错信息,eclipse/netbeans一debug万事ok了。所以,完成了自己动手解决问题的一个台阶的迈进。而struts2等
框架也可以熟练使用,完成网站所需的功能。sitemesh完成页面的组装,写一个decorators,想怎么组装页面就怎么组装。让相同的内容抽取在一个页面之中,加上struts2的comment将一些内容组件化,好了,页面完成了高度统一与复用,并且修改起来相当方便。缓存方面属于从无到有的,原来php程序的时候是不考虑什么性能的,因为我以前只是个小程序员(增删该查),而现在通过ibatis的缓存将数据从数据库缓存起来,突破数据库的瓶颈。而通过struts等的缓存方案则可以降低页面请求,节省网络的带宽、减小了服务器的压力,提高了用户访问速度。

css、javascript、java则是深度上的提升,css方面完成了浏览器兼容性的台阶。让网页在多种ff/ie主流版本中保证显示效果。而且也学习了网站css合理规划的相关内容,完成了css的合理规划、嵌套调用。而javascript(以下简称:js)则完成了从函数到类的进阶、yui框架的学习使用。在完成js机器人的功能以后,也完成了js的组织、设计。如何实现js的封装、如何实现js的继承。也了解了java为什么需要set/get方法,其实语言都是相通的。java的深度在于性能和设计。比如在使用hashmap的时候原来都是new
Hashmap(),而现在则会根据实际情况使用new
Hashmap(2)。在遇到java程序报错的时候有可能会设计到框架本身,这时候就需要下载框架源代码,并且通过debug方式调试到框架内部去。有一次遇到一个restful框架的很奇怪的问题,找了半天不知道问题出在那里,下载源代码调试进去,发现原来rest不支持url上面配置成一个单独的“/”。因为他里面的几个if/else判断并不严谨正好会漏掉“/”的处理。不知道这算是框架的bug,还是人家框架就是这样。而在这此的调试中,也让我了解到,原来框架的代码也无非就是if/else,有点区别的不过是他的代码更紧凑,简洁、合理,用一些简洁的语法、写法完成。那么框架就真的只有这些吗?当然不是,框架除了有解决某些问题的代码,还有设计框架所用到的思想,以及实现框架所用到的设计模式。


三、slackiss

上面说到了设计模式,而这正是我在slackiss所学到的东西。slackiss是多个项目相互嵌套调用的项目,他分为客户端和服务器端,客户端也就是一个个的网站,访问服务器端注册了的服务,进行数据的通讯。slackiss通过hessian完成服务器与客户端的远程数据的传输。这里还接触到了wicket、jersey等框架。前者可以实现模块完全的打成jar包,放进去就可以使用,而后者则是一个java的restful
web service的标准实现。
对于设计模式,这里要说一下观察者模式,一个我第一个接触明白的也是唯一一个的设计模式。我以前虽然也明白什么是耦合,但就是不理解,两个模块既然要互相调用,又怎么能够实现松耦合。必然要通过
B b = new B(); b.c();的方式来实现。而通过观察者模式的学习,我真正明白了,如何解决这一问题,怎么就松耦合了。java利用他的接口、继承和静态方法,完成了一个类观察另外一个类的模式,又避免的耦合的发生。而查看Observer类的源代码会发现,其实质就是在notifyObservers方法通过for循环调用观察者的update方法。所以本质上还是通过上面说到的b.c()的方式来实现,但不是在子类上,而是在父类上,从而避免了耦合的问题。因此设计模式也仅仅是一种模式,他无法跨越一些问题,但是他可以巧妙的绕过一些问题。关于观察者模式,这个地址(http://phpxiaoxin.iteye.com/blog/390583) 有我详细的文章描述。也就是学习了这个模式才让我知道java接口、继承的重要性,而对于服务类和数据类的接口其实对于普通的小型程序是不必要的。

四、政府项目

政府项目是公司承接的一系列的项目,包括oa、cms、portal等。我们小组中共四人,工作计划由架构师完成,我来指挥协调,我们小组完成两个cms和一个portal。
其中cms基于临沂房产365这套程序来搭建完成,美工出来效果图和静态页面,程序员将其制作成模板,加上数据标签即可。
portal部分为购买其他公司的产品,因为产品与需求差别较大,因此与该公司协作进行了一些调整和二次开发。这部分工作由我来完成,由于需要与其他系统结合,还提供了一些webservice来完成数据的获取。用到框架为:jersey/xfile。
对于政府项目,我的感受就是:大家都希望直接用自己产品,最简单的完成需求,将工作量减少到最小。因此在这个时候,技术不是最重要的,重要的是如何协调一致,根据需求,完成功能模块。实现用户想要看到的效果。

综述:

在这一年里,以上的技术让我完成了从php程序员到java程序员的蜕变,也完成了从增删改查的进阶。在完成java一些框架使用熟练应用之后,我感觉到了成长,我也同时意识到了不足。前台美工方面,辛同学的到来让我有了一定的进步,在这里也谢谢她教了我不少东西。我也知道我的水平还需要提高。css/js仍然需要进一步学习,jquery的源码已经看了一部分了,有一定的收获,需要继续坚持看完。而java方面,除了必要的框架需要学习之外,我深深的意识到我java基础只是的不足,以及设计模式的神奇。所以要补足这两块。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics