【Java应用】Java提取B站视频教程详情(完整代码|下载可直接运行|自带页面|可直接复制)

提取B站视频教程详情

背景

B站这个视频列表是真的体验感太差了,有时候想把章节复制下来,再对应的章节下面做笔记,实在是太难搞了,于是就有了这篇文文章

image-20240312161436488

效果图

在这里插入图片描述

根据关键字获取视频id

public Result videoList(@RequestBody VideoDto videoDto) {String keyword = videoDto.getKeyword();if (!StringUtils.hasText(keyword)) {return R.error(500,"keyword 不能为空");}String cookie = videoDto.getCookie();if (!StringUtils.hasText(cookie)) {cookie = this.cookie;}String url = "https://api.bilibili.com/x/web-interface/wbi/search/all/v2?__refresh__=true&_extra=&context=&page=1&page_size=42&order=&duration=&from_source=&from_spmid=333.337&platform=pc&highlight=1&single_column=0&qv_id=f2n7O2fSac731PnjjNFHUAGTYrY8wN84&ad_resource=5646&source_tag=3&web_location=1430654&w_rid=8b093eac9dbe20f09fb6b7bf3a51a743&wts=1710225740&keyword=" + keyword;HttpHeaders headers = new HttpHeaders();headers.add("Cookie", cookie);headers.add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36");HttpEntity<Object> entity = new HttpEntity<>(null, headers);ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);String body = exchange.getBody();JSONArray results = JSON.parseObject(body).getJSONObject("data").getJSONArray("result");List<VideoVo> list = new ArrayList<>();for (int i = 0; i < results.size(); i++) {JSONObject result = results.getJSONObject(i);if ("video".equals(result.getString("result_type"))) {JSONArray array = result.getJSONArray("data");for (int j = 0; j < array.size(); j++) {JSONObject object = array.getJSONObject(j);String id = object.getString("id");String title = object.getString("title").replace("<em class=\"keyword\">", "").replace("</em>", "");System.out.println(id + "\t" + title);VideoVo videoVo = new VideoVo();videoVo.setId(id);videoVo.setTitle(title);list.add(videoVo);}}}return R.ok(list);}
418313932	【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 全套课程(附带课程课件资料+课件笔记)图像处理|深度学习人工智能计算机视觉python+AI
314395310	太厉害了 已跪!终于有人能把OpenCV图像处理讲的这么通俗易懂了,现在计算机视觉opencv全套分享给大家。
1615	OpenCV轻松入门(李立宗)
1201468793	太详细了!从OpenCV安装到图像处理操作实战,张老师是真的把计算机视觉给讲透了!整整一百集,拿走不谢!——人工智能/机器学习/深度学习/神经网络/目标检测
839144359	OpenCV4 C++ 快速入门视频30讲 - 系列合集
382304059	【不要再看那些过时的OpenCV老教程了】2022巨献,OpenCV零基础小白最新版全套教程(人工智能机器视觉教程)
373921350	黑马程序员人工智能教程_10小时学会图像处理OpenCV入门教程
815748375	计算机视觉入门到精通!公认讲的最好的【OpenCV计算机视觉教程】同济大佬12小时带你从入门到精通!图像处理|深度学习人工智能计算机视觉Python+AI
...

获取视频详情

