去年下半年到现在,因为公司人员流动,也有好几个新进的员工分给我来带领,也有刚从学校出来的,在和他们交流的过程中,不由的想起自己刚刚进入这行的一些感想。

记得自己当初写过一篇总结的,我想这些对于刚出校门没什么工作经验的程序员应该会有一些帮助,但是却怎么也无法在csdn博客列表中找到这片文章。

后来无意中发现它竟然跑到了我的回收站中,我已忘记是因为什么原因使他跑到了这里,但是我想恢复的时候又发现有点坑的是,csdn回收站的东西无法恢复,因此只好重新发表了。

以下是当时的总结:

从学校走出来,转眼间就过去三四个月了,在公司的这几个月来,终于在最近几个星期迎来了第一个正式的开发项目,确切的说,是项目迭代。

截止到今天,这一轮迭代已能算是基本完成,虽然分到自己的任务并不是很多,甚至可以说非常少,但是从中得到的收获依旧是巨大的,这大概就是所谓的实践出真知吧!

在培训学校学了四个月,感觉学了很多东西,但是一直迷迷糊糊的,连书本上的许多习题都不能独立搞定。每每看到一个小程序的代码的时候,总感觉非常的简单,但是当只是给自己一个需求让自己找思路的时候,却又总是感觉无从下手。

而来到公司之后,或许是因为不一样的气氛的缘故,在不断的学习的过程中,当我再回过头去找一些以前没有做过的小习题时,居然很是惊讶的发现并不是之前看到的那么难,解决思路也都像是原本就有一样水到渠成。

或许这就是积累的力量吧,坚持走下去,就会有很多事在不知不觉间发生了改变!

在这一轮的迭代中,我只负责一个查询功能的实现,整体比较简单,只是对查询出的结果进行处理的过程看似有一点点复杂。因为是第一次独立的开发,所以在这个过程中犯了一大堆的错,思路变了又变,代码改了又改,也正是因为这样,让自己才获得了很大的收获。

这个小小的功能,代码被我重写了好几遍。刚开始的时候,因为对mongodb数据库的完全陌生,所以只是简单的套用别人的查询语句得到一个自己看不太懂的结果,然后进行了一系列的变换,最终把结果变成了我所熟悉的字符串和list集合,再在这个基础上进行处理,最终得到我想要的结果。

结果最终是被我弄出来了,很是兴奋,但是经过高手的检查之后,告诉我的却是这样的写法太不可取了,原本应该很简单的实现不该被弄的这么复杂。于是乎,在高手的指点下重新设计思路,完全摒弃了用字符串来处理的想法,于是几乎整个的代码就都成为了废品,只能重头再来!

不断的查资料,不断的询问,不断的尝试,一两天的煎熬后,终于又成功使用第二种思路得到了我想要的结果。然后反反复复的检查了很多遍,再次确定似乎是很符合要求了之后,我便又找来了高手给我检查。

满心期待,但结果还是不符合要求,原因是我们的web项目使用的是springmvc结构,而我的代码处理逻辑几乎是全部都在dao的实现类中一气呵成了!

对于高手的点评,我是心服口服,因为对于mvc三层结构,以及controller、service、dao这三层,我在培训学校的时候一直都没有弄明白,一直到现在开发的时候我都分不清该怎么用。

高手告诉我说,dao中只需和数据库打交道,得到了数据库中的结果就ok,然后主要的处理逻辑在service中,service中返回的结果要能够供别人调用,最后返回的结果的最终处理放在controller。

于是,再次整理思路,把dao中的代码进行分解,然后适当的放到另外两层中,再进行数次的调试,最终又成功迎来了我想要的结果。

我想,这下应该是可以了吧!我在本机上测试了无数次了都没有任何问题,应该算是完工了吧!但是当最后和前台一联调才发现完全不是那么回事,前台无论发送什么样的请求给我,我给他返回的竟然都是“message:没有数据;result:success”!

这是一个多么令人沮丧的结果,尚差一步,但就是尚差一步!于是只能再次拼命的分析,绞尽脑汁的测试。

