摘 要

在线广告推荐系统是一个利用用户行为数据和机器学习算法,为用户提供个性化广告内容的智能平台。该系统采用java技术和MySQL数据库技术以及springboot框架进行开发。通过分析用户的历史浏览记录、搜索习惯和消费模式等数据,构建起用户兴趣模型,并据此推送最相关的广告,以提高点击率和转化率。它通常包括数据采集、存储、处理和分析等多个模块,能够实时响应市场动态和用户需求变化。除了核心的推荐功能外,系统还提供诸如用户管理、内容审核、数据分析报告和实时监控等辅助工具,帮助管理员优化广告投放策略。对于用户而言,他们可以享受到定制化的广告内容,减少信息过载,同时在个人中心内管理自己的偏好设置。在线广告推荐系统不仅提升了用户体验,也显著增加了广告主的投资回报率。

1 绪 论

1.1研究背景与意义
在数字化时代,广告行业经历了从传统媒体到互联网平台的转型。随着互联网用户数量的爆炸性增长,海量的用户数据被记录下来,这些数据反映了用户的多种行为和偏好。在线广告推荐系统正是在这样的背景下应运而生,它利用复杂的算法分析这些大数据,以实现广告内容的个性化推荐。处理如此庞大规模的数据集需要强大的计算能力与高效的数据处理框架。Apache Spark作为一个开源的大数据处理平台,因其快速的处理速度、易用的API和对多编程语言的支持,已成为业界与学术界处理大规模数据分析任务的首选工具。在线广告推荐系统的出现,不仅顺应了大数据时代的发展趋势,而且也满足了市场对于高效、精准广告投放的需求。
在线广告推荐系统的研究与开发从理论上讲,该系统涉及数据挖掘、机器学习、用户行为分析等多个前沿领域,为研究者提供了一个综合性的研究课题。通过不断优化推荐算法,可以推动相关理论的发展,特别是在大数据处理和实时推荐技术上。从应用层面上讲,一个高效准确的在线广告推荐系统能够帮助广告主精准定位目标客户群体,提升广告的转化率和投资回报率;对于用户而言,可以减少无关广告的干扰,提高他们的上网体验。系统能够有效处理海量数据,为企业提供即时的商业洞察,这对于企业在激烈的市场竞争中把握商机、优化战略具有不可估量的价值。因此,研究并开发基于Spark的在线广告推荐系统,对于推动广告行业的技术进步和促进企业经济效益的提升都具有重大意义。
1.2国内外研究现状
在中国,随着互联网经济的蓬勃发展和大数据技术的快速进步,基于Spark的在线广告推荐系统得到了广泛的关注和深入的研究。国内众多高校和科研机构在相关领域开展了丰富的理论探索和应用实践,形成了一批具有影响力的研究成果。工业界也不甘落后,诸多知名互联网公司如阿里巴巴、腾讯和百度等,纷纷投入资源研发自己的广告推荐平台,以提升广告投放的智能化水平。国内对于用户隐私保护的意识日益增强,如何在不侵犯用户隐私的前提下进行有效的数据挖掘和广告推荐,成为了研究的热点之一。与此同时,结合中国特有的网络环境和用户行为特征,本土化的广告推荐策略也在不断完善之中。
国外在在线广告推荐系统方面的研究起步较早,尤其在美国和欧洲等地,已经形成了一系列成熟的技术方案和商业模式。许多国际知名企业如Google, Facebook, Amazon等,他们的广告推荐系统不仅具备高度的精准度和实时性,而且在处理海量数据方面显示出了强大的能力。学术界同样活跃,在国际顶级会议和期刊上发表了大量关于在线广告推荐系统的论文,涵盖了数据挖掘、机器学习、用户行为分析等多个方面。这些研究不仅推动了算法和技术的进步,也为实际应用提供了理论基础。面对不断变化的市场需求和新兴技术的挑战,如何进一步提高推荐系统的普适性和适应性,仍然是国外学者和工程师们努力探索的方向。
1.3研究内容
本系统开发选择Java作为后端编程语言,引入了基于用户相似度的协同过滤算法,用于提供个性化的推荐功能。系统通过echarts技术展示可视化大屏,将数据进行展示在看板上。还采用了Python开发的Scrapy爬虫技术,用于高效地收集网络数据。并采用Spring Boot框架,这为应用程序提供了轻量级、高效的开发环境。数据处理使用MySQL数据库,以满足大规模数据存储和查询的需求。前端技术方面,通过HTML、CSS、JavaScript和Vue.js构建出富有互动性和易用性的用户界面。开发过程中选用了Eclipse作为主要的编程工具,因其强大的开发功能和易用性大大提升了编程效率。此外,Navicat作为数据库管理工具,用于简化和优化数据库操作,以提升开发效率和项目的整体质量。整体来看,这个技术栈为管理系统的开发带来了效率和稳定性的双重保障。系统分管理员和用户两个角色,主要包括对用户管理、广告数据管理、在线论坛、系统管理、我的信息等功能进行操作。

