摘要
近年来,汽车智能化浪潮风起云涌,智能汽车得到高度关注。在国家的十四五计划中,也明确的指出积极稳妥发展工业互联网和车联网,智能汽车的发展也已被视为国家工程。从2020年开始,我国XX基于智能车行业全面发展的趋势,提出大力发展的创新汽车发展的战略规划,为我国智能汽车的发展指明了发展的方向,并持续推动智能汽车发展渠道,打造以智能汽车技术为基础的产业体系,推动我国智能汽车进入全新的维度。但值得注意的是,我国的智能车网联动的发展却停滞不前,其在发展中无法体现标准化和规范化。基于此,本次研究围绕智能车数据云平台的开发展开多维度的研究和分析,研究框架如下:
1、首先对我国智能车网联发展进程和发展现状进行深入研究和分析,在此基础上对智能车云平台的发展现状展开多维度分析和探索。围绕其在稳定性和可靠性上的需求展开深入探索和剖析,并以此为基础的提出创新开发思路,以此为基础推动云数据平台开方案的实施。
2、基于智能车端数据通信、可视化等使用需求建立的相关模块能够满足远端操控的实际需求。在本次研究中,关注的重点在于上述功能的稳定性与可靠性问题,因此本次研究引入双通道车云数据传输作为主要的开发方案,其能够满足操作命令和消息数据的即时传输,与其他方案相比,本次研究在上述开发基础上引入缓存层,有效提升系统的整体性能。
本次研究针对智能车云数据的研究与开发是基于智能汽车云平台框架上发展而成的实施方案,和其他类型的联网方案不同的是,该方案将侧重点集中在云平台和智能车之间形成可靠性、可视化、及时性的解决方案,从而应对多种场景应用。
关键词:SpringBoot,云端处理数据,远程控制,数据可视化
1. 绪论
1.1 项目背景及意义
1.1.1项目背景
目前,智能汽车在我国的发展、应用正在不断推广。2国家发改委于2020年2月联合多部委共同发布《智能汽车创新发展战略》,这一战略预示着智能汽车将在2025年实现规模量产化,预计到2035年,我国智能汽车发展体系的打造工作将全面完成,并在规划中明确提出要发展核心技术,持续优化和完善基础设施的建设、完善相关法律法规体系等智能汽车发展的主要任务。2020年11月,针对我国智能网联汽车创新中心打造的“三横两纵”技术框架形成。其中涵盖通信地图、汽车零部件、智能交通等尖端技术,其中的“三横”指的是车辆的基础技术、信息交换技术等,而“两纵”指的是与之相关的基础设施和车载平台。通常情况下,基础设施涵盖大数据平台、基站、通信设备等,并将上述设备形成网联化和数字化的连接体系,推动智能汽车联网的健康稳定发展。
目前中国汽车市场规模达到全球最大,而车联网行业仍处于一个快速发展的阶段,具有较大发展潜能。从相关统计数据来看,我国车联网市场规模如今已经达到530亿美元,且每年以36.0%的比例持续上涨,预计在未来将超过世界平均上涨水平,我国的整体规模在全世界的车联网规模市场规模已经上升到32.5%。
图1.1 2017-2023年中国智能联网汽车市场规模及预测
1.1.2研究意义
由上述可知,小车要到达智能载体的程度,远非安装一个智能中控台那么简单。可以理解为推动汽车产业形成互联网的一部分,如同手机、电脑等形成一个智能终端,其中需要经过三个步骤,分别为数据收集、网络互联、控制调度,通过车联网为载体将生产商、第三方公司、交通调度、汽车使用者形成连接状态,从而推动汽车产业发展的高效化和智能化。本次毕业设计基于 Java的Springboot框架,采用了和数据库相结合的方法,实现了一个可以动态控制、实时更新同时具有TCP通信的后端系统,可以通过手机和个人电脑去现实远程监控和控制。例如,首当其冲就是远程开启空调功能,在炎热的天气时,可以提前开启汽车空调和座椅通风;在严寒的天气时,可以提前开启暖风和座椅加热。
1.2论文的研究内容
为了支持更好的小车的智能化发展,本次毕业设计设计了一个智能车实时数据的云数据平台后端系统,本次研究主要围绕车联网系统展开,希望通过本次研究加强人们对车联网系统的认识与了解,并以此为助推器,提升智能化汽车产业的发展,推动中国智能化汽车行业的发展,帮助我国实现经济的快速增长。
本次研究首先对汽车智能化的背景、意义、内容进行简要概述,在此基础上对市场需求和联网可行性展开深入研究和分析,在此过程中,应当从多个维度对汽车智能化的发展情况有深入的了解,并对现有的汽车智能化系统展开深入学习和总结,为后续的研究提供理论与技术支持,通过提供http对外接口,方便集成到各种不同的平台,实现了开放性;通过增加缓存,提高实时展示能力,实现了时效性;采用了TCP通信,保证了数据的不丢失,实现了可靠性,并根据这些准备总结归纳了系统设计制造的详细过程。最后在总结的时候阐述了系统的当前完成情况,并指出了系统仍存在的不足之处,未来可以如何完善、改进系统。
本课题拟解决的最主要的问题就是智能车与云端交互数据的实时性和可靠性。通过不断测试各通信协议和处理数据的方式,做成一个以低延迟、高吞吐量和数据简化的方式将智能车端的原始数据进行分析与处理,同时又具有更加可靠、易集成的云端后台。
1.3本文主要内容和结构层次
本论文以一台阿里云高性能服务期是汽车联网系统的主要硬件设备,首先需要根据实际情况构建基础平台,再根据不同的技术环境和数据收集的情况,提出科学可行的的智能化云数据平台,进而推动的智能汽车的多种数据得以直观体现出来。
绪论中对智能云数据平台的构建背景和构建意义进行简要概述,在此基础上对本次研究涉及的系统和内容进行多维度研究和探讨。
第二章主要对研究涉及的专业内容和技术进行介绍,需要对开发环境做初步的选择,并以此为基础对后端管理涉及的技术简要概述,同时对相关技术特点和优势展开说明。
第三章对本次研究的系统平台的可行性展开深入研究和分析,并对市场需求做深入分析和探索,主要通过可视化、通信化、数据化三个方面展开,并根据实际需求提出相应的功能模块,并将其设定为主要功能模块。
第四章主要对本次设计展开说明,首先简要概述系统开发过程中涉及的技术,并以此为基础全面梳理和解析系统框架,并延展至系统架构的分析和说明。
第五章对设计流程进行简要概述。针对设计中的相关数据模块、功能打造等方面展开深入研究和分析,并以此为基础对上述主要功能模块展开说明。
第六章主要介绍系统测试和运行的现状,测试的主要目的为上文提到的几大核心模块,查看是否符合预期设想,检查运行是否存在问题,并贴图论证。
第七章对本次研究的内容进行总结,从中指出研究中存在的缺陷和不足,并对后续的学习和研究进行展望。
2.相关技术
2.1 B/S系统架构
B/S(Brower/Server)的结构可以理解为浏览器和服务期组成的整体框架,该结构通常由C/S优化和改进形成,在互联网持续普及的时代背景下,通常需要服务期完成系统的各种功能,系统开发时只需做好页面设计和代码编写即可。使用者访问服务器必须通过浏览器来实现,该结构极大简化了PC端的操作流程,同时也能有效简化系统的操作,便于日常的使用与维护。
从当前的技术发展分析,更多是建立在B/S 模式上展开,用户能够轻松掌握使用方法,且整体使用成本相对较低。从技术开发的角度分析,采用一次性开发是有效脱离时间与地点的访问局限,从使用安全性能分析,可确保访问数据的稳定性好安全性。
以下所展示的是B/S 系统的优缺点
B/S 的重要优势在于开发成本较低、便于使用,其对使用地点并没有任何限制,往往通过终端设备连接网络即可正常运行,此外系统的更新过程难度不高,用户无需亲自安装。选择性更多、能够满足实时共享的需求。可兼容多种平台,也能满足多种服务器的选择需求。用户通常只需通过浏览器即可开始正常操作。服务器必须保证科学管理与维护,其运行过程中产生较大数据压力,一旦缺乏管理,极易造成服务器出现崩溃的现象,修复时间较长。后端开发技术SpringBootSpringBoot是 Spring 全家桶技术体系中的重要一员,其是对 Spring 技术进行再改造的二次升级,通过 SpringBoot 技术的应用,能够实现组装式的插件服务支持,即引入现有板块实现业务功能,不但提高了程序开发的效率,同时具备更为丰富的功能,且在整体性能上稳定性更高,应用价值从以下几个方面体现:
SpringBoot 最重要的特性包括:
(1)自动装配。通常在开发SpringBoot框架过程中,其能够根据实际需求对相关参数进行默认配置,而开发者有需求,可将yml配置文件直接覆盖到默认配置就能更改相应的参数和配置。
(2) 自助式 Spring 容器。在 SpringBoot 设计时,提供了内置的容器服务支持, 包括 Jetty、Tomcat 等,用户在应用完成后可以直接使用,简便了系统的部署。
(3) 代码简洁。由于 SpringBoot 通过模板的方式支持多个不同插件的动态载入,所以用户可以直接使用现有的模板功能,并对模块功能进行改造或完善,全程不需要用户过多的写入自定义代码,只需要按照规范即可完成,所以也造就了 SpringBoot 项目代码简洁的特性。
(4) 自定义注解。系统开发时常会出现若干数据源,其能实现自动注解功能,且根据操作需求自动切换数据源,有效降低开发过程找你哥的耦合效应。从开发框架来看,SpringBoot的框架成熟度较高,相对而言,SpringBoot的开发框架便捷性更高。
(5) 控制反转——IOC。可将SpringBoot视为spring与MVC两种框架的有机融合,在使用过程中,确认存在spring的特点,如IOC以及AOC等,前者指的是控制反转,改变获取对象的方向。在以往的Java编程语言上,如果两个类存在之间的依赖对象,在实际开发阶段应当重新创建新的依赖对象才能正常运行,这就是所谓的正向控制。相对而言,IOC的指的是开发者通过spring围绕相应的对象进行自动化管理的过程,并将其称之为Bean,通常情况下,不同的Bean都需要配备特定的标识。在特定类与类的对象存在依赖关系时,这一类能够采用依赖注入的方法实现,可以通过注解的方式实现依赖注入。
在智能车实时数据云服务后端系统设计实现时,SpringBoot 技术作为系统框架应用基础,其不但提供了数据解析、逻辑处理、数据交互等全过程支持,而且其也是整个系统应用的依赖基础,为其它服务提供整体环境支持。
2.2.2Mybatis Plus
Mybatis作为一种具备持久层的数据框架,其能够与储存、高级映射、CRUD操作等功能兼容,和传统数据框架相比,该框架能够有效封装JDBC代码,可满足自动设置参数的需求,只需进行简单的文件配置即可实现数据库和实体类的映射功能。不仅如此,Mybatis能够实现Java与接口上的连接,从而进行正常的映射功能。
Mybatis框架能够以SqlSessionFactory对象作为访问数据库的途径,通常由SqlSessionFactory作为对象自动生成,开发过程中并不需要手动设置,只需提前将配置文件放入其中即可,就能实现事务管理、数据源等参数的自动生成需求。
通常情况下,传统的数据库连接方式必须通过手段连接才能实现,且需要SQL语句作为数据库的执行操作指令,该框架能通过配置XML文件的方式自动设置参数,从而有效提升SQL映射文件的便捷性。
除此之外,该框架的关键特点在于可与动态SQL兼容,这也是该系统的通过这一框架进行管理的关键原因。该框架通过OGNL的表达式来消除。通过动态SQL语法这种方式运行。在开发过程中可配置容量较大的XML文件,通过动态SQL语法对其进行识别与判断。此外,如果将XML加入逻辑可以有效改善SQL语句的调整和优化。MyBatis-Plus是一款补强和优化之后的工具,它是建立在Mybatis基础上延展开来的工具,使用起来更具便捷性。该工具配置多种功能与服务,可通过少量配置即可实现常规增删查等常规操作,相对而言,实体类通常只需继承即可。
在Mybatis-Plus内部的接口可视为Mapper接口的升级,这个接口中可实现常规数据库操作的封装,开发过程中可通过调用的形式就能正常开展CRUD操作。不仅如此,其还可以与主键策略形成兼容模式,从而达到自动生成的效果。此外Mybatis-Plus能够实现SQL语句输出的基础上正常运行,其可在系统测试过程中进行识别和排查,才能实现执行阶段的合理改善和优化,最大限度防止SQL受到外部攻击。
本次研究的开发主要通过Mybatis-Plus框架来实现,该框架延续了Mybatis大部分特征,能够最大限度降低SQL的代码比例,在实际操作过程中本身的数据复杂程度较高,不可避免涉及到动态SQL代码,基于此,本次研究所采用的Mybatis-Plus框架提供了安全性和稳定性。
2.3数据库工具
2.3.1 MySQL
数据的任何操作管理本身是通过DBMS数据库来实现,而上文提到的MySQL正是其中的一种数据库软件,此类数据库在如今各个领域的使用中较为广泛,其开发公司为MySQL AB。由于该数据库在Web系统开发中具有众多优点,它现在被广泛应用于Web 系统应用程序开发中。用于编写MySQL数据库程序的编程规则由标准化的SQL语言规则演化而来。MySQL 数据库应用双重授权策略,有两个版本,分别是商业和社区办公室。因为具备系统后台数据处理速度快、安装体积小、成本低以及开源的优点,通常使用 MySQL 数据库作为企业软件开发和网站开发中的数据库后台管理工具。最后,MySQL 在安装和使用上非常简单。
2.3.2Redis
缓存能够在短时间对数据进行备份处理。在日常的数据库操作中可合理规避多次重复连接数据库带来的麻烦,有效缩减数据库重复读写的频率,释放数据库压力,可直接通过缓存的形式查询数据库。所有缓存数据都需要在设备内存中储存,此举能有效提升数据查询的整体效率,极大提升使用体验感。作为一种应用广泛的储存系统,Redis能够与多种数据结构兼容,可轻松实现多种数据类型的常规性操作,因此Redis能够在多种影响场景中发挥作用。不仅如此,Redis还能够通过PEXPIRE命令对各类过期数据进行设置和保存。其可利用数据过期时间的设置,达到预防雪崩和缓存穿透现象。通常情况下,数据缓存一般直接储存在设备内存中,从而极大提升数据读取的时效性和稳定性。在实际使用过程中,Redis可对多种数据进行永久性储存,并根据实际需求定期更新数据信息。在服务器重启时,相关的数据也可自动保存,极大提升数据储存的安全性和稳定性。且在查询时的效率更高,因此本次研究选取Redis来缓存数据库。
3.可行性分析和需求分析
3.1 技术可行性
依据之前的主要技术的概述,此本智能车实时云端系统主要基于 WEB 浏览器进行访问。此服务平台采用 java 语言的 springboot 框架开发,所依据的 MVC 模式是现今的主流开发模式,具有科学性和合理性,特别适合本系统的 B/S 结构。在开发过程中,springboot 框架的高内聚、低耦合的特点使得分层开发成为可能。进行项目编写的第一步的关键是需求规格说明书,力争需求做到完善,并规划好各模块的开发次序,各模块用到的公共模块优先开发,部分模块的前置模块优先于该模块开发。开发出各模块后,进行集成,然后进行模块测试后的集成测试。本服务平台的开发语言和技术框架都是开源的,出现相关问题,可以请教老师和同学,也有海量的论文和资料可供参考,所以本服务平台的开发在技术上是完全可行的。
3.2经济可行性
本智能车实时云端系统是基于B/S 架构的,只需购买一台云服务器上搭建运行的平台,任何web应用服务器都可以视为一种具有开源性质的Tomcat,通常情况下,普遍以redis和mysql,且两者都无需付费,直接安装在云服务器上就可以实现平台系统所需的数据支持,结合可视化界面,使得项目数据库的开发更加方便。因此只需投入少量的资金购买云服务器设备上。我们采用最低的成本和最简单明了的方式完成以及完善了基于Springboot框架的智能车实时云端系统,管理员方便操作与查询智能车信息,以及进行相应的修改等。由此可以看出,其在经济上是可行的。
3.3社会可行性
在第一章的项目背景和研究意义中可知,伴随智能网联汽车进入高速发展的赛道,网联化和智能化推动该产业的全面发展,可以预见的是,未来的智能汽车市场必将需要通过联网实现多种智能交互操作体验,汽车云平台承载了智能汽车的联网功能,这一平台势必会推动我国智能汽车的数据中心实现全面交流与共享,计算机和资源配置中心,因此,本系统如若能按照要求完成,应该是能拥有一些用户的。
3.4总体需求
本文从一开始就简述了本设计设计的初衷:车联网行业目前在国内是重点发展对象,而当今智能车数据与云端通信出现了许多困境,因此本人想在毕业设计中开发一款好用的、容易符合用户使用情况的智能车实时数据的云端系统。此系统将包含以下需求:
(1) 智能车实时数据的云端系统的核心是保证智能车和云端通信的可靠性和时效性,因此本系统具有很好的通信交互的功能。
(2) 本系统要有一定的扩展性,可以保证在外部需求不断变化的同时,为不同的智能车提供不同的个性化应用服务,则必须开放用户的自定义接口,因此本系统最好具有一定的开放性。
(3) 软件上遵循耦合效应低、内聚作用高的原则,并以此为基础确保智能汽车的数据和平台的一致性。
3.5功能需求
随着车联网技术与智能汽车技术的不断发展,汽车智能化和网联化正在加速深度融 合,在未来肯定需要一个联网的运行系统负责与路上的车辆进行车载数据监测与交互, 这个联网的系统即是智能车实时数据的云端系统,该系统将是未来支撑智能驾驶汽车实际应用实施的数据协同中心,计算中心与资源优化配置中心。若没有该系统的话,汽车就会像是一个封闭的信息孤岛,很多的实车测试数据、参数等都只能保存在车载端,导致汽车开发人员不能在第一时间查看、分析车载端的数据,这样将给未来智能汽车的开发带来许多的负面影响。因此,当下需要设计与开发一种基于车联网的智能车辆行驶状态云端数据平台系统,该系统能与汽车车载终端进行通信,获取车载数据,并能对车载数据进行数据分析以及数据可视化等功能。因此,基于车联网的智能车实时数据的云端系统至少应该具备以下功能:
3.5.1车云通信功能需求
该功能模块主要负责云数据平台的数据采集和传输功能,并支持后续的数据储存,根据用户的使用需求,可实现可视化的功能,云通信模块通常由两大功能组成,主要是车端数据采集和数据分析功能,由于使用体验的需求,对于云数据分析的要求必须实现延迟最低、运行最快的效果。基于此,必须对智能车端的运输数据进行全面采集,在此过程中要将实时传输纳入综合考虑范围,可合理利用数据整合与数据协议分发的方式达到数据的传输与共享,这也是支撑云数据平台正常运行的重要来源。不仅如此,从当前各类研究中心的研究结果来看,针对智能汽车的联网普遍以云数据的方式实现,如果用户只采用单方面的车端数据,根本无法支撑数据传输与共享效果,对智能汽车的使用功能发挥的作用极为有限。基于此,云端同样需要实现实时数据传输与反馈,并根据用户的实际需求下达指令,才能到实现通过多种指令控制智能车的目的。
(1) 智能车端实时数据上云:云数据必须达到延迟率低的效果,进而最大限度确保车端数据上传的时效性和稳定性。一般情况下,实时数据云模块必须满足以下几个方面的特性:
低延迟性:云端消息中枢必须保证延迟效果低才能实现数据的实施传输与反馈。稳定性:在开发阶段智能车端过程中,势必产生多种数据,必须将各类数据实施上传至云端。可扩展性:消息中枢必须通过智能车的规模和数量进行全面设置和部署。(2)云端数据下达:功能需求是智能车联网结构中受关注程度最高的地方,联网应用场景中,大部分功能都是通过车云数据的双向交互实现的,所以必须确保云数据的准确性好时效性,主要反映在以下两个方面:
低延迟性:为了确保云端传输到车端数据的稳定性和时效性,必须保证通信协议的低延迟效果。可靠性:从智能汽车云平台的运行框架分析,云端数据或云端指令并非周期性操作,其主要通过对数据的监控为基础,并根据用户使用需求下达指令来实现,因此云端数据下达还应该具备可靠性的特点。数据存储功能需求从上一章节的研究中得知,云通信模块的搭建仅仅是为车端数据传输的首要步骤,在此之后,云数据平台还需要完成两个步骤,第一是处理和分析大量云端数据,第二是根据实际使用需求,实现实时数据的可视化效果,为使用者提供直观的车辆检测状况。基于此,云端储存模块功能需求应当呈现以下几种特性:
可用性强:本次针对智能车云数据平台的开发动机是结合当前功能性和技术性居于主导地位的技术为支撑,针对智能车联网需求构建云平台数据框架,并对其可行性和稳定性进行验证。在开发云端储存模块时也要紧扣该原则,必须实现云端数据库的可用性特征。可扩展性好:云数据平台最终需要为智能车联网服务,所以在后期的开发和应用阶段,势必会出现更多智能车类型,基于此,云端数据储存模块必须具备扩展性,便于后期根据不同使用需求进行升级与优化。数据标准化定义:智能车上传至云端的数据通常需要若干个传感器完成,在数据分类中无法实现准确性。所以在设计过程中需要将标准化、规范化的数据库凡事都纳入考量范围,便于后期对数据的提取和分析。数据可视化功能需求从上述研究得知,当数据上传至云端后,需要对相关数据进行储存,在此基础上可基于上云数据进行可视化处理,当然这一切是基于用户发展使用需求为前提。从数据展示的动机和使用价值来看,可大致细分为两个部分,一是显示实时上传的数据内容,二是针对相关数据进行分析,再根据实际需求进行显示,从而实现远程监控的目的。基于此,云端数据可视化模块必须满足以下几种特性:
实时性:在设计云端数据模块时应当确保其整体框架属于轻量级,此举能有效提升数据使用的时效性和便捷性。直观性:必须能够直观显示车辆在不同状态下的数据变化。稳定性:若想实现云数据的可视化效果,在开发过程中必须确保数据显示的清晰度和稳定性,此时对上传至远端的数据的稳定性和时效性进行检测势在必行,同时能够满足各类数据的检索需求。
4.总体设计
4.1 开发技术简介
在开发云数据阶段通常以Windows操作系统,该系统通常通过Redis以及MySQL两种数据库的内容进行储存。这其中通常涵盖字段信息、数据、数据表等内容,一般情况下,主要采用MySQL数据库实现数据的管理和储存功能,而Redis的作用主要体现在进行缓冲处理,本项目就是选用了 SQLyog和 RedisInsight 数据库客户端管理平台的MySQL数据库,它们能为数据库的管理提供可视化界面,大大方便了平台数据的管理。集成开发工具为IntellijIDEA,可在本设备中简单快速构建Java web 开发环境,该项目主要通过SpringBoot进行框架的开发,从而提升框架搭建的时效性,并能够合理地管理项目的各个实体和模块。为方便前端开发,安装了 Chrome 浏览器,便于高效地进行前端的调试,安装 JsonView 插件可以直观查看 json 数据,进一步帮助串联起云数据平台的前后端开发。
4.2系统架构设计
文中对整个智能车实时数据的云端系统的架构进行了仔细的研究。最后确定了系统中要使用的各个框架。系统具体的架构设计下图 4.1 所示。
图4.1智能车实时数据的云端系统架构设计
在智能车实时数据的云端系统的总体设计图中可以看出,整个系统由三个部分组成,分别是通信模块、存储及可视化模块,其中,处理中台的逻辑穿插在另外三个模块里。基于智能车实时数据的云端系统的工作流程如下:
智能车终端准备就绪后对车载数据进行采集,并将采集的数据通过网络上传至云服务器。相互之间通过以Socket的方式实现进行传输。基于Socket途径向服务器传送数据,由于 Socket监听的这些车载设备终端数据采用的是自定义格式,数据并不能在服务器前后端通用。因此,SpringBoot架构服务器后端各个监听进程先会根据收到的数据包的格式,进行相应的数据解析与逻辑处理,并用已编写好的处理数据的算法程序和 MySQL与 Redis进行交互。同时,数据库会对原始数据以及处理结果进行存储,之后提供RESTful接口供前端页面对这些被存储的数据进行调用。
4.3数据库设计原则
本系统涉及到的性能较高的关系型数据库MySQL以及Redis,将两种数据库进行有机融合能有效提升访问磁盘过程中的效率匹配问题,从而提升系统的响应速度,也是有效加强系统性能的重要手段。对于两种不同类型的数据库,在设计过程中必须紧扣各自的使用规律,才能真正法规两种数据库的作用和价值,当然这一切必须建立在用户使用需求的基础上开展。从MySQL数据库的设置与开发分析,其作用主要体现在储存各种类型的信息,在设计过程中,应当遵循MySQL的储存标准,不能对基本项属性进行二次划分,在此基础上,应当预防非主键字段出现相互依赖的现象。通常数据运行和数据大小存在紧密关联性,因此在设计时务必保证数据类型的简易,最大限度降低CPU造成的压力。此外,为了确保数据库的整体运行效果,必须在确保数据正常处理的基础上提出多余数据,可根据实际情况的降低数据范式标准,为数据库争取更多运行空间。在索引过程中应当遵循适度原则,在条件允许的情况下,合理降低查询的频率。
Redis数据库的作用主要体现在对车辆坐标数据信息进行储存。在实际使用阶段,势必会产生海量的坐标信息,这些数据会实时发送到底云端中,以此作为直观显示轨迹图的依据,通过菲关系型数据能够有效提升系统查询的效率。并采用Redis储存车辆坐标数据,用户可根据使用需求设定定时更新时间,当数据上传至云端过程中,Redis并不需要储存全部数据,仅储存一条数据信息就能实现该阶段的数据储存需求。通过该数据库可有效降低访问磁盘的频率。
5.详细设计
在本章内容中将对本系统的通信、存储和数据可视化模块这三大模块的详细设计与实现进行介绍,从而全方位的展示核心功能模块。
搭建云平台并根据使用需求设计框架之后,本章节围绕云平台基础框架的设计思路展开多维度、深层次的研究和分析。在此之前,先对智能车云数据平台的设计方案进行简要概述,并以此为基础对智能车端数据的可视化困难之处展开深入分析和探讨,同时对云数据平台的模块实现做全面的分析。
5.1SpringBoot框架搭建项目工程
本平台主要使用SpringBoot框架搭建的Maven项目工程,其中application.yml文件中配置MySQL数据库连接信息、Redis连接信息、Mybatis、模板引擎等基本信息。com包下主要为项目中的Controller、Service、Dao等各层接口的具体实现,而pom文件主要负责引入SpringBoot需要的各种依赖,通过</dependencies>标签,可以实现自动下载需要依赖的jar包。
5.2智能车端上云数据分析
智能网联汽车云数据平台通常需要与实验智能车相匹配,并提供数据上云和可视化的功能模块搭建,并非针对智能网联汽车的数据算法、感知算法等方面的研究。本次研究的侧重点集中实现智能车端的数据低延迟为最终效果,再针对相关数据进行处理。因此围绕智能车端的数据调研和分析是首要条件。
通常情况下,智能车在实验过程中需要搭载若干传感器和控制器,其主要目的在于能够快速感知车辆周边的环境,合理运用此类传感设备能够对车辆的运行状态有全面和直观的了解,通常传感器在输入和输出过程中需要主要以下几个方面:
智能车状态数据(上云):车辆编号、车辆运行次数、左电机控制量、右电机控制量、左电机目标、右电机目标、车辆行驶速度。智能车坐标信息(上云):加速度X轴、加速度Y轴、加速度Z轴、陀螺仪X轴、陀螺仪Y轴、陀螺仪Z轴、磁力计X轴、磁力计Y轴、磁力计Z轴。智能车控制信息(下达):方向、电机PID、舵机PID。
5.3 云数据平台的车云通信模块的实现
通信是借助相关系统来实现数据端到端的传输。当今使用到的通信协议丰富多样, 但大多数的通信协议都是基于 TCP/IP 协议来实现的。常见的设备端与服务器的通信技 术,在这里主要就是指物联网设备与云服务器进行通信,使用较多的各种通信协议。在 物联网中终端设备通信与移动互联网有所不同,其终端设备资源特定、功耗底、网络环境差,因而,导致了移动互联网通信常用的一些通信协议,不能的到物联网设备的支持, 因此,许多用于移动互联网通信协议并不能运用到物联网中的设备终端通信。
应用层与 TCP/IP 协议族通信之间还穿插了Socket这一抽象层。由于 TCP/IP 很复杂,不方便开发人员使用,因此才设计了 Socket。Socket 封装了 TCP/IP,因此,对开发人员而言, TCP/IP 只是一组接口,开发人员只需要指定 TCP 或 UDP 协议即可。其思路就是设计一组接口,有了接口便能方便地使用 TCP/IP 了。
车载设备终端与云服务器的通信采用的是基于TCP 的Socket方式,因为云端数据平台要求数据有一定的支撑性,采用合理化的TCP方式,只需要向云服务器的指定端口发送 TCP 数据包即可。
车云通信模块的实现难点分析及解决方案针对车云通信模块展开深入研究和分析发现,通常设置在智能车端的数据可大致划分为消息和图像两种数据,此外在实际运行过程中,应当最大限度确保可视化页面的稳定性和实时性。由此也会出现两个方面的技术难点:
(1)云数据平台消息监听程序的同步性
从前文对于车云通信模块的描述可以知道,要实现智能车端与云数据平台的通信,首先需要做的是建立通信链路,不过每次服务端处理客户发出的连接请求时必须同步进行,当接收用户发出的指令后,都需要与客户端形成连接状态,才能连续处理后续的用户指令。无形中导致的程序运行性能受到影响。
解决方案:在每次ServerSocket接收到新的Socket连接请求后都会新起一个写线程和一个读线程两个线程来跟当前Socket进行通信,这样就达到了异步处理与客户端Socket进行通信的情况,同时还共享一个变量,来作为子线程的关闭标志,实现与mian线程间通信,确保小车停止后线程也关闭,避免造成资源的浪费,从而提高云数据平台的并发量与性能。
(2)云数据平台下达数据丢失
前期对于云数据平台的 Web 页面的控制提出了高可靠性传输数据下达到智能车的要求,而在实际的开发与测试过程中,因为下达的数据是通过共享,才使得写线程能接受到,如果写入的数据太快,就会导致智能车收到的消息出现缺失,导致有些操作未能精准完成。因此云数据平台端数据的可靠传送问题是车云通信中最棘手的问题。
解决方案:通过在每次写入的数据前面加个排斥锁,在数据下达到小车后释放锁,确保每个数据在云平台接受到下达过程之间不会被篡改,从而保证了下达数据的可靠性。
数据上云当智能车运行状态下,需要启动干光电测速节点、电子罗盘等功能,再根据用户需求启动数据采集功能。在此过程中,数据采集的功能主要负责以下两个方面的需求:1)全面收集车辆各类数据节点,并通过同步实施的方式运行,可以理解为一旦节点生成数据信息后,就能同步接收相关数据信息;2)一般需要采用Socket对接收到的数据信息上传至云数据平台,具体的上传格式如下表5.1。
表5.1云数据平台接收格式
车辆编号 | 运行次数 | 控制周期 | 左编码器 | 右编码器 | 左电机控制量 | 右电机控制量 | 左电机目标 |
— | — | — | — | — | — | — | — |
右电机目标 | 舵机控制量 | 偏离中心量 | 左电感值 | 中电感值 | 右电感值 | 加速度X | 加速度Y |
— | — | — | — | — | — | — | — |
加速度Z | 陀螺仪X | 陀螺仪Y | 陀螺仪Z | 磁力计X | 磁力计Y | 磁力计Z | 舵机P |
— | — | — | — | — | — | — | — |
舵机I | 舵机D | 电机P | 电机I | 电机D | 速度 | 预留1 | 预留2 |
— | — | — | — | — | — | 0 | 0 |
数据下达在智能车运行中,当用户需调整小车的运行状态时,可以通过规定好的指令通过socket下达到智能车端,智能车端检测到指令就会进行相对应的操作,从而实现远端控制小车的能力。同时,为了支持扩展性,提供了用户上传写有自定义内容的文件,下达到智能车端后,可以进行自定义的操作。
表5.2云数据平台下达指令
序号 | 类型 | 形式 | 备注 |
1 | 启动信号 | ING< | — |
2 | 停止信号 | STOP< | — |
3 | 获取数据 | GETD< | — |
4 | 前进 | CON_FW< | — |
5 | 左前 | F_LEFT< | — |
6 | 右前 | F_RIGHT< | — |
7 | 后退 | CON_BK< | — |
8 | 左后 | B_LEFT< | — |
9 | 右后 | B_RIGHT< | — |
10 | 舵机P | P=数值< | 范围:50>=x>=0 |
11 | 舵机I | I=数值< | 范围:50>=x>=0 |
12 | 舵机D | D=数值< | 范围:50>=x>=0 |
13 | 电机P | MP=数值< | 范围:100>=x>=0 |
14 | 电机I | MI=数值< | 范围:100>=x>=0 |
15 | 电机D | MD=数值< | 范围:100>=x>=0 |
16 | 速度 | SP=数值< | 范围:200>=x>=0 |
5.4云数据平台的存储模块的实现
智能车运行数据库的特点智能车运行数据库主要是对当下和之前特定时间中的数据进行储存。其首要功能必须满足用户实施访问的需求,当网络环境理想的情况下能够保证车内各个数据信息的实施查询与使用,此外还应当将不同用户的访问需求纳入考量范围。
其次,车辆运行阶段的数据库必须进行实时储存,同时确保用户能够快速查看。
最后,相关数据信息会随着用户使用的频率和市场不断增加,所以运行数据库应当设置超过一个以上的数据出场模块,便于用户快速查找的需求。
智能车运行数据库的存储表设计为了满足以上智能车运行数据的使用需求,在数据表设计过程中应当将车辆联网的实际情况纳入考量范围,确保数据表设计的便捷性和时效性,便于用户随时查询的需求,此举能有效降低用户查询频率。
基于此,本次研究基于云端MySQL数据库的基础上搭建“cloud-database”数据库,在此基础上生成旨在反映车辆数据信息的“car_cycle_data”数据信息表。为了最大限度降低用户查询数据的难度,同时提升数据平台与多种车型的兼容性,本次研究引入主键 car_id作为对智能车数据信息进行识别的功能,从数据库设计的角度出发,可根据实际情况的设置多种车型的接口。具体的字段属性设置如下:
(1)智能车运行信息表(car_cycle_data)
用于存储智能车运行信息,具体结构表结构如表5.3所示:
表5.3智能车的运行信息
字段 | 数据类型 | 是否可空 | 注释 |
num | int | 否 | 车辆编号 |
id | int | 否 | 运行次数 |
control_cycle | varchar | 否 | 控制周期 |
encoder_left | varchar | 否 | 左编码器 |
encoder_right | varchar | 否 | 右编码器 |
motor_control_left | varchar | 否 | 左电机控制量 |
motor_control_right | varchar | 否 | 右电机控制量 |
motor_target_left | varchar | 否 | 左电机目标 |
motor_target_right | varchar | 否 | 右电机目标 |
steering_gear_control | varchar | 否 | 舵机控制量 |
off_center | varchar | 否 | 偏移中心量 |
electromagnetic_left | varchar | 否 | 左电感值 |
electromagnetic_mid | varchar | 否 | 中电感值 |
electromagnetic_right | varchar | 否 | 右电感值 |
acceleration_x | varchar | 否 | 加速度X |
acceleration_y | varchar | 否 | 加速度Y |
acceleration_z | varchar | 否 | 加速度Z |
gyroscope_x | varchar | 否 | 陀螺仪X |
gyroscope_y | varchar | 否 | 陀螺仪Y |
gyroscope_z | varchar | 否 | 陀螺仪Z |
magnetometer_x | varchar | 否 | 磁力计X |
magnetometer_y | varchar | 否 | 磁力计Y |
magnetometer_z | varchar | 否 | 磁力计Z |
steering_KP | varchar | 否 | 舵机P |
steering_KI | varchar | 否 | 舵机I |
steering_KD | varchar | 否 | 舵机D |
servo_KP | varchar | 否 | 电机P |
servo_KI | varchar | 否 | 电机I |
servo_KD | varchar | 否 | 电机D |
speed | varchar | 否 | 速度 |
extra_one | varchar | 否 | 预留字段1 |
extra_two | varchar | 否 | 预留字段2 |
(2)每辆智能车的坐标弥补值表(car_offset)
用于存储智能车坐标的X轴和Y轴的弥补值信息,具体结构表结构如表5.4所示:
表5.4坐标弥补值表
字段 | 数据类型 | 是否可空 | 注释 |
car_id | int | 否 | 小车编号 |
offset_x | varchar | 否 | x轴的弥补值 |
offset_y | varchar | 否 | y轴的弥补值 |
智能车端消息数据的存储当数据信息生成之后,可在后台运行整合、排列、清洗等功能,将其先进行分割,并新建MySQL映射的对象,再将数据分配至相应的对象框架中,方便日后的数据分析,此外还提供RESTful接口,便于在调试过程中的使用。
由于考虑到前端需实时显示数据,如果大量请求打到MySQL数据库上会导致MySQL数据库打垮的现象,故而在MySQL和程序间加了缓存数据层,采用了Redis内存数据库,并把需实时展示的少量字段存入其中,来提高系统的响应能力,提高数据读写能力、减少数据库访问压力,从而提升系统的稳定性和实时性。存储流程如图5.2所示。
图5.2云数据平台的数据存储
5.5云数据平台数据可视化模块的实现
直观反映智能车状态的通常需要从数据云平台的储存模块中抓取各类数据,通常这些数据来源于Redis和MySQL的缓冲层,同时通过前段网页展示上述两方面的数据,在运行阶段,本次研究侧重点集中在快速且低延迟的方式显示数据。本次研究基于SpringBoot框架+ RESTful接口的基础上实现可视化功能。如下图5.3所示,云数据平台数据可视化模块更多是建立在网页前段与网页后端的模型基础上展开的。
图5.3云数据平台的可视化请求流程
运行轨迹显示每个智能车的运行坐标都是对原始数据计算得出来的,又因为每个智能车的硬件差异,导致每个实时展示的轨迹图会出现一点偏差,从而对每辆车的轨迹进行修正很必要,故而开放了 offset_x 和 offset_y 两个值出来供用户调整,不断的修正轨迹,从而达到最理想的效果。同时,还需把更改后的 offset_x和offset_y写入数据库的car_offset 表中,使得各小车的 offset_x 和offset_y互不干扰,达到一个隔离的效果。
数据分析显示打开数据分析大盘时,映入眼帘的即是智能车运行数据显示,在这里会可以对系统内的智能车数据进行筛选、智能车运行情况等信息通过散点图的方式进行显示,方便用户一目了然的了解到当前系统的各项信息映射关系。
运行数据显示运行数据显示模块实现了用户对其所运行的智能车数据进行查看、统计分析等功能操作,用户可以根据不同查询条件进行运行数据查询,可按小车编号、小车运行次数等进行运行数据查看统计。运行数据统计实现了统计分析智能车运行情况,用户可通过统计结果对智能车运行情况进行分析,了解和掌握智能车进展和动态,方便监督和管理。从而避免了智能车变成一个封闭的信息孤岛,导致用户不能在第一时间查看、分析车载端的数据,这样将给未来智能汽车的开发带来许多的负面影响。
6.运行与测试
6.1开发平台
本文针对智能车实时数据的云服务后端系统进行了实车测试实验,实验地点主要为学校的智能小车的试验场,以及自己搭建的部分寻迹磁道路。实车测试实验需要的软硬件环境有:实验车辆、一台实验电脑、车内供电设备、云服务器及其远程登录软件Xshell、浏览器等。其中实车测试实验的车辆为基于STM32F103开发板的具有WiFi模块的智能小车如下图 6.1所示。
图6.1实验的智能车
当寻迹节点、光电测速节点、电子罗盘节点等其他传感器检测节点都安装并连接完成后,并接电进行初步的现场调试与测试,没有问题即可进行实验。当各个车载设备终端准备就绪后,利用实验电脑通过 Xshell软件远程登录并开启云服务器,就可以查看云端数据平台服务器后端接收到的各种车载数据了;与此同时,在浏览器端登录云端数据平台,即可看到前端监测页面对车载数据的监听及云端数据平台对数据进行处理与分析的结果了。
开发环境智能车实时数据的云后端系统采用 B/S 的模式。采用云服务器以保证服务器端的高性能和可扩展性,本次研究中采用的操作系统为Centos 7,并通过jdkD11版本的Java代码编程,并采用MySQL数据库和Redis内存数据库。设计之后便进入测试环节,所有涉及系统的数据库、软件等必须进行重复测试,达到预期标准才能正式投入使用。
Java 环境如图 6.2所示。数据库MySQL环境如图6.3所示。
图6.2Java环境
图6.3数据库MySQL环境
6.3功能模块测试
车云通信功能的测试达到智能车和云端的数据传输与反馈,通常情况下,可得通过启动Socket客户端的的方式与服务端平台形成相互连接的状态。一般数据通信可划分为两个环节,一是通过多线程技术启动数据读写功能的客户端,并保证两者独立运行,从而形成独立运行的数据传输与反馈通道。从上述研究提到的实验场景得知,如果要将智能车与4G网络形成连接状态,可通过上位机作为连接载体,在此过程中,云服务器需要通过外网连接,唯有保持连接状态才能实现智能车与云端数据平台的数据传输。
图6.3和6.4反映出智能车与云端平台之间数据连接的具体情况。并且可以通过埋点把上传的数据打印出来,查询日记能够通过不同客户端的数据传输反映,从下图得知,智能车的客户端与服务端之间,并且通过观察云服务器端下达指令到智能车端。由此反映两个客户端之间的传输通道构建工程已经结束,如今可满足数据传输的需求,数据消息的传输工程已经完成,同时,如图6.5所示,云端也可以进行消息下达。
数据上云后处理功能的测试智能网联汽车数据平台通常需要通过数据平台实现上传功能,在此之前应当先确保智能车传感器处于正常运行的状态下才能进行通信节点的数据采集工作,并通过数据通信链接路线实现数据信息的传输,通常云数据的处理分为两大环节。
智能车端数据上传至云台之后,后续的云后台数据处理均居于SpringBoot框架下展开,智能车云数据平台接受数据再通过读写之后,转化至Redis中,最后采用前段设备显示出来。
为了确保后续相关检测数据便于分析和回看,通常需要对相关数据进行分类和储存,如下图6.6所示指的是云端数据库中对相关数据的分类与储存的操作。
图6.6云端数据库的数据存储
数据云端可视化功能的测试该板块可显示车辆当前的运行状态,本次研究为了确保车辆状态显示的完整性与有效性,在云数据平台接受信息之后通过多线程的方法运行,并通过前段显示的方式呈现出来。另外,使用Redis内存数据库,分担了MySQL数据库的读压力,使前端页面智能车位置信息更新的频率可以提升到50ms查询一次。具体的显示效果如图 6.7所示。
图6.7数据在Web页面的可视化展示
图6.8智能车的运行轨迹图
7.总结与展望
7.1总结
本文结合车联网技术及云计算技术,开发了基于智能车实时数据的云端数据平台系统。系统通过车载终端采集车载数据,使用 TCP实现数据上传云端。云端对数据进行接收、解析、存储与分析等处理后,提供对外RESTful接口供前端页面调用,实现数据即时地更新到 Web 网页,以实现车辆运行数据可视化、数据分析及远程控制功能。经过实验测试与长期使用,云端平台能够准确的接收、解析、存储与分析智能车设备终端上传的数据,并且可以正常实现智能车通信、存储及数据可视化功能。文章的主要工作如下:
(1)、确定了实时数据云端数据平台的基础架构。主要分析了现今系统开发各个方面的主流框架。最终,在整个系统开发架构上,采用了 B/S 架构,系统服务器则采用了最常用的 LAMJ架构服务器,其后端框架采用了 Springboot。
(2)、研究了实时数据云端数据平台的通信技术。主要分析了各种通信技术的特点及适用场景。 云端数据平台的通信主要包含了车载设备与服务器之间的通信和服务器前后端之间的通讯两个部分。而根据车载设备能支持的通信协议不同,又分为了 WebSocket 与 TCP 两 种。而本文是基于TCP 协议的Socket通信实现数据上传至服务器,服务器前后端再以基于 HTTP 的轮询方式进行通讯,将数据更新到 Web 网页。
(3)、实时数据云端数据平台的总体设计。整个基于车联网的智能车实时数据的云端数据平台包含了车载端数据接收、云端数据存储和云端数据可视化三个部分。并对系统的数据库进行了分层设计,创建了用于存储系统的各种数据的数据表,进而对不同数据进行分层存储,以降低系统编程代码的耦合性。
(4)、实时数据云端数据平台对数据处理与分析。云端数据平台主要借助了 Java语言对车载数据进行处理与分析。其处理与分析包括了数据的正确解析、存储以及前后端交互;通过坐标修正算法,不断得去分析轨迹,使其达到最理想情况;通过修改车辆运行的参数,计算连续两次发生偏离的时间差,进而计算偏离频率,并对偏离频率状态进行判断。对数据进行处理和分析,并对其进行了测试,结果表明其对车辆安全状态的评估效果较好。
(5)、实现了实时数据云端数据平台的各个功能。借助 Java程序实现了实时数据云端数据平台与各个车载设备终端通信、对车载数据的接收、对车载数据的解析与存储、对车载某些数据的筛选及分析等功能。最终实现车辆状态监测、数据可视化及远程控制功能。
(6)、进行了实时数据云端数据平台功能的实车测试实验。通过实车测试实验对实时数据云端数据平台进行了验证。实验过程中在测试系统时以系统后端对数据的处理和前端对数据的可视化功能的角度作为入手点,分析实验数据。结果表明:实时数据云端数据平台后端的所有功能工作正常。
7.2展望
本文设计的基于智能车实时数据的云端数据平台系统属于现在及未来车联网的研究热点即智能车“云控系统”中的一部分,主要是涉及了数据传输、存储以及可视化功能。但并未涉及到用云端数据处理结果对汽车进行反馈控制及干预等功能。因此,系统的功能还不够完善。今后在此基础之上还有许多的功能可以去尝试、探索、研究及实现。主要有以下几个方面:
首先,通过系统的实车测试实验可以看出,文中智能车实时数据的云端数据平台测的智能汽车目前只有一台,因此,还没有充分考虑对未来要进行的多车协同研究、融合处理多车数据、 监测及可视化的方案和设计。之后在实验条件有所改善的环境下,可根据实际情况增加云检测平台能够兼容的车型,从而达到云端处理的丰富性和兼容性。
其次,当前基础性的智能车实时数据平台搭建工作已经结束,不过目前的数据平台依然停留在实验环节,所涉及的数据内容无法全面公开,因此在可视化模块的设计中必须通过验证功能才能正常登录操作。因此在今后的应用开发中可以考虑加入这块相关的功能。
最后,由于系统采集的数据量与采集频率的限制,暂时还没有在云端数据平台加入过多的复杂的计算。今后在条件允许的情况下,可以在云端使用相关的智能算法对数据进行深入分析和处理。
参考文献
【1】xxxx,戴一凡,李升波,边明远.智能网联汽车(ICV)技术的发展现状及趋势[J].汽车安全与节能报,2017,8(01):1-14.
【2】周游. 智能汽车的发展趋势[C]. .西南汽车信息(2017 年第 8 期 总第 377 期).:重庆汽车工程学会,2017:2-7.
【3】张文, 黄声享. 基于 Web 的变形监测信息管理系统设计与实现[J]. 2020
【4】xxxx, 李家文, 常雪阳, 等. 智能网联汽车云控系统原理及其典型应用[J]. 汽车 安 全与节能学报, 2020, 11(3): 261
致谢
时光飞逝、白驹过隙,四年大学时光不知道被谁偷走,剩下的是一幕幕记忆的碎片,让我难以忘记,永远怀念。
感谢我的导师,本论文是在导师的悉心指导下完成的。老师对本论文的选题、调研和撰写倾注了大量的心血和汗水。其渊博的学识,严肃求实的治学态度,精益求精的工作态度在我的心目中留下了深刻地印象。他对我细心地指导,和对我不断地鼓励和谆谆的教导。不仅让我学到了大量的专业理论知识,更帮助我树立了正确的学术研究态度和为人处世的原则。在此再次向老师表示最诚挚的感谢!
另外要感谢跟我同班的各位同学,与他们的交流使我受益颇多。最后我还要感谢家人和朋友们,他们的支持、理解、鼓励和帮助,让我所做的一切变得非常有意义,正是因为有他们的存在,我才会感受到生活的意义,是他们给了我追求进步的勇气和信心。
毕业论文暂告收尾,这也意味着本科学习生活即将结束。在这学习的时间里,我收获颇丰,通过自身的努力和老师、同学、朋友的关心、支持和鼓励,我不仅学到了丰富的知识,还学到了很多人生哲理,在学习上和思想上都得到了很大的进步。我非常荣幸,可以得到众多才华横溢、学富五车的老师们的熏陶教导。
1、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“文章版权申述”(推荐),也可以打举报电话:18735597641(电话支持时间:9:00-18:30)。
2、网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
3、本站所有内容均由合作方或网友投稿,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务。
原创文章,作者:1158,如若转载,请注明出处:https://www.447766.cn/chachong/76614.html,