本基于大数据分析实现个性化音乐在线推荐平台,音乐资源分析平台,系统主要采用java,hbase,springboot,mysql,mybatis,网络爬虫,音乐播放器,数据分析存储技术,实现基于互联网音乐资源的信息管理系统,
针对音乐资源实现线上用户的收藏,播放,推荐以及个性化音乐资源的监控分析等功能。
系统前台主要包含:用户登录注册,音乐歌单,音乐播放,音乐列表,音乐详情,歌单推荐,歌手推荐等模块
系统后台主要包含:歌曲管理,歌手管理,歌单管理,用户管理,资源分析,数据可视化大屏。

原文地址

一、程序设计

本基于大数据分析实现个性化音乐在线推荐平台,音乐资源分析平台的设计与实现,主要内容涉及:

主要功能模块:用户登录注册,音乐歌单,音乐播放,音乐列表,音乐详情,歌单推荐,歌手推荐等模块。
主要包含技术:java,hbase,springboot,mysql,mybatis,数据分析存储技术,数据关键词提取,IK分词,音乐播放器,echarts动态图表
主要包含算法:协同过滤推荐算法,IK,数据分析计算等

二、效果实现

系统首页

歌单推荐

歌手推荐

后台管理

歌手管理

大数据可视化

其他效果省略

三、代码实现

音乐资源播放器,采用H5播放器,监听用户操作实现播放,暂停,下一曲,上一曲功能

