群晖NAS部署PlaylistDL音乐下载器结合cpolar搭建私有云音乐库
文章目录
- 前言
- 1.关于PlaylistDL音乐下载器
- 2.Docker部署
- 3.PlaylistDL简单使用
- 4.群晖安装Cpolar工具
- 5.创建PlaylistDL音乐下载器的公网地址
- 6.配置固定公网地址
- 总结
前言
各位小伙伴们,你们是不是经常为了听几首歌而开通各种平台的VIP?或者为了下载无损音质的歌曲而苦恼不已?今天,小编要给大家安利一个神器——PlaylistDL音乐下载器。有了它,你不仅可以轻松下载Spotify和YouTube等等社交平台音乐软件上的音乐,还能在自己的群晖NAS上搭建一个私人音乐库!快来一起打造属于你的音乐帝国吧!
1.关于PlaylistDL音乐下载器
PlaylistDL音乐下载器是个超级棒的开源项目,能让你从Spotify和YouTube上一键下载歌曲、专辑或播放列表,并将它们转换成MP3格式。而且,它还提供了用户友好的网页界面,你只需要输入链接,剩下的就交给它了!
主要特点:
- 支持 Spotify 和 YouTube:不管是Spotify的独家曲目还是YouTube上的热门MV,都能轻松搞定。
- 会话管理:每个用户会话都有自己的下载目录,再也不怕文件混在一起了!
- 管理员模式:管理员可以直接将音乐下载到指定的服务器文件夹,方便管理和备份。
- 实时进度条和日志:下载过程中可以随时查看进度和日志,心里有数不慌张。
- 自动清理:临时下载文件夹会在指定时间后自动删除,保持系统整洁。
- 组织下载:下载的音乐按艺术家和专辑分类,查找起来超方便!****
2.Docker部署
打开套件中心,确保我们已经安装了ContainerManager,如果没有安装可以点击安装一下。
打开控制面板,点击终端机,启动SSH功能,端口默认22即可,然后点击应用。
打开windows cmd 命令窗口,按照下面格式输入ssh 命令
ssh 群晖用户名@群晖IP -p 22
如图下面方式gezi123是群晖的登录用户名,@后面跟着群晖的局域网IP ,端口默认22.然后回车
提示这个输入yes,然后回车
然后出现输入密码,这个密码就是群晖用户名对应的密码,输入后回车,这样表示成功ssh 连接到了群晖
在终端中输入这个命令来新建一个文件夹个子目录
mkdir -p /volume1/docker/playlistdl/data
然后进入playlistdl目录
cd /volume1/docker/playlistdl
最后运行容器
sudo docker run -d \--restart unless-stopped \--name playlistdl \-p 5045:5000 \-v $(pwd)/data:/data \-e ADMIN_USERNAME=你的用户名 \-e ADMIN_PASSWORD=你的密码 \-e AUDIO_DOWNLOAD_PATH=/data \-e CLEANUP_INTERVAL=300 \tanner23456/playlistdl:v2
运行成功后打开浏览器输入http://192.168.50.162:5054就能看到音频下载器的主界面了。
3.PlaylistDL简单使用
右上角Admin可以进入到登录界面,不登录直接下载的话,文件是不会保存到服务器上的。
这时候会看到一行红色的字,意思是现在直接下载到您的服务器!
第一行粘贴链接
第二行设置你要下载的路径
我这里测试使用网抑云音乐,直接复制分享链接
粘贴到音频下载器中,并填写音乐下载器的路径
下载完成后,文件可以在NAS文件夹中找到,能看到自动创建了专辑文件夹,打开就是刚才下载的音乐。
现在就可以愉快的扩充自己的音乐库啦!
4.群晖安装Cpolar工具
虽然我们已经可以在本地网络内畅玩PlaylistDL音乐下载器了,但是想要在外面也能享受这款游戏怎么办呢?这里就要隆重推荐一个神器——cpolar。
cpolar是一个能够帮助你在公网环境下安全地访问私有服务的工具。通过设置,即使你身处公司或旅途中,也能够轻松连接到家里的NAS,继续你的音乐之旅!
下面是安装cpolar步骤:
Cpolar官网地址: https://www.cpolar.com
cpolar 提供了群晖安装的套件,点击下面Cpolar群晖套件下载地址,下载相应版本的群晖Cpolar套件,如果找不到对应的型号,可以选择相近版本型号套件。
打开群晖套件中心,点击右上角的手动安装按钮。
选择我们本地下载好的cpolar套件安装包,然后点击下一步
点击同意按钮,然后点击下一步
最后点击完成即可。
安装完成后,在外部浏览器,我们通过群晖的局域网ip地址
加9200
端口访问Cpolar的Web管理界面,然后输入Cpolar邮箱账号与密码进行登录,登录后,一切的操作在管理界面完成.
5.创建PlaylistDL音乐下载器的公网地址
登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:
- 隧道名称:可自定义,注意不要与已有的隧道名称重复
- 协议:tcp (这里我们需要选择tcp协议)
- 本地地址:5045 (只使用http端口即可)
- 端口类型:临时随机TCP端口
- 地区:选择China top
点击创建
(点击一次即可,不要重复点击)
创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了tcp公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用//后面的地址在浏览器中访问即可。
现在就已经成功实现使用cpolar生成的公网地址异地远程访问群晖本地部署的PlaylistDL音乐下载器啦!
小结
为了方便演示,我们在上边的操作过程中使用cpolar生成的HTTP公网地址隧道,其公网地址是随机生成的。这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址是随机生成,这个地址在24小时内会发生随机变化,更适合于临时使用。
如果有长期使用PlaylistDL音乐下载器,或者异地访问与使用其他本地部署的服务的需求,但又不想每天重新配置公网地址,还想让公网地址好看又好记并体验更多功能与更快的带宽,那我推荐大家选择使用固定的TCP地址方式来配置公网地址。
6.配置固定公网地址
使用cpolar为其配置二级子域名,该地址为固定地址,不会随机变化。
注意需要将cpolar套餐升级至基础套餐或以上,且每个套餐对应的带宽不一样。【cpolar.cn已备案】
点击左侧的预留,选择保留TCP地址,地区选择china top,然后设置一个二级子域名名称,我这里演示使用的是playlist,大家可以自定义。填写备注信息,点击保留。
保留成功后复制保留的固定TCP地址:
登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑
。
修改隧道信息,将保留成功的二级子域名配置到隧道中
- 端口类型:选择固定TCP端口
- 预留的TCP地址:粘贴刚才保留成功的地址
点击更新
更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的TCP地址。
最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问本地部署的PlaylistDL音乐下载器页面,这样一个永久不会变化的固定TCP地址网址即设置好了。
总结
各位小伙伴,通过这篇教程,你不仅学会了如何在群晖NAS上部署PlaylistDL音乐下载器,还掌握了使用cpolar远程管理私人音乐库的技巧。是不是感觉超级酷炫?快去试试吧!
以上就是如何在黑群晖nas上使用Docker快速部署PlaylistDL音乐下载器,并安装cpolar内网穿透工具配置固定不变的二级子域名公网地址,实现随时随地远程访问的全过程,感谢您的观看,有任何问题欢迎留言交流。
相关文章:
群晖NAS部署PlaylistDL音乐下载器结合cpolar搭建私有云音乐库
文章目录 前言1.关于PlaylistDL音乐下载器2.Docker部署3.PlaylistDL简单使用4.群晖安装Cpolar工具5.创建PlaylistDL音乐下载器的公网地址6.配置固定公网地址总结 前言 各位小伙伴们,你们是不是经常为了听几首歌而开通各种平台的VIP?或者为了下载无损音质…...
Unity光照笔记
问题 在做项目中遇到了播放中切换场景后地面阴影是纯黑的问题,不得不研究一下光照。先放出官方文档。 Lighting 窗口 - Unity 手册 播放中切换场景后地面阴影是纯黑 只有投到地面的阴影是纯黑的。且跳转到使用相同Terrain的场景没有问题。 相关文章:…...
【ROS2】编译Qt实现的库,然后链接该库时,报错:/usr/bin/ld: XXX undefined reference to `vtable for
1、问题描述 在ROS2工程中,编译使用Qt实现的库,在其它ROS2包链接该库时,报错: /usr/bin/ld: XXX undefined reference to `vtable for2、原因分析 查看链接失败的几个函数接口都是,信号函数(signals 标记的函数)。因为信号函数都只有定义,没有实现,在执行ROS2 colc…...
deepseek讲解如何快速解决内存泄露,内存溢出问题
Java内存泄漏与内存溢出解决方案及预防措施 作为Java架构师,处理内存泄漏和内存溢出问题需要系统性的方法。以下是一份完整的解决方案和预防建议: 一、问题诊断阶段 1. 确认内存泄漏现象 监控GC日志,观察老年代使用率是否持续增长使用jst…...
双系统重装ubuntu
双系统ubuntu20.04重装(详细版)_ubuntu20.04安装教程-CSDN博客...
图形语言中间层:重构 AI 编程的未来之路
在软件开发的历史长河中,每一次技术革新都伴随着对效率与可控性的重新定义。当 ChatGPT、GitHub Copilot 等 AI 工具以自然语言生成代码的惊艳表现叩响编程世界的大门时,人们曾满怀憧憬地期待一个 “无代码” 的黄金时代 —— 只需用日常语言描述需求&am…...
Ubuntu操作合集
UFWUncomplicated Firewall 查看状态和规则: 1查看状态sudo ufw status, 2查看详细信息sudo ufw status verbose, 默认策略配置: 1拒绝所有入站sudo ufw default deny incoming 2允许所有出战sudo ufw default allow outgoing …...
张量与Python标量:核心区别与计算图断开解析
张量与Python标量的核心区别 张量(Tensor) 是PyTorch中的核心数据结构,类似于多维数组: 支持GPU加速计算跟踪计算历史(用于自动求导)可以包含多个元素Python标量(int/float) 是普通的Python数值类型: 不支持GPU加速没有计算历史记录单个独立数值计算图断开的原因 Py…...
U9C与钉钉审批流对接完整过程
U9C 功能强大,然而在移动办公和审批流方面存在一定不足。为了弥补这一缺陷,不少企业在使用 U9C 的同时,会选择开通钉钉这类 OA 管理系统。不过,两套系统并行使用时,数据同步问题便随之而来。目前,常见的做法…...
双重差分模型学习笔记4(理论)
【DID最全总结】90分钟带你速通双重差分!_哔哩哔哩_bilibili 目录 总结:双重差分法(DID)在社会科学中的应用:理论、发展与前沿分析 一、DID的基本原理与核心思想 二、经典DID:标准模型与应用案例 三、…...
【Pandas】pandas DataFrame diff
Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…...
什么是Agentic AI(代理型人工智能)?
什么是Agentic AI(代理型人工智能)? 一、概述 Agentic AI(代理型人工智能)是一类具备自主决策、目标导向性与持续行动能力的人工智能系统。与传统AI系统依赖外部输入和显式命令不同,Agentic AI在设定目标…...
记录算法笔记(2025.5.15)二叉树的层序遍历
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 示例 2: 输入…...
2025 Java 微信小程序根据code获取openid,二次code获取手机号【工具类】拿来就用
一、controller调用 /*** 登录** author jiaketao* since 2024-04-10*/ RestController RequestMapping("/login") public class LoginController {/*** 【小程序】登录获取session_key和openid** param code 前端传code* return*/GetMapping("/getWXSessionKe…...
2021-10-25 C++三的倍数含五
缘由含数字五且是三的倍数-编程语言-CSDN问答 void 三的倍数含五() {//缘由https://ask.csdn.net/questions/7544132?spm1005.2025.3001.5141int a 3, aa a;while (a < 10000){if (aa)if (aa % 10 5)std::cout << a << std::ends, aa a 3; else aa / 10;…...
编程日志5.8
二叉树练习题 1.965. 单值二叉树 - 力扣(LeetCode) /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) :…...
Vue.js---避免无限递归循环 调度执行
4.4 避免无限递归循环 什么情况下会无限递归? 01 const data { foo: 1 } 02 const obj new Proxy(data, { /*...*/ }) 03 04 effect(() > obj.foo)例如这种情况,它会反复设置添加一直到栈溢出 首先读取obj.foo 的值,这会触发 track 操…...
AI大模型学习二十四、实践QEMU-KVM 虚拟化:ubuntu server 25.04 下云镜像创建Ubuntu 虚拟机
一、说明 虽然说大部分的场合,docker都能解决问题,但是有些大型的软件安装时如果修改配置会很麻烦,比方说前面遇到的code-server和dify 默认都是80和443端口要使用,安装在一起就会端口冲突,通过该端口来解决问题&#…...
Lovart:首个AI设计智能体
今天介绍一款AI设计智能体——Lovart,能调用各种绘画API和视频API,也能调用LibLib上的Flux和LoRA,并且智能体的编排效果确实很好,产出效果比豆包和ChatGPT都好,可以说没有竞品。视频为效果演示,官网有更多案…...
Trae 插件 Builder 模式:从 0 到 1 开发天气查询小程序,解锁 AI 编程新体验
在软件开发领域,效率与创新始终是开发者追求的核心目标。Trae 插件(原 MarsCode 编程助手)Builder 模式的全面上线,无疑为开发者带来了全新的解决方案。它不仅同时支持 VS Code、JetBrains IDEs 等主流开发环境,还能让…...
解决ubuntu20中tracker占用过多cpu,引起的风扇狂转
track是linux中的文件索引工具,ubuntu18之前是默认不安装的,所以在升级到20后会默认安装,它是和桌面程序gnome绑定的,甚至还有很多依赖项,导致无法删除,一旦删除很多依赖项都不能运行,禁用也很难…...
解码生命语言:深度学习模型TranslationAI揭示RNA翻译新规则
RNA翻译是基因表达的核心环节,其精确调控依赖于翻译起始位点(TIS)和终止位点(TTS)的准确识别。传统方法依赖于简单的经验规则(如Kozak序列或最长开放阅读框ORF),但忽略了RNA结构、顺…...
20250515测试飞凌的OK3588-C的核心板在Linux R4下适配以太网RTL8211F-CG时跑iperf3的极速
20250515测试飞凌的OK3588-C的核心板在Linux R4下适配以太网RTL8211F-CG时跑iperf3的极速 2025/5/15 14:47 缘起:让飞凌的OK3588-C的核心板在Linux R4下,想看看以太网RTL8211F-CG的极速。 于是在飞凌的OK3588-C的核心板上,iperf3的收发一起跑…...
在Linux内安装虚拟机安装vmnet.tar 报错
编译报错如下: /usr/lib/vmware/modules/source/vmnet-only/userif.c: 在函数‘VNetCsumCopyDatagram’中: /usr/lib/vmware/modules/source/vmnet-only/userif.c:88:39: 错误:‘skb_frag_t {或称 const struct bio_vec}’ has no member named ‘page_offset’; di…...
CodeBuddy编程新范式
不会写?不想写? 腾讯推出的CodeBuddy彻底解放双手。 示例 以下是我对CodeBuddy的一个小体验。 我只用一行文字对CodeBuddy说明了一下我的需求,剩下的全部就交给了CodeBuddy,我需要做的就是验收结果即可。 1.首先CodeBuddy会对任…...
ESP32简介及相关使用
乐鑫官网: 无线通信 SoC、软件、云和 AIoT 方案|乐鑫科技 (espressif.com) 简介 ESP32 是由 乐鑫科技(Espressif Systems) 推出的一款高性能、低功耗的 Wi-Fi & 蓝牙双模物联网(IoT)芯片,广…...
全志F10c200开发笔记——移植uboot
相关资料: (二)uboot移植--从零开始自制linux掌上电脑(F1C200S)<嵌入式项目>-CSDN博客 F1C200S挖坑日记(3)——Uboot编译篇_f1c200s uboot-CSDN博客 一、安装编译器 Linaro Rele…...
解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs- Manus解密
解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs- Manus解密 那你当前这个步骤执行完成之后,这边说了一个非常重要的点?每次迭代只选择一个工具,这个可能对大家感觉有点反直觉,可能大家立即选择分…...
理解c++中关键字友元friend的作用
理解c中关键字友元friend的作用 friend 关键字在 C 中用于声明一个函数或类为另一个类的友元。 友元函数或友元类可以访问该类的私有(private)和保护(protected)成员。 友元函数 作用: 允许非成员函数访问私有成员&…...
【学习心得】2025年Docker Desktop安装记录
1、docker的官方网站,已进入就可以看到下载按钮,无脑点击下载!英特尔的CPU所以选择AMD64 2、双击安装,默认的勾选不用改 Docker Desktop 4.40.0安装过程中的配置选项窗口 Use WSL 2 instead of Hyper-V (recommended)(…...
数据结构——例题2
1.在线性表中,除了开始元素外,每个元素(A) A.只有唯一的前驱元素 B.只有唯一的后继元素 C.有多个前驱元素 D.有多个后继元素 2.在一个长度为n的顺序表中删除第i个元素(1<i<n)时,需向前…...
python开发api平台雏形
api平台雏形 一、Django基本配置 1.1使用pycherm创建项目 1.2 运行项目 1.3 创建app python.exe .\manage.py startapp cmdb1.4 settings.py添加app 1.5 settings.py设置数据库 DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: devopsapi,USER: root,PASSWO…...
Android Development Roadmap
🔧 Android Development Roadmap (Practical First → Theory Later) Here’s a lean, real-world roadmap tailored to the mindset — build-first, theory-when-needed: 🟢 Stage 1: Core Setup & Workflow (Done ✅) ✅ Install Android Studio…...
将.pt文件执行图像比对
目录 1. 加载模型 2. 图像预处理 3. 提取图像特征 4. 计算相似度 调用API或封装函数即可实现端到端比对 使用.pt文件进行图像比对通常涉及以下步骤: 1. 加载模型 python import torch# 假设模型是PyTorch保存的权重文件 model YourModelClass() # 需与保存时…...
西门子S7-1200 MC卡使用方法及故障现象分析
一、S7 1200 MC卡 S7 1200系列PLC使用的存储卡为SD卡,也被称为MC卡 ,支持4M、12M、24M、256M、2G以及32G等不同容量规格。它可作为程序卡、传送卡,还能用于更新硬件及解除密码,在S7 1200的系统运行和维护中扮演着重要角色。 二…...
5.重建大师数据管理模块介绍
摘要:本文主要介绍重建大师数据管理模块,包含:照片、点云数据可视化管理工具。 数据管理界面主要包含工具栏、可视化界面和照片组列表三部分。 图 数据管理界面 1.工具栏 工具栏包含以下功能按钮,包含添加照片、视频、点云、控制…...
BUUCTF——shrine
BUUCTF——shrine 进入靶场 只有一串代码 import flask import os app flask.Flask(__name__) app.config[FLAG] os.environ.pop(FLAG) #程序从环境变量 FLAG 读取一个敏感值,并存储在 app.config[FLAG] 中。 #安全问题:如果攻击者能访问 app.con…...
基于FPGA的车速检测系统仿真设计与实现
标题:基于FPGA的车速检测系统仿真设计与实现 内容:1.摘要 本文旨在设计并实现基于FPGA的车速检测系统仿真。随着汽车行业的快速发展,精确的车速检测对于车辆的安全性和性能评估至关重要。本研究采用FPGA作为核心处理单元,结合传感器数据采集与处理技术进…...
STM32 DMA技术深度解析:从原理到实战应用讲解
知识点1【DMA的介绍】 直接内存访问(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输,无需CPU的干预,数据可以通过DMA快速地移动,这就节省了CPU的资源,来做其他的操作——提高CPU的效…...
模仿学习笔记
模仿学习总共分两类: 行为克隆:BC,Dagger逆强化学习:又分为 2.1基于最大边际逆强化学习 (无法主要歧义问题):学徒学习 2.2 基于最大熵逆强化学习 (主要解决歧义问题):GAIL 学徒学习 基于最大熵…...
论文学习_Directed Greybox Fuzzing
摘要:现有的灰盒模糊测试工具(Greybox Fuzzers,简称GF)在测试引导性方面存在明显不足,比如难以有效地将测试引导至特定的高风险变更或补丁、关键系统调用、危险代码位置,或是试图重现漏洞时涉及的堆栈追踪中…...
《MySQL:MySQL视图特性》
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响基表,基表的数据变化也会影响视图。 创建视图 create view 视图名 as select语句; 删除视图 drop view 视图名; 视图规则与限…...
Flutter——数据库Drift开发详细教程(六)
目录 1.视图2.视图中列的可空性3.DAO4.流查询5.高级用途6.注意事项 1.视图 也可以将SQL 视图定义 为 Dart 类。为此,请编写一个抽象类来扩展View。此示例声明了一个视图,用于读取示例中架构中某个类别中添加的待办事项数量: abstract class C…...
PCIe数据采集系统
PCIe数据采集系统 一、模块功能划分与职责 1. 时钟管理模块 (clock_manager) 核心功能: 生成系统所需的多时钟信号(100MHz 系统时钟、125MHz PCIe 时钟、200MHz DDR3 时钟)。 关键接口: 输入:系统主时钟 sys_clk、P…...
mac docker弹窗提示Docker 启动没有响应
一、原因分析 这台笔记电脑是Mac M3操作系统,安装Docker之后,Docker应用程序一直启动不起来。 二、解决办法 sudo rm /Library/PrivilegedHelperTools/com.docker.vmnetd sudo cp /Applications/Docker.app/Contents/Library/LaunchServices/com.docker.vmnetd /Library/Pri…...
TVS管用万用表测量方法详解(含二极管档使用指南)
点击下面图片带您领略全新的嵌入式学习路线 🔥爆款热榜 88万阅读 1.6万收藏 TVS管(瞬态抑制二极管)是一种用于保护电路免受瞬态高电压冲击的半导体器件。其核心功能是通过快速导通将过压钳位在安全范围内。本文将重点介绍如何用万用表测量…...
当下流行的智能体通信协议:MCP、A2A、ANP 分别是什么?
在当前人工智能(AI)智能体生态系统中,智能体之间的有效沟通至关重要。为了让AI智能体能够高效、安全地协同工作,业界提出了多种通信协议。其中,MCP、A2A 和 ANP 代表了三个关键层级的通信协议,各自应对不同…...
中国近代史2
甲午中日战争(1894-1895) 1.开始的标志:丰岛海战 2.进程 平壤之战:清军统帅叶志超不战而降,回民将领左宝贵以身殉职 黄海海战(大东沟海战):北洋水师黄海遭遇日本舰队,水…...
Ubnutu ADB 无法识别设备的解决方法
1. 正确安装adb 下载地址 2. 检查 Linux 是否识别设备 lsusb通过上述指令,分别查询插入、断开设备的usb设备表,如下所示: # 插入设备 adbc:~$ lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 011:…...
基于策略的强化学习方法之近端策略优化(PPO)深度解析
PPO(Proximal Policy Optimization)是一种基于策略梯度的强化学习算法,旨在通过限制策略更新幅度来提升训练稳定性。传统策略梯度方法(如REINFORCE)直接优化策略参数,但易因更新步长过大导致性能震荡或崩溃…...