~~

2系统开发技术

~~
2.1 Java技术
Java属于一种面向对象的编程语言,它由C++发展而来。Java保留了C++语言大部分好的优点,同时放弃了C++里很那的多继承、指针等概念。Java从根本上解决了C++的固有缺陷,形成了一种新的完全面向对象的语言,因此Java语言的句法更加清晰、规模也更加的小、更容易学等多个特征。Java语言作为静态面向对象编程语言的代表,完美地实现了面向对象理论,使程序员能够以优雅的思维执行复杂的编程。
2.2 MySQL数据库
Mysql的语言是非结构化的,当对客观事物的符号进行描述时,数据则是信息的载体,数据库负责记录跟踪这些数据。数据库用来记录分析保存生成的数据,在系统项目中起到了很重要的作用。Mysql数据库体积小,作用快,相对于其他数据库而言性价比较高,适合中等网页的开发,并且服务很稳定,几乎不存在宕机情况。
2.3 SpringBoot框架
现如今后台开源框架主流的有SSH、SSM、SpringBoot,但是SSH、SSM框架的环境配置项较多,而SpringBoot主要的设计思想就是约定大于配置,故而SpingBoot在设计时几乎达到零配置。SpringBoot整合了业界上的开源框架。具体采用技术框架描述如下:
(1)Mybatis:Mybatis:提供自动映射,动态SQL,级联,缓存,注解,代码和SQL分离等特性,使用方便,同时也对SQL进行优化。
(2)SpringMVC:通过一套MVC注解,让POJO成为处理请求的控制器,无需实现任何接口,同时,SpringMVC还支持REST风格的URL请求。
(3)SpringBoot:从本质上来说,Spring Boot就是Spring,它做了那些没有它你也会去做的Spring Bean配置。
SpringBoot是一款非常强大后台框架,因为SpringBoot开发时可以基本不用写配置文件,所以使用SpringBoot搭建网站的后台环境,在SpringBoot的yml配置文件中写入项目启动端口,项目就可以启动。项目的Java文件还有静态文件都是由SpringBoot来管理。
2.4 Hadoop介绍
Hadoop是一种开源的大数据处理框架,它可以在大量的硬件集群中并行处理大量数据。Hadoop的核心组件是Hadoop Distributed File System(HDFS)和MapReduce编程模型。HDFS是一个高度容错性的分布式文件系统,设计用于在廉价的硬件上运行。它通过存储数据的冗余副本来提供高可靠性,即使单个节点或多个节点失败,也可以保证数据的完整性和可用性。MapReduce是一种编程模型,用于处理和生成大型数据集。它将任务分解为两个阶段:映射阶段和归约阶段。在映射阶段,输入数据被分成小块,每一块由一个独立的映射函数处理。在归约阶段,所有映射函数的输出都被合并成一个单一的结果集。
Hadoop还包括许多其他工具,如Hive、Pig和HBase,这些工具提供了更高级别的数据操作和查询功能。Hive提供了一个类似SQL的接口,使得对结构化数据的查询更加方便。Pig提供了一种高级的数据流语言,用于分析和探索大型数据集。HBase是一个分布式、可扩展的NoSQL数据库,用于实时读/写访问大数据。总的来说,Hadoop是一个强大的工具,可以处理和分析大规模数据,对于需要处理大量数据的组织来说,它是一个理想的选择。
2.5 Scrapy介绍
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。它使用了Twisted异步网络库来处理网络通信,可以加快下载速度,提高效率。Scrapy包含了数据挖掘、数据清洗和数据存储的流程,尤其擅长处理爬取和处理大批量URL的页面。它还提供了丰富的中间件接口,可以灵活地实现各种定制化需求。
2.6 协同过滤算法
协同过滤算法是一种常见的推荐系统,它基于用户的行为和偏好进行推荐。该算法通过分析用户之间的相似性和物品之间的相似性,来预测用户对未知物品的评分或兴趣。具体来说,协同过滤可以分为两种类型:基于用户的协同过滤和基于物品的协同过滤。
基于用户的协同过滤是通过找到与目标用户相似的其他用户,然后根据这些相似用户的评分或行为来进行推荐。而基于物品的协同过滤则是通过找到与目标物品相似的其他物品,然后根据用户对这些相似物品的评分或行为来进行推荐。
协同过滤算法的优点是可以发现用户的兴趣点和个性化需求,从而提供更加精准的推荐结果。同时,它也不需要大量的物品信息或用户个人信息,只需要用户的行为数据即可进行推荐。然而,协同过滤也存在一些问题,比如冷启动问题、稀疏性问题等。因此,在实际应用中,需要结合其他算法和技术来优化推荐效果。
2.7 VUE框架
Vue.js是一款轻量级的JavaScript框架,用于构建用户界面。它采用了组件化的开发方式,使得代码更加模块化、易于维护和复用。Vue.js还提供了响应式的数据绑定功能,使得数据的变化能够自动更新到视图上,大大提高了开发效率。此外,Vue.js还支持虚拟DOM技术,减少了对真实DOM的操作,提高了性能。在Vue.js中,开发者可以通过编写模板语法来描述视图的结构,然后通过JavaScript代码来处理业务逻辑。Vue.js提供了丰富的指令和过滤器,使得开发者可以更加灵活地操作DOM元素。Vue.js还提供了路由、状态管理等功能,使得开发者可以构建复杂的单页应用。护的用户界面。如果你是一名前端开发者,那么学习Vue.js将会对你的职业生涯产生积极的影响。
2.8 B/S体系结构介绍
B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如Chrome、Safari、Microsoft Edge、Netscape Navigator或Internet Explorer,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server同数据库进行数据交互。

