1 绪论
1.1 研究背景及意义
随着互联网技术的大力发展,传统的社交方式已经不能满足人们日新月异的需要,以 80、90、00 后为主体的人群,社交方式逐步从传统的现实社交转变为网络上的虚拟社交,当然现实社交始终不能被虚拟社交代替。
虚拟社交具有多元性、创新性以及自由性。多元性使得时间和空间失去了意义,人不同国家、不同地区的人们抛开这层局限自由社交,思想观念、价值取向、民族文化、生活方式因为社交而开始碰撞,逐渐交融,形成一个全新的文化群体。虚拟社交是创新的产物,这使得人们从被动的传输信息,到主动的去汲取信息,而在这主动参与的过程中,因为多元的文化交流,会开辟一个新的天地,形成一个全新的社交产物。虚拟社交与现实不同,具有更自由的空间,传统的监管方式已经不适用于网络,这就使得用户的个人行为主要靠自身约束,次要靠社交平台监管控制。
虚拟社交允许人们在更加广阔且自由的空间里充分沟通交流,卸下伪装展示更真实的自己。一方面,传统社交需要面对面的交流,不仅耗时,而且很费力,常常因为交流中的一方在面对面的交流过程中焦虑、恐慌,导致社交失败,又或者社交受到地点的局限而不得不终止;另一方面,虚拟社交可以碎片化,也可以一直持续,依附于网络技术,使得虚拟社交快捷、便利,不需要过多考虑时间,不需要考虑社交成本(时间、地点、消耗),也不需要因为自己的性格等而导致社交失败。在虚拟的世界中,往往可以不限身份,不限学历,在社交平台上表达自我、伸张自我、满足自己的求知欲,与其他用户产生思想上的共鸣或者碰撞,从而产生新的文化群体。
得益于虚拟社交的发展,各大社交平台百家争鸣,比如:即时通讯聊天的微信和 QQ、娱乐休闲生活服务信息分享的微博、NBA 体育信息分享交流的虎扑、网络问答社区的知乎、主题关键词交流的百度贴吧、创意短视频的抖音等,这些社交平台社交方式存在差异,容纳着各自的社交群体。........................
1.2 国内外研究现状
近些年随着国内信息技术的飞速发展,虚拟社交方式层出不穷,社交平台百家争鸣,可以选择的社交方式也从单一走向多元化,不同的社交方式有不同的受众,社交平台需要迎合市场需求和用户需求。
(1)国内社交平台
微信,时下最热门的即时聊天通讯软件,它是主打熟人朋友圈的社交媒体,提供朋友圈、公众号、红包等成为用户的关注焦点,正是凭借着熟悉的人社交这一方式,占据了各大社交平台的龙头地位。
QQ 与微信类似,均由腾讯公司开发维护。用户之间可以即时通信,同样 QQ支持着用户之间上传文件、图片、共享图片,最重要的一部分是 QQ 空间,QQ 空间作为 QQ 功能的一部分,在很大程度上吸引着用户,用户在个人空间发表想说的话、照片,陌生用户可以通过个人空间来了解,进而社交。近几年,由于 QQ 的功能繁多,腾讯公司推出了以 QQ 为基础的 Tim 软件,相较于 QQ,Tim 更倾向于工作社交而不是生活社交,精简个人空间等功能,保留即时通讯,文件上传等功能。
微博,国内知名的社交媒体,是媒体监控和突发新闻追踪的重要来源,也是公众表达自我的平台,核心功能是热搜榜,通过热搜榜单,用户可以了解时下最热门的消息以及话题。
知乎,网络问答社区。与即时交流软件不同,该平台具有时延性、持久性,用户之间的交互方式是问答的形式,一个用户提出一个话题,其他用户回答这个话题,用户之间可以通过邀请的方式来回答问题,回答的内容往往以个人经历、个人见解加上论据,因此十分有助于眼界的开阔、知识的汲取。
百度贴吧和虎扑两个社交平台有一些类似,两者都是以主题关键词作为讨论的主题,再由其他用户以此主题提问并回答。不同之处在于,百度贴吧的主题关键词非常广泛而虎扑则是以美国职业篮球的讨论社区为出发点,除此之外,虎扑平台与电商平台相结合,形成了一个全新的社交平台。
.........................
2 相关技术概述
2.1 SSM 框架集
SSM 框架集一个整合的框架,由 Java 经典的三大框架之一的 Spring 、SpringMVC 和 Mybaits 组成,常结合 B/S 模式和 MVC 模式的优势完成 web 应用的设计与开发[28-30]。Spring 作为一个轻量级的框架,可以在控制反转(IoC)的同时面向切面(AOP)。SpringMVC 框架之于 Struts2 框架而言,实现起来更容易,有着教科书式的代码,只需要按部就班。此外,SpringMVC 也是 MVC 的一种,M 是指数据模型或者模块 Model,V 是指视图 View,C 是指控制器 Controller,将前后端分离,优势在于在更改试图代码的时候不用重新编译控制器或者模型代码,因此,它具有低耦合性、高重用性和可用性。SprngMVC 原理,浏览器发送一个请求,到达前端控制器 DispatcherServlet,前端控制器分发请求,找到对应 Controller 组件中对应路径的方法,卸下数据,执行业务逻辑,然后将数据装载,返回给控制器,控制器将数据打包发送给视图解析器解析,再由前端控制器发送给浏览器并显示。Mybaits 是一个出色的持久层框架,在下一节详细介绍。SpringMVC 工作原理如图2-1 所示。
.........................
2.2 Mybatis 框架
Mybaits 作为一个支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架,按功能它可以被分为三层架构,API 接口层,数据处理层,基础支持层。
API 接口层,一个用户编程接口,由外部系统使用,在接到外部调用请求时调用数据处理层对数据库中具体的数据进行操作。数据处理层,它负责 SQL 的解析,SQL 的执行,以及执行结果的映射,在很大程度上便于开发人员的使用。基础支持层,为数据处理层提供最基本的支撑,包括连接管理、配置管理、事务管理等。
Redis 是一个基于内存的高性能非关系型数据库[32,33]。相较于传统的关系型数据库 MySQL,Redis 在实时系统上有很大的优势 [34-36]。Redis 将数据存储在内存中,每秒可支持超过 100000 次的读写操作,而 MySQL 是磁盘读写,高频率的磁盘读写影响数据库的性能,因此在高频率的读写操作上就需要使用 Redis 作为缓存;Redis所有的操作都是原子性,而 MySQL 则不保证原子性;Redis 的容量受到内存的限制,理论上,内存有多大,Redis 就能存储多少数据,所以,Redis 不支持海量数据的高性能读写,主要局限于较小数据量的高性能操作和运算上[37,38];Redis 数据存储在内存,MySQL 数据存储在磁盘上,当服务器宕机或者断电时,Redis 中的数据就不存在了,对于这种情况,Redis 提供了持久化技术,异步存储在磁盘上,解决了数据丢失的问题[39]。
..........................
3 系统需求分析...............93.1 可行性分析 ..........................9
3.2 功能需求分析 ...........................10
3.3 非功能需求分析 ..........................15
4 系统设计..............17
4.1 系统总体设计 ..........................17
4.2 各模块设计 ..............................19
4.3 数据库设计 .................................27
5 系统实现.............34
5.1 开发环境 ...........................34
5.2 系统功能实现 ...............................34
6 系统测试
6.1 系统测试方法
系统测试作为软件生命周期的最后一环,变得越来越重要,即使严格按软件的需求文档、设计文档进行开发,也会有意向之外的问题存在系统之中,因此,需要严格按照需求文档对系统进行测试,即时发现其中的隐患并修复,保证系统的可靠性、可用性和健壮性。
首先,通过需求说明文档,分析出测试的功能点,将各个功能点按照模块划分;然后,将各个模块里的功能细化,设计出相应的测试准则;接着,在设计好测试准则以后,结合需求说明文档对实现的代码进行静态测试,检测程序的正确性,检测程序的完整性;最后,设计测试用例,开始测试。
功能测试分为单元测试和集成测试。黑盒测试和白盒测试用于各个功能单元。本系统是基于 web 的 B/S 系统,所以集成测试均采用通过浏览器进行测试。
非功能测试分为性能测试和兼容性测试。不同浏览器对于前端页面的兼容性不同,于是采用不同的浏览器模拟用户的使用场景;考虑到用户的使用场景——同时发帖或者回复,为了保证用户使用时,不产生系统未响应的后果,采用性能测试,模拟用户发帖或者回复的场景,借此发现问题以保证系统的可靠性。
以上测试涵盖了社交系统所有的子系统功能和业务特点,目的是力求社交系统的可靠性、可用性和健壮性,及时发现潜在风险与实际问题并解决。
..........................
7 总结与展望
7.1 全文总结
曾在百度公司百度贴吧部门实习过一段时间是开发与设计本社交系统的原因之一,在实习工作期间,对社交平台以及其发展方向产生了浓厚的兴趣,遂通过调研,对比国内社交平台的社交方式,以及社交平台所使用的一些技术,在此基础上,利用实习工作期间获得的经验来开发设计本社交系统。
本社交系统,采用了软件工程的方法、CCMI 项目研发流程及项目管理规范进行开发。通过比较国内外的社交平台,了解各大社交平台的主要社交方式,分析未来发展趋势;通过调研,了解社交平台的业务流程,对本社交系统开发提供有利的基础。采用用例图描述系统功能需求,分析业务流程,在保证系统正常使用的前提下,用户具有更好的体验,本系统需要做的哪些工作才能匹配这一条件,通过分析场景,进而得出非功能需求。
在设计上,采用 B/S 架构、SSM 开发框架、HTML5、CSS3、JS 技术,使用Redis 作为缓存,MySQL 数据库作为存储,利用 Luence 搜索引擎设计搜索功能。根据需求分析,完成整个系统用户模块、版块模块、帖子模块、新闻模块、评论模块、风险控制模块、搜索模块的设计。在充分考虑系统的运行性能上,结合 Redis数据库和 MySQL 数据库设计出更高性能的查询方案和检索方案。完成各模块的设计以后,分析系统用例,各模块之间的关系,完成各数据表的设计和数据表的设计。
在实现上,严格按照需求分析和系统设计完成对系统各个模块的实现,对于搜索功能,采用 Luence 搜索引擎的全文索引功能,采用推荐算法和 Redis 数据库实现热门帖子的功能,提高了用户的使用体验。文中详细描述前端和后端之间的调用关系、传递参数、核心代码,并附上部分系统运行截图。
参考文献(略)