发表于: 2018-03-30 23:26:01
1 454
一、今天完成的事情
1、总结了之前所有的任务
任务一:
主要学习了mysql数据库的使用,jdk,maven,mysql环境的配置,集成开发环境IDEA的使用。分别使用JDBC,JDBCTemplate,mybatis,spring-mybatis对数据库进行增删改查操作,还有很多辅助的技能,比如junit单元测试,log4j和slf4j日志打印,异常处理,连接池配置和循环插入语句等等,还有部署云服务器,这些辅助技能是贯穿所有任务的必备技能,这个时候我已经对需求分析和DB设计形成了一个初步的思维
任务二:
开始进入web开发学习阶段,这个任务主要是学习springMVC并将之整合到spring-mybatis中,ssm框架的成型是web开发的热门标配,尝试写了几个增删改查接口。EL表达式以及表单提交的配合交互传参,cforeach标签对集合进行遍历输出,json格式数据的传递和写法,restful风格接口的编写以及web容器和web应用服务器的初步试用,还掌握了接口测试工具postman的基本操作,从这个任务之后,所有的项目都要在云服务器上部署并且测试无误才算真正完成
任务三:
学会使用一些linux系统常用命令,写了一些比较简单使用的shell脚本(可以打开、关闭服务器、一键部署war包以及nginx和tomcat日志内容的统计),通过脚本提取信息以及日志打印的配合完成一些非常有用的数据的统计,比如访问DB时间和访问次数等,学习了nginx的反向代理操作,通过spring-aop对数据库产生的交互进行统计实现解耦。
任务四:
比较详细全面的了解了根据需求来进行DB设计,将页面中需要与数据库相关联的地方实现动态化,初步接触到前端页面与数据库交互的操作,到这里终于有一种完成任务的幸福感,自己写的东西在前端页面也出现了预期的效果,中间还学习了网页复用框架tiles框架,对前端网页的结构有了更深刻的了解。学习了JSP的tag标签,将传入前端页面的Long类型时间转化为了date,方便用户读取时间。
任务五:
开始接触工具类,体会到Java封装特性的强大,DES加密工具类、Cookie工具类等等。学习了springmvc特有的拦截器(实际上都差不多),几种常用过滤器(CharacterEncodingFilter字符过滤器,HttpPutFormContentFilter专治表单提交put请求报错,HiddenHttpMethodFilter可以用于tomcat提交put和delete请求)几种常用的监听器(ContextLoaderListener应用上下文监听、 Log4jConfigListener日志监听)。还有cookie和session的区别和使用场景的选择,通过代码实现具体的需求以及springmvc自带的request response和session的用法
任务六:
对于性能测试和性能优化有了比较全面的了解,首先是Jmeter压测软件的使用,然后两个主流缓存中间件memcache和redis的使用,以及他们的性能对比。这里我体会到了高并发场景下接口性能的测试以及调优,结合之前统计脚本的使用定位问题所在,对一个接口内的各个方法调用过程,数据库交互过程的用时了如指掌,这里还学到了使用nginx负载均衡操作来对高并发状况下的服务器压力进行缓解。
任务七:
这个任务是一些常用第三方API的操作,主要是短信、邮件、对象存储等,体验了不同平台的API使用,掌握了如何在短时间内提取第三方开发文档的精华内容并用于实践,了解了一些第三方API的安全措施,实现了不同云存储平台之间的快速迁移和随意切换,第一次接触到Java中的策略模式
任务八:
学习了springRMI框架,在这里最重要的是分布式思想的形成,理解了分布式和集群的区别与关系,主要是分离web和service层,这里还学会了一些打包的技巧,最重要的是理解分布式开发的思想以及优点
任务九:
学习了老大非常喜欢的分布式框架托斯卡纳,并将web层和service层进行分离,了解了SOA与SCA的区别与联系,在这个过程中对文件头声明资源的格式和内容有了不错的理解,以后不再害怕文件头写错了
2、通读wiki关于复盘项目须知,了解了具体的项目流程,其中最主要的内容就是对敏捷开发流程的学习和理解。
一、story讲解
1、这个步骤主要是PM主导,PM搭建开发人员和客户之间沟通的桥梁,PM首先在与客户沟通后确认相关需求并拆分story,然后再和开发人员进行有效的沟通,确认开发人员已经理解了所有需求后,开发人员提出认为不合理的需求在这个阶段要及时提出,这个阶段我作为一名开发人员一定要积极参与,这对熟悉整个开发流程和项目的顺利进行非常有帮助
二、人员划分
2、这个步骤主要是项目leader负责按照模块分配人员和相关负责人
三、做方案设计、定义接口文档(2-3天)
3、接口文档的定义是前后端第一次重要的交流过程,这个过程前后端开发人员一起对原型图进行分析,根据根据原型图定义自己负责模块的接口并互相汇总,汇总后做出接口文档,这一步主要考验的是开发人员对于需求的理解
四、方案设计(1小时-1天左右,根据模块大小定义时间)
4、作为后端开发者,根据自己之前定义好的接口做出具体的方案设计,每一个接口至少要有一个可行的实现方案,一些比较复杂或者自己没有把握的接口,需要多提几个方案,说明各个方案的优缺点,这一步是考验开发者的一道难关,在没有具体操作的情况下要思考得出是否能写出逻辑实现的结果,对经验和开发技术的要求很高,DB设计和表的数量以及关联性的确定,对我来说最有挑战性的还有逻辑实现的确定,这也是我想在这次复盘中最主要提高的能力
五、方案评审(2-3小时)
5、大家一起参与讨论,讲自己的整个方案清晰的梳理给大家,让leader对方案进行评估,如果有不合理的地方,需要重新定方案,直到大家认为可行为止
六、禅道拆分(1-2小时)
6、禅道的拆分一定要细致,最长的任务不能超过4个小时,这里考验的是开发者对于项目难度的各个步骤把控能力
七、开发
7、按照自己拆分好的禅道进行开发,从部署服务器开始,每天坚持至少10分钟晨会,如果有延迟现象出现,拿出解决方案,保证项目按照禅道上的时间点完成,这个时候第一时间将假数据提供给前端开发人员,保证项目的并行开发
八、阶段测试
8、每天至少发布一次代码到开发环境,并且保证发布完之后程序没问题
九、性能测试和coderevivew(1天)
9、每个接口的响应时间不超过200ms,如果有超过的,做优化,尽量缩小到200ms内,根据coderevivew的结果对代码进行修改
十、压力测试
10、这个阶段主要是压力测试报告的编写
十一、 Demo
11、提前发邮件,注意邮件格式,如果demo没有通过,召集第二次demo会议并演示之前没有通过的部分,直到通过为止
十二、 发布测试环境、集成测试(2-3天)
12、这个阶段主要是测试主导,开发人员需要注意禅道看自己有没有被提bug,如果有的话就及时确认,及时修改,然后继续发布到测试环境
十三、发布线上环境,同时停止开发环境和测试环境
13、字面意思
十四、线上监控
14、发布到线上之后随时保持对项目的关注,有问题及时沟通解决
二、明天计划完成的事情
1、继续熟悉svn的各个操作
2、准备小课堂
3、准备ppt,准备复盘评审
4、完善之前任务中的一些知识盲区
三、遇到的问题
1、这次选了一个对自己来说比较有挑战性的复盘项目,感觉压力颇大,不过如果成功完成这个复盘,相信自己的能力会有质的飞跃
四、收获
对复盘项目有了一个全面的认知
Java任务已经完成
http://task.ptteng.com/zentao/project-task-488-unclosed.htm
评论