3系统分析

3.1需求分析
要想在实际的情况下,开发出一套符合使用者要求的在线广告推荐系统,首先要了解使用者的需求。对在线广告推荐系统的需求有深刻的了解,无论设计与开发工作多么优秀,都是一个成功的先决条件,也可以这么说,要不能满足用户需求的程序,是创造不出非常大的使用价值的,而且还给设计者带来很多的不利。需求分析是在线广告推荐系统设计时期的比较重要的一个阶段,它的基本内容是准确地解释出系统将会能够做些什么事情的关键问题,最终完成的是一份完整的系统的使用说明。
(1)有一些功能方面的需求,通过需求分析,可以找出需要完成的几个基本功能模块。性能要求也是指在系统设计的时候,需要满足一定的要求和限制,比如响应时间、信息处理、内存容量、磁盘容量、安全等等。
(2)系统的可靠性要求也是一个必须考虑的问题,它可以将可用性和可靠性结合起来,显示了用户在使用时经常遇到的问题。硬件要求也包括需要处理错误,以表明系统如何应对环境错误。如果自己的系统收到来自其他系统的信息,这些信息违背了某些格式,这时系统应该会有什么样的响应情况。
(3)软件方面的需求还有一些逆向的需求,就是系统不能做的事情。可以说,有很多种不同的要求,而开发人员应该能够准确的理解他们的真正需要,并且可以应用到在线广告推荐系统中。还有应该明确地找出一些虽然不属于当前在线广告推荐系统开发的情况,但是据现在的分析,将来是非常可能会需要的可能需求。经过这个需求的分析,在设计过程中对在线广告推荐系统将来有机会出现的问题有所准备,要能够确实需要的时候可以更加轻松的修改。
3.2系统性能分析
系统的性能是指操作系统完成现有的程序的有效性、稳定性以及响应速度,操作系统完成一个任务时,与系统自身设置、路由的设计、网络性能的测试、设备的使用情况等多个方面都密切相关,要是任何一个环节出现问题,就都会影响整个系统的性能。所以要从网络的设置、系统的操作、硬件的组合、程序的应用等方面综合检查,然后问题出现在哪个部分,可以集中进行解决。
在程序的应用、系统的操作、硬件的组合、网络的设置等方面,影响性能最大的是程序的应用和系统的操作两个方面,因为这两个方面如果出现的问题是不太容易察觉,隐蔽性非常的强。而硬件的组合、网络的设置只要出现问题,一般都能马上发现。主要了解一下系统的操作方面的性能操作思路,程序的应用方面需要具体问题还需要有具体的解决办法。
随着智能设备的快速发展,以及对于网络的深入认识,这种高度分布式架构最终会变为移动计算。但是,随着计算量的日益增大,系统架构师开始将计算任务转移到共享网络的计算上,这样,他们就可以利用共享网络的计算可以无限制的计算量和存储相关的资源,并享受其带来的比较高的可靠性以及低成本。近年来,许多的企业开始向以共享网络计算为中心的更加有效化的方式发展。
3.3系统可行性分析
3.3.1经济可行性
系统采用的是java技术来实现相应的功能的开发,综合就是一个比较基础的系统开发设计,所以所用到的有开源的开发环境所构成。而且可以利用现有的设备,不用进行另外的硬件设备购买。
用户通过使用在线广告推荐系统,很大程度减小了人员成本,极大提高了管理的效率。目前得由人员管理的方式存在很多不足,首先是人工成本大,并且工作效率比较低,然后是存在着很多现金流失的问题。在结合在线广告推荐系统的特点,还有一些记录和统计,在线广告推荐杜绝了以上的问题,提高了在线广告推荐系统管理的安全性。
经济可行性是主要计算项目的开发成本,还有项目成功后可能带来的有效收益。很多的项目只有开发成本能控制在企业有可能接受的范围内的情况下,这样的项目才会被批准开发。然而本次系统的开发在上述所有的问题的情况下,是可以完成相关的系统设计。
3.3.2技术可行性
在研究技术可行性的时候,系统的开发环境是可以确定的,所以技术可行性最好与系统功能和性能以及一些实际的情况同时考虑。在可行性研究阶段,结合实际调整开发的内容和选择能够完成的技术体系是一个可用的手段,如果系统进入开发阶段,任何的调整都意味着会耗费更多的经历。需要再次明确的问题是,技术可行性不只是考虑在技术上是否可实现,实际上还包含了在当前的实际的情况下的技术可行性。有很多的因素例如时间不足、预期的开发目标技术难度比较难、不能有充足的技术积累、而且对于技术的掌握不够等这些实际存在的情况,都是要提前部署和认真规划的。
开发在线广告推荐系统的技术内容分析,目前的状况是从网络硬件和相关技术上看是可行的。该系统采用了java和 MySQL技术。到现在可以知道,很多的基础知识都是经过学习使用的,在后续的设计中还需要不断的练习,学习更多相关的技术经验来充实自己对于系统的开发。
3.3.3社会可行性
在社会可行性分析中,首先能结合国家经济和社会发展的实际情况,还需要能够让用户更加的便利,给使用者带来多方面的高效益,使得可以比较快速的发展以及应用。
在可行性分析中,是比较清晰地发掘开发的系统带来的各种直接的有效的利益以及一些隐藏起来的好处,以便在后续的设计中更加的坚定和确信系统开发的意义。解决一些社会方面存在的问题,设计并开发系统肯定是要发现某类社会存在的问题,并且能够带来一定的社会价值。还有一些社会的影响力,是通过系统优势和切实的好处来产生的,能够在一定的情况下提高效率,肯定会增加一些社会的进步和发展。社会上的可行性,包括法律上的可行性,也包括法律上的可能性,法律上的可行性,需要社会上的许多因素,可以来实现系统建设的现实性。如果所开发的系统与国家法律或政策等相关的因素不相符合,在某些信息化的邻域中使用的是一些加密的信息或者技术问题,还有不经过正常的操作使用其他的一些公开的信息等这些情况,这样的系统的开发在法律的范围中就是不能被允许的。
其中还有一个比较重要的用户使用可行性也是通过执行系统时的可行性,是从所有情况下用户的角度来考虑系统的可行性,由于设计开发相关的系统就是站在社会中广大的用户体验考虑的,所以在这个层面考虑也是符合的。
3.4系统用例分析
在设计系统的过程中,用例图是系统设计过程中必不可少的模型,用例图可以更为细致的,结合系统中人员的有关分配,能够从细节上描绘出系统中有关功能所完成的具体事件,确切的反映出某个操作以及它们相互之间的内部联系。
其中参与者就是和系统能够发生交互的外在实体,一般可以指系统的某个用户。一个用例图就能对应出系统中的一个功能过程,系统中完整的功能都是由许多不同的用例图所组成的。
系统用例图如图3-1、图3-2所示。

