版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要社交平台体现了以用户为中心的理念,对广大社会交流沟通起着非常重要的作用。该平台主要包括用户内容、管理员审核两大模块。通过用户发表内容到管理员审核再到其他用户浏览内容;用户资料管理到管理员审核;用户推荐的三大主要过程解决了一些在实际中遇到的用户注册泛滥,用户传播不良思想和发表内容违规等矛盾,真正做到了用户与用户之间健康交流,文明交流的目标。关于社交平台的设计与实现的整个流程中,由社交平台的确立系统目标开始,对系统进行总体需求分析、系统功能需求、系统非功能需求还有业务流程分析,之后对系统进行概要设计和详细设计、对系统功能实现和系统测试运行。本文针对毕业设计的需求,应用SpringBoot框架开发社交平台,使用MySQL数据库进行关系数据库管理,采用了MD5加密算法对程序进行加密,使用了通过SpringBoot其自身带有的容器tomcat对平台进行前后端之间的数据交互,将MyBatis作为SpringBoot的持久性框架,Maven作为项目开发包管理工具。关键词:社交平台MySQLSpringBootMyBatisMavenAbstractSocialnetworkingsitesembodytheideaoftakingusersasthecoreandplayanimportantroleinsocialcommunication.Theplatformmainlyincludestwomodules:usercontentandadministratoraudit.Thecontentpublishedbyusersisreviewedbyadministratorsandthenbrowsedbyotherusers.Userdatamanagementtoadministratorreview;Thethreemainprocessesofuserrecommendationhavesolvedsomecontradictionsencounteredinpractice,suchastheproliferationofuserregistration,thedisseminationofbadideasandtheviolationofpublishedcontent,andhavereallyachievedthegoalsofhealthyandcivilizedcommunicationbetweenusers.Inthewholeprocessofdesigningandimplementingthesocialplatform,startingwiththeestablishmentofthesystemgoalofthesocialplatform,theoverallrequirementanalysis,thesystemfunctionrequirement,thesystemnon-functionrequirementandthebusinessprocessanalysisarecarriedout,andthenthesystemisbrieflydesignedanddetaileddesign,thesystemfunctionrealizationandthesystemtestoperationarecarriedout.Accordingtotherequirementsofgraduationdesign,thispaperusesSpringBootframeworktodevelopasocialplatform,MySQLdatabasetomanagerelationaldatabases,MD5encryptionalgorithmtoencryptprograms,tomcat,SpringBoot'sownservercontainer,toexchangedatabetweenthefrontandbackoftheplatform,MyBatisaspersistenceframeworkofSpringBoot,Mavenasaprojectdevelopmentpackagemanagementtool.Keywords:SNSMySQLSpringBootMyBatisMaven目录TOC\o"1-1"\t"标题2,1,标题3,1,标题4,1"\h\u第一章绪论 开发工具与技术简介2.1开发工具简介该项目开发环境为JDK1.8,管理工程的软件使用Maven,前端主要使用JSP,由MyBatis作为面向对象的persistenceframework,后端使用SpringBoot,数据库需要的软件是MySQL,开发工具使用IDEAIntellij2019.3.3使开发效率更高。2.2开发技术简介2.2.1SpringBoot简介该项目利用了SpringBoot框架做开发后端,SpringBoot作为一个由Java语言来实现的框架,它可以很好的用来建立微服务的项目工程。开发这个框架的团队叫PivotalTeam,它是用来创建独有的并且用来开发就绪的Spring工程应用。SpringBoot能够很好的帮助Java开发工程师开发一个不错的应用平台,可以使工程师们建立一个独有的、工厂级别的Spring应用工程,并且可以让使用者直接运行程序。工程师可以在最小的配置文件里开始配置,这样就不用在更加繁杂的Spring下进行完全的配置。SpringBoot框架为工程师们提供了许多的帮助和优化,例如:使Spring应用程序的代码理解和业务开发更简便,更加有效地提高工作效率,更加减少了项目开发的很多时间。2.2.2Docker简介通过Docker部署JDK1.8和MySQL5.7等提供了项目的开发环境和数据库环境,工程师和系统管理员能通过Docker容器更方便地搭建、启动和上传下载容器的应用。利用这个将容器内的软件搭建起来的过程,可以把它叫做容器化,这个搭建应用程序的方式已经是现代互联网发展中非常常见的了,但是它们能使以前的常用的部署方式变得更加简单便捷,以前浮躁地搭建环境的方式已经不再是问题,容器化这一非常能够抓住开发者们的痛点,这让容器化在现代互联网发展中越来越流行,正是因为容器化有以下众多好的特性:弱耦合性:容器是高度独立且封装好的类型,这能在开发者独立地升级或改变容器时毫不影响其他容器的运行。轻盈性:Docker能通过主机系统很好地发挥主机系统的资源,这更能体现出容器化的强大。可变性:能让非常繁杂的程序也可以进行部署。安全性:能够不需要开发者手动地进行容器配置下,很好地限制和区分开容器的应用程序过程。便携性:容器可以在本地系统中建立好并且上传到Docker官网上随时便携地下载到其他主机上。开放性:开发者能够使容器副本开放式地添加和自动化部署。2.2.3MyBatis简介MyBatis是目前开发者社区中主流的持久化框架,自定义化数据库存储流程和数据库映射是Mybatis的基本功能。它的优点是能够几乎摆脱了开发者日常使用jdbc代码过程中浮躁的手动参数配置和手动检索问题。通过注释或者通过*.xml文件格式下编写更加简单易懂的XML格式的代码解决了以上这一开发者的痛点。系统分析3.1系统需求分析3.1.1系统总体需求业务需求:全球约24亿人经常访问网络,人们的日常生活中逐渐被网络生活给占用,从而导致兴趣圈逐渐缩小,对现实世界有很大的影响,社交成为很多人的难题。但和一些现实活动中的传统活动比起来,现实中的活动和网络上的活动结合起来会更加的方便快捷。社交平台网站的最为普遍广泛的用户群是大学生,在大学生的观点来看,社交平台网站除了网络日志等这些常用的基础功能是远远不行的,还需要有用户实际真正有需求的高级应用。因此开发者们要是想要开发与大学生群体有关联的应用平台,就必须熟悉认识到大学生这一群体他们真正想要的是什么,最为迫切需要的东西是什么,而不能仅仅看表面上功能很多界面很好就能一蹴而就的,经过网络调查发现得出,休闲娱乐相关的类型是大部分大学生一直以来生活上的需求,因此开发社交平台不仅是让他们获得自己的个人世界的需求,还要在实际生活上有所关联。3.1.2系统的功能需求通过对系统的需求分析了解到,该系统总共有5大模块,2种角色,根据系统五大模块可以分为:内容模块:主要有文字的发表,视频的发表,图片的发表,消息通知,点赞收藏评论等功能。主要是文字视频和图片的分离式发表,文字为一个区域,视频为一个区域,图片为一个区域,更加体现出用户更加喜欢哪个内容类型的表现形式而不显得内容过于冗杂。好友模块:主要有好友关注,好友信息等功能。推荐模块:主要有用户推荐,内容推荐等功能。根据用户的喜好和设置来进行推断好友和内容的推荐方式。用户管理模块:主要有账号管理,手机绑定,个人资料,好友管理等功能。主要是根据用户自己的真实信息填充相应的真实资料情况。后台管理模块:上传内容审核,用户信息管理,发表信息管理,点赞信息管理,用户推荐管理,好友管理等。只要是对用户的基本信息,权限,推荐信息,内容发表信息进行相应的管理,不同用户会有不同样的角色成员,每个角色成员就对应了不同的角色权限。根据以上系统需求分析得出,可以将系统的相关角色和系统功能画出如下系统功能用例图,如下图3-1:图3-1系统功能用例图3.1.3系统的其他需求(1)系统吞吐量TPS:TPS每秒不小于100。(2)平均响应时间:规定有100个请求,那么请求平均花费时间应该在1000-2000ms之内。(3)安全性:用户在请求所有的输入时,系统应该将这些请求做安全性相关检测,在出现安全漏洞和安全问题时必须要解决这些问题。(4)数据可用性:为了能够达到使用数据库的存储的目标,系统的所有有关数据应该兼容可用配置。3.2业务流程分析由系统功能需求和调查得知系统的业务流程主要有三种流程,通过用户发表内容、管理员审核内容、其他用户收藏内容,收藏成功或其他用户点赞内容,点赞成功或其他用户评论用户、管理员审核、评论成功三个过程。具体流程图如图3-2-1所示图3-2-1业务流程图3.3本章小结系统的业务流程分析与需求分析是该章主要内容,在需求分析中主要介绍了开发此平台的用户痛点,本平台应该实现的功能模块以及本平台在运行中应该满足的非功能需求。还有本平台最主要的业务流程分析。第四章系统的概要设计4.1系统逻辑架构基于MVC架构的实现是本文逻辑架构的基本思想,具体的架构分层如下所示:(1)用户层:是平台的主角,包括用户和管理员。(2)表现层:表现层主要使用了JSP技术,用户通过操作某一JSP来操作系统,如FrendsList.jsp,VideoLikes.jsp,Recommendation.jsp等。(3)服务层:该层是为系统提供中心模块的服务内容,如Frends服务,Recommendation服务,Video服务等服务接口类,经过用户在前端的页面请求,将请求放回给后台处理结果,最后将结果返回给前端页面。(4)数据存储层:在数据库中,使用了Mysql关系型数据库进行存储。为了缓存后台产生的数据,帮助提高系统性能,因而使用Redis。系统的逻辑架构图如下图4-1-1所示:图4-1-1系统逻辑架构图4.2系统功能模块划分本系统主要由5大模块和其他子模块,五大模块分别是内容模块,好友模块,推荐模块,用户模块,后台管理员管理模块。系统模块及其子模块如下:(1)好友模块:主要包括好友的管理(增加,删除,查询),好友资料的查看,好友内容发布查看。(2)推荐模块:主要包括好友推荐的推荐原因,推荐时间,推荐用户名称。(3)用户模块:主要包括用户信息资料,我的好友查询,修改个人资料,修改密码,我的收藏。(4)内容模块:主要包括文字发表,视频发表和图片发表。(5)管理系统模块:管理系统模块是帮助后台管理员更好地管理系统后台的相关信息,能够对每个用户角色对应的各种权限的管理,还有管理用户发表内容的审核,管理用户评论内容的审核,管理用户注册信息的审核等。通过以上信息可画出系统功能模块图如下图4-2所示:图4-2系统功能模块图4.3系统的数据库设计(1)实体E-R图设计利用E-R图对数据库的相关信息进行设计,首先针对用户为实体具有以下属性:编号,用户名,密码,姓名,性别,出生年月,电话,邮箱,创建时间如下图4-3-1所示图4-3-1用户实体E-R图针对好友,具有以下属性:编号,用户编号,姓名,性别,电话,添加人,创建时间如下图4-3-1所示图4-3-2好友实体E-R图把评论当做实体,针对评论为实体具有以下属性:编号,评论内容,评论人,评论时间如下图4-3-3所示图4-3-3评论实体E-R图用户收藏内容的这一过程,可以把收藏夹当做实体,针对收藏夹具有以下属性:编号,用户名,标题,链接,创建时间如下图4-3-4所示图4-3-4收藏实体E-R图用户发表文字内容,把文字内容当做实体,针对文字内容具有以下属性:编号,文字主题,文字内容,发表人,点赞量,创建时间,是否审核如下图4-3-5所示图4-3-5文字内容实体E-R图用户发表图片内容,把图片内容当做实体,针对图片内容具有以下属性:编号,图片主题,图片,发表人,点赞量,创建时间,是否审核如下图4-3-6所示图4-3-6图片内容E-R图用户发表视频内容,把视频内容当做实体,针对视频内容具有以下属性:编号,视频主题,视频,发表人,点赞量,是否审核,创建时间如下图4-3-7所示图4-3-7视频内容E-R图Users用户表如下表4-3-1所示:表4-3-1用户表字段名称数据类型长度是否为null解释uidint10否用户编号namevarchar49否用户名称realnamevarchar50否真实姓名sexvarchar4否性别birthtimevarchar100否出生年月phonenumbervarchar45否电话addtimetimestamp50否创建日期Friends好友表如下表4-4-1所示:表4-4-1好友表字段名称数据类型长度是否为null解释fidint11否好友编号usersidint11否用户编号namevarchar50否好友名称realnamevarchar50否真实姓名sexvarchar4否性别concernedvarchar50否添加人phonenumbervarchar45否电话addtimetimestamp50否创建日期收藏列表Collects如下表4-5-1:表4-5-1收藏列表字段名称数据类型长度是否为null解释colidint11否收藏编号usersidint11否用户编号urlvarchar255否链接titlevarchar100否标题addtimetimestamp50否创建日期评论表Comments如下表4-6-1:表4-6-1评论表字段名称数据类型长度是否为null解释comidint11否评论编号commentatorvarchar50否评论人contentsvarchar255否内容addtimetimestamp50否创建日期文字内容表Writtings如下表4-7-1:表4-7-1文字内容表字段名称数据类型长度是否为null解释widint11否内容编号titlevarchar50否标题contentsvarchar255否内容likesint11否点赞量isverifyvarchar10否是否审核addtimetimestamp50否创建日期图片内容表Pictures如下表4-8:表4-8图片内容表字段名称数据类型长度是否为null解释pidint11否图片编号titlevarchar50否标题contentsvarchar255否内容likesint11否点赞量isverifyVarchar10否是否审核addtimetimestamp50否创建日期视频内容表Videos如下表4-9-1:表4-9-1文字内容表字段名称数据类型长度是否为null解释vidint11否视频编号titlevarchar50否标题contentsvarchar255否内容likesint11否点赞量isverifyVarchar10否是否审核addtimetimestamp50否创建日期4.4本章小结第四章讲述了系统的概要设计,其包含系统功能模块和逻辑架构设计,并对其相关模块进行细节的划分和主要的数据库设计。第五章系统详细设计和实现5.1登录页面5.1.1验证码实现在登录模块上,是需要有验证码对用户是否为人机进行检验的,通过BufferedImage,Graphics和String类很好地实现了随机的验证码,将验证码图片存在img中并且生成到页面。验证码控制器核心代码实现:/**
*验证码控制器
*/
@Controller
publicclassCaptchaControllerextendsBaseController{
/**
*输出验证码图片,并记录session“random”里等待登录时写入
*/
@RequestMapping("/captcha")
publicStringIndex()
{
response.setContentType("image/jpeg");
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires",0);
intwidth=61,height=21;
BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphicsg=image.getGraphics();
Randomrandom=newRandom();
g.setColor(getRandColor(199,249));
g.fillRect(0,0,width,height);
g.setFont(newFont("TimesNewRoman",Font.PLAIN,17));
g.setColor(getRandColor(159,199));
for(inti=0;i<155;i++)
{
intx=random.nextInt(width);
inty=random.nextInt(height);
intxl=random.nextInt(12);
intyl=random.nextInt(12);
g.drawLine(x,y,x+xl,y+yl);
}
StringsRand="";
for(inti=0;i<4;i++){
Stringrand=String.valueOf(random.nextInt(10));
sRand+=rand;
g.setColor(newColor(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
g.drawString(rand,13*i+6,16);
}
request.getSession().setAttribute("random",sRand);
g.dispose();
try{
ServletOutputStreamstream=response.getOutputStream();
ImageIO.write(image,"JPEG",stream);
stream.flush();
stream.close();
}catch(Exceptione){
e.printStackTrace();
}
return"success";
}
protectedColorgetRandColor(intfc,intbc)
{
Randomrandom=newRandom();
if(fc>255)fc=255;
if(bc>255)bc=255;
intr=fc+random.nextInt(bc-fc);
intg=fc+random.nextInt(bc-fc);
intb=fc+random.nextInt(bc-fc);
returnnewColor(r,g,b);
}
}5.1.2登录页面展示登录页面在网页上方栏目对右边的登录图标进行点击后,登录点击页面在首页存在的原因是为了使页面更加地为用户提供方便的登录方式,输入注册成功后的用户信息即可进行输入验证码,验证码审核成功后登录即可成功图5-1-2-1登录操作图5.1.3登录页面流程图该模块的流程有:当鼠标点击登录图标后,就会跳出登录窗口,使用自己的用户名和密码输入后选择用户权限,用户权限默认为注册用户,输入验证码验证成功后跳出登录成功提示窗口结束。登录流程图如下所示:图5-1-3-1登录流程图5.1.4登录模块代码实现由后台验证登录页面前台页面发送过来的用户名,密码,用户权限,验证码的值,通过后台的相关逻辑处理,返回给前台页面进行页面跳转操作,主要代码如下所示:/**
*用户登录更新密码控制器
*/
@Controller
publicclassUserControllerextendsBaseController{
@Resource
privateAdminServiceadminService;
@Resource
privateZhuceyonghuServicezhuceyonghuService;
/**
*验证登录用户
*@paramisAdmin
*@paramusername
*@parampwd
*@paramcx
*@return
*/
protectedStringauthLoginUser(booleanisAdmin,Stringusername,Stringpwd,Stringcx)
{
if(username==null||"".equals(username)){
returnshowError("账号不允许为空");
}
if(pwd==null||"".equals(pwd)){
returnshowError("密码不允许为空");
}
if(cx==null){
returnshowError("请选中登录类型");
}
Stringrandom=(String)request.getSession().getAttribute("random");
Stringpagerandom=request.getParameter("pagerandom")==null?"":request.getParameter("pagerandom");
if(request.getParameter("a")!=null&&!pagerandom.equals(random)){
returnshowError("验证码不正确");
}
if(cx.equals("管理员")){
Adminuser=adminService.login(username,pwd);
if(user==null){
returnshowError("用户名或密码错误");
}
session.setAttribute("id",user.getId());
session.setAttribute("username",user.getUsername());
session.setAttribute("cx",cx);
session.setAttribute("login",cx);
session.setAttribute("username",user.getUsername());
session.setAttribute("pwd",user.getPwd());
}
if(cx.equals("注册用户")){
Zhuceyonghuuser=zhuceyonghuService.login(username,pwd);
if(user==null){
returnshowError("请求失败,用户名与密码错误");
}
session.setAttribute("id",user.getId());
session.setAttribute("username",user.getYonghuming());
session.setAttribute("cx",cx);
session.setAttribute("login",cx);
session.setAttribute("yonghuming",user.getYonghuming());
session.setAttribute("mima",user.getMima());
session.setAttribute("xingming",user.getXingming());
session.setAttribute("xingbie",user.getXingbie());
session.setAttribute("chushengnianyue",user.getChushengnianyue());
session.setAttribute("dianhua",user.getDianhua());
session.setAttribute("youxiang",user.getYouxiang());
session.setAttribute("touxiang",user.getTouxiang());
}
Stringreferer=request.getParameter("referer");
if(referer==null){
if(isAdmin){
referer="./main.do";
}else{
referer="./";
}
}
returnshowSuccess("登录成功",referer);
}
/**
*验证登录页面
*@return
*/
@RequestMapping("/authLogin")
publicStringauthLogin()
{
Stringusername=Request.get("username");
Stringpwd=Request.get("pwd");
Stringcx=Request.get("cx");
returnauthLoginUser(false,username,pwd,cx);
}
/**
*验证后台登录
*@return
*/
@RequestMapping("/authAdminLogin")
publicStringauthAdminLogin()
{
Stringusername=Request.get("username");
Stringpwd=Request.get("pwd");
Stringcx=Request.get("cx");
returnauthLoginUser(true,username,pwd,cx);
} 5.2用户点赞评论和收藏5.2.1界面展示用户点赞评论和收藏基本上是数据库的增删改查功能和判断用户是否登录的情况,只以视频点赞为例,用户的点赞为一个控制器,在视频点赞控制器中,用户点击点赞,前台的点赞信息将会传给后台进行相应的逻辑处理,视频主的点赞列表将会出现一个用户的点赞信息,并且视频下方的点赞数增加1)点赞视频的页面展示:图5-2-1-1视频页面2)评论的展示如下图所示:图5-2-1-2评论展示3)收藏功能展示,用户点击收藏,前台页面就会发送信息将后台页面的收藏视频类进行相应的逻辑处理,然后就会将该视频收藏进用户个人中心下的收藏页面收藏夹页面展示:图5-2-1-3收藏展示5.2.2点赞评论流程图在点赞的流程中,用户会在前台页面点击点赞,点击后前台会发送信息到后台页面进行增加点赞数的逻辑操作,后台将会把点赞数保存到数据库。流程图如下所示:图5-2-2-1点赞流程图图5-2-1-2评论流程图5.3用户发布内容5.3.1用户内容页面展示用户在想要给自己发表一些话语内容或者图片分享内容或者视频内容可以在个人中心发布个人的内容。通过文字发表页面填写自己的文字标题名称,文字内容,文字是否推荐然后点击提交即可,同样用户也可以删除自己想要删除的文字,在文字查询区域找到自己想要删除的内容删除即可。图5-3-1-1文字发表文字发布后一旦被管理员审核之后就会发布在文字内容展示区,视频和图片也是一样的,视频的信息填写上传文件之后就可以发布视频,视频上传后,后台管理员进行检验,通过后就会出现在视频的内容区,视频的内容区如下图所示:图5-3-1-2视频内容展示区5.3.2用户发布内容流程图用户发布内容的流程最核心的部分就是内容的审核阶段,因为内容的审核是社交平台最核心的点,如果没有内容审核这一阶段,那么内容的发布就会很没有规则,会使很多不健康不文明的内容在社交平台上出现,这样就会很大地影响用户的使用体验,严重者会影响到用户身心的健康。所以内容审核是很重要的流程。用户发布的流程中是必须存在这一阶段的,用户发布内容的流程图如下图所示:图5-3-2-1内容发布流程图
5.4推荐功能5.4.1推荐界面展示用户发布自己的内容之后,可以对自己的账号进行推荐,并且可以填写自己的推荐备注信息,用户就会在推荐页面进行显示自己的用户列表页。其推荐图展示如下图所示图5-4-1-1推荐图
5.5系统后台管理5.5.1后台管理界面展示该页面是由管理员账号才能够登录的页面,登录时需要检验用户权限是否为后台管理员,如果是,则用户名和密码输入正确并且验证码也输入正确的时候,就允许进入后台管理界面,后台管理页面是后台管理员负责管理社交平台后台信息,用户发布内容的审核管理,用户注册的管理,用户角色的管理。也可以通过后台管理系统查看系统的基本信息,管理员账号信息管理,账号密码修改。文字,图片和视频内容发表的管理和点赞信息的管理。对用户推荐信息的管理,还有好友信息的查询功能。后台管理员最主要的就是审核用户信息,审核内容信息和查看系统信息三大作用。图5-6-2后台管理系统图5.5.2内容审核的代码实现当用户对内容进行发表的时候,内容经常会带有是否审核的属性,在没有管理员审核的情况,用户上传内容系统会自动把是否审核的这一属性赋值为否,当管理员审核完毕后,发现该内容没有任何问题,就把是否审核的属性更新值为是。这就实现了管理员后台审核的这一功能。/**
*设置是否审核
*@return
*/
@RequestMapping("/sh")
@ResponseBody
publicStringsh()
{
Stringyuan=request.getParameter("yuan");
Stringid=request.getParameter("id");
Stringtablename=request.getParameter("tablename");
Stringsql="";
if(yuan.equals("是"))
{
sql="update"+tablename+"setissh='否'whereid="+id;
}
else
{
sql="update"+tablename+"setissh='是'whereid="+id;
}
newCommDAO().commOper(sql);
return"<script>location.href='"+request.getHeader("Referer")+"';</script>";
}
5.6其他设计
5.6.1文件上传的设计实现用户在头像上传,图片和视频上传都必须要用到文件上传功能,文件上传使用了UUID和File,把上传上来的文件转化,在传入的虚拟路径上获取物理路经,然后将转化好的文件名和路径结合起来返回新的url保存到数据库中完成文件的上传。/**
*上传控制器
*/
@Controller
publicclassUploadControllerextendsBaseController{
/**
*上传文件
*@paramfujian
*@return
*@throwsException
*/
@RequestMapping(value="/upload_re")
publicStringUpload(MultipartFilefujian)throwsException
{
StringfileName=fujian.getOriginalFilename();
StringsuffixName=fileName.substring(fileName.lastIndexOf("."));
fileName=UUID.randomUUID()+suffixName;
StringfilePath=getFolder("upload");
try{
Filefile=newFile(getPhysicalPath(filePath)+"/"+fileName);
fujian.transferTo(file);
request.setAttribute("url",filePath+"/"+fileName);
return"upload";
}catch(Exceptione){
returnshowError(e.getMessage());
}
}
privateStringgetFolder(Stringpath){
SimpleDateFormatformater=newSimpleDateFormat("yyyyMMdd");
path+="/"+formater.format(newDate());
Filedir=newFile(this.getPhysicalPath(path));
if(!dir.exists()){
try{
dir.mkdirs();
}catch(Exceptione){
return"";
}
}
returnpath;
}
/**
*根据传入的虚拟路径获取物理路径
*
*@parampath
*@return
*/
privateStringgetPhysicalPath(Stringpath){
StringservletPath=this.request.getServletPath();
StringrealPath=this.request.getSession().getServletContext()
.getRealPath(servletPath);
returnnewFile(realPath).getParent()+"/"+path;
}
}5.7本章小结本章主要详细描述了项目每一个功能模块的详细设计与实现,针对每一个模块的主要功能分别描述和展示了页面的模块和流程图,一些功能将实现代码也展现了出来。第六章系统测试 6.1运行测试6.1.1测试概述软件测试能够在系统模块实现和需求结合起来达到检测目的的一种实现,它是在非常多的测试次数下,为了实现能够证明系统是能够运行的,系统的某个模块是准确的,系统的整体实现是安全可靠的。6.1.2测试目的测试是软件开发中的一种活动。它是对软件进行的调查,目的是向涉及用户提供关于软件质量的信息。软件测试通常与验证和确认一词结合使用。什么是验证,验证就是检查或测试项目(包括软件)与相关规范的一致性和正确性,就好像是在说:“我们做的工作对吗?”。验证是检查指定的内容是用户实际需要的过程。软件测试只是一种验证,它还使用诸如审查,分析,检查和演练之类的技术。6.1.3测试所需要的环境系统在不一样的测试阶段中会有不同的系统测试环境,现阶段主要介绍上线前最主要,最焦点,涉及面最大的测试服务器系统:Manjaro18.01开发环境:JDK1.8Web服务器:Tomcat8.0关系型数据库:MySQL5.7Key-Value数据库:Redis3.2网页浏览器:IE7以上版本,FireFox,Chrome6.1.4系统功能测试在结合开发和需求上将实现好的界面上进行测试数据。该社交系统的主要功能模块有:登录功能,注册功能,没有登录的拦截跳转功能,评论功能,收藏功能,点赞功能,文件上传功能,文字视频和图片内容的发布功能,关注好友功能,系统后台管理功能等功能测试表表6-1-4所示:表6-1-4功能测试表测试功能操作预期结果实际结果用户注册进入用户页面,输入合规的用户名和密码,输入正确的验证码出现注册成功提示,进入首页与预期结果一致用户登录点击用户登录之后就会出现登录窗口,在登录窗口中输入正确的用户名密码和登录验证码将会出现提示登录成功窗口,进入首页能看到用户的用户信息与预期结果一致文件上传功能点击头像上传,上传图片格式有jpg,png格式的图片图片上传成功,用户资料出现头像。与预期结果一致文字发布输入文字信息,点击提交出现提交成功提示与预期结果一致视频发布点击视频上传,上传mp4,mkv格式的视频,输入视频标题,点击提交出现提交成功提示与预期结果一致图片发布点击图片上传,上传png,jpg格式的图片,输入图片标题,点击提交出现提交成功提示与预期结果一致关注好友进入好友推荐页面,点击关注,查看自己的好友列表好友列表出现了关注了的好友与预期结果一致用户点赞进入视频区,点击视频详情,点击点赞点赞量比之前的点赞量+1与预期结果一致用户收藏进入视频区,点击视频详情,点击收藏用户收藏夹出现收藏了的视频内容与预期结果一致用户评论进入视频区,点击评论,输入评论内容,点击提交视频下方出现评论内容与预期结果一致系统后台审核以后台管理员身份登录进入后台管理页面,查看视频发布内容列表,将是否审核值为‘否’的内容查看,并且将是否审核值改为‘是’,最后查看视频区视频区出现了审核通过的视频与预期结果一致6.1.5系统性能测试(1)系统总体性能统计和应用程序性能指标通过使用JMeter工具进行压力测试结果得出,在测试持续时间为3分钟之内,开启100个线程,可以看出系统总体请求次数达到63484次,错误率0,最大响应时间达到2436ms,最小响应时间达到2ms,第99百分比响应时间达到770ms,系统的TPS达到352.26,应用程序性能指标达到94%左右,以上指标总体地概括了系统性能。图6-1-5-1系统总体性能统计和应用程序性能指标图(2)响应时间总览在通过使用JMeter工具完成对系统的响应时间的测试的结果得到,在测试持续时间为3分钟之内,开启100个线程,对系统请求响应一共63484次,之后得出大约87.86%的响应时间出现在了500ms以内,大约11.85%的响应时间出现在了500ms-1500ms之间,大约0.02%的响应时间在1500ms,0%的请求响应错误,详细的响应时间总览图如下图所示:图6-1-5-2响应时间总览图(3)系统吞吐量通过使用JMeter工具进行系统吞吐量的压力测试结果得出,在测试持续时间为3分钟之内,开启100个线程,最大值在1分钟时达到332transactions/sec,最小值在3分钟后的164transactions/sec,3分钟内的TPS值为100,TPS图如下图所示:图6-1-5-3系统吞吐量6.2测试结果该测试实现了系统性能和功能上的测试。整个测试结果顺利,并没有出现多大的问题,并且测试结果和预期所要求的测试结果达到了一致,系统测试达到了预期目标。6.3本章小结该章讲述了系统测试运行的相关部分例如系统测试概述,测试目的,测试环境,测试功能模块和测试性能模块等相关概述,最后对测试的结果进行了简要总结。第七章结论本论文针对社交平台的实际项目需求,通过项目的需求分析,概要设计,详细设计和代码实现以及测试并运行等模块进行说明,最后系统成功测试了所有的功能测试和非功能测试,在通过所有测试结果得出系统是可以正常运行的。系统管理通过规范实现化,项目流程化和平台互动化,充分地实现了社交平台的真实实现过程,很好地解决了复杂的社交平台多种多样用户之间的管理。通过推荐化模块充分地扩大了用户与用户之间的互动量。针对社交项目用户量大,本系统通过对各个内容类别的分解,用户的角色分解,用户资料和用户关注等一系列用户操作校验,对一系列复杂问题逐一解决,很好的对用户量大,用户关注和取消关注操作频繁,发表内容类别的不同和发表内容的次数多等一系列问题做出良好的解决效果。针对用户内容审核因素最为重要,本系统将会通过以后台管理由后台管理员亲自审核的方式加大对审核内容的严格把关,以牺牲内容审核效率为代价,提高对审核之后的文明问题,安全问题和责任问题等问题的解决效果。并且为了保证审核效率不会大幅减低,本系统的性能和审核人员需要更加提高以减少审核效率低下的问题的结果出现。系统已经成功正式地测试运行,系统运行状态基本稳定,流程操作简单易懂,系统的功能较多,技术也使采用了当下流行的技术和框架,系统采用了MVC的模式,所以在对改良和自定义化页面和角色交互的时候,无需重头开始制作业务代码逻辑,增强系统的高重用性,低耦合性与可适用和可维护性,可以有效地帮助开发者达到实现业务逻辑的目标。参考文献朱晓文,鄂翌婷.社交网络服务平台使用对大学生社会资本影响的实证分析[J].西安交 通大学学报(社科版),2017,(5):79-87.[2] 郭鑫.购物网站服务质量对顾客满意与忠诚度的影响[J].山西财经大学学报,2011, 33(3):120-121.[3] 丁子恩,王笑涵,刘勤学.大学生自尊与网络过激行为的关系:社交焦虑和双自我意识的 作用[J].心理发展与教育,2018,34(2):171-180.[4] 孟男,王玉慧,雷雳.自拍照编辑与女大学生主观幸福感的关系:积极反馈与自我概念的 中介作用[J].心理发展与教育,2017,33(6):751-758.[5] 侯珂,邹泓,刘艳,金灿灿,蒋索.同伴团体对青少年问题行为的影响:一项基于社会网 络分析的研究[J].心理发展与教育,2014,30(3):259-267.[6] 刘勤学,孙佳宁,余思.社交网站中的自我呈现与青少年网络利他行为:网络社交效能和 希望的作用[J].心理发展与教育,2019,35(5):530-539.[7] 李丹林曹然*.以事实为尺度:网络言论自由的界限与第三方事实核查[J].南京师大学 报(社会科学版),2018,(04):046.[8] B.Vasilescu,Y.Yu,H.Wang,P.Devanbu,andV.Filkov,“QualityandProductivity OutcomesRelatingtoContinuousIntegrationinGitHub,”inProceedingsofthe201510th JointMeetingonFoundationsofSoftwareEngineering,2015,pp.805–816.[9] A.Hora,D.Silva,R.Robbes,andM.T.Valente,“Assessingthethreatofuntrackedchanges insoftwareevolution,”in40thInternationalConferenceonSoftwareEngineering(ICSE), 2018,pp.1102–1113.[10] R.G.Kula,D.M.German,A.Ouni,T.Ishio,andK.Inoue,“Dodevelopersupdatetheir librarydependencies?”EmpiricalSoftwareEngineering,vol.23,no.1,pp.384–417,2018[11] L.Moreno,G.Bavota,M.DiPenta,R.Oliveto,andA.Marcus,“HowCanIUsethis Method?”inInternationalConferenceonSoftwareEngineering,2015,pp.880–890.[12] D.Yang,A.Hussain,andC.V.Lopes,“FromQuerytoUsableCode:AnAnalysisofStack OverflowCodeSnippets,”inInternationalConferenceonMiningSoftwareRepositories, 2016,pp.391–402.[13] 蔡立志,阎婷.大数据背景下软件测试的挑战与展望[J].计算机应用与软件,2014, 31(02):5-8.[14] 唐诚.Redis数据库在微博系统中的实践[J].厦门城市职业学院学报,2012,14(03):55-59.致谢时间很快就过去了,四年的大学生活,在东软这个大环境的培养下,有压力和辛苦,有紧张和焦虑,这些因素能使我不断茁壮成长,不断向前迈进。当然也有和师生在一个课堂里的快乐和幸福,能使我的求学生涯减轻一丝紧张。如今我也像和我上一届师兄一样即将离开学校的摇篮,挥手告别自身所一直求学读书的学生时代,这些过程闭了一下眼睛也就到达了终点,为我最珍贵的学生时代画下一笔句号。这也就意味着我即将踏入了社会,开始了另一段更加艰险更加充满历练的人生阶段,踏入另一阶段的同时,我也不会忘记我求学阶段所学下的知识。该文由我最尊敬的谢云老师悉心和亲切的指导下完成,非常感谢老师在繁重的工作下仍然认真仔细地给予我多方面的指导,除了给予我学习上,更让我值得学习的是,老师平易近人以及和蔼朴素的性格特点。感谢我的家人,感谢我的父母对我一直以来学习道路上的支持与鼓励,以及感谢父母的养育我多年,父母之恩永生难忘,还要感谢我的姐姐,她会在我遇到挫折乏力快要跌倒时鼓励我,帮我成功解决困难,没有他们,就不会有我读书的这段经历。感谢在我读书期间陪伴我的同学们,与他们一起快乐,一起学习,一起工作,有了他们的存在,我的读书生活也将变得丰富多彩。感谢所有一直在我读书以来帮过我的老师们,感谢他们对我最为珍贵的批评和指导,才让我有所成长和改变,我很幸福能够遇到这些老师。最后也感谢帮助我论文评审和答辩的老师,感谢你们在百忙之中能够指点我的不足并且提出宝贵的建议。
捷键与一些电脑小技巧HYPERLINKwinkey+d:
这是高手最常用的第一快捷组合键。这个快捷键组合可以将桌面上的所有窗口瞬间最小化,无论是聊天的窗口还是游戏的窗口……只要再次按下这个组合键,刚才的所有窗口都回来了,而且激活的也正是你最小化之前在使用的窗口!
--这个就是winkeywinkey+f:
不用再去移动鼠标点“开始→搜索→文件和文件夹”了,在任何状态下,只要一按winkey+f就会弹出搜索窗口。
winkey+r:
在我们的文章中,你经常会看到这样的操作提示:“点击‘开始→运行’,打开‘运行’对话框……”。其实,还有一个更简单的办法,就是按winkey+r!
alt+tab:
如果打开的窗口太多,这个组合键就非常有用了,它可以在一个窗口中显示当前打开的所有窗口的名称和图标●,选中自己希望要打开的窗口,松开这个组合键就可以了。而alt+tab+shift键则可以反向显示当前打开的窗口。
winkey+e:
当你需要打开资源管理器找文件的时候,这个快捷键会让你感觉非常“爽”!再也不用腾出一只手去摸鼠标了!
小提示:
winkey指的是键盘上刻有windows徽标的键●。winkey主要出现在104键和107键的键盘中。104键盘又称win95键盘,这种键盘在原来101键盘的左右两边、ctrl和alt键之间增加了两个windwos键和一个属性关联键。107键盘又称为win98键盘,比104键多了睡眠、唤醒、开机等电源管理键,这3个键大部分位于键盘的右上方。
再补充点
F1显示当前程序或者windows的帮助内容。
F2当你选中一个文件的话,这意味着“重命名”
F3当你在桌面上的时候是打开“查找:所有文件”对话框
F10或ALT激活当前程序的菜单栏
windows键或CTRL+ESC打开开始菜单
CTRL+ALT+DELETE在win9x中打开关闭程序对话框
DELETE删除被选择的选择项目,如果是文件,将被放入回收站
SHIFT+DELETE删除被选择的选择项目,如果是文件,将被直接删除而不是
放入回收站
CTRL+N新建一个新的文件
CTRL+O打开“打开文件”对话框
CTRL+P打开“打印”对话框
CTRL+S保存当前操作的文件
CTRL+X剪切被选择的项目到剪贴板
CTRL+INSERT或CTRL+C复制被选择的项目到剪贴板
SHIFT+INSERT或CTRL+V粘贴剪贴板中的内容到当前位置
ALT+BACKSPACE或CTRL+Z撤销上一步的操作
ALT+SHIFT+BACKSPACE重做上一步被撤销的操作
Windows键+D:最小化或恢复windows窗口
Windows键+U:打开“辅助工具管理器”
Windows键+CTRL+M重新将恢复上一项操作前窗口的大小和位置
Windows键+E打开资源管理器
Windows键+F打开“查找:所有文件”对话框
Windows键+R打开“运行”对话框
Windows键+BREAK打开“系统属性”对话框
Windows键+CTRL+F打开“查找:计算机”对话框
SHIFT+F10或鼠标右击打开当前活动项目的快捷菜单
SHIFT在放入CD的时候按下不放,可以跳过自动播放CD。在打开wo
rd的时候按下不放,可以跳过自启动的宏
ALT+F4关闭当前应用程序
ALT+SPACEBAR打开程序最左上角的菜单
ALT+TAB切换当前程序
ALT+ESC切换当前程序
ALT+ENTER将windows下运行的MSDOS窗口在窗口和全屏幕状态间切换
PRINTSCREEN将当前屏幕以图象方式拷贝到剪贴板
ALT+PRINTSCREEN将当前活动程序窗口以图象方式拷贝到剪贴板
CTRL+F4关闭当前应用程序中的当前文本(如word中)
CTRL+F6切换到当前应用程序中的下一个文本(加shift可以跳到前
一个窗口)
在IE中:
ALT+RIGHTARROW显示前一页(前进键)
ALT+LEFTARROW显示后一页(后退键)
CTRL+TAB在页面上的各框架中切换(加shift反向)
F5刷新
CTRL+F5强行刷新1.打开“我的电脑”-“工具”-“文件夹选项”-“查看”-在“显示所有文件和文件夹”选项前打勾-“确定”
2.删除以下文件夹中的内容:
x:\DocumentsandSettings\用户名\Cookies\下的所有文件(保留index文件)
x:\DocumentsandSettings\用户名\LocalSettings\Temp\下的所有文件(用户临时文件)
x:\DocumentsandSettings\用户名\LocalSettings\TemporaryInternetFiles\下的所有文件(页面文件)
x:\DocumentsandSettings\用户名\LocalSettings\History\下的所有文件(历史纪录)
x:\DocumentsandSettings\用户名\Recent\下的所有文件(最近浏览文件的快捷方式)
x:\WINDOWS\Temp\下的所有文件(临时文件)
x:\WINDOWS\ServicePackFiles(升级sp1或sp2后的备份文件)
x:\WINDOWS\DriverCache\i386下的压缩文件(驱动程序的备份文件)
x:\WINDOWS\SoftwareDistribution\download下的所有文件
3.如果对系统进行过windoesupdade升级,则删除以下文件:x:\windows\下以$u...开头的隐藏文件
4.然后对磁盘进行碎片整理,整理过程中请退出一切正在运行的程序
5.碎片整理后打开“开始”-“程序”-“附件”-“系统工具”-“系统还原”-“创建一个还原点”(最好以当时的日期作为还原点的名字)
6.打开“我的电脑”-右键点系统盘-“属性”-“磁盘清理”-“其他选项”-单击系统还原一栏里的“清理”-选择“是”-ok了
7、在各种软硬件安装妥当之后,其实XP需要更新文件的时候就很少了。删除系统备份文件吧:开始→运行→sfc.exe/purgecache近3xxM。(该命令的作用是立即清除"Windows文件保护"文件高速缓存,释放出其所占据的空间)
8、删掉\windows\system32\dllcache下dll档(减去200——300mb),这是备用的dll档,只要你已拷贝了安装文件,完全可以这样做。
9、XP会自动备份硬件的驱动程序,但在硬件的驱动安装正确后,一般变动硬件的可能性不大,所以也可以考虑将这个备份删除,文件位于\windows\drivercache\i386目录下,名称为driver.cab,你直接将它删除就可以了,通常这个文件是74M。
10、删除不用的输入法:对很多网友来说,WindowsXPt系统自带的输入法并不全部都合适自己的使用,比如IMJP8_1日文输入法、IMKR6_1韩文输入法这些输入法,如果用不着,我们可以将其删除。输入法位于\windows\ime\文件夹中,全部占用了88M的空间。
11、升级完成发现windows\多了许多类似$NtUninstallQ311889$这些目录,都干掉吧,1x-3xM
12、另外,保留着\windows\help目录下的东西对我来说是一种伤害,呵
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025护士满意度调查分析报告
- 中建安装工程创效能力提升培训
- 建筑施工采购管理制度
- 酒店统一采购管理制度
- 工厂采购报销制度
- 零星采购药品管理制度
- 家庭药品采购管理制度
- 医用耗材采购监督制度
- 采购周期时间管理制度
- 采购人员培训细则制度
- JJG 455-2000工作测力仪行业标准
- 2024年江苏泰州市金融控股集团有限公司招聘笔试参考题库含答案解析
- 大学新教师入职培训
- 工程管理中国铁塔LTE5G通信基站项目风险管理研究
- 法院申请冻结房产申请书
- 第5课+家族の写真+课件 【知识精讲精研】 初中日语七年级人教版第一册
- JJF 1951-2021 基于结构光扫描的光学三维测量系统校准规范 高清晰版
- 小学生心理健康教育方式的研究结题报告
- 山西省煤矿建设施工管理标准
- 220kV输电线路220kV间隔扩建工程施工组织设计(定稿)
- 四川省达州市教育专业能力测验教师招聘考试
评论
0/150
提交评论