但是结果却是不尽人意的,我怎么想,怎么测都觉得应该是没有问题,可是他结果偏偏就是有问题,于是我只能是不停的抓耳捞腮!

这里是公司,不同于在学校,结果出不来不能就这样了,再没办法也要想办法!于是在最终感觉真的是黔驴技穷的时候,我便只能又找来了高手。

结果,高手随便瞄了一眼就找到了问题所在,这让我长久的折腾更显得徒劳!原来问题只是我在接收前台参数的时候多加了一个@requestbody的注解,我以为接收参数就要这个注解,而实际上这个注解并不能这样乱用!

在高手的再次指点下,我删除了那个注解,结果tomcat一启动,页面一刷新,想要的画面就那样神奇的出现在了界面上,这时候真是感觉颇为无语,说不出感觉的无语。

和前台联调成功,这个任务算是基本完成了,这个过程中,初步清楚了mvc,初步懂了mongodb数据库,初步明白了公司项目开发的整个流程,也初步掌握了debug调试。

综上等等,在这一次项目中,最大的收获应该主要有两个,第一个就是了解了公司正式项目的基本开发流程,使自己刚进公司时的忐忑心理变得略微踏实了一些。

总结一下,大概的流程应该就是这样的:

首先由需求人员向项目组提出需求,然后给项目组的所有人进行需求讲解,大家一起探讨需求中各项细节的可行性。

当开发人员和需求人员一起确定需求没有问题的时候,如果有时间,可以让开发人员进行一次需求反讲,在需求和开发都确认没有问题的时候,需求便算是正式定下来了。

需求确定以后,开发人员进行分工协调,然后订制开发设计概要和API,后端API中一般包括一些接口,需要的参数,还要和前端一起确定好访问路径,需要传递的参数以及返回给前端的数据格式。

在设计api的过程中,前后端各自设计好以后,要召开专门的会议互相讲解,在讲解讨论的过程中达到相关意见的一致,此过程中测试人员也要参加。

当api也都确定好以后,开发人员正式开始开发,测试人员也开始写测试用例。

在开发人员写代码的过程中,要针对自己的代码进行单元测试,同时需要写好单元测试文档,在测试的过程中不断的修改和优化自己的代码,以保证逻辑更严谨,执行效率更高,代码更整洁。

然后,在前后端各自都测试并完善好自己的功能点后,前后端人员一起进行联调,进一步确保功能没有问题。

如果上一步骤也都没有问题以后,代码就打包部署到测试服务器交由测试人员来专业的测试,进一步寻找问题,以求最终的程序更加完善。

这一次的开发基本步骤大概就是这样了,那么第二个收获就是学会了比较正确的开发态度。

之前培训的时候,可能是因为环境不一样吧,那时候遇到一个习题或者是一个需求的时候,都会一开始想一阵子办法,当一段时间的努力还是无法解决问题的时候,通常就会忍不住去看看参考答案,然后在参考答案的帮助下,自以为找到了自己的思路,然后会看似成功的完成代码,而这样的后果是,其实并没有真的得到该有的收获。

而这次真正的开发中,没有参考答案,也没有做不出来就不管了的说法,无论怎样都必须想办法得出想要的结果,正是因为这样,才使自己在开发中得到了与之前完全不同的收获和感悟。

人生有许多的第一次,第一次总是让人记忆尤深!第一次之后还会有无数次的其他经历,许多事只有走下去才知道结果如何;许多事,只要不断的走下去,就会有意想不到的收获!实践出真知,行动得结果,空谈会误国,实干才兴邦!在理论中实践,在错误中成长,在失败中总结,在跌倒中爬起,坚持不断的走下去,学下去,这世间终究会有一片属于自己的天空!

路就在脚下,坚持走下去,以编程书写人生,使代码产生力量,用软件展现价值,让程序推动梦想!!

