第一次做项目,第一次用javaee开发web工程项目,很多东西不会,摸着石头过河,也学到了很多东西。
第一次迭代开发,小组总体做出来的东西不多,与计划相比少了不少。完成的大致有两个半模块,其一是登录注册,其二是报警信息展示,其三是工单处理,还在技术上研究了动态数据在图表上的动态展示的实现(基于单个数据项的展示)。总体来说,很多后台工作没实现,前端做的页面倒是蛮多,交互功能也有,前端的工作进度是先于后台的;后台开发的滞后性,以致于功能模块的集成进度受到了阻碍。
后台人员主要做了登录,注册,验证码验证身份的后台工作这一块,由于之前没有接触过ajax和servlet,导致学习的时间开销很大。前端人员主要做视图上的展现,集成的插件,css模板比较多,做出效果来相对容易些。
下面回忆反思一下自己做的工作。由于我们项目做的是应用层的开发,物联网等底层的数据无法获得,我首先要考虑如何模拟获得数据,我觉得用一个线程,一个定时器来定时产生不同数据项的数据。其次,又因为现实中采集数据的频率有时会比较快,那么我就不得不考虑,如何能满足数据的实时传输,尽可能地减少开销,和传输的带宽。于是决定采用websocket来实时传输数据。到这里,数据传输的思路就出来了:前端申请握手——后台服务端响应——启动线程——服务端发送数据(websocket)——前端接收数据;刚开始啥都不会,不好意思用框架,花费了大量时间学习,老老实实用tomcat下的websocket,然后再用注解的方式实现。
数据实时传输,从后台到前端实现之后,我考虑到实时数据还得放在图上,让图动起来才行。但是,怎么画图呢,用windows自带的工具?为什么不用现成的呢?又方便,又美观。于是乎,采用了echarts的插件来实现实时数据的图形化展示。刚开始以为有现成的,会很简单。但是我发现我想得简单了。这个插件确实有自己的一套方法,但要用好它,要将自己的数据按自己的想法在图上展示,还是需要一定的功夫的,它的数据读入是采用json的格式解读。胡搞一番后,也算是成功地让数据在折线图上实时展示了。(难点在于坐标随着数据输入的体量大小而移动)
再接下来就是要考虑核心业务了,那就是报警。实时数据接收到以后,肯定是在后台进行处理,不可能放到前端,前端主要是用来展示的,要尽量少地写java代码。那么我们是来一条数据,然后到mysql数据库中轮询一次报警规则,再决定是否报警吗?显然,这样的做法,花费的时间会很多。数据源源不断地来,我们要尽可能快地进行处理,那么有什么可以加快的办法呢?我们知道,CPU是计算机中运算最快的,越靠近CPU的存储结构越快,最快的要数寄存器,但寄存器稀少,用处大,用在这里不太合适,性价比最高的要数内存!于是我有了把报警规则存到内存数据库中的想法,而现如今,最成熟,也最合理的内存数据库是redis,而且redis是键值数据库,报警规则中,以数据项作为key,报警的内容作为value,但报警的内容有多个字段(上阈值,下阈值,具体内容,报警类型等),这个时候,最好的办法就是把value用实体类封装起来,作为一个对象,存入redis中。当实时数据来时,对应好相应的key,看实时的value是否满足相应的报警规则,若满足,则推送该报警给用户。这里的难点是什么呢,是封装,封装成对象后,要把对象存入redis,之后再取出来的话,要进行序列化和反序列化处理。还要管理redis,考虑并发性,多个用户访问的可能,java中用jedis来实例化redis线程池中的对象。
总结,第一次迭代开发学到了很多,主要是研究技术上的实现,没有多少时间帮助后台人员进行开发。但是,作为PM,在此我不得不说,后台的开发真的是太慢了!大家要抓紧时间,多多把任务放在心上。真心希望每个人都是开发中,“鸡与猪”故事里的猪。
原文地址:https://www.cnblogs.com/huangxuanxiang/p/10086074.html