在線音樂系統

文章目錄

  • 在線音樂系統
    • 一、項目演示
    • 二、項目介紹
    • 三、部分功能截圖
    • 四、部分代碼展示
    • 五、底部獲取項目(9.9¥帶走)

在線音樂系統

一、項目演示

音樂網站

二、項目介紹

基于springboot+vue的前后端分離在線音樂系統
登錄角色 : 用戶、管理員

用戶:歌單分類分頁界面,歌手分類分頁界面,我的音樂查看收藏歌曲,搜索音樂,可根據歌手、歌曲、歌單名進行搜索;頭像修改、用戶信息修改,歌曲播放,進度條拉伸,歌詞加載,歌曲收藏,歌曲下載,登錄、注冊等

管理員:系統首頁展示統計數據,用戶管理,歌手管理,歌曲管理(修改音源,歌詞,后臺評論),上傳音樂

語言:java

前端技術:vue、element-ui、echarts

后端技術:springboot、mybatisplus

數據庫:MySQL

三、部分功能截圖

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

四、部分代碼展示

package com.rabbiter.music.controller;import com.alibaba.fastjson.JSONObject;
import com.rabbiter.music.pojo.Collect;
import com.rabbiter.music.service.CollectService;
import com.rabbiter.music.utils.Consts;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;/*** 收藏控制類*/
@RestController
@RequestMapping("/collect")
@Api(tags = "收藏")
public class CollectController {@Autowiredprivate CollectService CollectService;/*** 添加收藏*/@ApiOperation(value = "添加收藏")@RequestMapping(value = "/add",method = RequestMethod.POST)public Object addCollect(HttpServletRequest request){JSONObject jsonObject = new JSONObject();String userId = request.getParameter("userId");           //用戶idString type = request.getParameter("type");               //收藏類型(0歌曲1歌單)String songId = request.getParameter("songId");           //歌曲idif(songId==null||songId.equals("")){jsonObject.put(Consts.CODE,0);jsonObject.put(Consts.MSG,"收藏歌曲為空");return jsonObject;}if(CollectService.existSongId(Integer.parseInt(userId),Integer.parseInt(songId))){jsonObject.put(Consts.CODE,2);jsonObject.put(Consts.MSG,"已收藏");return jsonObject;}//保存到收藏的對象中Collect Collect = new Collect();Collect.setUserId(Integer.parseInt(userId));Collect.setType(new Byte(type));Collect.setSongId(Integer.parseInt(songId));boolean flag = CollectService.insert(Collect);if(flag){   //保存成功jsonObject.put(Consts.CODE,1);jsonObject.put(Consts.MSG,"收藏成功");return jsonObject;}jsonObject.put(Consts.CODE,0);jsonObject.put(Consts.MSG,"收藏失敗");return jsonObject;}/*** 刪除收藏*/@ApiOperation(value = "取消收藏")@RequestMapping(value = "/delete",method = RequestMethod.GET)public Object deleteCollect(HttpServletRequest request){String userId = request.getParameter("userId");           //用戶idString songId = request.getParameter("songId");           //歌曲idboolean flag = CollectService.deleteByUserIdSongId(Integer.parseInt(userId),Integer.parseInt(songId));return flag;}/*** 查詢所有收藏*/@ApiOperation(value = "查看所有收藏")@RequestMapping(value = "/allCollect",method = RequestMethod.GET)public Object allCollect(HttpServletRequest request){return CollectService.allCollect();}/*** 查詢某個用戶的收藏列表*/@ApiOperation(value = "用戶的收藏列表")@RequestMapping(value = "/collectOfUserId",method = RequestMethod.GET)public Object collectOfUserId(HttpServletRequest request){String userId = request.getParameter("userId");          //用戶idreturn CollectService.collectOfUserId(Integer.parseInt(userId));}}
package com.rabbiter.music.controller;import com.alibaba.fastjson.JSONObject;
import com.rabbiter.music.pojo.Comment;
import com.rabbiter.music.service.CommentService;
import com.rabbiter.music.utils.Consts;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;/*** 評論控制類*/
@Api(tags = "評論")
@RestController
@RequestMapping("/comment")
public class CommentController {@Autowiredprivate CommentService commentService;/*** 添加評論*/@ApiOperation(value = "添加評論")@RequestMapping(value = "/add",method = RequestMethod.POST)public Object addComment(HttpServletRequest request){JSONObject jsonObject = new JSONObject();String userId = request.getParameter("userId");           //用戶idString type = request.getParameter("type");               //評論類型(0歌曲1歌單)String songId = request.getParameter("songId");           //歌曲idString songListId = request.getParameter("songListId");   //歌單idString content = request.getParameter("content").trim();         //評論內容//保存到評論的對象中Comment comment = new Comment();comment.setUserId(Integer.parseInt(userId));comment.setType(new Byte(type));if(new Byte(type) ==0){comment.setSongId(Integer.parseInt(songId));}else{comment.setSongListId(Integer.parseInt(songListId));}comment.setContent(content);boolean flag = commentService.insert(comment);if(flag){   //保存成功jsonObject.put(Consts.CODE,1);jsonObject.put(Consts.MSG,"評論成功");return jsonObject;}jsonObject.put(Consts.CODE,0);jsonObject.put(Consts.MSG,"評論失敗");return jsonObject;}/*** 修改評論*/@ApiOperation(value = "修改評論")@RequestMapping(value = "/update",method = RequestMethod.POST)public Object updateComment(HttpServletRequest request){JSONObject jsonObject = new JSONObject();String id = request.getParameter("id").trim();                   //主鍵String userId = request.getParameter("userId").trim();           //用戶idString type = request.getParameter("type").trim();               //評論類型(0歌曲1歌單)String songId = request.getParameter("songId").trim();           //歌曲idString songListId = request.getParameter("songListId").trim();   //歌單idString content = request.getParameter("content").trim();         //評論內容//保存到評論的對象中Comment comment = new Comment();comment.setId(Integer.parseInt(id));comment.setUserId(Integer.parseInt(userId));comment.setType(new Byte(type));if(songId!=null&&songId.equals("")){songId = null;}else {comment.setSongId(Integer.parseInt(songId));}if(songListId!=null&&songListId.equals("")){songListId = null;}else {comment.setSongListId(Integer.parseInt(songListId));}comment.setContent(content);boolean flag = commentService.update(comment);if(flag){   //保存成功jsonObject.put(Consts.CODE,1);jsonObject.put(Consts.MSG,"修改成功");return jsonObject;}jsonObject.put(Consts.CODE,0);jsonObject.put(Consts.MSG,"修改失敗");return jsonObject;}/*** 刪除評論*/@ApiOperation(value = "刪除評論")@RequestMapping(value = "/delete",method = RequestMethod.GET)public Object deleteComment(HttpServletRequest request){String id = request.getParameter("id").trim();          //主鍵boolean flag = commentService.delete(Integer.parseInt(id));return flag;}/*** 根據主鍵查詢整個對象*/@ApiOperation(value = "根據主鍵查詢整個對象")@RequestMapping(value = "/selectByPrimaryKey",method = RequestMethod.GET)public Object selectByPrimaryKey(HttpServletRequest request){String id = request.getParameter("id").trim();          //主鍵return commentService.selectByPrimaryKey(Integer.parseInt(id));}/*** 查詢所有評論*/@ApiOperation(value = "查詢所有評論")@RequestMapping(value = "/allComment",method = RequestMethod.GET)public Object allComment(HttpServletRequest request){return commentService.allComment();}/*** 查詢某個歌曲下的所有評論*/@ApiOperation(value = "查詢某個歌曲下的所有評論")@RequestMapping(value = "/commentOfSongId",method = RequestMethod.GET)public Object commentOfSongId(HttpServletRequest request){String songId = request.getParameter("songId");          //歌曲idreturn commentService.commentOfSongId(Integer.parseInt(songId));}/*** 查詢某個歌單下的所有評論*/@ApiOperation(value = "查詢某個歌單下的所有評論")@RequestMapping(value = "/commentOfSongListId",method = RequestMethod.GET)public Object commentOfSongListId(HttpServletRequest request){String songListId = request.getParameter("songListId");          //歌曲idreturn commentService.commentOfSongListId(Integer.parseInt(songListId));}/*** 給某個評論點贊*/@ApiOperation(value = "給某個評論點贊")@RequestMapping(value = "/like",method = RequestMethod.POST)public Object like(HttpServletRequest request){JSONObject jsonObject = new JSONObject();String id = request.getParameter("id").trim();           //主鍵String up = request.getParameter("up").trim();           //用戶id//保存到評論的對象中Comment comment = new Comment();comment.setId(Integer.parseInt(id));comment.setUp(Integer.parseInt(up));boolean flag = commentService.update(comment);if(flag){   //保存成功jsonObject.put(Consts.CODE,1);jsonObject.put(Consts.MSG,"點贊成功");return jsonObject;}jsonObject.put(Consts.CODE,0);jsonObject.put(Consts.MSG,"點贊失敗");return jsonObject;}}
package com.rabbiter.music.controller;import com.alibaba.fastjson.JSONObject;
import com.rabbiter.music.pojo.Consumer;
import com.rabbiter.music.service.ConsumerService;
import com.rabbiter.music.utils.Consts;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;/*** 前端用戶控制類*/
@RestController
@RequestMapping("/consumer")
@Api(tags = "用戶")
public class ConsumerController {@Autowiredprivate ConsumerService consumerService;/*** 添加前端用戶*/@ApiOperation(value = "注冊、添加前端用戶")@RequestMapping(value = "/add",method = RequestMethod.POST)public Object addConsumer(HttpServletRequest request){JSONObject jsonObject = new JSONObject();String username = request.getParameter("username").trim();     //賬號String password = request.getParameter("password").trim();     //密碼String sex = request.getParameter("sex").trim();               //性別String phoneNum = request.getParameter("phoneNum").trim();     //手機號String email = request.getParameter("email").trim();           //電子郵箱String birth = request.getParameter("birth").trim();           //生日String introduction = request.getParameter("introduction").trim();//簽名String location = request.getParameter("location").trim();      //地區String avator = request.getParameter("avator").trim();          //頭像地址if(username==null||username.equals("")){jsonObject.put(Consts.CODE,0);jsonObject.put(Consts.MSG,"用戶名不能為空");return jsonObject;}Consumer consumer1 = consumerService.getByUsername(username);if(consumer1!=null){jsonObject.put(Consts.CODE,0);jsonObject.put(Consts.MSG,"用戶名已存在");return jsonObject;}if(password==null||password.equals("")){jsonObject.put(Consts.CODE,0);jsonObject.put(Consts.MSG,"密碼不能為空");return jsonObject;}//把生日轉換成Date格式DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");Date birthDate = new Date();try {birthDate = dateFormat.parse(birth);} catch (ParseException e) {e.printStackTrace();}//保存到前端用戶的對象中Consumer consumer = new Consumer();consumer.setUsername(username);consumer.setPassword(password);consumer.setSex(new Byte(sex));consumer.setPhoneNum(phoneNum);consumer.setEmail(email);consumer.setBirth(birthDate);consumer.setIntroduction(introduction);consumer.setLocation(location);consumer.setAvator(avator);boolean flag = consumerService.insert(consumer);if(flag){   //保存成功jsonObject.put(Consts.CODE,1);jsonObject.put(Consts.MSG,"添加成功");return jsonObject;}jsonObject.put(Consts.CODE,0);jsonObject.put(Consts.MSG,"添加失敗");return jsonObject;}/*** 修改前端用戶*/@ApiOperation(value = "修改前端用戶")@RequestMapping(value = "/update",method = RequestMethod.POST)public Object updateConsumer(HttpServletRequest request){JSONObject jsonObject = new JSONObject();String id = request.getParameter("id").trim();          //主鍵String username = request.getParameter("username").trim();     //賬號String password = request.getParameter("password").trim();     //密碼String sex = request.getParameter("sex").trim();               //性別String phoneNum = request.getParameter("phoneNum").trim();     //手機號String email = request.getParameter("email").trim();           //電子郵箱String birth = request.getParameter("birth").trim();           //生日String introduction = request.getParameter("introduction").trim();//簽名String location = request.getParameter("location").trim();      //地區if(username==null||username.equals("")){jsonObject.put(Consts.CODE,0);jsonObject.put(Consts.MSG,"用戶名不能為空");return jsonObject;}if(password==null||password.equals("")){jsonObject.put(Consts.CODE,0);jsonObject.put(Consts.MSG,"密碼不能為空");return jsonObject;}//把生日轉換成Date格式DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");Date birthDate = new Date();try {birthDate = dateFormat.parse(birth);} catch (ParseException e) {e.printStackTrace();}//保存到前端用戶的對象中Consumer consumer = new Consumer();consumer.setId(Integer.parseInt(id));consumer.setUsername(username);consumer.setPassword(password);consumer.setSex(new Byte(sex));consumer.setPhoneNum(phoneNum);consumer.setEmail(email);consumer.setBirth(birthDate);consumer.setIntroduction(introduction);consumer.setLocation(location);boolean flag = consumerService.update(consumer);if(flag){   //保存成功jsonObject.put(Consts.CODE,1);jsonObject.put(Consts.MSG,"修改成功");return jsonObject;}jsonObject.put(Consts.CODE,0);jsonObject.put(Consts.MSG,"修改失敗");return jsonObject;}/*** 刪除前端用戶*/@ApiOperation(value = "刪除前端用戶")@RequestMapping(value = "/delete",method = RequestMethod.GET)public Object deleteConsumer(HttpServletRequest request){String id = request.getParameter("id").trim();          //主鍵boolean flag = consumerService.delete(Integer.parseInt(id));return flag;}/*** 根據主鍵查詢整個對象*/@ApiOperation(value = "根據主鍵查詢整個對象")@RequestMapping(value = "/selectByPrimaryKey",method = RequestMethod.GET)public Object selectByPrimaryKey(HttpServletRequest request){String id = request.getParameter("id").trim();          //主鍵return consumerService.selectByPrimaryKey(Integer.parseInt(id));}/*** 查詢所有前端用戶*/@ApiOperation(value = "查詢所有前端用戶")@RequestMapping(value = "/allConsumer",method = RequestMethod.GET)public Object allConsumer(HttpServletRequest request){return consumerService.allConsumer();}/*** 更新前端用戶圖片*/@ApiOperation(value = "更新前端用戶圖片")@RequestMapping(value = "/updateConsumerPic",method = RequestMethod.POST)public Object updateConsumerPic(@RequestParam("file") MultipartFile avatorFile, @RequestParam("id")int id){JSONObject jsonObject = new JSONObject();if(avatorFile.isEmpty()){jsonObject.put(Consts.CODE,0);jsonObject.put(Consts.MSG,"文件上傳失敗");return jsonObject;}//文件名=當前時間到毫秒+原來的文件名String fileName = System.currentTimeMillis()+avatorFile.getOriginalFilename();//文件路徑String filePath = System.getProperty("user.dir")+System.getProperty("file.separator")+"userImages";//如果文件路徑不存在,新增該路徑File file1 = new File(filePath);if(!file1.exists()){file1.mkdir();}//實際的文件地址File dest = new File(filePath+System.getProperty("file.separator")+fileName);//存儲到數據庫里的相對文件地址String storeAvatorPath = "/userImages/"+fileName;try {avatorFile.transferTo(dest);Consumer consumer = new Consumer();consumer.setId(id);consumer.setAvator(storeAvatorPath);boolean flag = consumerService.update(consumer);if(flag){jsonObject.put(Consts.CODE,1);jsonObject.put(Consts.MSG,"上傳成功");jsonObject.put("avator",storeAvatorPath);return jsonObject;}jsonObject.put(Consts.CODE,0);jsonObject.put(Consts.MSG,"上傳失敗");return jsonObject;} catch (IOException e) {jsonObject.put(Consts.CODE,0);jsonObject.put(Consts.MSG,"上傳失敗"+e.getMessage());}finally {return jsonObject;}}/*** 前端用戶登錄*/@ApiOperation(value = "前端用戶登錄")@RequestMapping(value = "/login",method = RequestMethod.POST)public Object login(HttpServletRequest request){JSONObject jsonObject = new JSONObject();String username = request.getParameter("username").trim();     //賬號String password = request.getParameter("password").trim();     //密碼if(username==null||username.equals("")){jsonObject.put(Consts.CODE,0);jsonObject.put(Consts.MSG,"用戶名不能為空");return jsonObject;}if(password==null||password.equals("")){jsonObject.put(Consts.CODE,0);jsonObject.put(Consts.MSG,"密碼不能為空");return jsonObject;}//保存到前端用戶的對象中Consumer consumer = new Consumer();consumer.setUsername(username);consumer.setPassword(password);boolean flag = consumerService.verifyPassword(username,password);if(flag){   //驗證成功jsonObject.put(Consts.CODE,1);jsonObject.put(Consts.MSG,"登錄成功");jsonObject.put("userMsg",consumerService.getByUsername(username));return jsonObject;}jsonObject.put(Consts.CODE,0);jsonObject.put(Consts.MSG,"用戶名或密碼錯誤");return jsonObject;}
}

五、底部獲取項目(9.9¥帶走)

有問題,或者需要協助調試運行項目的也可以

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/12361.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/12361.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/12361.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

外文文獻查找以及下載渠道

尋找外文文獻的渠道有很多種: 學術數據庫和期刊網站:像PubMed、IEEE Xplore、ScienceDirect等學術數據庫和期刊網站是獲取外文文獻的主要渠道之一。這些平臺通常提供了廣泛的學術資源,包括期刊文章、會議論文等。 學術搜索引擎:…

Git 的原理與使用(中)

Git 的原理與使用(上)中介紹了Git初識,Git的安裝與初始化以及工作區、暫存區、版本庫相關的概念與操作,本文接著上篇的內容,繼續深入介紹Git在的分支管理與遠程操作方面的應用。 目錄 五、分支管理 1.理解分支 2.創…

java約拍攝影小程序

獲取源碼配套資料論文等、問題解答,可以加華神扣扣:3753599439 扣扣:1590404240 叩叩:1306749621

Java窗口函數框架JDFrame

1、簡介 在上一節中已經介紹過 JDFrame,文章鏈接stream流太難用了看看JDFrame 沒看過的朋友可以先看看, 這次主要講講窗口函數相關API的使用 在各種數據庫mysql, hive、spark中都有非常好用的開窗函數使用, 但是java卻沒好用的J…

數據結構與算法學習筆記十---鏈隊列的表示和實現(C語言)

目錄 前言 1.什么是鏈隊 2.鏈隊的表示和實現 1.定義 2.初始化 3.銷毀 4.清空 5.空隊列 6.隊列長度 7.獲取隊頭 8.入隊 9.出隊 10.遍歷隊列 11.完整代碼 前言 本篇博客介紹鏈棧隊列的表示和實現。 1.什么是鏈隊 鏈隊是采用鏈式存儲結構實現的隊列。通常鏈隊使用單…

【知識拓展】大白話說清楚:IP地址、子網掩碼、網關、DNS等

前言 工作中常聽別人說的本地網絡是什么意思?同一網段又是什么意思?它倆有關系嗎? 在工作中內經常會遇到相關的網絡問題,涉及網絡通信中一些常見的詞匯,如IP地址、子網掩碼、網關和DNS等。具體一點:經常會…

申請免費的必應搜索API

申請免費的必應搜索API 文章目錄 申請免費的必應搜索API前言一、原理1.1 登錄1.2 進入1.3 獲取密鑰1.4 申請VISA信用卡1.5 創建必應自定義搜索資源 二、創建成功 前言 準備條件: 1、outlook郵箱 2、招商銀行全幣種VISA信用卡【建議之前就有一張招商銀行信用卡&…

【opencv】圖像拼接實驗

實驗環境:anaconda、jupyter notebook 實驗用到的包:opencv、matplotlib、numpy 注:opencv在3.4.2之后sift就不是免費的了 我用的是3.4.1.15版本 實驗使用到的圖片 一、sift函數獲取特征值 讀入圖片 book cv2.imread(book.png, cv2.IMRE…

【極簡】如何估算大模型inference所需的內存量

1字節8bit 16float2字節 模型后面的xxb的單位是字節。 1b 字節≈ 0.93G,這個是以8bit運行,4bit減半,16bit(float)加倍,32bit(double)炒雞加倍。 剩下的是小頭,需要參數計…

蘋果macOS無法給App麥克風授權解決辦法

好久沒有在電腦上錄制課程了,有些東西還是錄下來記憶深刻,卻意外發現MAC系統升級后無法授權給第三方的App使用攝像頭和麥克風,而錄屏軟件是需要開啟麥克風和攝像頭才能錄制屏幕上的操作和聲音,官方提示在第三方APP若有使用攝像頭和…

css的4種導入方式

熟悉CSS樣式4種的引用方式&#xff0c;分別為行內式、內嵌式、鏈入式和導入式。 行內式 <標簽名 style"屬性1:屬性值1;屬性2:屬性值2;屬性3:屬性值3;">內容</ 標簽名>style是標簽的屬性&#xff0c;實際上任何HTML標簽都擁有style屬性&#xff0c;用來…

pyqt QComboBox下拉列表框控件

pyqt QComboBox下拉列表框控件 QComboBox效果代碼 QComboBox QComboBox 是 PyQt&#xff08;中的一個控件&#xff0c;它允許用戶從下拉列表中選擇一個選項。這個控件在需要用戶從預定義選項中進行選擇時非常有用。 效果 代碼 import sys from PyQt5.QtWidgets import QAppl…

vite創建的項目使用rem適配

下面以創建vue3.0 項目為例&#xff1a; npm init vitelatest “名稱” 選擇vue &#xff08;選擇你所對應的語言&#xff09; 更具提示步驟執行 cd xxx npm i npm run dev 然后再項目中使用 rem 需要安裝插件 第一步安裝插件 npm i amfe-flexible npm i postcss-pxtorem 第二…

CS144 Checkpoint 4: interoperating in the world(2024)

分析網絡路徑和性能&#xff1a; mtr命令 mtr 輸出的詳細分析&#xff1a; mtr 162.105.253.58 命令用于結合 traceroute 和 ping 的功能&#xff0c;實時監測并分析從你的計算機到目標主機&#xff08;IP 地址 162.105.253.58&#xff0c;北京大學計算中心&#xff09;之間…

Nginx配置Referer防盜鏈

系列文章目錄 文章目錄 系列文章目錄前言 前言 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到網站&#xff0c;這篇文章男女通用&#xff0c;看懂了就去分享給你的碼吧。 HTTP Referer是Hea…

PBOOTCMS|URL靜態制作教程(已解答)

0、先解壓源碼文件&#xff0c;在覆蓋靜態文件&#xff0c;全部點是。 打開程序后臺登錄地址www.xxx.com(你的域名)/admin.php/Menu/index 打開程序后臺--系統菜單--菜單新增&#xff08;清理緩存后重新登錄賬號&#xff09; &#xff08;選擇父菜單&#xff0c;菜單名稱&#…

ROS2+TurtleBot3+Cartographer+Nav2實現slam建圖和導航

0 引言 入門機器人最常見的應用就是slam建圖和導航&#xff0c;本文將詳細介紹這一流程&#xff0c; 便于初學這快速上手。 首先對需要用到的軟件包就行簡單介紹。 turtlebot3: 是一個小型的&#xff0c;基于ros的移動機器人。 學習機器人的很多示例程序都是基于turtlebot3。 …

【Java基礎】枚舉類的方法及應用

如何實現讓一個類有固定個數的對象 手動封裝構造方法&#xff08;private&#xff09; → 創建靜態對象 → final修飾靜態對象&#xff0c;使其成為常量 class Season { //枚舉類public final static Season SPRING new Season();public final static Season SUMMER new Se…

MySQL數據庫備份全攻略:從基礎到高級,一文掌握所有備份技巧

在數據為王的時代&#xff0c;數據庫的備份無疑是每一位數據庫管理員&#xff08;DBA&#xff09;和開發者必須掌握的核心技能。MySQL作為世界上最流行的開源關系型數據庫管理系統&#xff0c;其備份策略的多樣性和靈活性更是值得我們深入探討。今天&#xff0c;我們將從基礎的…

廢品回收微信小程序基于FastAdmin+ThinkPHP+UniApp(源碼搭建/上線/運營/售后/更新)

一款基于FastAdminThinkPHPUniApp開發的廢品回收系統&#xff0c;適用廢品回收站、再生資源回收公司上門回收使用的小程序。 一、FastAdmin框架特色功能及優勢 模塊化開發&#xff1a;控制器、模型、視圖、JS一一對應&#xff0c;使用RequireJS進行插件機制&#xff0c;支持插…