NCRE项目经验总结——善良与胸怀

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013035538/article/details/50564233

           还记得在一次验收的时候,米老师说的一句话:善良,决定你做多少事情,而胸怀决定你可以做多大的事情。(原话忘记了,大概是这个意思)。于是,这句话印在了我的心里,做项目的时候,渐渐的减少了抱怨,多了一些善良,一些宽容。这次项目经验收获最大的不是攻克了多少难题,而是Change the thought of thinking 。之前,我没做过项目,进度也特别慢,在此感谢米老师给了我这样的机会,即使还是只菜鸟,但比之前要成熟了许多。下面根据编码,验收,测试,运行维护来谈谈自己的收获。

 

一、编码阶段

 

1、代码重复率高

 

        我们是按照模块来划分的,NCRE学生端总共有6个模块,选择题,Windows题,wordExcelPPTIE。其余的就是配题,以及教师端的一些操控类。就拿学生端的题来说,每种类型的题(选择题除外)除了判分逻辑不一样外,其他的基本上都是一个模子刻出来的。这样的代码,增加了重复率,有一些坏味道。

 

        解决办法:结合这点,我想到了今天刚研究的泛型,例如加载试题,都是从题库里去抽相匹配的题,只是传递的实体不一样而已,也就是相当于泛型中的类型参数。如果用泛型的话,正好解决了代码的重复性。

 

2SVN没有管理好,代码合并困难

 

        在刚开始的开发阶段,我们并没有使用SVN,那个时候,每次都得合代码,而一合代码准出问题。后来有了SVN,可能使用的不熟练吧,也是经常出现冲突的问题,有时候不想解决冲突了,直接重新当代码,我都不知道重新当过多少回了,而这样做造成的后果就是我们不知道哪个是最新的代码了,记得有一次,同样的一段代码添加过3次,这都是我们的管理不当,造成的不必要的麻烦。还有就是,学校和万达这边不是一个SVN,两边的版本不同步也是由于我们的管理造成的麻烦。

 

        解决办法:以后不管做什么系统,只要超过2个人的都要使用SVN,并能够熟练的使用,知道如何解决冲突等问题。如果需要在两个地方进行开发的话,那就要确定一处更新代码,例如在去学校之前将代码上传到云盘进行备份。这样就能够保证学校的代码是最新的。

 

3、编写代码考虑欠缺

     

        在我编写的判分逻辑代码中,只是简简单单的实现了功能,少考虑了很多问题。例如,在Windows判分时,一套题中有两个题的类型是一样的,都是查找文件夹,而我编写的代码中没有进行去重,导致每次去查找类型的时候都是出现两次,也就是最后的答题记录中多了两个值。这都是经验不足造成的。

 

解决办法:多敲代码,积累经验。

 

二、验收阶段

 

1、用户的时间是最宝贵的,我们应该在验收之前做好充足的准备,要保证程序是在生产环境上运行而不是开发环境。

 

2、演示,有头有尾,模拟考生真实做题流程。

 

3、不要把所有的功能都展示给学生,该隐藏的要隐藏,能少一点,绝不多一点,界面要简洁大方。

 

4、我们不要以设计人员的角度去思考问题,要多站在用户的角度思考问题,我们要去思考,用户最关注的是什么?

 

最近这些天一直在看人人都是产品经理里面的一些东西,有几点也想和大家分享一下:

 

1、删除按钮的弹出框提示,不应该写废话“您确定要删除吗?”而要将删除后造成的后果呈现给用户,以警示用户。

 

2、网站交互设计,是在打动用户,还是在伤害用户?例如验证码的设计,有趣的拼图验证着实打动了用户,而像12306那样的验证设计,那是深深的伤害啊!有时候输入好多次都是错的,其实她们这样做也是有他们的目的的:从产品角度分析12306图片验证码存在的意义http://www.pcpop.com/doc/1/1355/1355468.shtml。刚刚看到的一句话,说的特别好,这样的验证码无形之间增加了用户使用的困难,给用户带来了负担,但是对于那些习惯搞破坏的人来说,他们有足够的时间用来破解。

 

 

三、测试阶段

 

        测试阶段当然少不了我们真实的用户了,廊坊师范学院的考试学生们,以及提高班的师弟师妹们。

 

       1、测试准备工作不充分,没有提前安排好,这是每个人需要去反思的,没有做好备选方案。

 

       2、测试前,没有问题,测试时,问题多多。例如人数多了,判分失败,上传失败等问题。这说明代码功能实现了,但是性能上还有待提高,需要我们一步步的去优化代码。

 

 

