团队技术信息
公司信息
功能模块: 该网页是我司官网地址(www.lansetech.com)。不同于其它的官网的是,我司的官网使用了大量的动画特效来实现官网。使得官网在各个页面之间的切换流畅且舒适。网页一共由十多个页面组成,涵盖了公司的团队介绍、业务范围、成功案例、联系方式等。不同的页面之间采用不同的动画效果来切换,操作起来十分丝滑。 使用用技术: 该网站大量的使用了基于css3和html5的动画技术。包含如淡入淡出、旋转、缩放、移动等。并且通过这些动画的排列组合以及加上的延时特效实现了一个不同于其它传统官网的网站。
项目模块: 物联网设备在线监测系统是我司按照客户需求开发的一套设备管理系统。 该系统实现了对客户指定的物联网监测设备的全生命周期管理。用户可以通过该系统在地图(支持离线和内网)上查看设备所在的地理位置、远程管理设备、监测设备运行状况、查看设备实时数据等。 设备会不断产生监测数据并上报至系统。而系统也会对每一组上传的数据进行分析、转换、生成相关图表并在监测到异常数据时进行告警。为了进一步提升设备采集数据的价值,我们按照客户要求,针对性地使用了傅里叶变换、核密度估计等多种算法供客户进行二次分析。 以下是更为具体的模块情况: 1. 设备管理模块。主要包含设备的基本信息、设备远程操作、设备在地理位置、实时状态等功能。该模块主要管理整个设备的基本信息,使得使用者能够清晰明了的查看设备基本信息和状态。 2. 实时处理模块。用户的系统会源源不断的通过一个消息队列向系统上传多个维度的数据。每日每台设备可达GB级别。这个模块主要负责数据的实时处理,流式处理。所有进入系统的数据,都会经过多轮处理。系统首先会分析数据的常规信息,如均值、方差、峰度、偏度等。其次会进一步的进行一定的转换和进一步分析,如使用傅里叶变换、核密度分析、网格密度分析等方法进一步分析数据,最后会将有需要转换成图片的数据生成图片保存在服务器上,以便后续的分析和查看。在实时处理的过程中,如果分析发现数据存在异常,系统还会发出告警信息,提示用户关注设备监测到的异常情况。 3. 数据分析模块。设备源源不断的上传到系统之中,且会被自动的分析一轮。但是在此之上,客户还需要对数据进行进一步的分析处理。如查看历史数据、查看数据转变情况、查看数据趋势甚至是手工操作和过滤数据。整个数据分析模块分为静态分析和动态分析。静态分析可以快速查看历史数据,并查看数据存储的基本信息、趋势等。动态分析可以针对一部分的数据,进行过滤,拆分,或者选择多组数据进行对比。 4. 数据存储管理模块。由于整个系统上传的数据量是巨大的,而客户又需要对整个系统的数据保存至少三年以上。因此我们专门开发了数据管理模块。该模块通过文件系统和数据库相结合的模式,并加以周期性的检查过期数据,配合对各种数据管理模式的设置,能够根据实际情况选择存储哪些数据、数据存储多久。并且对于系统中的数据,能够实现秒级查看。 使用技术: 1. 地图方面使用了openlayers来管理地图和地图事件。 2. 图表方面针对echarts做了一定程度的改进,并以此来满足客户对图表的进一步的需求。改进后的图表,操作性更强一些。 3. 后台服务主要是以Java和Python为主,数据库使用的是MySQL。流式数据的接收使用了rabbitmq。服务器从rabbitmq接收数据,然后运行解析模块,解析模块分为Java本地的解析和Python的远程解析。本地解析使用了Java库来计算一些基本的数据。但仅仅是这样还不够,我们又基于python的科学算法库matplotlib和FastAPI构建了一个算法服务器。在解析数据的过程中,Java会通过远程调用的方式,调用Python服务程序,从而实现更复杂的算法分析。 难点攻克: 1. 海量数据存储。系统预计能够存储的数据级别在TB级别。对数据有查询但是无搜索的要求。因此我们采用了数据库+文件存储的方式来实现。将大量的二进制文件按照一定规则组织排布并存储在磁盘上,在数据库中同时记录文件索引。除此之外会有程序周期性的根据策略来处理这些文件。 2. 离线地图。由于客户需要在内网中部署整个系统。因此地图功能稍微复杂一些。通常用的地图都是互联网的公用地图,必须要联网才能使用。因此在内网中部署地图较为困难。通过深入研究,我们找到了解决方案。通过使用一些开源地图的部分数据(即局部的地图数据),我们构建了一个地图服务器,并以此作为地图,实现了内网的在线地图。 3. 数据分析及其算法。由于客户对采集来的数据有更近一步的需求。因此我们按照客户的要求,用客户指定的算法来分析数据。在此过程中,我们尝试了多种方案,包括前端处理、后端处理等。最后选择利用Python在数据分析方面的优势,使用Python建立一个算法分析服务器,并对外提供算法服务。从而实现了客户要求的傅里叶变换、核密度、网格密度估计等多种算法。 4. 图表的定制。我们使用了开源的echarts作为定制的图表。但是仅使用该图表还不够,客户要求我们能够对图表进行更进一步的定制。因此我们对echarts进行了解剖和深入了解,并在它的基础上进一步的做了定制服务,圆满的完成了客户所需要的功能。
项目模块: 猫捉老鼠小程序是我们针对当下火热的线下游戏猫捉老鼠开发的一款小程序。该游戏的功能主要基于地图和地理位置信息实现。通过该小程序,玩家可以发起游戏、设置游戏范围、邀请玩家并进行游戏。该小程序基于传统的猫捉老鼠游戏规则制定了游戏的流程。我们在此之上还融入一系列互联网的游戏特色,并以此来增加游戏的趣味性。如战争迷雾、在地图上随机生成道具、实时监测玩家是否在游戏区域内等。该小程序已经正式上线,可在*搜索小程序“蓝瑟科技LBS服务猫猫捉鼠”并直接打开进入。 游戏主主要由以下几大块组成: 1.游戏创建模块,这个模块主要负责按照玩家需求创建游戏。主要创建房间、配置游戏参数、一键邀请、预设角色等多个功能组成。 2.游戏生命周期模块。这个模块控制整个游戏的进度,按照每秒一个周期来判定和调整游戏状态。该模块包含游戏结束判定、游戏范围变化、判定游戏角色变化、控制玩家视野等。 3.地图与控制特效。主要包括迷雾特效、电子围栏、敌军靠近告警、玩家显示、地图道具展示与拾取等。再出现告警时,*会同步震动。 4.玩家数据交互模块。当玩家的地理位置信息发生变化时,玩家会实时上传。与此同时,玩家每秒从服务器上下载数据,从而能查看到其他玩家的位置、拥有道具情况、以及游戏的其他信息。 5.道具模块。主要包括道具刷新、道具显示、道具拾取、道具特效这几个功能点组成。道具会周期性的刷新在道具点,玩家使用后会有相应变化。如隐身、消除迷雾等。 使用技术: 该小程序由于需要方便实用。因此前台决定使用原生*小程序来开发。由于*小程序的对地图的支持有限。因此我们只能选择完备程度不高的腾讯地图来作为底图。前台的主要技术是javascript、wxss。而后台则是java、springboot、redis、mysql。为了让整个游戏活起来。我们自主编写了一个简易的游戏引擎。实现对整个游戏的全局控制。 难点攻克: 1. 迷雾特效。由于*小程序平台受限制,我们无法自由的选择地图和使用地图,因此迷雾效果比较难以实现。最后经过多轮尝试,使用了基于半径计算和遮罩的方式实现了迷雾特效。我们首先查看地图的缩放等级、然后根据地图的缩放等级的比例尺和像素比率计算出玩家视野范围需要多少个像素,最后按这个结果绘制出一个遮罩来充当迷雾特效。 2. 游戏引擎。为了让整个游戏真正活动起来,我们必须针对性的开发一个游戏引擎来管理游戏整个游戏生命周期。游戏引擎主要包含两个部分,一个是客户端部分,也就是在小程序这一侧。一个是在服务端这一块。服务端这一侧尤为重要,涵盖了从组建游戏到游戏全部生命周期管理的部分。服务端引擎记录玩家的信息、游戏的状态,而这些状态会随着玩家移动、开宝箱、捕获敌人、逃离安全区、隐身等一系列行为的改变而改变,服务端需要对游戏的这些方面进行管理,起到了一个中央枢纽的作用。而客户端的部分则是不断和服务端进行交互,如上报自己的位置、使用道具、拾取道具等。与此同时,从客户端获取各种各样的信息,比如道具刷新信息、其它人的位置,游戏状态、游戏区域变化等信息。游戏引擎是这个LBS游戏的关键和难点,也是我们的小程序与市场上其它小程序相较之下的一个优势所在。