@Test
public Result<String> videoDetails(@PathVariable String id) {String url = "https://api.bilibili.com/x/web-interface/wbi/view/detail?aid=" + id;HttpHeaders headers = new HttpHeaders();headers.add("Cookie", cookie);headers.add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 Safari/537.36");HttpEntity<Object> entity = new HttpEntity<>(null, headers);ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);String body = exchange.getBody();System.out.println("body = " + body);JSONArray jsonArray = JSON.parseObject(body).getJSONObject("data").getJSONObject("View").getJSONArray("pages");StringBuilder builder = new StringBuilder();for (int i = 0; i < jsonArray.size(); i++) {String title = jsonArray.getJSONObject(i).getString("part");System.out.println(title);builder.append(title).append("\n");}return R.ok(builder.toString());}

传入上一步获取到的视频id=314395310即可得到对应的视频详情

1-2 OpenCV导学
1-3 计算机视觉到底是什么
2-1 Mac下命令方式搭建OpenCV开发环境(加片头)
2-2 Windows下搭建OpenCV开发环境
2-3 Ubuntu下搭建OpenCV开发环境
2-4 Windows下源码方式编译OpenCV
2-5 Windows下C++使用OpenCV库
2-6 如何利用工具高效开发OpenCV
3-1 明晰课程项目
3-2 如何通过OpenCV创建显示窗口
3-3 如何通过OpenCV加载显示图片
3-4 两招解决OpenCV加载图片问题
3-5 如何通过OpenCV保存文件
3-6 如何利用OpenCV从摄像头采集视频
3-7 如何从多媒体文件中读取视频帧
3-8 如何将视频数据录制成多媒体文件
3-9 代码优化
3-10 OpenCV控制鼠标
3-11 OpenCV中的TrackBar控件
3-12 实战TrackBar的使用
4-1 RGB与BGR【OpenCV的色彩空间】
4-2 HSV与HSL【OpenCV的色彩空间】
4-3 实战OpenCV色彩空间转换
4-4 图像操作的基石Numpy【基础操作】
4-5 Numpy基本操作之矩阵的检索与赋值
4-6 Numpy基本操作三-ROI
4-8 OpenCV的重要结构体Mat
4-9 Mat的深拷贝与浅拷贝
4-11 图像的多种属性
4-12 通道的分割与合并
5-1 OpenCV绘制直线
5-2 OpenCV椭圆的绘制
5-3 OpenCV椭圆的绘制
5-4 OpenCV绘制多边形
5-5 OpenCV绘制文本
5-6 OpenCV大作业-实现鼠标绘制基本图形
5-7 OpenCV基本图形绘制小结
6-1 图像的加法运算
6-2 图像的减法运算
6-3 图像的溶合
6-4 OpenCV位运算-非操作
6-5 OpenCV位操作-与运算
6-6 OpenCV位操作-或与异或
6-7 大作业-为图像添加水印
7-1 图像的放大与缩小
7-2 图像的翻转
7-3 图像的旋转
7-4 仿射变换之图像平移
7-5 仿射变换之获取变换矩阵
7-6 仿射变换之变换矩阵之二
7-7 OpenCV透视变换
8-1 图像滤波
8-2 卷积相关概念
8-3 实战图像卷积
8-4 方盒滤波与均值滤波
8-5 高斯滤波
8-6 中值滤波
8-7 双边滤波
8-8 高通滤波-索贝尔算子
8-9 高通滤波-沙尔算子
8-10 高通滤波-拉普拉斯算子
8-11 边缘检测Canny
9-1 形态学概述
9-2 图像全局二值化
9-3 阈值类型
9-4 自适应阈值二值化
9-5 OpenCV腐蚀
9-6 获取形态学卷积核
9-7 OpenCV膨胀
9-8 开运算
9-9 闭运算
9-10 形态学梯度
9-11 顶帽运算
9-12 黑帽操作
10-1 什么是图像轮廓
10-2 查找轮廓
10-3 绘制轮廓
10-4 轮廓的面积与周长
10-5 多边形逼近与凸包
10-6 外接矩形
10-7 项目总览【车辆统计】
10-8 视频加载【车辆统计】
10-9 形态学处理【车辆统计】
10-10 去背景【车辆统计】
10-11 逻辑处理【车辆统计】
10-12 显示信息【车辆统计】
11-1 特征检测的基本概念
11-2 Harris角点检测
11-3 Shi-Tomasi角点检测
11-4 SIFT关键点检测
11-5 SIFT计算描述子
11-6 SURF特征检测
11-7 OBR特征检测
11-8 暴力特征匹配
11-9 FLANN特征匹配
11-10 实战flann特征匹配
11-11 图像查找
11-12 大作业-图像拼接基础知识
11-13 大作业-图像拼接(一)

完整Controller代码

package com.lxw.station.controller;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.lxw.station.core.R;
import com.lxw.station.core.Result;
import com.lxw.station.entity.VideoDto;
import com.lxw.station.entity.VideoVo;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;import java.util.ArrayList;
import java.util.List;@RestController
public class VideoController {private String cookie = "_uuid=9DF4F2F2-47B9-22B6-F59A-A8C10C658393265297infoc; enable_web_push=undefined; header_theme_version=undefined; buvid_fp=0f14aff6726a04789db0ba942ba1317c; buvid3=C4518348-C136-256A-F660-38EA96D4971D49657infoc; b_nut=1708214666; buvid4=1010A954-10E9-D08B-82EF-1278035AD2E749657-024021800-Da1Cmh2s4TKHhBvxWnSrMg%3D%3D; CURRENT_FNVAL=4048; rpdid=|(kYl|~u)R)J0J'u~|)kuRY~Y; PVID=1; DedeUserID=702211544; DedeUserID__ckMd5=165187cda1b9f075; CURRENT_QUALITY=80; FEED_LIVE_VERSION=undefined; bili_ticket=eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MTAzNzQxMjcsImlhdCI6MTcxMDExNDg2NywicGx0IjotMX0.YzPhgcDhiKBMZCQmvf9r_6shc7teaF2F6r4ZFgk4g9w; bili_ticket_expires=1710374067; SESSDATA=bc98694a%2C1725666928%2Cce14a%2A31CjCxI-6GYnUODm_8y4XiweKv272zq5odBHxEmsuMnRW9nTgEThHMdZmEZM-mZvcQowoSVlE2ZWItWmROUGtVcXFTZkVlYmhmdDdnbTktZF9scVZpb3c1UzNJNXlsZGZvN3U0cWtGYS1FSXU4N0VZN041UkJYWEhJNDJKQktFTzVBZTBXSEw0WERRIIEC; bili_jct=a23627e4e9d952ba26cfcc0209ce39e0; sid=7yv3ysp0; bp_video_offset_702211544=907118997271478357; home_feed_column=4; b_lsid=BF6A57A2_18E312A1978; browser_resolution=1275-1279";private RestTemplate restTemplate = new RestTemplate();@PostMapping("/videoList")public Result videoList(@RequestBody VideoDto videoDto) {String keyword = videoDto.getKeyword();if (!StringUtils.hasText(keyword)) {return R.error(500,"keyword 不能为空");}String cookie = videoDto.getCookie();if (!StringUtils.hasText(cookie)) {cookie = this.cookie;}String url = "https://api.bilibili.com/x/web-interface/wbi/search/all/v2?__refresh__=true&_extra=&context=&page=1&page_size=42&order=&duration=&from_source=&from_spmid=333.337&platform=pc&highlight=1&single_column=0&qv_id=f2n7O2fSac731PnjjNFHUAGTYrY8wN84&ad_resource=5646&source_tag=3&web_location=1430654&w_rid=8b093eac9dbe20f09fb6b7bf3a51a743&wts=1710225740&keyword=" + keyword;HttpHeaders headers = new HttpHeaders();headers.add("Cookie", cookie);headers.add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36");HttpEntity<Object> entity = new HttpEntity<>(null, headers);ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);String body = exchange.getBody();JSONArray results = JSON.parseObject(body).getJSONObject("data").getJSONArray("result");List<VideoVo> list = new ArrayList<>();for (int i = 0; i < results.size(); i++) {JSONObject result = results.getJSONObject(i);if ("video".equals(result.getString("result_type"))) {JSONArray array = result.getJSONArray("data");for (int j = 0; j < array.size(); j++) {JSONObject object = array.getJSONObject(j);String id = object.getString("id");String title = object.getString("title").replace("<em class=\"keyword\">", "").replace("</em>", "");System.out.println(id + "\t" + title);VideoVo videoVo = new VideoVo();videoVo.setId(id);videoVo.setTitle(title);list.add(videoVo);}}}return R.ok(list);}@GetMapping("/videoDetails/{id}")public Result<String> videoDetails(@PathVariable String id) {String url = "https://api.bilibili.com/x/web-interface/wbi/view/detail?aid=" + id;HttpHeaders headers = new HttpHeaders();headers.add("Cookie", cookie);headers.add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 Safari/537.36");HttpEntity<Object> entity = new HttpEntity<>(null, headers);ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);String body = exchange.getBody();System.out.println("body = " + body);JSONArray jsonArray = JSON.parseObject(body).getJSONObject("data").getJSONObject("View").getJSONArray("pages");StringBuilder builder = new StringBuilder();for (int i = 0; i < jsonArray.size(); i++) {String title = jsonArray.getJSONObject(i).getString("part");System.out.println(title);builder.append(title).append("\n");}return R.ok(builder.toString());}
}