//为播放器绑定播放完成事件
player.addEventListener('ended',function () {//清除上一首播放状态clearstatus();currentIndex++;if(currentIndex>=musics.length){currentIndex=0;}//重新为播放器设置播放源player.src=musics[currentIndex].path;//继续播放startPlay();
});//上一首
document.querySelector('.btn-pre').addEventListener('click',function () {clearstatus();currentIndex--;if(currentIndex<0){currentIndex=musics.length-1;}//重新为播放器设置播放源player.src=musics[currentIndex].path;//继续播放startPlay();});
//下一首
document.querySelector('.btn-next').addEventListener('click',function () {clearstatus();currentIndex++;currentIndex=currentIndex%musics.length;//重新为播放器设置播放源player.src=musics[currentIndex].path;//继续播放startPlay();
});

音乐资源推荐模块,主要采用基于用户协同规律+关键词分析实现,发现用户之间具备相同收听喜好的音乐关联,实现音乐资源的推荐

/*** 音乐资源推荐算法,
/*
@RequestMapping(value = "/getRecommendList", method = RequestMethod.GET)
public String getRecommendList(Model model, HttpServletRequest request) {HttpSession httpSession = request.getSession();String name = httpSession.getAttribute("name").toString();// 获取userIdint orginal = userService.getUserByName(name).getId();// 获取所有用户和歌曲的关联List<Enshrine> all = enshrineService.getAll();// 创建用户推荐map,数据结构为 key:Integer 对应用户id value:List 对应一个广告的id集合HashMap<Integer, List<Integer>> userRecommend = new HashMap();// 遍历所有的关联for (int i = 0; i < all.size(); i++) {// 获取每一个用户和歌曲Idint userId = all.get(i).getUser_id(); //第一次循环 userId=1int movieid = all.get(i).getMovie_id(); // 第一次循环 movie_id=2// 如果推荐map中有以当前用户为Key的数据if (userRecommend.containsKey(userId)) {// 根据用户id获取map对应的valueList<Integer> recommendTemp = userRecommend.get(userId);// 在拿到的集合中添加新的歌曲idrecommendTemp.add(movie_id);// 更新此key valueuserRecommend.put(userId, recommendTemp);} else {// 如果不包含,新建一个集合,然后将Key value放入mapList<Integer> recommendTemp = new ArrayList<>();recommendTemp.add(movie_id);                 userRecommend.put(userId, recommendTemp);       }}      List<Integer> myRecommend = new ArrayList<>(); if (userRecommend.containsKey(orginal)) {       myRecommend = userRecommend.get(orginal);      } else {myRecommend = new ArrayList<>();}    HashSet<Integer> myRecommendSet = new HashSet<Integer>(myRecommend);double maxValue = 0;int maxId = -1;for (int key : userRecommend.keySet()) {  if (key == orginal) {continue;}List<Integer> thisRecommend = userRecommend.get(key);       HashSet<Integer> thisRecommendSet = new HashSet<>(thisRecommend);      HashSet<Integer> intersection = new HashSet<>(myRecommendSet);     intersection.retainAll(thisRecommendSet);HashSet<Integer> union = new HashSet<>(myRecommendSet);       union.addAll(thisRecommendSet);     if (union.size() == 0) {continue;} else {         double ratio = (double) intersection.size() / union.size();if (ratio > maxValue) {              maxValue = ratio;maxId = key;}}}// 创建歌曲推荐列表List<Integer> MovieRecommendList = new ArrayList<>();// 如果maxID没有被更改过,则为当前登录用户IDif (maxId == -1) { //此时maxId = 2maxId = orginal;} else {// 如果被更改过,就从推荐列表中取出key为maxId(maxId为拥有最大交集的用户id) 的歌曲列表,HashSet<Integer> differenceTemp = new HashSet<>(userRecommend.get(maxId)); // differenceTemp = [2,3,4]// maxId用户歌单列表中的歌曲 - 我的歌单列表中的歌曲 = 我没有的歌曲differenceTemp.removeAll(myRecommendSet); // differenceTemp = [4] 所以,在推荐列表中就会出现id为4的歌曲,剩下的就是计算相似度和将歌曲传到前台了!MovieRecommendList = new ArrayList<Integer>(differenceTemp); }// 一下代码就是从我没有的歌曲列表id中取得歌曲信息List<Advertisement> movies = new ArrayList<>();for (int i = 0; i < MovieRecommendList.size(); i++) {Advertisement movie = advertisementService.getMovieById(MovieRecommendList.get(i));movies.add(movie);}model.addAttribute("professor", movies);DecimalFormat df=new DecimalFormat("0.00");String similar = "歌单相似度:"+df.format((float)myRecommendSet.size()/(myRecommendSet.size()+movies.size())*100)+"%";System.out.println(similar);model.addAttribute("similar", similar);return "recommend";
}

数据可视化分析模块,主要采用echarts动态图表,针对系统内部的所有资源建立分析模型,封装分析接口,绑定echarts图表展示

var publicNumChart = echarts.init(document.getElementById('publicNumId'));var urlList = baseURL + "counts/cxtj/task/1/DS_INDEX_GDYYFB_COUNTS_TASK/datas";var option;$.get(urlList, function (r) {let datares = r.result.value;var resArr = dataresvar xunArr = []var jingArr = []var dateArr = []for (var i = 0; i < resArr.length; i++) {xunArr.push(resArr[i].value)jingArr.push(resArr[i].value)dateArr.push(resArr[i].name)}option = {tooltip: {trigger: 'axis'},legend: {x: '35%',y: '0%',data: ['歌手', '数量'],textStyle: {color: "#fff",fontSize: 8},itemWidth: 10,itemHeight: 10,},calculable: true,xAxis: [{type: 'category',data: dateArr,axisLabel: {interval: 0,textStyle: {fontSize: 8,color: 'rgba(255,255,255,.7)',}},"axisTick": {       //y轴刻度线"show": false},"axisLine": {       //y轴"show": false,},}],yAxis: [{type: 'value',scale: true,name: '单位:%',nameTextStyle: {color: 'rgba(255,255,255,.7)',fontSize: 8},max: 30,min: 0,boundaryGap: [0.2, 0.2],"axisTick": {       //y轴刻度线"show": false},"axisLine": {       //y轴"show": false,},axisLabel: {textStyle: {color: 'rgba(255,255,255,.8)',fontSize: 8// opacity: 0.1,}},splitLine: {  //决定是否显示坐标中网格show: true,lineStyle: {color: ['#fff'],opacity: 0.2}},},{type: 'value',scale: true,show: false,// name: "销量额(万元)",nameTextStyle: {color: 'rgba(255,255,255,.2)',},max: 1,min: 0,boundaryGap: [0.2, 0.2],"axisTick": {       //y轴刻度线"show": false},"axisLine": {       //y轴"show": false,},axisLabel: {textStyle: {color: 'rgba(255,255,255,.2)',// opacity: 0.1,}},splitLine: {  //决定是否显示坐标中网格show: true,lineStyle: {color: ['#fff'],opacity: 0.2}},}],color: ['#2E8CFF', '#38EB70'],grid: {left: '5%',right: '1%',top: '25%',bottom: '15%'// containLabel: true},series: [{animationDuration: 2500,barWidth: '20%',name: '歌手',type: 'bar',data: xunArr,},{barWidth: '20%',name: '数量',type: 'bar',data: jingArr,}],animationEasing: 'cubicOut'};publicNumChart.setOption(option)});setInterval(function () {publicNumChart.clear()publicNumChart.setOption(option)}, 60000)}

BS1063-基于大数据分析实现个性化音乐在线推荐平台,音乐资源分析平台相关推荐

  1. 大数据统计分析毕业设计_基于大数据分析的电子信息类专业毕业设计成绩影响因素研究...

    基于大数据分析的电子信息类专业毕业设计成绩影响因素 研究 温芳琴 [期刊名称] <佳木斯教育学院学报> [年 ( 卷 ), 期] 2019(000)011 [摘要] 通过收集苏州科技大学天 ...

  2. 基于大数据分析技术在会计方面的研究

    第一节 摘 要 在现如今大数据时代的背景下,有越来越多的企业正经受着数据网络的考验,其中很突出的就是管理會计,作为企业财务中一个重要的组成部分,是持续为企业整合和加工财务资料的职务,管理会计正为企业发 ...

  3. 基于大数据分析的葡萄酒品质鉴别系统设计与实现

    温馨提示:文末有 CSDN 平台官方提供的学长 Wechat / QQ 名片 :) 1. 项目背景 葡萄酒品鉴既是一门科学,也是一门艺术.品鉴葡萄酒,首先当然要能鉴别酸.甜.苦.咸.鲜五种基本味道,它 ...

  4. 基于大数据分析的安全管理平台技术研究及应用

    http://www.venustech.com.cn/NewsInfo/531/25566.Html [内容摘要]本文首先通过介绍大数据的起因,给出了大数据的定义和特征描述,并简要说明了当前大数据的 ...

  5. 【基于大数据分析的物流可视化管理系统(python+Django)-哔哩哔哩】 https://b23.tv/gUc8lk6

    [基于大数据分析的物流可视化管理系统(python+Django)-哔哩哔哩] https://b23.tv/gUc8lk6 https://b23.tv/gUc8lk6

  6. HTML+CSS+JS网页设计期末课程大作业 :音乐在线网站设计——音乐在线听平台网站(26页) 网页设计成品DW静态网页Html5响应式css3

    HTML5期末大作业:音乐在线网站设计--音乐在线听平台网站(26页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页 ...

  7. 基于大数据分析的学生综合测评系统

    1.1 研究背景 在大数据时代背景下,需要处理的各种数据或信息量非常大,必须要借助于相关的技术和手段来对大量的数据实施整合和管理,同时各项活动的开展和各种决策的制定往往离不开大数据的分析,因此大数据分 ...

  8. 基于大数据背景下的全国各大城市地铁客流量分析

    目录 第一章 项目介绍 第二章 项目组织与项目计划 第三章 数据采集 3.1 数据采集目标 3.2 数据采集工具与方法 3.3 数据采集流程 3.4 数据采集保存 3.5 本章小结 第四章 数据预处理 ...

  9. 【Python程序设计】基于Python Flask的网易云音乐歌单采集与可视化分析平台-源码经过调试,100%可运行

    基于Python Flask的网易云音乐歌单采集与可视化分析平台 项目获取 一.项目简介 二.开发环境 三.项目技术 四.功能介绍 五.功能结构 六.运行截图 项目获取 获取方式(点击下载):是云猿实 ...

最新文章

  1. linux7主机名设置,centos7主机名、网络设置
  2. 每日一笑 | 大学教室的真实写照...
  3. couchbase集群_使用CLI扩展和重新平衡Couchbase集群
  4. 网页制作中如何自定义网页图标
  5. python中os模块详解_Python OS模块(常见文件操作示例)
  6. 520晚上,我用python破解了前女友的加密文件,结果却发现。。。
  7. 最容易“杀死”女人的30句话
  8. JS调试设置断点却无法中断的解决
  9. 上平台! 车联网智能化晋级高段位!
  10. Python爬取斗鱼弹幕——多房间同时抓取实现(一)
  11. Lucene的各中文分词比较
  12. TZC Python编程入门教程 ————题解
  13. 非计算机专业二级c语言,2017年计算机二级C语言基本知识
  14. 软考中级软件设计师---系统开发基础
  15. CSP - J 2020 T2 直播获奖
  16. 出来做SEO“早晚要还的”
  17. 视频帧差法实例(matlab实现)
  18. 【mysql体系结构】mysql的配置文件
  19. sqlite3.OperationalError: near “(“: syntax error
  20. 关于m++和++m的那些事

热门文章

  1. java esc_java里控制台按esc键退出,怎么实现
  2. ABB机器人编程示例
  3. 数据结构的一些基本术语概念-严蔚敏老师
  4. 安全我知道 世界顶尖防火墙逐个看(转)
  5. 这是我见过最通俗易懂的MES与ERP介绍文章,带你剖析工业4.0!
  6. 笔记本外接显示器鼠标卡顿、显示器掉帧解决办法
  7. 在Ubuntu上编译gptfdisk的方法
  8. CREO图文教程:三维设计案例之油缸顶物体的骨架模型设计图文教程之详细攻略
  9. 骞云云原生运维管理平台7.0版本正式发布
  10. 【Linux开发】Orange Pi上WiringPi的使用