zoukankan      html  css  js  c++  java
  • 软件工程实训总结

      在校外实习已经接近尾声,现在把我在校外实习实训做一个总结。总的来说,在这段时间里学到了很多,不单理论知识得到扩充,个人专业技术水平上也有了较大的提高,对行业的认知更加清楚,这次实训对我今后的发展有重大意义。

      首先,真的很感谢学校的教学安排,能使我在没有毕业就有机会提前进入软件行业来磨砺,提前了解软件行业的现状,观察软件的发展方向,学到企业需要的软件开发技能。在校外实训的过程中,我懂得了软件行业中的协同开发,代码管理以及工作流程,对于将来从事软件开发的我们来说,这是一个很好的锻炼机会。

      时光蹁跹,实训告一段落,回首这段段时间,我完成了不少的任务。刚进公司由于对项目不熟悉,只做简单的web前端开发,还记得完成的第一个任务是为ExtJS弹窗Window做一个警告提示音,并且提供暂停和播放按钮,分三级音效实现。接到这个任务后我就构思,如何实现音效,如何实现控制,然后自学ExtJs,最终巧妙的用html5的声音标签循环播放实现了报警。

      完成了第一个任务,我又接到了一个ExtJs导航树节点的异步搜索任务。任务要求完成前台数据的过滤和显示,而且要求支持中文和英文,对于这个异步前端树过滤和以往的后台查找是不太一样的。以往的后台过滤可以根据字段检索符合条件的相应节点回来展示即可,数据库可以做模糊查询,这是很容易实现的,问题是现在把所有的一级节点展示出来了,子节点当你点击时候才会展开并通DWR动态加载,而且要做前端的检索。树节点还可能有几级,这下可麻烦了,但是在我的耐性攻关下,完美实现了一个树检索功能。

      思考的越多,练习的越多,进步就越多。刚进公司那段时间,我基本上都是在搞前端的ExtJs框架,在为华丽的界面倾倒的时候,也迷失在了庞杂的控件当中,毕竟是自学,有时候为了某一个功能,费了很大劲,又是查资料又是逛论坛,最后找到的仅仅是一个属性。到后来,慢慢的熟悉了这个丰富的框架,写起代码来得心应手,这和前期的努力是分不开的。做了树搜索,又写了一个备品件管理,点表数据过滤等。

      后来,由于项目的需要,得定制一个专用的右键菜单,我一阵狂喜,用ExtJs 的contextmenu组件,瞬间搞定。但是事情往往未必是按着你的预期发展的,经理说不能用Ext来写,原因是为了写一个右键引入一个重型的库得不偿失。好吧,这不难,不让我用Ext还不让我用JQuery?说干就干,不多时就搞定了,正在我沉醉在自己的成果当中时候,经理对我说,我写的代码在距离浏览器边沿的时候可能无法完全显示。还是高兴的太早,这是程序员的一大忌,简单的说是有所疏忽,说重点是态度问题,做事不认真,工作不细心。

      说起了错误,我想到了两件事,都是有关于我疏忽的问题,虽然未造成什么影响,但是也给我了很重的一击,让我铭记,做事要认真,细心。一天上午,经理叫我,问我的代码怎么在IE浏览器上跑不起来,在Chrome上倒没问题,排查出来发现是我在最好一个配置属性后面多了个逗号,在IE上却造成了错误。我满心内疚的回到了自己的工位。还有一次,  我们将采集并生成SQL语句向数据库中插入记录,那是有关于发电机的速度和实际功率对应的一些数据,字段是double类型,有不小的数据量,插入很久居然发现全是整数,前面的工作都白忙活了。有了问题不要紧,最主要的是找原因,然后解决问题。最后发现问题是指定了字段的长度为10,而小数则是默认的0,如果不指定长度或者修改小数位数都不至于出现这个问题,看来工作细心还是很重要的,要不然下次的问题就不一定这么小了。

      到后面,随着个人能力的提升,做的任务也稍稍有些难度了。项目中要实现一个单浏览器页切功能,简单的说就是,一个浏览器窗口中相同地址的网页只能打开一个。这个任务源于数据页面是实时刷新的,打开多了服务器负载比较大,因此规定只能打开一个。然而在Chrome浏览器中,要想做到这样的控制,必须要操作浏览器的Tab标签,如何操控Tab标签呢,简单的做法就是写一个Chrome浏览器的扩展。然而在浏览器扩展这方面我是没有任何经验的,为了这个功能,我只好现学现用,发现了360翻译的一套Chrome的文档,虽然有些陈旧,但也给了我不少启发,还是用我蹩脚的英语硬抠Google的官方API,实现了预期的功能。通过这个简单的Chrome浏览器扩展的开发,不单拉近了我和Google的距离,更使我了解到了更多的知识,增强了我自学的能力。日新月异的网络世界,不断的推出新技术,只有不断学习不断进取才能站稳脚步,正如人们所说的,你进入这个领域,你就要做好终身学习的准备。

      写完了Chrome扩展,我又接到了一项新的任务,承担一个功能模块的开发。工作在某种意义上和时钟是很相仿的——一个任务的完成的时间也是下一个任务开始的时间。原本由两人来开发的“**信息共享”模块,由于项目人员的调动,交由我独立开发完成。这是一件好事呢还是坏事呢?我觉得前者的意味重一些。在对我能力肯定的同时,又给了我自主灵活的空间,更给了我历练自己的机会。

      说干就干,从开始的数据表设计,到界面的编写,功能模块的完善,再到数据处理,业务逻辑的实现,每一个细节,每一个问题我都一一的去解决。除了请教项目经理,咨询同事,网络查询等,在周六日我最常去的地方就是图书馆,我的一些问题,一些想法,在那里总会找到答案。清晨早早出门,乘一个多小时的车,在9点首都图书馆开馆之前赶到,能够在5楼轻松觅到一个带电源的席位,然后开始一天惬意的coding。往往都会感慨时间的消逝,临近闭关前携几本书籍悻悻而归,这一天过的真快,然后意识到肚子挺饿,还没有吃午饭,背着沉甸甸的书籍回去也算是一种补偿吧。

      “**信息共享”模块是我完完整整做的第一个大模块,在这其中也走了不少弯路,不过还是完成了预期的任务,实现了以下功能:用户登录、在线用户查看、用户管理、**管理、**列表显示、**信息查询、**部件信息查看、工作单提交及回显等。在做信息管理的时候,曾在Grid数据渲染上面卡了很久;在做信息查询及列表显示的时候,也曾在远程数据调用,数据采集及维护上面碰了不少次壁;在做工作单提交及回显时候,由于前期构思的不够缜密,最后优化掉了近60%的冗余代码。可能自己一个人前行的道路更加曲折,但是自己走过一遍的道路则更加清楚明了;可能自己一个人解决问题耗费的时间与精力比较多,但是即得到“鱼”又得到“渔”何尝不是一种收获?有人说过,上帝关掉了你的一扇门,却也打开了你的另一扇窗。年轻的人,可能对生活不甚明了,倾听过路人的意见或建议是明智之举,不过一些事物也应该去亲身经历下,至少你可能会有不一样的感慨。

      开发完了“**信息共享”模块,放到了虚拟机中调试运行,发现问题解决bug,这一路下来,问题就像是一个形影不离的老朋友,是不是的给你开个玩笑,捉个谜藏,有时真心让你丈二和尚摸不着头脑,恨的牙痒痒的,郁闷的只好重启机器,然后问题奇迹般的烟消云散掉了。

      之后又开发**档案模块,实现一个**信息的管理维护功能。有了之前的开发经验,在技术实现上问题不多,但是却在数据库存储及数据检索上面卡壳了。如果说,遇到问题是个必然,不在这里,就在那里。那么,解决问题也并非偶然,弥补这个短板不行,就继续延长那个长处,问题总会得到解决。可能这和心态也有一定的关系,如果我用以前的老思路,老方法来解决这个相差不大的问题,一切就是水到渠成,实现起来也不费力。大抵是年轻的缘故,总是喜欢新事物,喜欢挑战,向往激情,不喜欢单纯完成任务而完成任务,不大喜欢走老路,不喜欢为解决问题而解决问题,总想另辟蹊径。这在过来人眼中何尝不是一种幼稚的悲哀,无谓的执拗。

      实训的这段日子,技术上的长进是显而易见的。项目中用到的有以下这些:ExtJs、DWR、Spring、Ibatis(现在叫mybatis)、JQuery,从开始的生涩到现在的灵活运用,走过了不少的路程。

      首先说下ExtJs,这个Web富客户端框架。我们只需要使用这些组件就能实现各种丰富多彩的UI界面。它的控件或者叫组件是很好用的,比如用于显示树信息的TreePanel,用于显示表格的GridPanel与EditorGridPanel,还有ViewPort、Window等只要掌握一些基本的核心控件,了解面板的组成及工具栏等,就能轻而易举的实现很精彩的UI交互界面,开发变得简单起来。当然,作为求知欲强烈的人来说,这些并不能满足胃口。如果再多学写基本的表单字段,不管是ComboBox,NumberField、还是DateField,这些Ext.form.Field类的子类,熟知它们的各种基本操作及特性,掌握主要方法、事件等,做数据编辑录入,数据校验提示等都是很便捷的,我们可以将大多精力集中在业务逻辑开发上。当然这些都是基本的使用,ExtJS还有更炫的,如Charts,Tabs,Drag And Drop,MVC等,肯定能给你别致的体验。

      在Ext的驱使下,可能是经常光顾其官网Sencha的缘故,使我有幸相识了它的另一个移动客户端版本SenchaTouch,该框架是世界上第一个基于html5的Mobile App框架。同时,ExtJS更名为Sencha。Sencha Touch可以让你的Web App看起来像Native App,你还可以借助PhoneGap打包成多平台版本的应用,移动开发将变成一处开发,多处运行。

      谈到了Sencha,就不得不说下另一个极富影响力的web框架——JQuery。Query在2006年1月由美国人John Resig在纽约的barcamp发布。如今,JQuery已经成为最流行的javascript框架,在世界前10000个访问最多的网站中,有超过55%在使用JQuery,它一直以简约优雅著称,其核心理念是write less,do more(写得更少,做得更多)。

      在JavaWeb开发中,DWR(Direct Web Remoting)这个用于改善web页面与Java类交互的远程服务器端Ajax开源框架技术也值得一提的。它可以帮助开发人员开发包含Ajax技术的网站。它可以允许在浏览器里的代码使用运行在web服务器上的Java函数,就像它就在浏览器里一样。DWR允许web开发人员传递一个回调函数,来异步处理Java函数调用过程。

      JavaWeb开发人员不可不用的一个开源框架就是Spring,它是于2003 年兴起的一个轻量级的Java 开发框架,是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的源码设计精妙、结构清晰、匠心独用,处处体现着大师对Java设计模式灵活运用以及对Java技术的高深造诣。Spring框架源码无疑是Java技术的最佳实践范例。如果想在短时间内迅速提高自己的Java技术水平和应用开发水平,学习和研究Spring源码将会使你收到意想不到的效果。

      不得不说Spring框架是JavaWeb开发的一件神器,不过在ORM框架中ibatis也是一件强有力的法宝。“半自动化”的ibatis,则在于POJO 与 SQL之间的映射关系。也就是说,ibatis并不会为程序员在运行期自动生成 SQL执行。具体的SQL需要程序员编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定 POJO 。“全自动”ORM机制而言,ibatis以 SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。作为“全自动”ORM 实现的一种有益补充,ibatis的出现显得别具意义。ibatis通过SQLMap将Java对象映射成 SQL语句和将结果集再转化成Java对象,与其他ORM框架相比,既解决了Java对象与输入参数和结果集的映射,又能够让用户方便的手写使用SQL语句。

      软件行业魅力无穷。通过这短短3个月的行业实训,我收获了很多。专业技术能力有了显著的提高,对行业认识愈加清晰。这个充满激情和财富的热土,吸引这成千上万的有志青年,他们充满朝气,阳光自信,勇于挑战,踏实拼搏,锐意进取,相信明天的成就属于有准备的人。

  • 相关阅读:
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    Python, pandas: how to sort dataframe by index// Merge two dataframes by index
    永久修改VS include目录
    <OFFER05> 05_ReplaceSpaces替换空格
    用二叉树进行排序 x (从小到大)
  • 原文地址:https://www.cnblogs.com/tzhz/p/3473736.html
Copyright © 2011-2022 走看看