前端核心代码

<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><title>首页</title><style>/*找到html标签、body标签,和挂载的标签 都给他们统一设置样式*/html, body, #app, .el-container {/*设置内部填充为0,几个布局元素之间没有间距*/padding: 0px;/*外部间距也是如此设置*/margin: 0px;/*统一设置高度为100%*/height: 100%;}.el-header {background-color: #B3C0D1;line-height: 25px;}el-aside {background-color: #D3DCE6;color: #333;}.el-main {background-color: #E9EEF3;color: #333;}.code-container {position: relative;}.code {background-color: #f4f4f4;font-family: 'Microsoft YaHei', sans-serif;;padding: 10px;border-radius: 5px;overflow-x: auto;}.copy-button {position: absolute;top: 5px;right: 5px;background-color: #007bff;color: #fff;border: none;border-radius: 3px;padding: 5px 10px;cursor: pointer;}</style><script src="/js/vue.js"></script><script src="/js/vue-router.js"></script><link rel="stylesheet" href="/css/el/index.css"><script src="/js/el/index.js"></script><script type="text/javascript" src="/js/axios/index.js"></script><script type="text/javascript" src="/api/ajax.js"></script><script src="js/marked/marked.js"></script></head>
<body>
<div id="app"><el-container height><el-header><el-row style="margin-top: 10px"><el-col :span="3"><el-input v-model="params.keyword"><template slot="prepend">关键词</template></el-input></el-col><el-col :span="18"><el-input v-model="params.cookie"><template slot="prepend">Cookie</template></el-input></el-col><el-col :span="3"></el-col><el-button @click="videoList" :loading="generateLoading">获取视频列表</el-button></el-input></el-col></el-row></el-header><el-container><el-main><el-table :data="list" highlight-current-row @current-change="videoDetails" empty-text="暂无数据" style="width: 100%"><el-table-column type="index" width="50"></el-table-column><el-table-column property="id" label="id" width="120"></el-table-column><el-table-column property="title" label="title"></el-table-column></el-table></el-main><el-aside width="600px"><div class="code-container" v-show="details != null && details != ''"><pre class="code" id="codeSnippet"><code style="font-family: 'Microsoft YaHei', sans-serif">{{details}}</code></pre><button class="copy-button" @click="copyCode()">{{copyButtonText}}</button></div></el-aside></el-container></el-container></div></body>
</html>
<script>new Vue({el: '#app',data: function () {return {generateLoading: false,params: {cookie: '',keyword: 'opencv'},list: [],details: "",copyButtonText:"复制"}},methods: {videoList() {this.generateLoading = true;axios.post('/videoList', this.params).then(res => {if(res.data.success){this.list = res.data.data}else {this.$message.error(res.data.msg)}}).finally(() => {this.generateLoading = false;})},videoDetails(row) {this.generateLoading = true;axios.get('/videoDetails/'+row.id).then(res => {this.details = res.data.data}).cache(()=>{this.$message.error("获取视频详情失败")}).finally(() => {this.generateLoading = false;})},copyCode() {var codeElement = document.getElementById('codeSnippet');var range = document.createRange();range.selectNode(codeElement);window.getSelection().removeAllRanges();window.getSelection().addRange(range);document.execCommand('copy');window.getSelection().removeAllRanges();this.copyButtonText = "已复制";setTimeout(() =>{console.log("定时任务开始执行")this.copyButtonText = "复制";}, 2000);}},})
</script>

