Next.js + Droplet:高并发视频内容平台部署与优化扩展实战
在构建在线服务时,无论你是开发者还是企业技术负责人,扩展性和稳定性始终是绕不开的核心挑战。尤其在涉及高并发访问、大量数据传输和持续内容分发的场景中,系统架构的设计直接决定了用户体验与业务成效。
本文将以视频点播(Video-on-Demand, VoD)平台为案例,深入解析一套可复用的技术方案,帮助你了解如何基于 DigitalOcean Droplets 构建、部署并扩展支持大规模访问的在线服务架构。虽然示例聚焦在 OTT(Over-the-Top) 视频平台,但这套方法同样适用于其他典型业务场景,例如:
- 在线教育平台需支持高清视频课程播放;
- 企业内部培训系统需要稳定传输与权限管理;
- 创作者社区需承载高频上传与分发;
- 电商或品牌网站希望引入视频营销内容。
通过这篇文章,你将了解如何:
- 构建支持高质量视频流的服务体系;
- 应对用户激增时的负载挑战,避免服务宕机;
- 灵活管理带宽与存储,确保资源高效利用;
- 保持系统弹性与成本可控,支持业务持续增长。
无论你正在优化现有架构,还是计划构建下一代内容平台,本文都将提供一套值得借鉴的思路和实践经验。话不多说,我们正式开始。
前提条件
- 一个 DigitalOcean 账户,用于创建 Droplets。
- 对 Next.js 有基本了解(如果您还需要构建一个基于 Next.js 的应用;否则,您可以直接 fork 和克隆本文提到的 GitHub 仓库进行测试)。
在我们开始构建之前,让我们首先了解像 Netflix 这样的流媒体平台是如何工作的。为了将内容交付给数百万用户,他们依赖于强大的服务器。我们也将通过 DigitalOcean Droplets 创建自己的服务器。
什么是 DigitalOcean Droplets?
DigitalOcean Droplet 是一个基于 Linux 的虚拟机(VM),运行在 DigitalOcean 的云基础设施上。可以将它看作是您在云端的虚拟服务器,可以独立使用,也可以作为更大的云基础设施的一部分使用。
每个 Droplet 都是一个完全功能的服务器,拥有自己的 CPU、RAM 和 SSD 存储。您可以根据需求选择各种配置(大小),从基础型(basic)的 1GB RAM / 1 vCPU 设置到性能更好的 32GB RAM / 16 vCPU 机器。您可以通过 DigitalOcean 的控制面板或 API 轻松调整大小、备份和管理 Droplets(我们将在本文后面部分中看到这些操作)。另外,我们也曾在博客中介绍过不同类型DigitalOcean Droplet 的配置与适用场景,可浏览往期内容进一步了解。
了解我们的视频点播应用的工作原理
设置很简单:我们有一个基于 Next.js 的前端、来自 DigitalOcean 的服务器以及访问它的客户端(用户)。
具体流程如下:
- 用户通过浏览器或移动设备访问应用;
- 所有请求由一个 DigitalOcean Droplet 处理;
- 这个 Droplet 运行以下内容:
- 提供前端和 API 的 Next.js 应用;
- 用于存储上传内容的视频库。
以下是流程架构图:
这个设置比 Netflix 的基础设施简单得多,后者需要多个区域的多台服务器来服务数百万用户。在后面的章节中,我们将讨论如何升级 Droplet,以处理更多的并发用户并加快视频处理速度。
在 DigitalOcean Droplet 上部署 Next.js 应用
本文示例中的视频点播平台是用 Next.js 构建的,我们将展示如何克隆它并将其托管在 Droplet 上。
1、从 GitHub fork 和克隆仓库,然后进入“设置”,在“部署密钥”下添加使用 ssh-keygen
命令生成的 SSH 密钥。
2、创建一个 $12/月的基础型(Basic)的 Droplet 来托管我们的应用。
3、Droplet 创建完成后,使用命令 ssh root@ipaddress
连接它,然后运行以下命令进行准备工作:
# 更新并安装 Node.js
sudo apt update && sudo apt upgrade -y
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs nginx# 安装 PM2 进行进程管理
sudo npm install -g pm2
4、配置 Nginx 以运行 Next.js 应用:
# 创建 Nginx 配置
sudo nano /etc/nginx/sites-available/video-on-demand
添加以下内容:
server {listen 80;server_name yourip;location / {proxy_pass http://localhost:3000;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection 'upgrade';proxy_set_header Host $host;proxy_cache_bypass $http_upgrade;}
}
启用站点并重启 Nginx:
sudo ln -s /etc/nginx/sites-available/video-on-demand /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl restart nginx
如果 Nginx 配置正确,当你运行 sudo nginx -t
命令时,你会看到以下输出:
接下来的步骤是克隆 GitHub 仓库。我们复制下图中显示的 SSH 链接,然后运行以下命令来启动并运行它:
https://github.com/Haimantika/video-on-demand
# 设置应用
git clone git@github.com:Haimantika/video-on-demand.git
cd frontend
npm install
npm run build
最后一步是通过 IP 地址访问应用,为此我们将使用 PM2。你可以通过命令 npm install -g pm2
安装它,然后使用以下命令通过 PM2 运行应用:
# 使用 PM2 启动
cd /var/www/video-on-demand/frontend
pm2 start npm --name "video-on-demand" -- start
pm2 save
pm2 startup
如果你想了解更多关于在 DigitalOcean Droplet 上部署 Next.js 应用的内容,可以参考教程 在 DigitalOcean Droplet 上部署 Next.js 应用。
现在我们的点播视频应用已经在基础 Droplet 上运行了。让我们了解它如何表现,以及何时可能需要升级。一个很好的例子是为什么服务器配置很重要,比如 Mike Tyson 和 Jake Paul 的比赛,Netflix 遭遇了缓冲、卡顿和崩溃等问题。虽然上传内容与直播的工作方式不同,但服务器配置至关重要,尤其是在处理大量观众激增以及防止崩溃和缓冲问题时。
添加负载均衡器
通常,扩展像这样的应用的第一步是添加负载均衡器。由于它能够分配传入流量并为应用提供单一入口点,因此更容易扩展。要为你的 Droplet 添加负载均衡器,请按照教程《如何创建区域负载均衡器》中提到的步骤操作。
当你成功为 Droplet 添加负载均衡器后,你会在控制面板中看到以下内容:
通过这种方式,你现在可以更好地管理流量,提高响应时间,实现 SSL 终止和健康监控。
处理更多上传的垂直扩展
虽然负载均衡器在分配流量方面表现出色,但你需要垂直扩展来处理更多的上传和视频处理任务。垂直扩展意味着将现有的 Droplet 升级为更大的配置,类似于升级计算机的硬件。这可以提供更高的 CPU 性能来处理上传任务,更多的 RAM 来处理并发请求,以及更快的磁盘 I/O 来存储视频。此外,垂直扩展在处理大文件上传方面表现更好,并且在访问库时具有更快的响应时间。
让我们通过示例和基准测试来理解这一点,并比较基础 Droplet 和高级 Droplet 的性能。
基准测试我们的视频点播应用
在本节中,我们将看到应用在不同 Droplet 配置上的性能表现。我们将比较两种 Droplet 的性能:普通 Intel(1 个 vCPU/2 GB 内存)价格为每月 12 美元,以及高级 Intel(2 个 vCPU/4 GB 内存)价格为每月 32 美元。
以下是我们在升级前和升级后的对比:
要了解如何调整 Droplet 的大小,请参考教程《如何调整 Droplet 的大小以实现垂直扩展》。
为了进行基准测试,我们将使用以下指标:
- CPU 性能测试(sysbench)
- 磁盘性能测试(fio)
- 网络速度测试(speedtest-cli)
- 并发用户负载测试(Apache Benchmark)
- 首字节时间(TTFB)
CPU 性能测试(sysbench)
这衡量服务器处理计算任务的处理能力和效率。
为了测试 Droplet 的 CPU 性能,我们将使用以下命令:
sudo apt update && sudo apt install -y sysbench
sysbench cpu run --threads=4 --time=30
比较结果如下:
指标 | 基础 Intel(12 美元) | 高级 Intel(32 美元) | 提升幅度 |
每秒事件数 | 413.50 | 958.68 | 2.32 倍 |
总事件数(30 秒) | 12,408 | 28,766 | 2.32 倍 |
平均延迟 | 9.64 毫秒 | 4.16 毫秒 | 响应时间快约 57% |
95 百分位延迟 | 14.21 毫秒 | 10.27 毫秒 | 稳定性提高 28% |
最大延迟 | 22.63 毫秒 | 33.53 毫秒 | 峰值更高,但平均值更好 |
线程公平性(标准差) | 1.87 | 115.63 | 高级 Droplet 分配工作更好 |
从表中可以看出,高级 Droplet 的 CPU 性能约快 2.3 倍,平均响应时间降低 57%,在高负载下具有更好的稳定性。由于视频点播应用通常处理高流量和 CPU 密集型任务(如视频处理),升级 Droplet 可显著提高性能。
磁盘性能测试(fio)
这评估存储的读写速度和 IOPS(每秒输入/输出操作数),用于视频上传和存储。
为了进行磁盘性能测试,我们将使用以下命令:
sudo apt install -y fio
fio --name=randrw --rw=randrw --bs=4k --size=1G --numjobs=4 --runtime=60s
基础 Intel 和高级 Intel Droplet 的对比结果如下:
指标 | 基础 Droplet(1 个 vCPU) | 高级 Droplet(2 个 vCPU) | 提升幅度 |
读取速度 | 21.9 MiB/s (22.9 MB/s) | 38.9 MiB/s (40.8 MB/s) | 约快 77% |
写入速度 | 21.9 MiB/s (22.9 MB/s) | 39.0 MiB/s (40.9 MB/s) | 约快 78% |
平均 IOPS | 1414.82 | 2501.28 | 约高 76.7% |
平均延迟(微秒) | 9.64 毫秒 | 4.16 毫秒 | 约低 57%(更好) |
磁盘利用率 | 32.59% | 61.01% | 高级 Droplet 资源利用率更高 |
从表中可以看出,高级 Intel Droplet 在获取视频、视频上传和存储操作方面表现更好,并且每秒可以处理更多的 I/O 操作,这对于视频密集型应用来说是理想的。
网络速度测试(speedtest-cli)
这测试上传/下载速度和延迟,用于视频流传输。
为了进行网络速度测试,我们运行以下命令:
sudo apt install -y speedtest-cli
speedtest-cli
在基础 Intel Droplet 和高级 Intel Droplet 上运行时,我们得到以下结果:
指标 | 基础 Intel | 高级 Intel | 提升幅度 |
延迟(Ping) | 3.398 毫秒 | 2.019 毫秒 | 约低 40.6%(更好) |
下载速度 | 1449.83 Mbit/s | 4976.82 Mbit/s | 约快 3.4 倍 |
上传速度 | 976.40 Mbit/s | 1939.47 Mbit/s | 约快 2 倍 |
对于需要快速内容交付的视频点播应用,高级 Intel Droplet 带来了更好的结果,因为它具有 3.4 倍的下载速度、2 倍的上传速度和更低的延迟。
并发用户负载测试(Apache Benchmark)
并发负载测试模拟多个用户,以衡量服务器处理同时连接的能力。
我们使用以下命令对应用进行了 100 个用户的负载测试:
sudo apt install -y apache2-utils
ab -n 1000 -c 100 http://yourdomain.com/video.mp4
测试结果如下:
指标 | 基础 Droplet(12 美元) | 高级 Droplet(32 美元) | 提升幅度 |
每秒请求数 | 8.06 [#/秒] | 3716.82 [#/秒] | 吞吐量显著提高 |
每请求时间(平均) | 12402.048 毫秒 | 26.905 毫秒 | 响应时间大幅缩短 |
每请求时间(并发) | 124.020 毫秒 | 0.269 毫秒 | 高效处理并发请求 |
传输速率 | 404.28 KB/秒 | 1622.48 KB/秒 | 数据传输速度更快 |
处理时间 | 333 / 11845 / 15185 | 6 / 14 / 36 | 处理时间减少 |
等待时间 | 290 / 11706 / 15100 | 5 / 11 / 35 | 请求等待时间最少 |
这表明,高级 Intel Droplet 更快,能够高效处理高负载,而基础 Intel Droplet 在并发流量下表现不佳,不适合扩展到更多用户。
首字节时间(TTFB)
这是为了衡量服务器开始向用户发送数据的速度。
为了测试首字节时间,我们使用以下命令:
curl -o /dev/null -s -w "%{time_starttransfer}\\n" http://yourdomain.com/video.mp4
基础 Droplet 的 TTFB 为 3.5299 秒,而高级 Droplet 的 TTFB 为 0.8217 秒。这意味着高级 Droplet 在响应初始请求方面快了 4 倍。
结论
我们的基准测试结果显示,从基础 Droplet 升级到高级 Droplet 后性能显著提升。高级 Droplet 表现出:
- 视频处理的 CPU 性能快 2.3 倍
- 视频存储的磁盘操作快 77%
- 内容交付的下载速度快 3.4 倍
- 更好地处理并发用户
- 初始响应时间快 4 倍
这些改进转化为更好的用户体验,特别是在处理多个视频上传或同时为许多用户交付内容时。
以上就是本次教程内容。DigitalOcean云服务以简单易用和价格实惠而广受开发者青睐,欢迎免费试用。同时,如果你是亚洲地区的企业,如果在使用DigitalOcean时遇到技术问题,或者是希望迁移到DigitalOcean,或做多云部署需要建议,欢迎直接联系DigitalOcean中国区独家战略合作伙伴卓普云。
相关文章:
Next.js + Droplet:高并发视频内容平台部署与优化扩展实战
在构建在线服务时,无论你是开发者还是企业技术负责人,扩展性和稳定性始终是绕不开的核心挑战。尤其在涉及高并发访问、大量数据传输和持续内容分发的场景中,系统架构的设计直接决定了用户体验与业务成效。 本文将以视频点播(Video…...
django寻味美食分享与交流网站-计算机毕业设计源码74984
摘 要 美食分享与交流网站是当前社交网络领域的一个热门话题。本研究旨在探讨用户在美食分享网站上的行为和互动模式,以及他们分享和获取美食信息的动机和方式。通过对美食分享网站上用户发文内容和互动数据的分析,揭示了用户在美食分享中的需求和行为规…...
把读写函数里的printf 打印到文件里
使用 fprintf 函数 将输出目标从标准输出(stdout)更改为一个文件指针 1、首先,在头文件或全局变量中定义一个 FILE 类型的指针,用于指向输出文件。 2、在程序启动时,打开文件并将文件指针赋值给上面定义的全局指针。…...
在idea中看spring源码
一、搭建环境 1.1 下载源码到本地 在github中找到spring-framework项目,或者这个地址(https://github.com/spring-projects/spring-framework) 然后把项目下载到本地目录,如图 1.2 然后用idea打开这个项目 1.3 然后等构建&…...
用最简单的方式讲述离散傅里叶级数(DFS)以及离散傅立叶变换(DFT)
文章目录 前言 一、傅里叶变换的多种形式 二、浅谈离散傅里叶级数(DFS) 三、浅谈离散傅里叶变换(DFT) 总结 前言 本文对四种不同的傅里叶变换做了总结与梳理,并针对其中存在联系的形式做了推导。接着又讲述了离散傅里叶…...
python基础语法14-多线程与多进程
Python 多线程与多进程详解 在 Python 中,多线程和多进程是常用的并发编程技术,它们可以帮助程序在处理大量任务时提高效率。Python 提供了多个模块来支持多线程和多进程的开发,包括 threading、multiprocessing 和 asyncio。本文将详细介绍…...
深入解析策略模式在C#中的应用与实现
策略模式(Strategy Pattern)是一种行为型设计模式,它通过将一系列算法封装成不同的策略类,使得算法的选择和使用可以在运行时动态改变,且算法的变化对使用者透明。这种模式可以显著减少程序中的条件判断(如…...
ios按键精灵脚本开发游戏辅助工具的代码逻辑
iOS 按键精灵使用 MQ 语言开发游戏脚本,其代码逻辑围绕游戏内的各种操作展开。我将从常见的游戏操作,如点击、移动等方面, 点击操作逻辑 在游戏中,点击操作是最基础的交互方式之一。比如要实现点击游戏界面上某个固定位置的 “…...
Pycharm(十三)容器类型的公共运算符和公共方法
一、容器类型的公共运算符 这些运算符是可以作用到 容器类型 中的。 常见的如下: :拼接,适用于字符串、列表、元组; *:复制,适用于字符串、列表、元组; in:是否包含,适用于字符串、列表、元…...
Backtrader从0到1——第一个回测策略
Backtrader从0到1——第一个回测策略 0. 前言1. lines && index2. 生成大脑3. 设置起始资金和佣金4. 添加数据(重点)5. 第一个策略——双均线5.1 策略类5.2 策略参数5.3 添加指标5.4 买卖与订单order5.5 完整策略代码 0. 前言 本人翻阅了大量资料…...
GPT - 因果掩码(Causal Mask)
本节代码定义了一个函数 causal_mask,用于生成因果掩码(Causal Mask)。因果掩码通常用于自注意力机制中,以确保模型在解码时只能看到当前及之前的位置,而不能看到未来的信息。这种掩码在自然语言处理任务(如…...
lombok的坑
我使用lombok的Data注解带来的坑。 代码如下: 公共类: package com.tyler.oshi.common;import lombok.Data; import lombok.NoArgsConstructor;/*** author: TylerZhong* description:*/Data NoArgsConstructor public class R {private int code;priv…...
基于Python的网络爬虫技术研究
基于Python的网络爬虫技术研究 以下从多个方面为你介绍基于 Python 的网络爬虫技术: 概述 网络爬虫是一种自动获取网页内容的程序,在 Python 中可以借助诸多强大的库和工具实现。网络爬虫能应用于数据采集、搜索引擎、舆情监测等众多领域。 核心库 …...
微信小程序跳6
//金额格式化 rmoney: function(money) { return parseFloat(money).toFixed(2).toString().split().reverse().join().replace(/(\d{3})/g, $1,) .replace( /\,$/, ).split().reverse().join(); }, daysUntil: function(milliseconds) { const endDate new Date(milliseconds…...
项目1笔记
Data Data 是一个常用的 Lombok 注解,主要用于 Java 类中,可以自动生成以下内容: Getter(所有字段) Setter(所有非 final 字段) toString() 方法 equals() 和 hashCode() 方法 无参构造函…...
分享:批量识别图片文字并重命名,根据图片文字内容对图片批量重命名,Python和Tesseract OCR的完成方案
一、项目背景 在日常工作中,处理大量图片文件时,常常需要从图片中提取文字信息,并根据提取的文字对图片进行重命名。传统的手动操作方式效率低下且容易出错。通过OCR(光学字符识别)技术,可以自动从图片中提取文字信息,并基于提取的文字对图片进行批量重命名。 Tesserac…...
【安全】加密算法原理与实战
为了理解SSL/TLS原理,大家需要掌握一些加密算法的基础知识。当然,这不是为了让大家成为密码学专家,所以只需对基础的加密算法有一些了解即可。基础的加密算法主要有哈希(Hash,或称为散列)、对称加密(Symm…...
STM32STM8芯片擦除与读保护
连接STM单片机与断开单片机连接, 点击擦除就可以了。 文件选HEX在选择Verify进行下载。...
Qwen2.5技术报告阅读
论文概述 ⸻ 🧠 1. 模型概述 Qwen2.5 是阿里巴巴推出的一系列大语言模型(LLMs),在 预训练数据量 和 后训练方法 上都比前一代 Qwen2 有了显著提升。 ⸻ 📈 2. 模型特点 • 预训练数据量提升:从 7 万亿…...
HDCP(二)
HDCP加密算法实现详解 HDCP(高带宽数字内容保护)的加密算法实现涉及对称加密、密钥派生、动态同步机制等核心环节,其设计兼顾实时性与安全性。以下从算法类型、流程实现、硬件集成等角度展开分析: 1. 加密算法类型与版本差异 •…...
POSIX线程(pthread)库:线程的终止与管理
在POSIX线程(pthread)库中,线程的终止和管理涉及多个关键函数。以下是关于线程终止的pthread系列函数的详细介绍: 1. pthread_exit:线程主动退出 ✨ 功能: 允许线程主动终止自身,并返回一个退出…...
Elasticsearch 系列专题 - 第三篇:搜索与查询
搜索是 Elasticsearch 的核心功能之一。本篇将介绍如何构建高效的查询、优化搜索结果,以及调整相关性评分,帮助你充分发挥 Elasticsearch 的搜索能力。 1. 基础查询 1.1 Match Query 与 Term Query 的区别 Match Query:用于全文搜索,会对查询词进行分词。 GET /my_index/_…...
【AI提示词】Emoji风格排版艺术与设计哲学
提示说明 Emoji风格排版艺术与设计哲学。 提示词 请使用 Emoji 风格编辑以下段落,该风格以引人入胜的标题、每个段落中包含表情符号和在末尾添加相关标签为特点。请确保保持原文的意思。使用案例(春日穿搭) 🌸 2025春季穿搭灵…...
C语言 ——— 认识C语言
认识 main 函数 main 函数是程序的入口,程序执行时会从 main 函数的第一行开始执行,且一个工程中 main 函数有且只有一个 标准的 main 函数格式: int main() {return 0; } int 是类型,这里指的是 main 函数的返回类型 return…...
44、Spring Boot 详细讲义(一)
Spring Boot 详细讲义 目录 Spring Boot 简介Spring Boot 快速入门Spring Boot 核心功能Spring Boot 技术栈与集成Spring Boot 高级主题Spring Boot 项目实战Spring Boot 最佳实践总结 一、Spring Boot 简介 1. Spring Boot 概念和核心特点 1.1、什么是 Spring Boot&#…...
STM32硬件IIC+DMA驱动OLED显示——释放CPU资源,提升实时性
目录 前言 一、软件IIC与硬件IIC 1、软件IIC 2、硬件IIC 二、STM32CubeMX配置KEIL配置 三、OLED驱动示例 1、0.96寸OLED 2、OLED驱动程序 3、运用示例 4、效果展示 总结 前言 0.96寸OLED屏是一个很常见的显示模块,其驱动方式在用采IIC通讯时,常用软件IIC…...
Android 中绕过hwbinder 实现跨模块对audio 的HAL调用
需求 Audio 模块中专门为 TV 产品添加了一些代码,需要在 hdmi 的 HAL 代码中进行调用以完成某些功能。 解决方法 首先将 hdmi HAL 要调用的 audio 接口函数所在的 .so 链接到最基本的 lib.primay.amlogic.so 中(其它平台上这个 .so 文件的名字也可能是…...
基于单片机技术的手持式酒精检测电路设计
基于STC89C52单片机的酒精检测仪设计 目录 基于STC89C52单片机的酒精检测仪设计一、简介二、酒精测试仪总体方案设计2.1 酒精检测仪设计要求分析2.2 设计框图 三、硬件设计3.1 酒精检测电路3.2 模数转换电路3.3 STC89c52单片机电路3.4 LED显示电路3.5 声光报警电路3.6 按键和复…...
【车道线检测(0)】卷首语
车道线检测领域,早期的LaneNet、CondLaneNet等模型。现在在精度、实时性、复杂场景适应性等方面有了更多进展。 Head(输出头)的设计角度分类 在车道线检测任务中,Head(输出头)的设计角度直接影响模型的…...
记一次某网络安全比赛三阶段webserver应急响应解题过程
0X01 任务说明 0X02 靶机介绍 Webserver(Web服务器)是一种软件或硬件设备,用于接收、处理并响应来自客户端(如浏览器)的HTTP请求,提供网页、图片、视频等静态或动态内容,是互联网基础设施的核心…...
AI 越狱技术剖析:原理、影响与防范
一、AI 越狱技术概述 AI 越狱是指通过特定技术手段,绕过人工智能模型(尤其是大型语言模型)的安全防护机制,使其生成通常被禁止的内容。这种行为类似于传统计算机系统中的“越狱”,旨在突破模型的限制,以实…...
项目进度延误的十大原因及应对方案
项目进度延误主要源于以下十大原因:目标不明确、需求频繁变更、资源配置不足或不合理、沟通不畅、风险管理不足、缺乏有效的项目监控、技术难题未及时解决、团队协作效率低下、决策链过长、外部因素影响。其中,需求频繁变更是导致延误的关键因素之一&…...
瑞友客户端登录GS_ERP时,报错: 由于安全许可证服务器不能提供许可证,连接被中断的解决方法
瑞友客户端登录GS_ERP时,报错:由于安全许可证服务器不能提供许可证,连接被中断的解决方法 瑞友客户端登录GS_ERP时, 报错:由于安全许可证服务器不能提供许可证,连接被中断的解决方法是由于远程桌面连接协议…...
android wifi通过命令行打开2.4G热点
android系统支持2G和5G,但车机系统应用只支持5G,但是需要测试2.4G的射频 方法如下: 1、adb shell 进去,su 指定root权限,确保热点处于关闭状态 2、开启热点为www99999, 密码为12345678, wpa2的加密协议 cm…...
truncate,drop,delete分析
truncate,drop,delete对比分析 特性 TRUNCATE DROP DELETE **操作对象** 表中的所有数据 整个表及其所有数据 表中的特定数据 **是否保留表结构** 是 否 是 **是否可恢复** 不可恢复 不可恢复 可恢复 **性能** 高 高 低(逐行删除) …...
vue+flask图书知识图谱推荐系统
文章结尾部分有CSDN官方提供的学长 联系方式名片 文章结尾部分有CSDN官方提供的学长 联系方式名片 关注B站,有好处! 编号: F025 架构: vueflaskneo4jmysql 亮点:协同过滤推荐算法知识图谱可视化 支持爬取图书数据,数据超过万条&am…...
什么是微前端?有什么好处?有哪一些方案?
微前端(Micro Frontends) 微前端是一种架构理念,借鉴了微服务的思想,将一个大型的前端应用拆分为多个独立、自治的子应用,每个子应用可以由不同团队、使用不同技术栈独立开发和部署,最终聚合为一个整体产品…...
prompts提示词经典模板
prompts.py 中的提示词模板详解 文件中定义了两个核心提示词模板:REASON_PROMPT 和 RELEVANT_EXTRACTION_PROMPT。这两个模板在 DeepResearcher 的推理过程中扮演着关键角色。下面我将详细解析这两个模板的结构和功能。 REASON_PROMPT 详解 REASON_PROMPT 是用于指…...
pytorch软件封装
封装代码,通过传入文件名,即可输出类别信息 上一章节,我们做了关于动物图像的分类,接下来我们把程序封装,然后进行预测。 单张图片的predict文件 predict.py 按着路径,导入单张图片做预测from torchvis…...
DAY02:【pytorch】计算图与动态图机制
一、引言 在深度学习框架中,计算图是理解自动求导和模型优化的核心概念。无论是PyTorch的动态图机制,还是TensorFlow早期的静态图模式,计算图都扮演着关键角色。本文将深入解析计算图的基本原理,并结合PyTorch代码演示动态图的运…...
基于元学习(Meta-Learning)的恶意流量检测
元学习(Meta-Learning),即“学会学习”(Learning to Learn),通过让模型从多个相关任务中提取通用知识,实现对新任务的快速适应。在恶意流量检测领域,元学习的核心价值在于从少量攻击样本中泛化出检测规则,尤其适用于新型攻击、定向APT攻击等数据稀缺场景。 一、元学习…...
JavaScript:游戏开发的利器
在近年来的科技迅速发展中,JavaScript 已逐渐成为游戏开发领域中最受欢迎的编程语言之一。它的跨平台特性、广泛的社区支持、丰富的库和框架使得开发者能够快速、有效地创建各种类型的游戏。本文将深入探讨 JavaScript 在游戏开发中的优势。 一、跨平台支持 JavaSc…...
玩转Docker | 使用Docker搭建pinry图片展示系统
玩转Docker | 使用Docker搭建pinry图片展示系统 前言一、Pinry介绍Pinry 简介Pinry 特点二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署pinry服务下载镜像创建容器检查容器状态检查服务端口安全设置四、访问pinry应用五、pinry基本使用5.1 注册pinry账号…...
DAPP实战篇:使用web3.js实现前端输入钱包地址查询该地址的USDT余额——前端篇
专栏:区块链入门到放弃查看目录-CSDN博客文章浏览阅读385次。为了方便查看将本专栏的所有内容列出目录,按照顺序查看即可。后续也会在此规划一下后续内容,因此如果遇到不能点击的,代表还没有更新。声明:文中所出观点大多数源于笔者多年开发经验所总结,如果你想要知道区块…...
企业信息化-系统架构师(九十八)
1在对一个软件系统进行设计与确认后,需要进行架构复审,架构复审目的标识潜在风险,及早发现架构的缺陷和漏洞,在架构复审过程中,主要由()决定架构满足需求,质量需求是否在设计中体现。…...
【C++算法】54.链表_合并 K 个升序链表
文章目录 题目链接:题目描述:解法C 算法代码: 题目链接: 23. 合并 K 个升序链表 题目描述: 解法 解法一:暴力解法 每个链表的平均长度为n,有k个链表,时间复杂度O(nk^2) 合并两个有序…...
阿里云CDN应对DDoS攻击策略
阿里云CDN遭遇DDoS攻击时,可通过以下综合措施进行应对,保障服务的稳定性和可用性: 1. 启用阿里云DDoS防护服务 阿里云提供专业的DDoS防护服务,通过流量清洗中心过滤恶意流量,确保合法请求正常传输。该服务支持按需选…...
MySQL8的索引跳跃扫描原理
#MySQL 8 的索引跳跃扫描(Index Skip Scan)原理 1. 什么是索引跳跃扫描?索引跳跃扫描(Index Skip Scan)是 MySQL 8.0.13 引入的一种优化技术,允许在某些情况下跳过联合索引的最左前缀字段,仍然…...
centos 启动nginx 服务器
✅ 如果你是通过 yum 安装的 Nginx(推荐方式): 🔹 启动 Nginx: sudo systemctl start nginx 🔹 设置开机自启(建议开启): sudo systemctl enable nginx ὓ…...
格式化输出
% 符号相关 数据类型代码 %s:字符串 示例:print("名字是 %s" % "Tom") → 名字是 Tom%c:字符/ASCII码 示例:print("%c" % 65) → A%d/%i:有符号整数 示例:print("年龄…...