音乐播放器微信小程序
1.准备环境
2.1 开发工具
IDEA2019 微信开发者工具 PostMan SQLYog
2.2 开发环境
Java+mysql+JavaScript+json
2. 简介
前后端分离,在微信开发者工具中写页面以及跳转,在数据库中写入音乐类型 专辑名称 演唱者 以及音乐的url ,通过Java 将数据库中的数据获取出来封装成 json 通过url进行传值,在前端进行解析展示出来
3.代码
sql:创建数据库 表 插入数据
/*
SQLyog Ultimate v13.1.1 (64 bit)
MySQL - 5.7.29 : Database - wyy_music
*********************************************************************
*//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE=''*/;/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`wyy_music` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `wyy_music`;/*Table structure for table `tb_music` */DROP TABLE IF EXISTS `tb_music`;CREATE TABLE `tb_music` (`music_id` int(11) NOT NULL AUTO_INCREMENT,`music_name` varchar(255) NOT NULL,`music_album_name` varchar(255) NOT NULL,`music_album_picUrl` varchar(255) NOT NULL,`music_mp3Url` varchar(255) NOT NULL,`music_artist_name` varchar(255) NOT NULL,`sheet_id` int(11) DEFAULT NULL,PRIMARY KEY (`music_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;/*Data for the table `tb_music` */insert into `tb_music`(`music_id`,`music_name`,`music_album_name`,`music_album_picUrl`,`music_mp3Url`,`music_artist_name`,`sheet_id`) values
(1,'光年之外','光年之外','https://imgessl.kugou.com/stdmusic/20161229/20161229233400375274.jpg','https://webfs.ali.kugou.com/202109271010/183cab94955d96aee0120d1d4677540d/KGTX/CLTX001/f87095bff0de7c636c3a3b8aac702d76.mp3','G.E.M.邓紫棋',1),
(2,'夜空中最亮的星','世界','https://imgessl.kugou.com/stdmusic/20150719/20150719010047203836.jpg','https://webfs.tx.kugou.com/202109271011/8ac45da301d093ccdd58111ad91371eb/G202/M04/1B/13/aocBAF55G0-ADd0HAD2Y88Efqbw072.mp3','逃跑计划',1),
(3,'只要平凡','只要平凡','https://y.qq.com/music/photo_new/T002R300x300M000000K7srf1rZtOX.jpg?max_age=2592000','https://webfs.ali.kugou.com/202109271009/ac5e4c1b2e0e14cc1fc06d6ef8bbd286/KGTX/CLTX001/38aead7ed546b0736791ebb25c3a3951.mp3','张杰/张碧晨',2),
(4,'你要跳舞吗','生命因你而火热','https://imgessl.kugou.com/stdmusic/20160407/20160407002744966139.jpg','https://webfs.ali.kugou.com/202109271014/fd2f5cee5791b2ed79bd65490c5af5a7/KGTX/CLTX001/58ffa0221ed9397e7ad9b889cdbe1a4a.mp3','新裤子乐队',2);/*Table structure for table `tb_sheet` */DROP TABLE IF EXISTS `tb_sheet`;CREATE TABLE `tb_sheet` (`id` int(11) NOT NULL AUTO_INCREMENT,`sheet_name` varchar(255) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;/*Data for the table `tb_sheet` */insert into `tb_sheet`(`id`,`sheet_name`) values
(1,'热歌榜'),
(2,'新歌榜'),
(3,'原创榜'),
(6,'抖音榜');/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
文件结构
我是通过druid连接的数据库
druid.properties配置文件
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/wyy_music?useSSL=false
username=root
password=1234initialSize=5
maxActive=20
maxWait=2000
JdbcUtil
package com.java.util;import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.apache.commons.dbutils.QueryRunner;import javax.sql.DataSource;
import java.io.InputStream;
import java.util.Properties;//使用DBUtils的工具类
public class JdbcUtil {//声明DataSource对象private static DataSource dataSource;//静态代码块static {try {//读取db.properties文件InputStream resourceAsStream = JdbcUtil.class.getResourceAsStream("/druid.properties");//创建Properties对象Properties properties = new Properties();//加载流对象properties.load(resourceAsStream);//创建数据源对象dataSource = DruidDataSourceFactory.createDataSource(properties);} catch (Exception e) {e.printStackTrace();}}//获取DButils中核心类对象QueryRunner对象public static QueryRunner getQueryRunner(){return new QueryRunner(dataSource);//此时已经连接上数据库了}}
实体类层 pojo
Music类
package com.java.pojo;import java.io.Serializable;//实体类
public class Music implements Serializable {private Integer musicId;private String musicName;private String musicAlbumName;private String musicAlbumPicurl;private String musicMp3url;private String musicArtistName;private String sheetId;public Integer getMusicId() {return musicId;}public void setMusicId(Integer musicId) {this.musicId = musicId;}public String getMusicName() {return musicName;}public void setMusicName(String musicName) {this.musicName = musicName;}public String getMusicAlbumName() {return musicAlbumName;}public void setMusicAlbumName(String musicAlbumName) {this.musicAlbumName = musicAlbumName;}public String getMusicAlbumPicurl() {return musicAlbumPicurl;}public void setMusicAlbumPicurl(String musicAlbumPicurl) {this.musicAlbumPicurl = musicAlbumPicurl;}public String getMusicMp3url() {return musicMp3url;}public void setMusicMp3url(String musicMp3url) {this.musicMp3url = musicMp3url;}public String getMusicArtistName() {return musicArtistName;}public void setMusicArtistName(String musicArtistName) {this.musicArtistName = musicArtistName;}public String getSheetId() {return sheetId;}public void setSheetId(String sheetId) {this.sheetId = sheetId;}@Overridepublic String toString() {return "Music{" +"musicId=" + musicId +", musicName='" + musicName + '\'' +", musicAlbumName='" + musicAlbumName + '\'' +", musicAlbumPicurl='" + musicAlbumPicurl + '\'' +", musicMp3url='" + musicMp3url + '\'' +", musicArtistName='" + musicArtistName + '\'' +", sheetId='" + sheetId + '\'' +'}';}
}
sheet类
package com.java.pojo;public class Sheet {private Integer id;private String sheetName;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getSheetName() {return sheetName;}public void setSheetName(String sheetName) {this.sheetName = sheetName;}@Overridepublic String toString() {return "Sheet{" +"id=" + id +", sheetName='" + sheetName + '\'' +'}';}
}
dao层
package com.java.dao;import com.java.pojo.Music;import java.util.List;public interface MusicDao {public List<Music> findAll();public Music findById(String musicId);public List<Music> findByMusicName(String musicName);
}
package com.java.dao;import com.java.pojo.Sheet;import java.util.List;public interface SheetDao {public List<Sheet> getSheet();public void insertSheet(String sheetName);
}
dao层实现类
package com.java.dao.impl;import com.java.dao.MusicDao;
import com.java.pojo.Music;
import com.java.util.JdbcUtil;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;import java.sql.SQLException;
import java.util.List;public class MusicDaoImpl implements MusicDao {@Overridepublic List<Music> findAll() {String sql = "select music_id musicId,music_name musicName,music_album_name musicAlbumName," +"music_album_picUrl musicAlbumPicurl,music_mp3Url musicMp3url," +"music_artist_name musicArtistName,sheet_id sheetId from tb_music";QueryRunner queryRunner = JdbcUtil.getQueryRunner();List<Music> musicList = null;try {musicList = queryRunner.query(sql, new BeanListHandler<Music>(Music.class));} catch (SQLException e) {e.printStackTrace();}return musicList;}@Overridepublic Music findById(String musicId) {String sql = "select music_id musicId,music_name musicName,music_album_name musicAlbumName," +"music_album_picUrl musicAlbumPicurl,music_mp3Url musicMp3url," +"music_artist_name musicArtistName,sheet_id sheetId from tb_music where music_id = ?";QueryRunner queryRunner = JdbcUtil.getQueryRunner();Music music = null;try {music = queryRunner.query(sql, new BeanHandler<Music>(Music.class), musicId);} catch (SQLException e) {e.printStackTrace();}return music;}@Overridepublic List<Music> findByMusicName(String musicName) {String sql = "select music_id musicId,music_name musicName,music_album_name musicAlbumName," +"music_album_picUrl musicAlbumPicurl,music_mp3Url musicMp3url," +"music_artist_name musicArtistName,sheet_id sheetId from tb_music where music_name like ?";QueryRunner queryRunner = JdbcUtil.getQueryRunner();List<Music> musicList = null;try {musicList = queryRunner.query(sql, new BeanListHandler<Music>(Music.class), "%" + musicName + "%");} catch (SQLException e) {e.printStackTrace();}return musicList;}
}
package com.java.dao.impl;import com.java.dao.SheetDao;
import com.java.pojo.Sheet;
import com.java.util.JdbcUtil;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;import java.sql.SQLException;
import java.util.List;public class SheetDaoImpl implements SheetDao {@Overridepublic List<Sheet> getSheet() {String sql = "select id,sheet_name sheetName from tb_sheet";QueryRunner queryRunner = JdbcUtil.getQueryRunner();List<Sheet> query = null;try {query = queryRunner.query(sql, new BeanListHandler<Sheet>(Sheet.class));} catch (SQLException e) {e.printStackTrace();}return query;}@Overridepublic void insertSheet(String sheetName) {String sql = "insert into tb_sheet(sheet_name) values (?)";QueryRunner queryRunner = JdbcUtil.getQueryRunner();try {int update = queryRunner.update(sql,sheetName);} catch (SQLException e) {e.printStackTrace();}}
}
service层
package com.java.service;import com.java.pojo.Music;import java.util.List;public interface MusicService {public List<Music> findAll();public Music findById(String musicId);public List<Music> findByMusicName(String musicName);public Music nextSong(String musicId);public Music lastSong(String musicId);
}
package com.java.service;import com.java.pojo.Sheet;import java.util.List;public interface SheetService {public List<Sheet> getSheet();public void addSheet(String sheetName);
}
package com.java.service.impl;import com.java.dao.MusicDao;
import com.java.dao.impl.MusicDaoImpl;
import com.java.pojo.Music;
import com.java.service.MusicService;import java.util.List;public class MusicServiceImpl implements MusicService {@Overridepublic List<Music> findAll() {MusicDao musicDao = new MusicDaoImpl();List<Music> musicList = musicDao.findAll();return musicList;}@Overridepublic Music findById(String musicId) {MusicDao musicDao = new MusicDaoImpl();Music music = musicDao.findById(musicId);return music;}@Overridepublic List<Music> findByMusicName(String musicName) {MusicDao musicDao = new MusicDaoImpl();List<Music> musicNameList = musicDao.findByMusicName(musicName);return musicNameList;}@Overridepublic Music nextSong(String musicId) {MusicDao musicDao = new MusicDaoImpl();List<Music> musicList = musicDao.findAll();if (musicList.size()>0){int currentIndex = 0;for (int i = 0; i < musicList.size(); i++) {if (musicList.get(i).getMusicId().equals(Integer.parseInt(musicId))){currentIndex = i;break;}}int nextSongIndex = currentIndex == musicList.size() -1 ? 0 : currentIndex+1;return musicList.get(nextSongIndex);}else {throw new RuntimeException("歌曲列表不存在");}}@Overridepublic Music lastSong(String musicId) {MusicDao musicDao = new MusicDaoImpl();List<Music> musicList = musicDao.findAll();if (musicList.size()>0){int currentIndex = 0;for (int i = 0; i < musicList.size(); i++) {if (musicList.get(i).getMusicId().equals(Integer.parseInt(musicId))){currentIndex = i;break;}}int lastSongIndex = currentIndex == 0 ? musicList.size()-1 : currentIndex-1;return musicList.get(lastSongIndex);}else {throw new RuntimeException("歌曲列表不存在");}}
}
package com.java.service.impl;import com.java.dao.SheetDao;
import com.java.dao.impl.SheetDaoImpl;
import com.java.pojo.Sheet;
import com.java.service.SheetService;import java.util.List;public class SheetServiceImpl implements SheetService {@Overridepublic List<Sheet> getSheet() {SheetDao sheetDao = new SheetDaoImpl();List<Sheet> sheet = sheetDao.getSheet();return sheet;}@Overridepublic void addSheet(String sheetName) {SheetDao sheetDao = new SheetDaoImpl();sheetDao.insertSheet(sheetName);}
}
web层
package com.java.web;import com.java.service.SheetService;
import com.java.service.impl.SheetServiceImpl;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/addSheetServlet")
public class AddSheetServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");SheetService sheetService = new SheetServiceImpl();String sheetName = request.getParameter("sheetName");sheetService.addSheet(sheetName);}
}
package com.java.web;import com.fasterxml.jackson.databind.ObjectMapper;
import com.java.dao.impl.MusicDaoImpl;
import com.java.pojo.Music;
import com.java.service.MusicService;
import com.java.service.impl.MusicServiceImpl;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;@WebServlet("/musicFindAllServlet")
public class MusicFindAllServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置字符集request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");//MusicService musicService = new MusicServiceImpl();List<Music> musicList = musicService.findAll();ObjectMapper objectMapper = new ObjectMapper();String jsonMusic = objectMapper.writeValueAsString(musicList);response.getWriter().write(jsonMusic);}
}
package com.java.web;import com.fasterxml.jackson.databind.ObjectMapper;
import com.java.pojo.Music;
import com.java.service.MusicService;
import com.java.service.impl.MusicServiceImpl;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/musicFindByIdServlet")
public class MusicFindByIdServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");//MusicService musicService = new MusicServiceImpl();String musicId = request.getParameter("musicId");Music music = musicService.findById(musicId);ObjectMapper objectMapper = new ObjectMapper();String s = objectMapper.writeValueAsString(music);response.getWriter().write(s);}
}
package com.java.web;import com.fasterxml.jackson.databind.ObjectMapper;
import com.java.pojo.Music;
import com.java.service.MusicService;
import com.java.service.impl.MusicServiceImpl;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;@WebServlet("/musicFindByMusicNameServlet")
public class MusicFindByMusicNameServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");MusicService musicService = new MusicServiceImpl();String musicName = request.getParameter("musicName");List<Music> musicList = musicService.findByMusicName(musicName);ObjectMapper objectMapper = new ObjectMapper();String s = objectMapper.writeValueAsString(musicList);response.getWriter().write(s);}
}
package com.java.web;import com.fasterxml.jackson.databind.ObjectMapper;
import com.java.pojo.Music;
import com.java.service.MusicService;
import com.java.service.impl.MusicServiceImpl;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/musicLastSongServlet")
public class MusicLastSongServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");String musicId = request.getParameter("musicId");MusicService musicService = new MusicServiceImpl();Music music = musicService.lastSong(musicId);ObjectMapper objectMapper = new ObjectMapper();String s = objectMapper.writeValueAsString(music);response.getWriter().write(s);}
}
package com.java.web;import com.fasterxml.jackson.databind.ObjectMapper;
import com.java.pojo.Music;
import com.java.service.MusicService;
import com.java.service.impl.MusicServiceImpl;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/musicNextSongServlet")
public class MusicNextSongServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");String musicId = request.getParameter("musicId");MusicService musicService = new MusicServiceImpl();Music music = musicService.nextSong(musicId);ObjectMapper objectMapper = new ObjectMapper();String s = objectMapper.writeValueAsString(music);response.getWriter().write(s);}
}
package com.java.web;import com.fasterxml.jackson.databind.ObjectMapper;
import com.java.pojo.Sheet;
import com.java.service.SheetService;
import com.java.service.impl.SheetServiceImpl;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;@WebServlet("/sheetServlet")
public class SheetServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");SheetService sheetService = new SheetServiceImpl();List<Sheet> sheet = sheetService.getSheet();String s = new ObjectMapper().writeValueAsString(sheet);response.getWriter().write(s);}
}
接下来就是前端页面
在微信开发者工具中的文件结构是这样
前端的代码比较复杂这里就不过多整理了 如果有小伙伴想要源码可以加一下交流群
下面是效果展示
音乐播放器微信小程序相关推荐
- uniapp 仿网易云音乐播放器 微信小程序
效果视频: uniapp 仿照网易云播放器功能 效果截图: 上代码: <template><view class=""><scroll-view :s ...
- 音乐播放器微信小程序开发-歌单界面(简陋版)
仿QQ音乐app的歌单界面制作了一个简易且简陋的歌单界面. 首先po一张最终效果图(很多功能还没实现,以及还有bug没有改好) 因为不涉及到逻辑,目前只需一些网页开发经验与知识即可(当然啦,还需要一定 ...
- 基于微信小程序java音乐播放器毕业设计论文/程序代码
摘 要 5G时代已经慢慢的融入了我们的日常生活,随着国家的通信政策以及各大运营商的宣传的影响,5G手机已经随处可见,面对全球信息.技术空前高速发展,信息高速化发展更是社会进步的一个标志.在全球信息化 ...
- 许嵩音乐智能问答系统微信小程序之音乐播放器
许嵩音乐智能问答系统微信小程序之音乐播放器 - 项目简介 项目简介. 音乐播放器搭建. 获取数据及文本分类. 智能客服聊天界面. 连接前端微信小程序输入和后端python,并返回值 连接知识图谱 你还 ...
- 许嵩音乐智能问答系统微信小程序之获取数据及文本分类
许嵩音乐智能问答系统微信小程序之获取数据及文本分类 项目简介. 音乐播放器搭建. 获取数据及文本分类. 智能客服聊天界面. 连接前端微信小程序输入和后端python,并返回值 连接知识图谱 数据获取 ...
- 许嵩音乐智能问答系统微信小程序之客服聊天室
许嵩音乐智能问答系统微信小程序之客服聊天室 项目简介. 音乐播放器搭建. 获取数据及文本分类. 智能客服聊天界面. 连接前端微信小程序输入和后端python,并返回值 连接知识图谱 你还在为因为性格腼 ...
- 录音、上传、播放音频微信小程序实践
文章目录 录音.上传.播放音频微信小程序实践 实践分析 依赖接口 录音 上传 播放 Page 事件 参考 录音.上传.播放音频微信小程序实践 最近上线了一款智能外呼机器人产品,需要开发一款录音.上传. ...
- python实现音乐播放和下载小程序功能
更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接: 高州阳光论坛https://www.hnthzk.com/ 人人影视http://www.sfkyty.com ...
- (已更新)谁是卧底线下发牌器微信小程序源码下载,强大的自定义功能
看名字就知道啦,这是一个谁是卧底的小程序源码 游戏规则: 谁是卧底是一款线下聚会的游戏,考验口才和脑力的同时,也能活跃气氛. 游戏人数为4-12人,游戏角色包括平民,卧底,白板可供用户选择! 游戏步骤 ...
最新文章
- java qq协议 c#,C# WebQQ协议群发机器人(三)
- linux top 命令信息解释
- 低功耗/远距离lora模块:物联网智能家居、抄表多领域应用SX1262芯片方案
- hive能替代oracle_Hive与Oracle表关联语句对比
- beeline-导出csv
- C语言回调函数callback
- 用PS去除图片中文字的6个方法
- 灰度发布和AB test
- 剪切caspase3_Proteintech抗体检测caspase 3前体及剪切体 - 泽浩公司
- 做了一个收录 rss opml 文件的仓库,欢迎推荐 opml
- vnc远程控制软件下载,四款神级能够下载的vnc远程控制软件
- Web报表系统葡萄城报表:报表设计
- App Store,“穷人靠变异”的爬虫路
- js+css 灵活层叠 绝对/相对 定位 2
- ArcGIS在线应用介绍(10)旧金山犯罪地图
- 面向对象三大特征---继承
- 关于springmvc静态资源常被忽视,有可能致命的点
- Linux下批量重命名文件
- 服务器托管和租用如何选择?
- 9.1黑马Vue电商后台管理系统商品管理模块完善:编辑商品的功能
热门文章
- 小七免杀 源码免杀培训班
- 【NOIP2014提高组】飞扬的小鸟
- 【NLP】LTP中文工具集使用
- 对matplotlib.pyplot.cm.RdYlBu()的解读
- 如何脱壳:PECompact 1.68 - 1.84 - Jeremy Collake [Overlay]
- 关闭word/ppt后自动创建并打开新的文档
- @2022-02-22:每日一语
- 计算机教育的改革论文,中职学校计算机教育现状及改革论文
- 信息系统分析与设计-----流程建模
- windows格式转换命令convert详解