完整代码码云地址

https://gitee.com/LessAndfaster/bstation.git
运行后访问http://localhost:8088/即可

获取cookie的方法

打开B站,F12调出开发者工具,随便找个请求都可以

image-20240312161948184

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/11840.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ArcGIS10.2能用了10.2.2不行了(解决)

前两天我们的推文介绍了 ArcGIS10.2系列许可到期解决方案-CSDN博客文章浏览阅读2次。本文手机码字&#xff0c;不排版了。 昨晚&#xff08;2021\12\17&#xff09;12点后&#xff0c;收到很多学员反馈 ArcGIS10.2系列软件突然崩溃。更有的&#xff0c;今天全单位崩溃。​提示许…

Nginx详解:高性能Web服务器与反向代理的奥秘

Nginx&#xff0c;发音为“engine-x”&#xff0c;是一个开源、高性能的HTTP和反向代理服务器&#xff0c;也是邮件代理服务器。自2004年首次发布以来&#xff0c;Nginx凭借其轻量级、高效能和高并发处理能力&#xff0c;在互联网领域迅速崛起&#xff0c;成为许多大型网站和高…

【Spark】Spark编程体验,RDD转换算子、执行算子操作(六)

Spark编程体验 项目依赖管理 <dependencies><dependency><groupId>org.scala-lang</groupId><artifactId>scala-library</artifactId><version>2.12.10</version></dependency><dependency><groupId>org.ap…

