摘要
在当今数字化时代,视频分享平台如B站已成为广大用户获取娱乐、学习和交流的重要渠道。随着用户基数的增长和内容的爆炸性增加,如何为用户提供个性化的视频推荐,成为提升用户体验和平台活跃度的重要课题。基于Django的视频推荐系统,正是为了解决这一问题而设计的。
Django是一个强大的Python Web框架,以其高效的开发效率和稳定的性能,在Web开发中广受欢迎。它遵循MVC设计模式,提供了丰富的内置功能和强大的第三方库支持,使得开发者能够专注于业务逻辑的实现,而无需过多关注底层的开发细节。
基于Django的B站视频推荐系统,将充分利用Django的框架优势,为用户提供精准的视频推荐服务。该系统将收集用户的观看历史、点赞、评论等数据,通过协同过滤的推荐算法分析用户的兴趣和偏好,从而为其推荐符合其口味的视频内容。同时,系统还将考虑视频的热度、质量等因素,确保推荐的多样性和时效性。
通过这一系统,B站不仅能够提升用户的满意度和粘性,还能够为内容创作者提供更准确的受众定位,促进优质内容的传播和发现。
总之,基于Django的B站视频推荐系统是一个集个性化推荐、数据分析和智能算法于一体的综合性系统。它的实现将为B站用户带来更加智能、高效的视频观看体验,同时也为平台的发展提供有力支持。
关键词:Python ;Django技术;B站视频推荐系统
A Bilibili Video Recommendation System Based on Django
ABSTRACT
In today's digital age, video sharing platforms such as Bilibili have become important channels for users to access entertainment, learning, and communication. With the growth of user base and the explosive increase of content, how to provide personalized video recommendations for users has become an important issue in improving user experience and platform activity. The video recommendation system based on Django is designed to address this issue.
Django is a powerful Python web framework that is widely popular in web development due to its efficient development efficiency and stable performance. It follows the MVC design pattern, provides rich built-in features and powerful third-party library support, allowing developers to focus on the implementation of business logic without paying too much attention to the underlying development details.
The Bilibili video recommendation system based on Django will fully utilize its framework advantages to provide users with accurate video recommendation services. The system will collect user viewing history, likes, comments, and other data, analyze user interests and preferences through collaborative filtering recommendation algorithms, and recommend video content that suits their taste. At the same time, the system will also consider factors such as video popularity and quality to ensure the diversity and timeliness of recommendations.
Through this system, Bilibili can not only improve user satisfaction and stickiness, but also provide more accurate audience positioning for content creators, promoting the dissemination and discovery of high-quality content.
In summary, the Django based Bilibili video recommendation system is a comprehensive system that integrates personalized recommendations, data analysis, and intelligent algorithms. Its implementation will bring more intelligent and efficient video viewing experience to Bilibili users, while also providing strong support for the development of the platform.
Keywords:Python; Django technology; Bilibili Video Recommendation System
目 录
1 绪论
随着B站用户基数的迅速增长和内容的爆炸性增加,传统的视频浏览和搜索方式已难以满足用户对于个性化、高效信息获取的需求。同时,人工智能和大数据技术的迅猛发展,为视频推荐提供了强大的技术支持。因此,研究并实现B站视频推荐系统不仅是为了提升用户体验和增强平台竞争力,更是为了促进优质内容的传播与发现,帮助用户更高效地找到符合其兴趣和偏好的视频内容,同时让创作者的作品得到更广泛的展示和认可。这一系统的实现将推动B站在信息推荐领域的创新与发展,为用户带来更加智能、个性化的视频观看体验。
1.2国内外研究现状
在国内,随着大数据和人工智能技术的快速发展,视频推荐系统已经成为各大视频平台竞争的重要战场。B站作为国内领先的弹幕视频分享平台,其视频推荐系统的研究与应用也备受关注。目前,B站已经通过用户行为分析、内容标签化、机器学习算法等手段,实现了较为精准的视频推荐。同时,B站还积极探索新的推荐技术,如基于深度学习的推荐算法、基于社交网络的推荐算法等,以进一步提升推荐效果和用户满意度。
在国际上,视频推荐系统的研究同样火热。许多知名的视频分享平台,如YouTube、Netflix等,都在积极投入资源进行视频推荐系统的研发和优化。这些平台通过引入先进的机器学习算法、深度学习技术、自然语言处理等手段,不断提升视频推荐的准确性和个性化程度。同时,一些国际知名的研究机构和学者也在深入探索视频推荐系统的理论和技术,为视频推荐领域的发展提供了有力的支持。
总的来说,B站视频推荐系统的研究现状在国内外都呈现出积极的发展态势。随着技术的不断进步和应用场景的不断拓展,相信未来B站视频推荐系统将会实现更加智能化、个性化和多样化的推荐服务,为用户提供更加优质、高效的视频观看体验。
1.3论文组成结构
第一章是绪论,本文章的开头部分,对本题目的研究背景和研究意义等一些做文字性的描述。
第二章研究了B站视频推荐系统的所采用的开发技术和开发工具。
第三章是系统分析部分,包括系统总体需求描述、功能性角度分析系统需求、非功能性等各个方面分析系统是否可以实现。
第四章是系统设计部分,本文章的重要部分,提供了系统架构的详细设计和一些主要功能模块的设计说明。
第五章是系统的具体实现,介绍系统的各个模块的具体实现。
第六章在前几章的基础上对系统进行测试和运行。
最后对系统进行了认真的总结,以此对未来有一个新的展望。
2.1开发技术说明
本系统前端部分基于MVVM模式进行开发,采用B/S模式,后端部分基于python的Django框架进行开发。
前端部分:前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型,项目前端通过栅格布局实现响应式,可适应PC端、平板端、手机端等不同屏幕大小尺寸的完美布局展示。
后端部分:采用Django作为开发框架,同时集成Redis等相关技术。
2.2操作系统
Windows10和Windows以后的版本关于Windows10,微软宣布它将以比以前更快的节奏更新Windows,将不会有官方的“Windows11”;相反,WindowsUpdate(或另一个服务模型)会将现有的Windows10更新为新版本。在编写此书时,已经有两个这样的更新发生在2015年11月(也称为版本1511,指服务年和月份)和2016年7月(版本1607,也因为周年更新的营销名称所知)[5]。
Windows10和“一个内核”多年来,几种不同类型的Windows已经发展起来。除了在PC上运行的主流Windows之外,还有Xbox360游戏控制台,它运行一个分叉Windows2000。WindowsPhone7基于WindowsCE(微软的实时操作系统)运行的一个变体[6]。维护和扩展所有这些代码库显然是困难的。因此,微软决定将内核和基础平台支持的二进制文件聚合为一个。这开始于Windows8和Windows电话8,其中共享内核(Windows8.1和Windows电话8.1具有聚合的Windows运行时API)。使用Windows10,融合就完成了,这个共享平台被称为Onecore,它运行在PC、电话、XboxOne游戏控制台、全息屏和物联网(IoT)设备(如树莓Pi2)上[7]。
2.2开发工具
PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。
MySQL是一个关系型数据库管理系统,它的范围包括了膝上型计算机、台式机、超市服务器。20世纪,最初的MySQL是由Sybase专门为UNIX系统开发的,后来微软将它移植到了WindowsNT系统上。从1994年开始,微软发布独立于Sybase开发的MySQL版本,而Sybase在20世纪90年代后期,就已经停止使用MySQL这个名称。
MySQL提供MySQL多个拷贝之间以及其他数据库系统的复制服务。其中的分析服务是属于系统的一个完整部分,包括了:联机分析处理(OLAP)和数据挖掘工具。MySQL提供了一个大的图形化工具集和向导,引导数据库管理员执行各种任务,例如建立定期备份、在服务器之间复制数据,以及调整数据库性能[10]。
2.3开发技术
2.3.1MVVM模式介绍
MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。
2.3.2Django框架
Django是一个由Python编写的具有完整架站能力的开源Web框架。使用Django,只要很少的代码,Python的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的Web服务[10]。
Django本身基于MVC模型,即Model(模型)+View(视图)+ Controller(控制器)设计模式,因此天然具有MVC的出色基因:开发快捷、部署方便、可重用性高、维护成本低等。Python加Django是快速开发、设计、部署网站的最佳组合[11]。
Django具有以下特点:
能完善、要素齐全:该有的、可以没有的都有,常用的、不常用的工具都用。Django提供了大量的特性和工具,无须你自己定义、组合、增删及修改[12]。
完善的文档:经过十多年的发展和完善,Django有广泛的实践经验和完善的在线文档(可惜大多数为英文)。开发者遇到问题时可以搜索在线文档寻求解决方案[13]。
强大的数据库访问组件:Django的Model层自带数据库ORM组件,使得开发者无须学习其他数据库访问技术(SQL、pymysql、SQLALchemy等)。
灵活的URL映射:Django使用正则表达式管理URL映射,灵活性高。
丰富的Template模板语言:类似jinjia模板语言,不但原生功能丰富,还可以自定义模板标签[14]。
Vue.js是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。
Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。
Vue.js 自身不是一个全能框架——它只聚焦于视图层。因此它非常容易学习,非常容易与其它库或已有项目整合。另一方面,在与相关工具和支持库一起使用时,Vue.js 也能驱动复杂的单页应用。
3.1 系统可行性分析
3.1.1技术可行性
基于Django的B站视频推荐系统的技术可行性非常高。Django作为一个成熟、稳定的Web框架,提供了丰富的功能和强大的工具,能够支持复杂的业务逻辑和数据处理需求。同时,Django的ORM(对象关系映射)系统简化了数据库操作,提高了开发效率。结合Django的缓存机制、异步处理等技术,可以确保推荐系统的性能和稳定性。此外,Django社区活跃,拥有丰富的第三方库和插件资源,为系统的快速开发和功能扩展提供了便利。因此,使用Django来构建B站视频推荐系统在技术上是完全可行的。
在B站视频推荐系统开发之前所做的市场调研及其他的相关的系统,都是没有任何费用的,都是通过开发者自己的努力,所有的工作的都是自己亲力亲为,在碰到自己比较难以解决的问题,大多是通过同学和指导老师的帮助进行相关信息的解决,所以对于B站视频推荐系统的开发在经济上是完全可行的,没有任何费用支出的。
使用比较成熟的技术,系统是基于django的开发,采用Mysql数据库。所以系统在开发人力、财力要求不高,具有经济可行性。
可操作性主要是对B站视频推荐系统设计完成后,用户的使用体验度,以及管理员可以通过系统随时管理相关的数据信息,并且对于管理员、普通用户两个用户角色,都可以简单明了的进入到自己的系统界面,通过界面导航菜单可以简单明了地操作功能模块,方便用户信息的操作需求和管理员管理数据信息,对于系统的操作,不需要专业人员都可以直接进行功能模块的操作管理,所以在系统的可操作性是完全可以的。本系统的操作使用的也是界面窗口进行登录,所以操作人员只要会简单的电脑操作就完全可以的。
3.2 系统功能分析
B站视频推荐系统中采用了Python的Django框架进行开发,在数据库上选择MYSQL,在功能上B站视频推荐系统划分为了浏览用户管理模块和管理员模块这两大部分。
浏览用户用户管理模块:
注册登录:允许用户注册账号并提供必要信息,以及通过账号密码登录系统,确保用户身份的合法性和安全性。
首页: 展示系统概况、最新的系统公告、新闻资讯、推荐视频等内容,方便用户获取相关信息和浏览推荐内容。
系统公告:提供系统发布的重要公告信息,确保用户及时获取系统消息。
新闻资讯: 提供用户浏览最新的新闻资讯内容,帮助用户了解最新的行业动态和社会热点。
视频介绍:提供用户浏览视频的功能,包括视频分类、搜索、查看视频详情等操作。
我的账户:允许用户管理个人账户信息,包括个人资料、头像、密码等。
个人首页:展示用户个人信息和相关记录。
收藏:允许用户收藏感兴趣的视频,方便下次快速查看和观看。
管理员管理模块:
登录:提供安全的管理员登录功能,确保只有授权的管理员可以访问系统。
后台首页:展示系统概况、最新数据和快捷入口,方便管理员监控系统运行状态。
系统用户:管理系统用户,包括添加新用户、编辑用户信息、删除用户等操作,以确保系统安全性。
视频介绍管理:管理视频的介绍信息,包括添加新视频、编辑视频信息、删除视频等操作,确保视频信息的准确性和完整性。
播放信息管理:管理视频的播放信息,包括播放量统计、用户评论、用户评分等操作,为系统提供视频推荐依据。
收藏信息管理:管理用户对视频的收藏情况,包括查看收藏列表、取消收藏等操作。
投币信息管理:管理用户对视频的投币情况,包括查看投币记录、统计投币情况等操作。
分享信息管理:管理用户对视频的分享情况,包括分享统计、分享渠道分析等操作。
点赞信息管理:管理用户对视频的点赞情况,包括查看点赞记录、统计点赞数量等操作。
系统管理:管理系统首页的轮播图内容,包括添加、编辑、删除轮播图图片和相关链接,同时管理系统中的敏感词,确保内容规范。
系统公告管理:管理系统发布的通知和公告信息,包括添加新通知、编辑通知内容、设置发布时间等操作,确保信息及时传达。
资源管理:管理系统的新闻资讯内容,包括添加、编辑、删除资讯和分类等操作,确保信息的及时更新和完整性。。
3.3系统用例分析
系统的用例展示的是系统功能与用户之间的关系,通过用例的方式能够直观的展示出来,本B站视频推荐系统的完整UML用例图分别是图3-1、图3-2。
图3-1 B站视频推荐系统浏览用户角色用例图
图3-2 B站视频推荐系统后台管理员角色用
3.4系统流程分析
3.4.1操作流程
图3-3登录流程图
3.4.2添加信息流程
添加信息流程图,如图所示:
图3-4添加信息流程图
3.4.3删除信息流程
删除信息流程图,如图所示:
图3-5删除信息流程图
4.1系统设计的原理
系统设计原理包括:
- 模块化。模块化就是把整个程序划分为多个模块,每个模块有自己的名字并可以被独立访问。所有模块的功能集合起来就可以满足用户需求。
- 抽象。抽象是暂时忽略软件的细节,集中精力将软件的本质特征提取出来。
- 逐步求精。总体设计需要先解决主要问题,再将问题一步步细化。
- 局部化和信息隐藏。不同模块之间,信息相互不能访问,是不能访问的;并且应该在相近的物理地址上放置关系较密切的软件元素。
- 模块独立。模块之间应该遵循高内聚,低耦合的原则。
4.2系统功能设计
B站视频推荐系统从实际应用角度来说可以分成管理员管理模块、浏览用户两大模块。
1.系统用户管理模块系统用户管理模块可以分成用户管理、个人信息管理和权限管理模块。用户管理是对用户的相关信息进行查阅、修改,删除等操作。个人信息管理可以对个人信息的情况进行添加、修改信息删除、个人信息修改和个人信息查询。
2.主要功能管理模块包括系统用户、系统用户、视频介绍管理、播放信息管理、收藏信息管理、投币信息管理、分享信息管理、点赞信息管理、系统管理(轮播图、敏感词管理)、系统公告管理、资源管理(新闻资讯、资讯分类)。
3.系统管理模块系统管理模块分为数据备份。
系统的功能模块图如下图所示。
图4-1系统功能结构图
4.3数据库设计
数据库设计(DatabaseDesign)是指对一个给定的环境,构造良好的数据库模式,建立数据库系统,使之能够最有效地存储数据,满足各类用户的需求即处理要求和信息要求。在数据库应用范围内,经常把使用数据库的系统称为数据库的应用系统。
4.3.1概念模型设计
E-R设计方法是一种通过E-R图来描述现实世界信息结构的DB设计方法。E-R图由实体、属性、联系三部分组成。它有两个优点,即接近于人的思维,容易理解;与计算机无关,用户容易接受。
系统的主要实体间关系E-R图如下图所示:
图4-2系统E-R图
实体间可建立某种联系,大致可分为三种:(1)实体间一对一联系,这种关系可以独立也可与其他合并;(2)实体间是一对多联系,实体与另一个n端实体发生联系;(3)实体间为多对多联系,两个实体间存在某种关系。每个实体上码所具有的属性就是关系属性,实体码的组合就是关系码。
4.3.2逻辑结构设计
根据E-R模型,B站视频推荐系统建立了以下逻辑数据结构,下面是各数据表的详细说明。
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | based_on_user_id | int | 10 | 0 | N | Y | 基于用户ID | |
2 | title | text | 65535 | 0 | Y | N | 标题 | |
3 | classification | varchar | 64 | 0 | Y | N | 分类 | |
4 | describe | text | 65535 | 0 | Y | N | 描述 | |
5 | user_name | varchar | 64 | 0 | Y | N | 用户名称 | |
6 | playback_volume | varchar | 64 | 0 | Y | N | 播放量 | |
7 | number_of_collections | varchar | 64 | 0 | Y | N | 收藏数 | |
8 | number_of_coins_invested | varchar | 64 | 0 | Y | N | 投币数 | |
9 | number_of_shares | varchar | 64 | 0 | Y | N | 分享数 | |
10 | like_count | varchar | 64 | 0 | Y | N | 点赞数 | |
11 | bvid | varchar | 64 | 0 | Y | N | bvid | |
12 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
13 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | based_on_video_id | int | 10 | 0 | N | Y | 基于视频ID | |
2 | title | text | 65535 | 0 | Y | N | 标题 | |
3 | classification | varchar | 64 | 0 | Y | N | 分类 | |
4 | describe | text | 65535 | 0 | Y | N | 描述 | |
5 | user_name | varchar | 64 | 0 | Y | N | 用户名称 | |
6 | playback_volume | varchar | 64 | 0 | Y | N | 播放量 | |
7 | number_of_collections | varchar | 64 | 0 | Y | N | 收藏数 | |
8 | number_of_coins_invested | varchar | 64 | 0 | Y | N | 投币数 | |
9 | number_of_shares | varchar | 64 | 0 | Y | N | 分享数 | |
10 | like_count | varchar | 64 | 0 | Y | N | 点赞数 | |
11 | bvid | varchar | 64 | 0 | Y | N | bvid | |
12 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
13 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | browsing_users_id | int | 10 | 0 | N | Y | 浏览用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | coin_information_id | int | 10 | 0 | N | Y | 投币信息ID | |
2 | title | text | 65535 | 0 | Y | N | 标题 | |
3 | classification | varchar | 64 | 0 | Y | N | 分类 | |
4 | describe | text | 65535 | 0 | Y | N | 描述 | |
5 | user_name | varchar | 64 | 0 | Y | N | 用户名称 | |
6 | playback_volume | varchar | 64 | 0 | Y | N | 播放量 | |
7 | number_of_collections | varchar | 64 | 0 | Y | N | 收藏数 | |
8 | number_of_coins_invested | varchar | 64 | 0 | Y | N | 投币数 | |
9 | number_of_shares | varchar | 64 | 0 | Y | N | 分享数 | |
10 | like_count | varchar | 64 | 0 | Y | N | 点赞数 | |
11 | bvid | varchar | 64 | 0 | Y | N | bvid | |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | favorite_information_id | int | 10 | 0 | N | Y | 收藏信息ID | |
2 | title | text | 65535 | 0 | Y | N | 标题 | |
3 | classification | varchar | 64 | 0 | Y | N | 分类 | |
4 | describe | text | 65535 | 0 | Y | N | 描述 | |
5 | user_name | varchar | 64 | 0 | Y | N | 用户名称 | |
6 | playback_volume | varchar | 64 | 0 | Y | N | 播放量 | |
7 | number_of_collections | varchar | 64 | 0 | Y | N | 收藏数 | |
8 | number_of_coins_invested | varchar | 64 | 0 | Y | N | 投币数 | |
9 | number_of_shares | varchar | 64 | 0 | Y | N | 分享数 | |
10 | like_count | varchar | 64 | 0 | Y | N | 点赞数 | |
11 | bvid | varchar | 64 | 0 | Y | N | bvid | |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | sensitive_vocabulary_id | int | 10 | 0 | N | Y | 敏感词汇ID | |
2 | sensitive_vocabulary | varchar | 64 | 0 | Y | N | 敏感词汇 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | sharing_information_id | int | 10 | 0 | N | Y | 分享信息ID | |
2 | title | text | 65535 | 0 | Y | N | 标题 | |
3 | classification | varchar | 64 | 0 | Y | N | 分类 | |
4 | describe | text | 65535 | 0 | Y | N | 描述 | |
5 | user_name | varchar | 64 | 0 | Y | N | 用户名称 | |
6 | playback_volume | varchar | 64 | 0 | Y | N | 播放量 | |
7 | number_of_collections | varchar | 64 | 0 | Y | N | 收藏数 | |
8 | number_of_coins_invested | varchar | 64 | 0 | Y | N | 投币数 | |
9 | number_of_shares | varchar | 64 | 0 | Y | N | 分享数 | |
10 | like_count | varchar | 64 | 0 | Y | N | 点赞数 | |
11 | bvid | varchar | 64 | 0 | Y | N | bvid | |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | video_introduction_id | int | 10 | 0 | N | Y | 视频介绍ID | |
2 | title | text | 65535 | 0 | Y | N | 标题 | |
3 | classification | varchar | 64 | 0 | Y | N | 分类 | |
4 | describe | text | 65535 | 0 | Y | N | 描述 | |
5 | user_name | varchar | 64 | 0 | Y | N | 用户名称 | |
6 | playback_volume | varchar | 64 | 0 | Y | N | 播放量 | |
7 | number_of_collections | varchar | 64 | 0 | Y | N | 收藏数 | |
8 | number_of_coins_invested | varchar | 64 | 0 | Y | N | 投币数 | |
9 | number_of_shares | varchar | 64 | 0 | Y | N | 分享数 | |
10 | like_count | varchar | 64 | 0 | Y | N | 点赞数 | |
11 | bvid | varchar | 64 | 0 | Y | N | bvid | |
12 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
13 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
14 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
15 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
16 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
5.1浏览用户功能模块实现
登录模块,用户、管理员可以通过登录进入该系统,如果输入正确用户名和密码,则可以进入该系统,显示的结果如下。用户登录界面如下图所示。
图5-1登录模块界面图
登录关键代码如下:
def Login(self, ctx):
print("===================登录=====================")
ret = {
"error": {
"code": 70000,
"message": "账户不存在",
}
}
body = ctx.body
password = md5hash(body["password"]) or ""
obj = service_select("user").Get_obj(
{"username": body["username"]}, {"like": False}
)
if obj:
user_group = service_select("user_group").Get_obj({'name': obj['user_group']}, {"like": False})
if user_group and user_group['source_table'] != '':
user_obj = service_select(user_group['source_table']).Get_obj({"user_id": obj['user_id']}, {"like": False})
if user_obj['examine_state'] == '未通过':
ret = {
"error": {
"code": 70000,
"message": "账户未通过审核",
}
}
return ret
if user_obj['examine_state'] == '未审核':
ret = {
"error": {
"code": 70000,
"message": "账户未审核",
}
}
return ret
if obj["state"] == 1:
if obj["password"] == password:
timeout = timezone.now()
timestamp = int(time.mktime(timeout.timetuple())) * 1000
token = md5hash(str(obj["user_id"]) + "_" + str(timestamp))
ctx.request.session[token] = obj["user_id"]
service_select("access_token").Add(
{"token": token, "user_id": obj["user_id"]}
)
obj["token"] = token
ret = {
"result": {"obj": obj}
}
else:
ret = {
"error": {
"code": 70000,
"message": "密码错误",
}
}
else:
ret = {
"error": {
"code": 70000,
"message": "用户账户不可用,请联系管理员",
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
如果某个人员进入该系统,则注册该用户的信息,如果注册成功,就可以进入该系统,显示的结果如下。注册用户界面如下图所示。
图5-2注册用户界面图
注册关键代码如下:
def Register(self, ctx):
print("===================注册=====================")
userService = service_select("user")
body = ctx.body
if "username" not in body and body["username"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户名不能为空",
}
}, ensure_ascii=False))
if "user_group" not in body and body["user_group"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户组不能为空",
}
}, ensure_ascii=False))
if "password" not in body and body["password"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "密码不能为空",
}
}, ensure_ascii=False))
post_param = body
post_param['nickname'] = body["nickname"] or ""
post_param['password'] = md5hash(body["password"])
obj = userService.Get_obj({"username": post_param['username']}, {"like": False})
if obj:
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户名已存在",
}
}, ensure_ascii=False))
ret = {
"error": {
"code": 70000,
"message": "注册失败",
}
}
bl = userService.Add(post_param)
if bl:
ret = {
"result": {
"bl": True,
"message": "注册成功"
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
当用户点击“新闻资讯”这一菜单按钮,会显示管理员在后台发布的所有的新闻信息,支持通过关键词对资讯进行搜索,选择需要的资讯信息点击可以进入到资讯信息详细的介绍界面,同时可以进行点赞、收藏等操作,新闻资讯界面如下图所示。
图5-3新闻资讯页面图
用户点击“视频介绍”,用户可以浏览视频的功能,包括视频分类、搜索、查看视频详情等操作。如下图所示。
管理员输入账号、密码、验证码点击“登录”按钮就会跳转到登录界面。如下图所示。
图5-5管理员登录页面图
管理员点击“视频介绍管理”会显示出视频介绍列表和视频介绍添加,支持输入标标题、分类进行查询、重置、删除和下载导入文档的操作,如果想要添加新的视频介绍,点击“添加”按钮,同时可以选择某一条视频介绍,点击“删除”进行删除。视频介绍列表和视频介绍添加界面如下图所示。
图5-6视频介绍列表页面图
图5-7视频介绍添加页面图
管理员点击“播放信息管理”会显示出播放信息列表和播放信息添加,支持输入标题、分类进行查询、重置、添加和删除的操作,如果想要添加新的播放信息,点击“添加”按钮,同时可以选择某一条播放信息,点击“删除”进行删除。播放信息列表和播放信息添加界面如下图所示。
图5-8播放信息列表页面图
图5-9播放信息添加页面图
管理员点击“收藏信息管理”会显示出收藏信息列表和收藏信息添加,支持输入标题、分类进行查询、重置、添加和删除的操作,如果想要添加新的收藏信息,点击“添加”按钮,同时可以选择某一条收藏信息,点击“删除”进行删除。收藏信息列表和收藏信息添加如下图所示。
图5-10收藏信息列表页面图
图5-11收藏信息添加页面图
管理员点击“投币信息管理”会显示出投币信息列表和投币信息添加,支持输入标题、分类进行查询、重置、添加和删除的操作,如果想要添加新的投币信息,点击“添加”按钮,同时可以选择某一条投币信息,点击“删除”进行删除。投币信息列表和投币信息添加如下图所示。
图5-12投币信息列表页面图
图5-13投币信息添加页面图
点击“轮播图”管理员可以插入轮播图图片、填写标题进行提交。如下图所示。
6系统测试
测试存在于软件开发进程中的最后一个阶段,它可以保证一个软件的开发质量是否符合设计者的初衷,也为程序的正式上线做了最后一道质量检测的工序。软件测试主要是控制各种条件、包括软件输出方式,使用模式和运行环境等,来评估一个系统或应用是否符合设计标准。在软件测试过程中,我们一般刻意的去制造错误和极端条件,不能仅依照正常模式允许,而是多去尝试那些意外的情况。
系统测试包括:用户登录功能测试、视频介绍查看测试、发布播放信息、收藏信息搜索、密码修改功能测试,如表6-1、6-2、6-3、6-4、6-5所示:
表6-1 用户登录功能测试表
用例名称 | 用户登录系统 |
目的 | 测试用户通过正确的用户名和密码可否登录功能 |
前提 | 未登录的情况下 |
测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
实际结果 | 实际结果与预期结果一致 |
视频介绍查看功能测试:
表6-2 视频介绍查看功能测试表
用例名称 | 视频介绍查看 |
目的 | 测试视频介绍查看功能 |
前提 | 用户登录 |
测试流程 | 点击视频介绍列表 |
预期结果 | 可以查看到所有视频介绍 |
实际结果 | 实际结果与预期结果一致 |
管理员发布播放信息界面测试:
表6-3 管理员发布播放信息界面测试表
用例名称 | 播放信息发布测试用例 |
目的 | 测试播放信息发布功能 |
前提 | 用户正常登录情况下 |
测试流程 | 1)点击播放信息管理,然后点击发布添加后并填写信息。 2)点击进行提交。 |
预期结果 | 提交以后,页面首页会显示新的播放信息 |
实际结果 | 实际结果与预期结果一致 |
收藏信息搜索功能测试:
表6-4收藏信息搜索功能测试表
用例名称 | 收藏信息搜索测试 |
目的 | 测试收藏信息搜索功能 |
前提 | 无 |
测试流程 | 1)在搜索框填入搜索关键字。 2)点击搜索按钮。 |
预期结果 | 页面显示包含有搜索关键字的收藏信息 |
实际结果 | 实际结果与预期结果一致 |
密码修改功能测试:
表6-5 密码修改功能测试表
用例名称 | 密码修改测试用例 |
目的 | 测试管理员密码修改功能 |
前提 | 管理员用户正常登录情况下 |
测试流程 | 1)管理员密码修改并完成填写。 2)点击进行提交。 |
预期结果 | 使用新的密码可以登录 |
实际结果 | 实际结果与预期结果一致 |
经过对B站视频推荐系统的测试,我们已经完成了5大模块的检测,包括用户登录功能测试、视频介绍查看测试、发布播放信息、收藏信息搜索、密码修改功能测试,这些功能为后续的推广运营提供了强有力的技术支持。
通过B站视频推荐系统的开发,本人巩固了之前学过的知识,如今将平时所学到的知识融合在设计中,在设计过程中,做了很多的准备,首先,在数据库系统的设计过程中,尤其是在数据库的工作原理、工作特点,对其深刻的讨论,与此同时,对于小型站点来说,最好服务器的选择,其次,利用所学的知识点分析所做的系统,并在此基础上设计。
目前本系统已经上线,正在试运行阶段,用户反馈良好,基本完成用户所需,试运行过程中没有出现阻断性问题,有一些不足和小问题也及时予以修正,系统上线后,为了保证数据的安全性,对系统进行了备份操作,系统备份是每两个月备份一次,数据库备份为每周备份一次,系统部署在云平台服务器中。
本次系统上线成功后,得到了用户的高度认可,但是在功能上和性能上还需做进一步的研究处理,使其有更高的性能和更好的用户体验。
系统在以后的升级过程中,需要解决一系列用户所提出的问题,例如打印过程中如何避免浏览器的兼容性问题,大量用户访问时,如何保持较高的响应速度,在系统今后的升级过程中将着重解决这些安全性问题。
[1]Liu F Y ,Wilson C ,Bedny M .Contribution of the language network to the comprehension of Python programming code.[J].Brain and language,2024,251105392-105392.
[2]Chen C H ,Wang J ,Shyr Y , et al.FindAdapt: A python package for fast and accurate adapter detection in small RNA sequencing.[J].PLoS computational biology,2024,20(1):e1011786-e1011786.
[3]Qiu J ,Nie W ,Ding H , et al.PB-LKS: a python package for predicting phage-bacteria interaction through local K-mer strategy.[J].Briefings in bioinformatics,2024,25(2):
[4]Vught V L ,HaasjesC ,BeenakkerJ .ZOSPy, a python package for ray tracing simulations[J].Acta Ophthalmologica,2024,102(S279):
[5]Luan Y ,Zhu X .Research on the Application of Intelligent Tourism Data Analysis Based on Python[J].Advances in Computer and Communication,2024,4(6):
[6]陈昊.基于聚类和关联规则的短视频推荐系统的设计与实现[D].南京邮电大学,2023.DOI:10.27251/d.cnki.gnjdc.2023.001876.
[7]王姝月.基于半监督学习的协同过滤推荐算法的研究与实现[D].南京邮电大学,2023.DOI:10.27251/d.cnki.gnjdc.2023.001960.
[8]何涛.基于图网络和负反馈的视频推荐系统研究与实现[D].南京邮电大学,2023.DOI:10.27251/d.cnki.gnjdc.2023.001991.
[9]吕婉婷,王继东.基于学习风格的个性化推荐系统设计研究[J].办公自动化,2023,28(19):62-64.
[10]杨旭.基于广电网络的视频系统检索与推荐研究[J].广播与电视技术,2023,50(06):81-86.DOI:10.16171/j.cnki.rtbe.20230006015.
[11]杨礼婧.基于深度学习的音视频档案推荐系统模型及其应用研究[J].兰台世界,2023,(06):77-79.DOI:10.16565/j.cnki.1006-7744.2023.06.19.
[12]王吕游.基于边缘计算与联邦学习的视频推荐系统研究与实现[D].贵州大学,2023.DOI:10.27047/d.cnki.ggudu.2023.002469.
[13]吴俊雄.基于迁移学习的视频信息推荐模型研究与应用[D].南昌大学,2023.DOI:10.27232/d.cnki.gnchu.2023.004386.
[14]陈玉帛,项慨,王顺驰等.基于用户画像的课程学习视频推荐系统研究与设计[J].现代信息科技,2023,7(09):1-8.DOI:10.19850/j.cnki.2096-4706.2023.09.001.
[15]周帅航.基于深度学习的舞蹈微视频推荐系统设计与实现[D].西北民族大学,2023.DOI:10.27408/d.cnki.gxmzc.2023.000349.
[16]李若楠.基于自注意力机制的个性化课程推荐系统的研究与实现[D].辽宁大学,2023.DOI:10.27209/d.cnki.glniu.2023.002293.
[17]时琦涵.基于兴趣融合扩散的视频推荐系统的研究与实现[D].辽宁大学,2023.DOI:10.27209/d.cnki.glniu.2023.002068.
[18]郑亚灵.基于协同过滤算法的短视频推荐模型应用研究[J].自动化与仪器仪表,2023,(04):29-33.DOI:10.14016/j.cnki.1001-9227.2023.04.029.
[19]林建.基于图卷积网络的视频推荐模型研究与实现[D].贵州大学,2022.DOI:10.27047/d.cnki.ggudu.2022.001962.
[20]刘艺语.概念感知的短视频去噪推荐算法研究[D].武汉大学,2022.DOI:10.27379/d.cnki.gwhdu.2022.000578.
经历了近三个多月的动手实践及老师辛勤的指导和同学朋友热心的帮助下,本人的毕业设计B站视频推荐系统的基本功能也基本完成。
此次设计中,通过不断的探讨与学习使我熟悉、使我初步了解了Django相关技术。我做的是一个B/S结构的B站视频推荐系统,使我对做网站所需要,及运行的环境有了初步的了解,在此次设计中我翻阅了较多的书籍,在有限的时间了丰富了对B站视频推荐系统技术的知识也积累了少许的经验。起初对Python的初步认识,通过这次设计更进一步的了解了其工作原理,懂得了配置服务器环境,连接数据库源,在设计过程中,也学会了用Pycharm设计一个简单的页面,增强了动手的能力,激发了在此方面的兴趣。
但是由于时间、基础及缺乏实践等多方面的问题,还有诸多需要解决的问题依然存在,设计中很多方面考虑不够周全或者考虑不到。
非常感谢我的老师,我的同学,我的朋友并希望在今后的学习生活中不断陪养多方面的兴趣,不断学习进步从而能够实现独立完成。设计中存在的诸多缺点诚肯老师的原谅。
点赞+收藏+关注 → 私信领取本源代码、数据库