图3-1 管理员用例图
在这里插入图片描述

图3-2 用户用例图

3.5 系统流程分析
流程图就是用它已经特定的图形符号以及相应的线条,用来展现出系统在执行中的整个的过程。由于这种图形能够很方便的描绘系统的一系列流程,所以它的所有的图形符号是比较关键的,基本都是一个图形符号就能表示某个过程的一个单独的步骤。流程图不只是提供出比较完整、全面的执行过程,而且在整个团队的协作设计过程中,还可以发现其中有可能存在的缺陷以及不足,便于在后续的过程中能够及时的纠正和完善系统。
通过流程图可以对系统的需求和相关过程进行分析,能够详细的细分到每个部分的设计。对于设计者来说在开发过程中能够使用流程图作为基础,可以快速提高自身的逻辑思想,并且还能在后续的操作中能够有章可循,在系统的设计中最重要的就是程序的设计,然后才是程序的具体编写,流程图便是在设计过程中重要的工具,以下就是部分流程图设计。
登录流程图和添加信息流程图分别如图3-3、图3-4所示。

图3-3 登录流程图

在这里插入图片描述

图3-4 添加信息流程图

4 系统设计

4.1系统功能结构设计图
本次系统所涉及到的有关的功能,都是用功能结构图来简洁和清晰的表示出来,功能结构图就是能够把比较复杂的功能结构用图的形式清晰的描绘下来,并且为后续的设计以及测试等模块提供了明确的方向,在构思功能结构图的时候,便可以给设计的过程带来一定的思维导向,不至于在设计过程中有所遗漏,可以尽可能的明确系统所涉及到的功能。系统的功能结构图如图4-1所示。
在这里插入图片描述