四、运行阶段

 

         到了真正的考试阶段了,心惊胆战的,这还不同于测试,测试的时候,没有按照严格的时间来进行,做题也不都是认认真真的做的,而且考试的时候是上千人考试,这就更不一样了。出的问题也比较多,例如后台监控出来的死锁问题等。这个已经录屏了,师哥师姐们也研究了,等我总结完了我也要去研究研究。

 

         在监考的过程中,老师也给我们提了几点建议,例如悬浮框中加入学生的姓名,这样老师在检查人的时候就方便很多了(因为有的学生不拿学生证,只拿身份证),还有一点就是在导出成绩的时候添加上一个字段,授课教师的名字。

 

总结:

       以为考完试就可以放松了,可谁知,考完试还有更重要的任务等着我们呢,那就是给没成绩的学生进行判分。连续两天的判分,感觉累得不行不行的啦,回家睡觉说梦话全是判分啊判分啊!这同时也说明了一个问题,我们的软件还有很大的提升空间啊!

展开阅读全文

Java Web项目开发项目经验总结

10-28

rn一:学会如何读一个JavaWeb项目源代码rn步骤:表结构->web.xml->mvc->db->spring ioc->log->代码rn1、先了解项目数据库的表结构,这个方面是最容易忘记的,有时候我们只顾着看每一个方法是怎么进行的,却没有去了解数据库之间的主外键关联。其实如果先了解数据库表结构,再去看一个方法的实现会更加容易。rn2、然后需要过一遍web.xml,知道项目中用到了什么拦截器,监听器,过滤器,拥有哪些配置文件。如果是拦截器,一般负责过滤请求,进行AOP等;如果是监rn听器,可能是定时任务,初始化任务;配置文件有如 使用了spring后的读取mvc相关,db相关,service相关,aop相关的文件。rn3、查看拦截器,监听器代码,知道拦截了什么请求,这个类完成了怎样的工作。有的人就是因为缺少了这一步,自己写了一个action,配置文件也没有写错,但是却怎么调试也无法进入这个action,直到别人告诉他,请求被拦截了。rn4、接下来,看配置文件,首先一定是mvc相关的,如springmvc中,要请求哪些请求是静态资源,使用了哪些view策略,controller注解放在rn哪个包下等。然后是db相关配置文件,看使用了什么数据库,使用了什么orm框架,是否开启了二级缓存,使用哪种产品作为二级缓存,事务管理的处理,需要扫描的实体类放在什么位置。最后是spring核心的ioc功能相关的配置文件,知道接口与具体类的注入大致是怎样的。当然还有一些如apectj等的配rn置文件,也是在这个步骤中完成rn5、log相关文件,日志的各个级别是如何处理的,在哪些地方使用了log记录日志rn6、从上面几点后知道了整个开源项目的整体框架,阅读每个方法就不再那么难了。rn7、当然如果有项目配套的开发文档也是要阅读的。rnrn二:爬虫是如何实现的:rn获取规则url(正则表达式) -> 模拟请求(如httpclient get请求)-> 获取列表页html -> 获取信息页 rn-> 发送请求 -> 信息页html -> 根据规则截取相应的字段信息 -> 对字段进行清理(如图片压缩) -> rn静态化(存储到数据库)rnrnrn三:架构文档rn开发项目是需要学会写架构文档,而不是只是做一个码农rn包含以下内容:rn1、模块分级,各模块关系,各模块负责人rn2、各模块时序图rn3、各模块表结构rn4、协议文档(接口文档)rn5、每个负责人工作计划rnrn下发任务后每个模块的负责人用开发工具画出自己的时序图,表结构和接口文档,最后汇总到总项目负责人处。rnrnrnrn四:其它rn1、数据库是否分表问题:用分表的方式管理表有时并不合理,如果读的压力高是不值得的,可能更慢。如果写并发高就行(以千万级别为准)。 rn读是按缓存的,缓存密度在95%以上是比较保险的。rn读的优化:读单条信息,只需搜到这个id,然后直接从缓存中拿,缓存用id做缓存,查id的效率是很高的。rn2、CMS=模板+数据:可以通过只有一套自己的模板(如用freemarker),发送请求获取json数据填入信息。CMS有模板通过把数据填入模板即形成一个网页。rn3、计算机浏览器的网页内容要在手机上查看,需要做到响应式HTML。rn4、如通过抓取网页内容放到app上显示,需要做的内容:图片大小自适应,内容尽量保真,校验内容是否丢失,链接需要替换的需要进行替换,html标签替换rn5、爬虫的核心是多线程的任务管理,抓取分页列表内容。rn6、微信公众号上是如何绑定用户让用户只登录一次,下次不用登陆?rn 论坛

没有更多推荐了,返回首页