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

记得自己当初写过一篇总结的,我想这些对于刚出校门没什么工作经验的程序员应该会有一些帮助,但是却怎么也无法在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. Jquery.KinSlideshow图片轮播插件

    KinSlideshow无缝滑动幻灯片jquery特效代码Jquery幻灯片特效jquery.KinSlideshow-1.1.js 兼容IE6/IE7/IE8/IE9,FireFox,Chrome* ...

  2. JavaScript----函数的封装、继承和多态

    1.封装:把实现一个功能的代码放在一个函数中封装起来,以后再想实现这个功能的时候,我们不需要重新的编写代码了,只需要执行对应的函数即可,我们把这种机制就称之为"函数的封装"--&g ...

  3. 服务器启用 FTP

    通常使用 vsftpd 作为FTP服务器. 安装 vsftpd: 1.以管理员(root)身份执行以下命令 yum install vsftpd 2.设置开机启动 vsftpd ftp 服务 chkc ...

  4. 【转】IOS学习笔记29—提示框第三方库之MBProgressHUD

    原文网址:http://blog.csdn.net/ryantang03/article/details/7877120 MBProgressHUD是一个开源项目,实现了很多种样式的提示框,使用上简单 ...

  5. GPU优化方法[转]

    CUDA优化的最终目的是:在最短的时间内,在允许的误差范围内完成给定的计算任务.在这里,“最短的时间”是指整个程序运行的时间,更侧重于计算的吞吐量,而不是单个数据的延迟.在开始考虑使用GPU和CPU协 ...

  6. Android调用系统分享功能以及createChooser的使用

    工程结构 //效果图 点击测试分享                                                                                   ...

  7. Navicat导入数据时发生了报错 --- 1153 - Got a packet bigger than 'max_allowed的处理办法

    今天我在使用Navicat导入.sql文件数据时,发现本来是80万条的数据,结果只导入了10万条左右,而且在其错误信息日志中,我发现了这样一条错误:1153 - Got a packet bigger ...

  8. C# 中DataTable转成模型List

    C# 中DataTable转成模型List 引入using System.Reflection; 命名空间 使用注意实体类的属性名必须和DataTable的列名一致 使用: DBList<Sto ...

  9. c# 图片XML序列化与反序列化

    var xmlDoc = new XmlDocument(); xmlDoc.Load(@"C:\Users\*\Desktop\*.xml"); ].ChildNodes[]; ...

  10. sql server行级锁,排它锁,共享锁的使用

    锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新 A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 ...