图 4-1系统功能结构图
4.2数据库设计
4.2.1数据库设计原则
学习程序设计,如果要了解数据库管理系统或者是根据需求而制定的系统接口,就必须创建一种数据库管理系统的模式,用来保存数据资料,这样当在应用编程过程中时候,就不需要再向操作系统页面上加载信息,进而增加了整个系统的工作效率。信息库管理系统中保存着许多数据,应该说是一个管理信息系统建设的中心和基础,而信息库管理系统也为管理信息系统建设提出了新增、删除、更改和搜索的操作功能,使管理信息系统建设能够迅速地查询所需要的数据,而不会直接从程序代码中查找。信息库管理系统通过将信息表的各个组成部分按照特定的方法准确地合并,排序和组成信息库管理系统。
通过对在线广告推荐系统的主要功能信息进行规划并分为若干功能实体信息,实体信息将使用E-R图加以表示,本系统E-R如图4-2所示。
在这里插入图片描述

图4-2系统E-R图

4.2.3数据库连接
在本系统的设计与开发中,数据库承担着重要的作用,可以说要是没有数据的存储和管理,而系统也不会执行对应的函数。数据库是基于数据结构而设计的,数据库管理员利用数据库管理系统对海量数据进行管理,而数据库的添加、删除、修改、查询等都是非常关键的一环。
在本系统中首先进行数据库的连接,具体的配置文件uimg_sql.py中进行数据库的连接,还有创建了本次数据库中所用到的表和相关的一些参数,这些操作和建立的实现是通过在java中编写完成的,有一些时间点的记录,在线广告推荐系统信息是在数据库uchepai中完成的。
4.3本章小结
本章是系统开发的整体的一个系统设计,主要通过系统功能的设计,还有具体实现中需要考虑到的结构之间的关系,以及系统中每个功能执行的先后顺序等问题做出了详细的设计。
其次是对于数据库的具体实现的设计,首先是将数据库与开发系统相结合的特定数据库的连接问题,做出了数据库应该储存的一些数据,还有存储数据用到的一些表格的创建,以及表格里面内容的设计等工作。

5系统详细设计

5.1系统功能实现
当人们打开系统的网址后,首先看到的就是首页界面。主要包括广告数据、在线论坛、公告资讯、个人中心等详细信息。系统首页界面如图5-1所示:
在这里插入图片描述

图5-1 系统首页界面

系统注册:在注册流程中,用户在Vue前端填写必要信息(如用户名、密码等)并提交。前端将这些信息通过HTTP请求发送到Java后端。后端处理这些信息,检查用户名是否唯一,并将新用户数据存入MySQL数据库。完成后,后端向前端发送注册成功的确认,前端随后通知用户完成注册。这个过程实现了新用户的数据收集、验证和存储。系统注册页面如图5-2所示:
在这里插入图片描述

图5-2系统注册页面

广告数据:在广告数据页面的输入栏中输入广告主题进行查询,可以看到广告数据信息详情,并根据需要进行评论或收藏操作;广告数据页面如图5-3所示:
在这里插入图片描述

图5-3广告数据详细页面

个人中心:在个人中心页面可以对个人中心、修改密码、我的发布、我的收藏进行详细操作;个人中心页面如图5-4所示:
在这里插入图片描述

图5-4个人中心页面
5.2管理员功能实现
在登录流程中,用户首先在Vue前端界面输入用户名和密码。这些信息通过HTTP请求发送到Java后端。后端接收请求,通过与MySQL数据库交互验证用户凭证。如果认证成功,后端会返回给前端,允许用户访问系统。这个过程涵盖了从用户输入到系统验证和响应的全过程。如图5-5所示。
在这里插入图片描述

