总结项目:新型冠状病毒 WEB实时动态 |
您所在的位置:网站首页 › 新型冠状病毒实时动态石家庄 › 总结项目:新型冠状病毒 WEB实时动态 |
研究背景及意义
背景
没有一个春天不会到来,春天的美好都会如约而至 当前,新型冠状病毒感染导致的肺炎疫情依旧牵动着国人的心。 朋友见面、微信聊天、朋友圈分享,几乎三句不离最新疫情的进展。 讨论的背后是人们对疫情对关注,也是对自身、家人健康的担忧… \ 研究意义信息缺乏,丁香出道! 记得去年新型冠状病毒疫情的信息刚出现在互联网上时,家乡的老人对其更不了解,大部分老人都以为只是普通流感而已。 之所以这样,其根本原因就在于不是每个人都能有充足的信息去了解,但没过几天,出现了一个叫“丁香医生”的平台,在那上面我可以看到所有的疫情数据,看到地图上的地区渐渐变“红”,大家就都知道必须做到少出门,戴口罩,注卫生了 \ 重要说明该项目以更新至 v2.0 该文章主要总结 v1.0 本着共同开发和学习的原则,该项目已开源至 Github 开源协议:GNU General Public License v3 为避免报告冗余文字太多,该报告介绍的均为核心实现,全部代码还请见: ⬇️ star 链接 : Go! \ 项目简介 实现方式后端:Mysql + Java 前端:Javascript + HTML + CSS 系统服务:shell \ 开发环境系统 :Ubuntu 18.04.5 LTS (Bionic Beaver) 编辑器:Vim & Vscode Java 环境:JDK15 JDBC 驱动:mysql-connector-java-5.1.39 Mysql 环境:Mysql8.0 \ 部署环境系统 :Centos7.4 编辑器:Vim Java 环境:JDK8 Mysql 环境:Mysql5.1 \ 需求分析 用户角度分析疫情数据准确 疫情数据实时性高 能直观看到现在疫情的情况 能多角度的学习到疫情的现状 技术角度分析疫情数据需要来源 要有精确且有效数据 数据需要存储到安全的地方 存储的数据需要能被高效获取 有效数据需要再分类成独立数据集 数据集需要制作图表进行可视化 \ 架构设计 总结构设计整体分成四个模块
Data mining 模块: 负责抓取所有与疫情相关的数据 并 挖掘出有用的数据,实现数据的“无中生有”,保证数据的准确性与有效性,降低数据冗余 Database 模块: 负责存储 Data mining 模块生成的数据,实现数据的存储,保证数据的安全性、高可用性,降低数据的不稳定性 Data visuallzation 模块: 负责将存储在 Databases 模块的有效数据 变成直观的数据,实现数据可视化,保证数据的可读性,降低某些数据被当作多余的可能 monitor模块与其他模块区别存储/使用 monitor模块负责其它模块整体的使用及调度 \ 数据挖掘模块设计Data mining 模块分成三个功能区 Data collection:负责数据的收集,收集疫情相关的数据 Data cleaning: 负责数据的清洗,清洗出有效数据 Data storage: 负责数据的存储,将数据存储到数据库 \ 数据库模型设计
\ 数据可视化模块设计Data visualization 模块分成三个功能区 Data Extraction:负责数据的提取,从数据库中提取出数据,并进行简单处理 Data Classification:负责数据的分类处理,这是对疫情数据最后的一步处理 Generate Webpage code: 负责将分类过的数据,并生成 web 页面 \ 监听模块设计Data mining 模块分成两个组件,三个功能区 data collection: 负责数据的收集 Data monitoring: 负责监听 data collectiong 收集的数据,如果监听到数据发生变化,立即作出反应 Process monitoring: 负责监听 Data monitoring 组件,如果监听到该组件有所变化,立即执行整个项目,将上述架构实现 \ 具体实现 项目文件一览使用的语言和文件分布、代码工程量:
文件目录:
包含已/待生成的 Web 文件: Form_theme.js index.html */Log/诸多日志文件 > > > > index.html 文件为 COVID19.jar 将生成的文件 内包含已编写的两个远程 Javascript 文件,协助可视化的制作 数据挖掘模块文件目录:
共分成五个类 \ mining_transfer 类作用:资源池 功能:存储数据 Data_mining 模块中所有需要被使用的数据,并对外提供接口 代码: \ Scraping 类作用:数据爬虫 功能:爬取网页 JSON 数据,并进行简单处理,将 JSON 数据变成一段连续的字符串,之后将这一次处理生成的数据记录下来 因为疫情数据不能出现一点差错,所以仍和一次对数据的处理都需要存储为日志文件,提高可维护、可控性 包的使用:
构造方法 & 爬取 JSON 数据: 生成日志文件:
作用:数据清洗 功能:按数据的不同特征,清洗出有用数据数据 包的使用:
示范:
再例如:
作用:数据存储 功能:将需要存储的数据存储到 Mysql 数据库中,并对 Mysql 数据库进行简单管理 包的使用:
\ Run_mining 类作用:资源调度 功能:调度 Data_mining 模块中所有资源,包括类的使用、数据的传递 代码: \ 小结如果,数据挖掘模块刚爬取到的 JSON 数据是这样:
\ 数据可视化模块文件目录:
共分成五个类 \ visualization_transfer 类作用:资源池 功能:存储数据 Data_visualization 模块中所有需要被使用的数据,并对外提供接口 代码:
作用:数据提取 功能:提取出 Mysql 数据库中需要的数据,存储到资源池中 和Data_mining模块的Submissionl类的许多相似功能不再赘述 包的使用:
\ Generation_Javascript 类作用:Javascript Code 生成 功能:根据已经设计好的数据可视化代码,生成其可能会发生变化的 Javascript 代码 为了不偏移以Java实现的核心思想,仅介绍核心功能 生成疫情在地图上的地区分布的主要数据,包括地区名称,确诊人数等关键数据 (仅为范例): 作用:HTML Code 生成 与 插入 功能:根据已经设计好的数据可视化代码,结合 Generation_Javascript 类生成的 Javascript 代码,生成其可能会发生变化的 HTML 代码,再将其存储为一个可被访问的 web 页面 为了不偏移以Java实现的核心思想,仅介绍核心功能 将可被浏览器所编译的 Javascript 数据,疫情地区分布图、新增人数地区分布图等。。。 (仅为范例):
作用:Data_visualization 模块资源调度 功能:调度所有资源、包括资源池中的数据分配、类的使用、数据的传递 代码: \ 小结如果,数据可视化模块从数据库中读取到的数据长这样:
\ index 类index.java 位于工程文件的根目录 作用:Data_visualization 和 Data_mining 模块的资源调度 功能:调度所有资源、包括资源池中的数据分配、类的使用、数据的传递 代码: \ 监听模块文件目录:
只是为了方便展示而存放于一个目录,实际使用中应置于项目根目录 >共分成一个Java文件,三个Linux Shell脚本 \ Java Data_monitoring 类作用:监控疫情数据动态 功能:利用线程休眠的方式让该程序,24 小时不间断监控疫情数据,如果发生了变化,立马返回异常给系统 包的使用:
在编写 Data_monitoring 类时有一个极大的遗憾 本打算分四个线程,三个监听线程负责多方位捕捉多方面的疫情数据,这样可以提高容错率 其中另一线程负责做数据匹配,如果疫情数据发生更新让该线程作出反映 这样才能实现真正的 24 小时,不间断监听 但奈何服务器在我的博客和我的"玩弄"之下,已没有多少资源来让其“霸占”,所以只好作罢。 \ Monitor_process Shell作用:监控 Data_monitoring 类 功能:利用进程监听的方式来判断 Data_monitoring 类 的反映,如果出现异常,立即作出处理 线程监听: 注:此时的Java Data_monitoring类已被打包成Data_monitoring jar 注:脚本中的一切都要按照部署环境来编写和理解 \ 总结 项目优缺点分析 缺点分析数据挖掘模块,数据收集来源单一,爬取的都是二手信息,没有挖掘出更多有效数据 数据可视化模块,没有分析出更多有用的信息 数据监听模块 shell 脚本,受技术能力限制,有部分冗余命令 优点分析数据可视化模块,通过事前编写好 Javascript/Css/HTML 代码,让 Java 来根据一定算法生成生成 Web 文件,速度极快,可扩展性高 项目整体达到了轻量化的标准,整个项目文件仅 1M,部署简单 项目模块化设计,后期维护更方便,版本迭代更方便 \ 技术总结JAVA 涉及的知识点: I/O 流、多线程、正则运算、JDBC、网络爬虫、数据清洗的实现、简单算法编写、代码设计模式 数据库涉及的知识点: Mysql 的使用;SQL 的 DDL、DML、DCL 前端涉及的知识点: HTML、CSS 布局设计;Javascript 动态数据可视化;echart 的二次开发及使用; Linux 涉及的知识点: VIM 使用;编写 Shell 脚本(包括系统进程监听、Linux 命令执行);Web 平台部署 \ 项目展示已经不提供服务的第一代版本:
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |