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

不过好在,虽然不加班,但是事情还是有的,每个月基本上都有任务,一周需求,一周开发,一周联调,然后再一周测试,可能细节上不完全这样,但大体上也就这样吧。因而虽然不怎么加班,倒也不至于说是什么事都没有。

介于这样的安排,上上个月完成了我的第一次正式项目,也就是我们项目的迭代八,而上个月一个月的时间,又结束了我的第二次正式项目,也就是我们项目的迭代九。

相对于迭代八我只负责一个功能的实现来说,迭代九的工作就要多很多了。

因为之前两个来的久一点的同事被调到了其他项目组,所以我不仅要接手其中一个人的模块维护,还要负责新的迭代中两个统计模块,这样不仅从量上变多了,逻辑复杂度上也比迭代八要高。

这一轮的迭代,虽然说不是完全的新模块,只是在旧模块上修改,但是实际上在实现的时候,基本上跟新增没有多大的区别。

在我们的mongodb数据库中,统计需要用到的源数据表有四个,在统计的时候,之前的做法是把四张表的数据跑定时器统计出来,然后放到一个新的统计表中,再在项目页面统计的时候,直接拿出统计表中的数据就够了。

而新的需求中,要求把定时变成实时,如此一来,每一次的统计都需要根据不同的条件查询四张表,再把四张表的数据进行一定的处理:合并或者拆分。

同时查询四张表,如果是关系型数据库,可能会简单很多,但是mongodb是非关系型数据库,又因为自己对mongodb的使用并不是很熟,因此也是绕了相当多的弯子才勉强搞定。

应该是有了上一轮迭代的经验积累吧,这一次虽说工作比上次多了而且难了,但是我实际用的时间并不比上一次的多,甚至从某种程度上来说所花费的时间还要少一点。

这一轮的迭代,对mongodb的基本操作有了更进一步的掌握,上一轮中,学会了基本的增删改查语句,这一轮在此基础上新掌握了不同数据库间表的导入和导出,根据多条件查询以及排序和分组。

因为统计涉及到的数据很多,在测试调试的过程中,也要不断的把页面上的数据和数据库中的数据对比,因此也算是更熟练的掌握了调错、找错的技能,能更快的找到问题根源。

相对于上一次基本上弄清了springmvc的三层结构,这一次也算是进一步练习了三层结构的使用,除此之外,对于集合、数组等数据的封装和拆分也有了更进一步的理解和使用。

如果说收获的话,这一次最大的收获,大概就是关于代码优化和重构了。我所负责的两个模块,实现细节上有很多的不同,但是有一些环节却是大同小异的,可能是由于经验方面的不足,或者是知识方面的欠缺,所以在好几个地方都有看起来似乎一样的,但仔细看又不一样的代码。

当看到这些代码的时候,我想过要提炼出来,但是几经尝试后,没能提炼成功,我以为可能是真的不能提炼了。直到后来项目经理看到后,热情的帮我弄了一下,我才发现原来并不是不能提炼,而是自己经验不足,所以思维过于局限了。

值得一提的是,在项目经理指导我提炼上边代码的时候,顺便指出了我另外一个可以优化的地方。

在代码中,我有几个地方需要判断一个list中的元素是否存在于另一个list中,于是我用了for循环,结果项目经理只用了一个contains方法就搞定了我十几行。由此可见,有的时候多掌握一点知识,可能就能为我们省下很多的工夫了。

书山有路勤为径,学海无涯苦作舟,这句很早以前的名言早就烙印在我的心中,但是自从进入软件行业以来,我突然发现虽然要学的东西很多,但其实也是乐趣无穷!

第二次正式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. 【原创】三分钟教你学会MVC框架——基于java web开发(2)

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

  6. 使用Eclipse+Maven+Jetty构建Java Web开发环境(几个教程综合集成2014发行)

    工作需要使用Jetty由于web集装箱,得知Eclipse+Maven+Jetty该组合是非常好的,因此,要在网上找了很多教程,但不写或多或少特定的或过时的内容而导致最终的配置失败,易于配置为未来的同 ...

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

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

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

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

  9. java web开发必备知识

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

随机推荐

  1. 比较字符串,equals防空指针问题

    1,比较两个字符串内容的话,用a.equals(b)比较,其中a,b是两个字符串,用a==b的话比较的是a和b的内存地址.2,如果一个字符串是变量,另一个字符串是常量的话,一定要把常量写在前面,变量写 ...

  2. jq中 offset()方法, scrollTop()方法以及scrollLeft()方法

    offset()方法是用来获取元素在当前视窗的相对偏移,其中返回的对象包含两个属性,即top和left,它只对可见元素有效. scrollTop()方法是用来获取元素的滚动条距离顶端的距离. scro ...

  3. ES6 - 对象

    ES6为对象带来的新特性. 对象传统的写法: let person={ 'name':'Lily', 'say':function(){ alert('hello!'); } } 1.ES6中写法更简 ...

  4. POJ2112 Optimal Milking (网络流)(Dinic)

                                             Optimal Milking Time Limit: 2000MS   Memory Limit: 30000K T ...

  5. hdu1078  记忆化搜索(DP+DFS)

    题意:一张n*n的格子表格,每个格子里有个数,每次能够水平或竖直走k个格子,允许上下左右走,每次走的格子上的数必须比上一个走的格子的数大,问最大的路径和. 我一开始的思路是,或许是普通的最大路径和,只 ...

  6. java的nio之:浅析I/O模型

    也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗.在 进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型.下面本文先从同步和异步的概念 说起 ...

  7. 论文笔记之:Multiple Object Recognition With Visual Attention

     Multiple Object Recognition With Visual Attention Google DeepMind  ICRL 2015 本文提出了一种基于 attention 的用 ...

  8. Don’t Assume – Per Session Buffers

    MySQL has a number of global buffers, i.e. your SGA. There are also a number of per session/thread b ...

  9. C++泛型编程原理

    1.什么是泛型编程前面我们介绍的vector,list,map都是一种数据结构容器,容器本身的存储结构不同,各容器中存在的数据类型也可以不同.但我们在访问这些容器中数据时,拥有相同的方式.这种方式就叫 ...

  10. C#学习之初步理解委托、事件、匿名方法和Lambda

    最经在学习LinqtoSql,然后扯到Lambda表达式,然后扯到匿名方法,然后扯到委托,最后扯到事件处理...后来发现对委托这个概念和事件处理这个过程理解得不是很清晰,遂得一下学习笔记.那里说得不对 ...