图5-5 管理员登录界面

管理员进入主页面,主要功能包括对用户管理、广告数据管理、在线论坛、系统管理、我的信息等进行操作。管理员主页面如图5-6所示:
在这里插入图片描述

图5-6 管理员主界面

用户功能在视图层(view层)进行交互,比如点击“搜索、新增或删除”按钮或填写用户信息表单。这些用户表单动作被视图层捕获并作为请求发送给相应的控制器层(controller层)。控制器接收到这些请求后,调用服务层(service层)以执行相关的业务逻辑,例如验证输入数据的有效性和与数据库的交互。服务层处理完这些逻辑后,进一步与数据访问对象层(DAO层)交互,后者负责具体的数据操作如详情、修改或删除用户信息,并将操作结果返回给控制器。最终,控制器根据这些结果更新视图层,以便用户功能可以看到最新的信息或相应的操作反馈。如图5-7所示:
在这里插入图片描述

图5-7用户管理界面

广告数据功能在视图层(view层)进行交互,比如点击“搜索、新增、删除、导入、上传模板、下载模板”按钮或填写广告数据信息表单。这些广告数据表单动作被视图层捕获并作为请求发送给相应的控制器层(controller层)。控制器接收到这些请求后,调用服务层(service层)以执行相关的业务逻辑,例如验证输入数据的有效性和与数据库的交互。服务层处理完这些逻辑后,进一步与数据访问对象层(DAO层)交互,后者负责具体的数据操作如详情、修改、查看评论或删除广告数据信息,并将操作结果返回给控制器。最终,控制器根据这些结果更新视图层,以便广告数据功能可以看到最新的信息或相应的操作反馈。如图5-8所示:
在这里插入图片描述

图5-8广告数据管理界面

管理员进行爬取数据后可以在看板页面查看到系统简介、广告主题、广告类型、展示次数、广告费用、广告词云、广告数据总数、广告数据详情等实时的分析图进行可视化管理;看板大屏选择了Echart作为数据可视化工具,它是一个使用JavaScript实现的开源可视化库,能够无缝集成到Java Web应用中。Echart的强大之处在于其丰富的图表类型和高度的定制化能力,使得管理人员可以通过直观的图表清晰地把握广告数据的各项统计数据。
为了实现对广告数据信息的自动化收集和更新,我们采用了Apache Spark作为爬虫技术的基础。Spark的分布式计算能力使得系统能够高效地处理大规模数据,无论是从互联网上抓取最新的广告数据信息,还是对内部数据进行ETL(提取、转换、加载)操作,都能够保证数据的实时性和准确性。
在大数据分析方面,系统采用了Hadoop框架。Hadoop是一个能够处理大数据集的分布式存储和计算平台,它的核心是HDFS(Hadoop Distributed File System)和MapReduce计算模型。通过Hadoop,我们可以对收集到的大量数据进行存储和分析。看板页面如图5-9所示:
在这里插入图片描述

图5-9看板详细页面

管理员点击在线论坛,在在线论坛页面输入帖子标题进行搜索或删除在线论坛列表,并根据需要对在线论坛详情信息进行详情、修改、查看评论或删除操作;如图5-10所示:
在这里插入图片描述

图5-10在线论坛界面

管理员点击系统管理,在公告资讯页面输入标题进行搜索、新增或删除公告资讯列表,并根据需要对公告资讯详情信息进行详情、修改或删除操作;还可以对公告资讯分类、关于我们、系统简介和轮播图管理进行详细操作;如图5-11所示:
在这里插入图片描述

图5-11系统管理界面

5.3本章小结
在本章的设计过程中,首先是根据前的功能总结构设计的基础上,对于每个功能的实现,做了一些整体的设计。数据的连接是由数据库完成,通过了正常的连接。然后可以成功的建立一些系统开发所用到的表格。

6 系统调试与测试