银河麒麟V10终端出现“/home/kylin/.config/caja”读写权限问题,进程杀不掉。解决办法

问题如上图所示&#xff0c;一直关不了进程&#xff0c;桌面显示不正常。 解决办法 步骤一&#xff1a;切换字符登录“ctrl alt f1切字符登录下”。&#xff08;先输用户名&#xff0c;回车输密码&#xff09; 步骤二&#xff1a;删除“caja”缓存文件&#xff08;rm -r /home/…

记一次从jenkins安装到构建出第一个jar

1.安装 官方教程见&#xff1a;https://www.jenkins.io/zh/doc/book/installing/ 可以选择docker安装相对简单。 docker环境安装见https://blog.csdn.net/taotao_guiwang/article/details/135508643 2.环境配置 见https://blog.whsir.com/post-4865.html 注意&#xff1a…

智能终端RK3568主板在智慧公交条形屏项目的应用,支持鸿蒙,支持全国产化

基于AIoT-3568A的智慧公交条形屏&#xff0c;可支持公交线路动态展示&#xff0c;语音到站提醒&#xff0c;减少过乘、漏乘的情况&#xff0c;有效提高了公交服务效率和质量&#xff0c;为乘客提供了更舒适、更安全和更方便的出行体验&#xff0c;为城市的发展增添了新的活力。…

day5

利用迭代器&#xff01; #include <vector> #include <map>class Solution { public:std::vector<int> intersection(std::vector<int>& nums1, std::vector<int>& nums2) {std::map<int, int> Mymap;std::vector<int> qq…

程序员的神奇应用:从代码创造到问题解决的魔法世界之 自动化测试工具

文章目录 自动化测试工具 在软件开发的海洋中&#xff0c;程序员的实用神器如同航海中的指南针&#xff0c;帮助他们导航、加速开发、优化代码质量&#xff0c;并最终抵达成功的彼岸。这些工具覆盖了从代码编写、版本控制到测试和部署的各个环节。 在当今数字化的世界里&#x…

windows上vcpkg install openssl失败后手动nmake编译安装openssl

最近需要移植一个跨平台项目代码到windows上&#xff0c;其中依赖curl和openssl&#xff1b; ** 1.vcpkg安装 ** 首先自然而然想到使用vckpg进行包管理&#xff0c;因为不牵扯到多项目引用&#xff0c;所以用vcpkg的经典模式进行安装&#xff1a; 项目依赖的curl版本是8.6.…