第一次正式java web开发项目的总结的更多相关文章

  1. 第二次正式java web开发项目的总结(回收站恢复)

    都说互联网行业加班很是厉害,记得前不久网上还晒出了几个大城市互联网行业的加班排名调查,但是我们公司,或者说我们项目组倒是非常的例外,进公司也差不多半年了,才仅仅上个月有一个周六加过一天班而已. 不过好 ...

  2. SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

    熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...

  3. Java web 开发填坑记 2 -如何正确的创建一个Java Web 项目

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/72566261 本文出自[赵彦军的博客] Java web 开发填坑记 1-如何正确 ...

  4. java web 开发三剑客 -------电子书

    Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知In ...

  5. Java Web开发环境配置(JDK+Tomcat++IDEA 14)

    对于未接触过java web开发的大家而言,应该和我一样对java web编程开发比较迷茫,通过查一些资料,大致清楚了java web开发环境的一些基本配置,未做过相关编程的人员可以看一看,由于我刚接 ...

  6. java web开发中常用的协议的使用和java-web 常见的缓冲技术

    一.DNS协议 作用将域名解析为IP   类似于我们只需要知道中央一台,中央二台,而不需要知道它的频率,方便记忆. java dns 域名解析协议实现 1 域名解析,将域名可转换为ip地址InetAd ...

  7. Java Web开发中MVC设计模式简介

    一.有关Java Web与MVC设计模式 学习过基本Java Web开发的人都已经了解了如何编写基本的Servlet,如何编写jsp及如何更新浏览器中显示的内容.但是我们之前自己编写的应用一般存在无条 ...

  8. 【原创】三分钟教你学会MVC框架——基于java web开发(2)

    没想到我的上一篇博客有这么多人看,还有几位看完之后给我留言加油,不胜感激,备受鼓励,啥都别说了,继续系列文章之第二篇.(如果没看过我第一篇博客的朋友,可以到我的主页上先浏览完再看这篇文章,以免上下文对 ...

  9. java web开发必备知识

    从各种招聘网站的要求上筛选出了一些java开发的一些基本的要求,对照自身看看有哪些缺陷. java基础 既然是java web开发,java SE肯定要学好了. 多线程,IO,集合等,对队列,缓存,消 ...

随机推荐

  1. 383. Ransom Note

    
Given
 an 
arbitrary
 ransom
 note
 string 
and 
another 
string 
containing 
letters from
 all 
th ...

  2. Queue及Stack

    Queue 她是一个接口,有多冢实现方式(LinkedList.ArrayDeque等) 类别 方法 入队 add.offer(优先级高) 出队 remove.poll 查询 element.peek ...

  3. 2015GitWebRTC编译实录8

    2015.07.20 common_video 编译通过,其对libyuv有引用[1309/1600 ] CXX obj /webrtc/common_video/libyuv/common_vide ...

  4. 自定义动画方法 animate()

    animate方法的语法结构为: animate(params,speed,callback); 参数说明: (1) params:一个包含样式属性及值的映射,比如{property:'value1' ...

  5. Oracle数据库Linux下的导入IMP

    和相关篇的EXP相对应的用了如下的导入方法. [oracle@localhost ~]$ imp Import: Release 11.2.0.1.0 - Production on Fri Sep ...

  6. Codeforces Round #135 (Div. 2)

    A. k-String 统计每个字母出现次数即可. B. Special Offer! Super Price 999 Bourles! 枚举末尾有几个9,注意不要爆掉\(long\ long\)的范 ...

  7. POJ 1488 Tex Quotes --- 水题

    POJ 1488 题目大意:给定一篇文章,将它的左引号转成 ``(1的左边),右引号转成 ''(两个 ' ) 解题思路:水题,设置一个bool变量标记是左引号还是右引号即可 /* POJ 1488 T ...

  8. mysql创建用户和创建数据库赋值用户操作权限

    mysql 进入mysqldb SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; ...

  9. Python字符串分割

    代码如下: [root@localhost test]# cat 3.py #coding=utf-8 ev = """ 1evilxr 2www 3nihao 4evi ...

  10. 【usaco】patrol

    很长时间都没想出来的简单题,看了题解才写出来,还是naive 原题: FJ有个农场,其中有n块土地,由m条边连起来.FJ的养牛场在土地1,在土地n有个新开张的雪糕店.Bessie经常偷偷溜到雪糕店,当 ...