系统的测试是必须的,需要知道的是这个阶段不是单独的,而是在全部的时间进行。这么做可以及时发现问题,还能找到产生矛盾的地方,并且可以尝试修改,这样就能完善系统。对于被测试的系统,都可以找到一些问题,而且还可以找到对应的位置在哪。其目的是对于整体的测试,发现需求中存在的矛盾,就可以做出修改了。测试的过程是对应于整体,有对软件的测试,发现需求的符合度,接下来,就是对数据的检测,以及对硬件的检测。
在软件测试规划中,必须了解测试流程,包括功能概述,测试周期,测试方法,测试范围,测试配置,测试技巧,测试交流,风险分析等。对于一些开发的人员,是可以知道测试方法,找到测试过程的一些的问题,然后可以应对这些问题。
6.1软件测试原则
系统的项目开始启动,系统测试也就是正式开始。软件的是有很多特殊性质,其一些测试也是整体的时间,不是一个单独的过程,因为有可能在所以时间段里,可以有不同的问题。从需求分析、系统设计的过程中,就可以进行系统的测试,制定相应的测试内容和设计文档,并且在整个开发过程中,都要进行系统的审核和确认,只有这样,才能更快的发现错误,从而提升系统的质量。为了更早地进行检测,让测试人员可以早知道测试难度,还有进行工作的准备,提前了解关于问题的风险,便于能够提高测试的效率,而且还能保证开发质量,还能够避免风险存在于测试里的,可以有更加完善的方案。
在测试过程中有一些问题,还有一些不足能被发现,这样测试可以使软件中有比较少的问题。有些人觉得只要能够通过软件测试的系统,就不会再存在任何问题,便可以比较放心的使用。这种把软件测试夸大的思想是违反原则的。总的来说即使软件测试能够发现任何问题,也不足以证明软件当中就没有任何的问题,系统就是完全正确的。软件测试必须很快地到软件开发过程中,这样就可以很快的地发现软件缺陷,并且越快发现软件问题,软件的修复成本就会越小。可以让测试人员加入需求的开发过程,以确保需求的可以测试的性质、正确性等,便可以更加有效地节省开发带来的成本。在有关于测试的环节当中也会尽早的找到问题,要是开发人员在某个模块发现了问题,那么在这模块中或许会存在不止一个问题。现在软件都比较复杂,而且测试也有难度,几乎不能有测试可以是完全。
测试是在一定的顺序,每个不同的阶段能够由出现的问题,可以了解到它的风险,这样也可以加强测试,从而可以保证软件使用时的质量。测试是需要比较早开始的,一方面就是保证软件的质量,有效的降低风险以及成本。测试的人员一般在分析需求时候就已经开始测试准备了,使得系统的不足在需求或者设计阶段就可以被发现出,就这点来说发现越早,能够修复的成本就越小。测试的设计可以确定测试的有效性以及效率问题,测试的工具只是提升了测试的效率,而非测试本身。在设计一个测试案例时,是还能改善可靠性,可以用更有效的方法。
6.2软件测试过程
软件测试中每当用户提出新的功能需求时,测试人员需要与开发人员一起做测试,这样测试人员就会对本次测试有个比较清晰的认识,具体要完成什么,都有什么功能等。而且当集成测试在完成后,开发的模块就会被联接在一起,从而形成一个完整的程序。每个各模块间的接口存在的许多缺陷都被消除,就可以进入了确认测试的阶段。确认测试是按照软件的需求规格,对软件进行评估是确保它否满足需求规格,然后决定最后的软件是否正常。
在测试规范后,就可以进行测试用例的编写,主要根据功能模块而展开,例如界面包括哪些操作,其中的操作是否可以正常进行,然后根据相关功能来设计,可以根据不同的情况来设计,对于一些测试过程中出现的问题等,以便查找测试任务的相关情况。
(1)单元测试
这种测试是一种用代码的编写,然后完成的测试方法,在整个检测流程中,是一个非常关键的步骤。在一项有关的程序中,可以进行测试的代码,这种的步骤和实现功能的运行过程是一样的,更加能够突出实现的时候,有关于一些数据的正确还有难易的问题。而且单元测试都由开发人员自己来实现。通常都是开发人员有义务编写相关的功能模块代码,由于对于这些问题的出现,会比别人更加的清楚。有目的单元测试,就是能够出现相应地方代码的执行行为与我们预期的具有一样的效果。一般是由开发人员查看相关代码来查找出问题,而且同样是不同的开发人员相互查看对方的代码,这样才能发现更多的问题。在使用工具扫描程序时,可以根据程序的一些错误的特征,是能够发现而且记录代码中的错误原因。还有就是可以使用工具能够自动生成测试用例,而且也能执行相关程序的测试,这种方式也是由于发现一些行为上的特征,并且报告错误的原因,这种测试的方法只能够发现一些明显的错误的问题,对一些不明显的错误就不能测试出原因所在,就比如一直简单的加法函数,其中的错误是相对比较简单的,但是以上的测试方法仍不能发现,是由于这种测试工具不可能自动的理解代码的功能。
(2)系统测试
所谓系统测试,就是把被确定的软件系统,包括电脑的硬件和网络,都是一个整体,它可以完成整个系统的检测和验证,系统试验是对整个软件系统进行的一次试验,其目的在于检测该系统能否达到要求,发现一些和需求规定不一样或者有歧义的地方,从而能够提出更加有效的方案。这里要有出现的任何问题,为了能够找到出现问题的位置,就是需要有调试的过程,然后进一步的改正。
这种测试也能够发现和规定不一样的时候,或者是出现的一些矛盾。都是需要提前有关于规定的需求做出比较,做出能够在实际的应用里,可以运行的一些对应的测试过程的用例。
(3)集成测试
集成测试是在单元测试后面开始的,将确定测试单元之间可以相互协调的运行。由于在很大的情况中,需要的系统不是有单独的几个或者一个人来完成,所以在前面的测试过程是,通过负责独立部分的开发者,同时也要负责这里的功能测试。但是如果要是把所以的测试部分都整合在一起,就可以发生一些问题。所以这里的测试是能够说明,不同的负责者的模块可以完全的正常执行,通常在执行集成测试之前,是必须先执行单元测试。
集成测试通过将逻辑上相关的两个或许多的功能模块连接起来执行增量的测试,接着又加入更多功能模块,以及对其功能进行的测试,一直到完成所有功能模块的集然后成功测试为止。集成测试又可以是自上而下方法,一般从测试最顶层的功能模块开始,接着一步步地降到最低的功能模块,其中测试是按照软件的具体控制流程从上到下的进行。还可以是自底向上的集成测试,可以很快的发现底层功能模块的问题,能够提高测试的效率。如果要是了解整个的框架,就必须是对应的功能测试在可以检测完的条件。
测试过程中的集成是相对容易的,而且用到的方法也是不太难,根据对应的方法,做出测试用例的需要也比较少,但是由于无法避免的功能模块间接口的问题,所以能够一次运行成功的可能性比较小。而且要是一次集成的功能模块数量比较多,在集成测试后有可能还出现大量的错误,这样系统的错误定位以及相关的修改就会存在比较大的问题,即便能够完成集成测试,但是有可能会留下很多的错误进入系统测试。