31万奖金池等你挑战!IJCAI 2024 第九届“信也科技杯”全球AI算法大赛正式开赛!聚焦AI尖端赛题!

文章目录 ⭐️ 赛事概况⭐️ 赛事奖励⭐️ 赛事日程速览⭐️ 报名通道与赛事交流群⭐️ 关于 “信也科技杯”⭐️ 关于信也科技 ⭐️ 赛事概况 随着语音合成技术的不断进步,合成语音与真实语音之间的界限变得模糊,这不仅对数据安全构成威胁,也对科技伦理提出了新的要求。 第九…

ValueError: source code string cannot contain null bytes

导入pandas报如下错误&#xff1a; 解决&#xff1a; pandas好像只支持到3.8&#xff0c;我的python是3.10&#xff0c;改成3.7就能正常使用了

【stm32-5】输入捕获模式测频率PWMI模式测频率占空比

1.输入捕获模式测频率 &#xff08;1&#xff09;main.c #include "Device/Include/stm32f10x.h" // Device header #include "pwm.h" #include "delay.h" #include "OLED.h" #include "IC.h" uint8_t i; int main(void…

idea连接远程仓库

git ->克隆。 url为远程仓库的地址&#xff0c;输入好后&#xff0c;选择项目存放目录&#xff0c;再点击克隆 点击新窗口打开。 切换到对应分支

使用Xshell工具连接ubuntu-方便快捷

使用Xshell连接ubuntu 在命令行输入 “sudo apt-get install openssh-server”安装openssh-server 开启 ssh-server&#xff0c;在命令行输入 “service ssh start”&#xff0c;然后输入密码即可

Spring Boot | Spring Boot 整合“ 邮件任务“ 实现

目录: Spring Boot 整合" 邮件任务" 实现 :一、发送 "纯文本邮件" :(1) 添加 "邮件服务" 依赖启动器(2) 添加 "邮件服务" 配置信息(3) 定制 "邮件发送服务"(4) "纯文本" 邮件发送 测试效果 二、发送 带 "附件…

进程和计划任务管理

查看系统进程信息 静态查看系统进程信息之ps命令 &#xff08;每五秒刷新一次数据&#xff09; 方法一&#xff1a;ps aux //显示所有进程 a&#xff1a;显示现行终端下的所有进程&#xff0c;包括其它用户的进程。u&#xff1a;显示进程的归属用户及内存的使用情况。x…

【qt】动态属性

这里写目录标题 一.属性1.属性的好处2.添加属性3.使用属性 二.只读属性 一.属性 1.属性的好处 说到属性&#xff08;property&#xff09;&#xff0c;你们会想到什么&#xff1f;我会联想到特点&#xff0c;就是一类对象所特有的&#xff0c;在C中&#xff0c;成员数据就是这…

2.3 Spark运行架构与原理

Spark运行架构由SparkContext、Cluster Manager和Worker构成。在集群模式下&#xff0c;Driver进程初始化SparkContext并向Cluster Manager申请资源&#xff0c;后者根据算法在Worker节点上启动Executor。Executor负责任务执行&#xff0c;反馈状态给Cluster Manager。任务由Ta…

MyBatis-Plus核心功能详解:条件构造器、自定义SQL与Service接口

在Java的Web开发中&#xff0c;MyBatis-Plus作为MyBatis的增强工具&#xff0c;提供了许多实用的功能&#xff0c;极大地简化了数据库操作的开发过程。下面&#xff0c;我们将详细探讨MyBatis-Plus的三大核心功能&#xff1a;条件构造器、自定义SQL以及Service接口。 一、条件…

FBX Python SDK 入门教程

安装 1. 下载 FBX Python SDK 官网地址&#xff0c;根据你的操作系统&#xff0c;下载相应的 FBX SDK 2020.3.4 Python exe 文件。 2. 安装 执行下载的文件 fbx202034_fbxpythonsdk_win.exe&#xff0c;安装完的程序路径我的是 D:\Program Files\Autodesk\FBX\FBX Python SDK\…