6.4本章小结
一开始系统的测试是可以不用考虑整个的程序,只是考虑它的某个正常的部分,而且也可以不用看到其正常的运行的功能,暂时先不用了解具体的结构是什么样。只是用软件就能确定的测试,能够判断出测试的精确程度。这个软件的测试,其实是用一个软件的内部构造来进行的。同时经过一些分析来测试的。同时也是由代码进行的软件测试,开发者可以通过检查代码或利用开发工具,来判定系统的质量。
在正常的情况下,需要软件的安装程序必须能够比较好的与现存在系统是可以兼容的,而且还能有相关的提示信息,可以让用户查看,接着正常安装然后实现相应的功能。所以在这里就体现了测试的重要性,要是没有一些正确的测试过程就会导致软件安装上的错误,然后软件就不能正确的运行,所以在这里安装的测试就是比较重要的环节。其中安装的测试的目的就是检验系统能否可以成功的安装,同时也保证系统安装完成了可以正常运行。
在软件开发之后,会对软件做出测试。通过对软件的检测,能够发现软件的实际用法,主要是用户为主的,然后系统的开发人员以及质量保证的测试人员也应加入的测试。主要考虑的问题是各个功能是不是规范的,还有一些用户的会有的问题。不仅仅是一个方面的质量问题,而是需要进行全方位是功能验证,最后要确定软件是否符合要求,所以验收的测试是一项比较严格的测试项目,需要根据事先制订的一些相关的计划,进行对于软件配置的审查、功能的测试、性能的测试等,最后才能确保软件的正常使用。

结 论

在本次毕业设计中,我使用Java技术,并选择MySQL作为后台数据库进行访问和修改。在设计之初,我对系统逻辑功能的具体实现也很纠结,因为我对在线广告推荐系统管理的概念还比较模糊,期间我也在网上查询了大量的信息,清楚地了解了现实生活中在线广告推荐系统管理的主要对象和管理需要完成的基本功能。
而在这个过程中也遇到了很多困难,主要有系统逻辑功能的不恰当和系统设计上的错误,当在自己获取信息时无法解决,我会与同学和老师商量和讨论,所以在这个过程中,也让我知道认识到自己的不足和团队的力量是最大的,无论是在学习还是工作中,要融入集体,这样自己才会成长得更快。
当然,在本次设计中,由于时间的不足和本人能力的限制,功能还不完善,对于论文的不足之处,希望在今后的学习中不断改进,使本系统更接近实际操作。

更多推荐