当前位置: 首页 > news >正文

C#进阶-在Ubuntu上部署ASP.NET Core Web API应用

随着云计算和容器化技术的普及,Linux 服务器已成为部署 Web 应用程序的主流平台之一。ASP.NET Core 作为一个跨平台、高性能的框架,非常适合在 Linux 环境中运行。本篇博客将详细介绍如何在 Linux 服务器上部署 ASP.NET Core Web API 应用,包括部署准备、应用发布、配置反向代理(Nginx)、设置系统服务以及日志管理等步骤。


一、部署准备

在开始之前,请确保你具备以下条件:

  • 一台运行 Linux(如 Ubuntu 20.04)的服务器,具有 SSH 访问权限。
  • ASP.NET Core Web API 项目,并确保在本地能够正常运行。

二、安装 MySQL(如需)

1. 安装MySQL服务器

sudo apt install mysql-server -y

2. 启动并设置MySQL开机自启

sudo systemctl start mysql
sudo systemctl enable mysql

3. 验证MySQL安装

登录MySQL以确认安装成功。

sudo mysql -u root -p

MySQL默认密码是root,直接登录即可。

4. 修改初始密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';

5. 创建库和表

这里我们用SQL语句把项目需要的数据库建好即可。


三、安装 .NET 运行环境

首先,需要在你的 Linux 服务器上安装 .NET 运行环境(如果选择框架依赖部署)或 .NET SDK(如果需要编译代码)。

1. 添加 Microsoft 包存储库

# 安装所需的依赖
sudo apt-get update
sudo apt-get install -y wget apt-transport-https software-properties-common

在这里插入图片描述

# 下载并安装微软的公钥
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb# 更新包索引
sudo apt-get update

在这里插入图片描述

2. 安装 .NET 运行环境

# 安装 ASP.NET Core 运行时
sudo apt-get install -y aspnetcore-runtime-8.0

在这里插入图片描述

注意:根据你的应用所使用的 .NET 版本,调整安装的运行时版本。

3. 验证安装

dotnet --version

你应该会看到已安装的 .NET 版本号,如 8.0.x

在这里插入图片描述


四、发布 ASP.NET Core 应用

1. Visual Studio 发布应用

在本地开发环境中,使用 visual studio 发布应用。

在这里插入图片描述

选择框架依赖部署(FDD)或自包含部署(SCD):

  • 框架依赖部署(FDD):目标服务器需要预先安装 .NET 运行环境。
  • 自包含部署(SCD):应用程序包含了所有必要的运行时文件,无需在服务器上安装 .NET。

在这里插入图片描述

保存发布配置,点击发布。

在这里插入图片描述

发布成功。

在这里插入图片描述

发布后的项目在目标位置里:D:\DCO\dco_ll\bin\Release\net8.0

在这里插入图片描述

2. 复制发布后的内容到服务器目录

将文件夹内所有内容复制到服务器上的预发布项目目录上。

在这里插入图片描述

其中,应用涉及的配置信息一般在 appsettings.json 里。


五、启动项目

切换到项目目录,指定端口启动项目。

cd xxxx #你的项目在服务器上的部署路径
sudo dotnet DCOWebhook.dll --urls "http://0.0.0.0:80" 

在这里插入图片描述

到这里,程序已经用公网IP访问了。


六、配置 Nginx 作为反向代理(可选)

Nginx 将作为反向代理,将来自客户端的请求转发到 ASP.NET Core 应用,处理 SSL、负载均衡等任务。

如果你的项目端口监听的不是默认80端口(比如5000端口),那么可以通过 Nginx 监听80端口进行转发,访问80端口的请求会自动转发到5000端口上。

1. 安装 Nginx

sudo apt-get update
sudo apt-get install -y nginx

2. 配置 Nginx

创建一个新的 Nginx 配置文件,或修改默认配置。

sudo nano /etc/nginx/sites-available/default

在这里插入图片描述

修改为以下内容:

server {listen 80 default_server;listen [::]:80 default_server; root /var/www/html;index index.html index.htm index.nginx-debian.html;server_name dco021.atomgit.net; # 替换为你的域名或服务器IPlocation / {proxy_pass http://localhost:5000;  # 替换为你的应用监听的端口proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection keep-alive;proxy_set_header Host $host;proxy_cache_bypass $http_upgrade;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}

3. 启用配置并重启 Nginx

# 创建符号链接以启用配置
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/# 测试 Nginx 配置是否正确
sudo nginx -t# 重启 Nginx
sudo systemctl restart nginx

七、设置系统服务(可选)

使用 systemd 将你的 ASP.NET Core 应用配置为服务,确保应用在服务器启动时自动运行,并在崩溃后自动重启。

1. 创建 systemd 服务文件

sudo nano /etc/systemd/system/dcowebhook.service

添加以下内容:

[Unit]
Description=DCOWebhook ASP.NET Core Web API
After=network.target[Service]
WorkingDirectory=/var/www/dco
ExecStart=/usr/bin/dotnet /var/www/dco/DCOWebhook.dll --urls "http://0.0.0.0:5000" #换成需要监听的端口
Restart=always
# 用户和组
User=www-data
Group=www-data
# 环境变量
Environment=ASPNETCORE_ENVIRONMENT=Production[Install]
WantedBy=multi-user.target

在这里插入图片描述

注意

  • WorkingDirectory:你的应用所在的目录。
  • ExecStart:启动应用的命令。根据你的发布方式(FDD 或 SCD)调整路径和参数。
  • UserGroup:推荐使用非 root 用户(如 www-data)运行服务,提升安全性。

2. 重新加载 systemd 并启动服务

sudo systemctl daemon-reload
sudo systemctl start dcowebhook.service #如果是修改配置需要刷新则写restart
sudo systemctl enable dcowebhook.service

3. 检查服务状态

sudo systemctl status dcowebhook.service

你应该会看到服务正在运行,并监听指定的端口。

在这里插入图片描述


八、配置防火墙

确保服务器的防火墙允许 HTTP(80)和 HTTPS(443)端口的流量。

使用 UFW 配置防火墙。

sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw status

注意Nginx Full 配置包括 HTTP 和 HTTPS 端口。

在这里插入图片描述


九、查看日志

如果项目依然无法访问,可以查看日志分析问题所在。

1. 查看 Nginx 错误日志

sudo tail -f /var/log/nginx/error.log

2. 查看 ASP.NET Core 应用日志

sudo tail -f /var/log/dcowebhook/log-*.txt

十、常见问题

1. 解决端口占用

偶尔会遇到端口被占用的问题,我们要先查看是哪个进程在占用这个端口。

sudo lsof -i 5000 #换成你需要查的端口

再来杀死这个进程。

sudo kill -9 76681 #换成上一步查到的进程的pid

在这里插入图片描述
这样这个端口就释放出来了。


十一、总结

通过本文的步骤,你已经成功在 Linux 服务器上部署了 ASP.NET Core Web API 应用。你不仅配置了应用的发布和运行,还设置了 Nginx 作为反向代理,确保了应用的高可用性和安全性。此外,配置日志记录帮助你更好地监控和维护应用。根据实际需求,你还可以进一步优化配置,如启用 HTTPS、配置负载均衡等。部署成功后,建议定期检查应用和服务器的性能,及时更新和维护,以确保应用的稳定运行。

相关文章:

C#进阶-在Ubuntu上部署ASP.NET Core Web API应用

随着云计算和容器化技术的普及,Linux 服务器已成为部署 Web 应用程序的主流平台之一。ASP.NET Core 作为一个跨平台、高性能的框架,非常适合在 Linux 环境中运行。本篇博客将详细介绍如何在 Linux 服务器上部署 ASP.NET Core Web API 应用,包…...

执行这个composer require topthink/think-mongo 报错

安装tp5 mongodb扩展 执行这个composer require topthink/think-mongo 报错 解决方法: 1 把composer.json里的"overtrue/wechat": "4.2.11",注释掉再执行 2 composer require topthink/think-mongo1.* 安装mongo的1版本...

大语言模型训练数据集格式

1. SFT(有监督微调)的数据集格式 对于大语言模型的训练中,SFT(Supervised Fine-Tuning)的数据集格式可以采用以下方式: 输入数据:输入数据是一个文本序列,通常是一个句子或者一个段…...

stringRedisTemplate.execute执行lua脚本

stringRedisTemplate.execute执行lua脚本 1. 引入必要依赖 确保项目中已经引入了Spring Data Redis相关依赖&#xff0c;例如在 Maven 项目中&#xff0c;一般会有如下依赖&#xff08;版本号根据实际情况调整&#xff09;&#xff1a; <dependency><groupId>or…...

鸿蒙UI(ArkUI-方舟UI框架)

参考&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/arkts-layout-development-overview-V13 ArkUI简介 ArkUI&#xff08;方舟UI框架&#xff09;为应用的UI开发提供了完整的基础设施&#xff0c;包括简洁的UI语法、丰富的UI功能&#xff…...

Linux-蓝牙协议

SPP (Serial Port Profile): 串口协议&#xff08;SPP&#xff09;是一个蓝牙配置文件&#xff0c;允许设备通过蓝牙模拟传统的串行端口通信。它通常用于无线串口连接&#xff0c;允许设备如计算机和外设&#xff08;例如打印机或条形码扫描器&#xff09;之间进行数据传输。A…...

CES Asia 2025:科技盛宴即将开启,续写辉煌篇章

随着2025年国际消费类电子产品展览会&#xff08;CES&#xff09;在美国拉斯维加斯盛大开幕并展现出诸多令人瞩目的发展趋势&#xff0c;亚洲科技界也对即将到来的CES Asia 2025充满期待&#xff0c;一场科技盛宴即将在亚洲大陆续写辉煌。 在刚刚拉开帷幕的CES 2025上&#xff…...

tutorial3.c

这个教程程序展示了如何使用 libxlsxwriter 库向 Excel 文件中写入不同类型的数据&#xff0c;包括字符串、数字和日期。以下是程序的主要步骤和功能&#xff1a; 定义数据结构&#xff1a; 定义了一个 expense 结构体&#xff0c;包含三个成员&#xff1a;item&#xff08;项…...

C# 获取当前运行路径的6种实用方法

C# 获取当前运行路径的多种方法 在C#中&#xff0c;获取当前运行路径&#xff08;即程序的工作目录&#xff09;是常见的需求&#xff0c;尤其在处理文件读写、日志记录和配置文件时。不同的场景可能需要使用不同的方法来获取路径。本文将介绍几种常用的获取当前运行路径的方法…...

龙蜥Linux系统部署docker21.1.3版本

龙蜥系统配置docker环境 更新yum源 更新软件源中的包。 yum update安装底层工具 yum install -y yum-utils device-mapper-persistent-data lvm2添加阿里云仓库 # 添加阿里云的docker镜像仓库 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/c…...

.NET中的框架和运行环境

在.NET生态系统中&#xff0c;框架和运行环境是两个不同的概念&#xff0c;它们各自扮演着重要的角色。 下面我将分别介绍.NET中的框架和运行环境&#xff0c;并解释它们之间的区别。 .NET 框架&#xff08;Frameworks&#xff09; 框架提供了一套预定义的类库、工具和服务&…...

STM32的存储结构

STM32F103 芯片是基于 ARM Cortex-M3 内核的微控制器&#xff0c;它集成了多种类型的存储器&#xff0c;每种存储器都有其特定的作用和存储对象。以下是关于 STM32F103 中 Flash、ROM 和 SRAM 的详细介绍&#xff1a; 1. Flash Memory (闪存) 作用&#xff1a;Flash 是非易失性…...

微信小程序

一、小程序文件结构 1.目录结构 pages文件夹&#xff1a;存放【页面文件夹】&#xff0c;一个【页面文件夹】就是一个页面&#xff0c;存放着小程序页面文件。即pages中的每一个文件夹都存放着一个小程序页面的文件&#xff08;js、wxml、json、wxss&#xff09; 页面文件夹…...

《CPython Internals》阅读笔记:p76-p95

《CPython Internals》学习第 5 天&#xff0c;p76-p95 总结&#xff0c;总计 20 页。 一、技术总结 无。 二、英语总结(生词&#xff1a;1) 1.check vi/vt. to exam sth to ensure it is correct, true, or in good condition.示例&#xff1a; (1)After I’d finished …...

HOW - Form 表单 label 和 wrapper 对齐场景

一、背景 在日常使用 表单 时&#xff0c;我们一般有如下布局&#xff1a; 可以通过 Form 表单提供的配置直接设置&#xff1a; <Formform{form}labelCol{{ span: 4 }}wrapperCol{{ span: 20 }}onFinish{handleSubmit}><Form.Itemlabel"输入框"name"…...

Js的回调函数

一、什么是回调函数&#xff08;Callback&#xff09;&#xff1f; 回调函数&#xff08;Callback Function&#xff09;是指一个函数被作为参数传递给另一个函数&#xff0c;并在特定事件发生或操作完成时执行。 可以通俗地理解为一种“委托”机制。 在JavaScript中&#xff0…...

FairGuard游戏安全2024年度报告

导 读&#xff1a;2024年&#xff0c;国内游戏市场实际销售收入3257.83亿元&#xff0c;同比增长7.53%&#xff0c;游戏用户规模6.74亿人&#xff0c;同比增长0.94%&#xff0c;市场收入与用户规模双双实现突破&#xff0c;迎来了历史新高点。但游戏黑灰产规模也在迅速扩大&…...

ant-design-vue 1.X 通过id获取a-input组件失败

1.ant-design-vue 1.X 问题描述 当我在a-form组件中&#xff0c;以v-decorator指令绑定表单组件时&#xff0c;无法根据我设置的verify-code-input获取元素 <a-input type"text" id"verify-code-input" class"paIpt":placeholder"$t(…...

JS爬虫实战演练

在这个小红书私信通里面进行一个js的爬虫 文字发送 async function sendChatMessage(content) {const url https://pro.xiaohongshu.com/api/edith/ads/pro/chat/chatline/msg;const params new URLSearchParams({porch_user_id: 677e116404ee000000000001});const messageD…...

JVM vs JDK vs JRE

JVM是Java虚拟机的缩写&#xff0c; 用于实现Java的一次编译&#xff0c;处处运行。 Java代码写成.class后&#xff0c;由本地的虚拟机运行。 JDK&#xff08;Java Development Kit&#xff09;是一个功能齐全的 Java 开发工具包&#xff0c;供开发者使用。 JDK包含了JRE。…...

OpenCV相机标定与3D重建(47)从两幅图像中的一组匹配点恢复相机的姿态(旋转和平移)函数recoverPose()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 从两幅不同相机拍摄的图像中对应的点恢复相对相机旋转和平移&#xff0c;使用手性检查。返回通过该检查的内点数量。 cv::recoverPose 是 OpenCV…...

代码随想录算法训练营day27

代码随想录算法训练营 —day27 文章目录 代码随想录算法训练营前言一、贪心算法理论基础二、455.分发饼干三、376. 摆动序列53. 最大子数组和总结 前言 今天是算法营的第27天&#xff0c;希望自己能够坚持下来&#xff01; 今日任务&#xff1a; ● 贪心算法理论基础 ● 455.…...

基于华为ENSP的OSPF状态机、工作过程、配置保姆级别详解(2)

本篇技术博文摘要 &#x1f31f; 基于华为enspOSPF状态机、OSPF工作过程、.OSPF基本配置等保姆级别具体详解步骤&#xff1b;精典图示举例说明、注意点及常见报错问题所对应的解决方法 引言 &#x1f4d8; 在这个快速发展的技术时代&#xff0c;与时俱进是每个IT人的必修课。我…...

【数据结构】链表

目录 ​编辑 1.2链表 1.2.1 链表的特性 1.2.2 单向链表 遍历无头单向链表 遍历有头单向链表 链表尾插法练习 1.2.3 单向链表的函数操作 单向链表的特点&#xff1a; 1.2链表 链表又称单链表、链式存储结构&#xff0c;用于存储逻辑关系为“一对一”的数据。 和顺序表…...

RabbitMQ解决消息积压的方法

目录 减少发送mq的消息体内容 增加消费者数量 批量消费消息 临时队列转移 监控和预警机制 分阶段实施 最后还有一个方法就是开启队列的懒加载 这篇文章总结一下自己知道的解决消息积压得方法。 减少发送mq的消息体内容 像我们没有必要知道一个的中间状态&#xff0c;只需…...

机器学习是?

机器学习&#xff08;Machine Learning&#xff09;是一门多领域交叉学科&#xff0c;涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科; 是人工智能&#xff08;AI&#xff09;的一个分支&#xff0c;也是AI的核心领域&#xff0c;它专注于开发算法和模型&#…...

jupyter出现“.ipynb appears to have died. It will restart automatically.”解决方法

原因 解决方法&#xff1a;更新jupyter的版本 1.打开anaconda prompt 2、更新jupyter版本 在anaconda prompt输入以下指令 conda update jupyter如图&#xff1a;...

计算机毕业设计PyHive+Hadoop深圳共享单车预测系统 共享单车数据分析可视化大屏 共享单车爬虫 共享单车数据仓库 机器学习 深度学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

c++开源协程库libgo介绍及使用,srs协程,boost协程 Boost::fiber

https://www.cnblogs.com/qwsdcv/p/9115364.html Boost - 从Coroutine2 到Fiber - 开学五年级了 - 博客园 协程就是由程序员控制跑在线程里的“微线程”。它可以由程序员调度&#xff0c;切换协程时代价小(切换根据实现不同&#xff0c;消耗的CPU周期从几十到几百不等)&#x…...

微服务实现高并发 秒杀系统,前后端实现

一、前端实现 前端项目初始化 首先&#xff0c;我们需要创建一个新的 Vue 3 项目。你可以使用 Vue CLI 来快速搭建项目。 安装 Vue CLI&#xff08;如果尚未安装&#xff09; bash npm install -g vue/cli 创建 Vue 项目 bash vue create seckill-frontend cd seckill-f…...

Eureka缓存机制

一、Eureka的CAP特性 Eureka是一个AP系统&#xff0c;它优先保证可用性&#xff08;A&#xff09;和分区容错性&#xff08;P&#xff09;&#xff0c;而不保证强一致性&#xff08;C&#xff09;。这种设计使得Eureka在分布式系统中能够应对各种故障和分区情况&#xff0c;保…...

PHP语言的学习路线

PHP语言的学习路线 PHP&#xff08;Hypertext Preprocessor&#xff09;是一种广泛使用的开源服务器端脚本语言&#xff0c;尤其适用于Web开发。由于其易学易用、功能强大&#xff0c;PHP成为了许多动态网站和Web应用程序开发的首选语言。随着Web3.0和云计算的兴起&#xff0c…...

python学opencv|读取图像(二十八)使用cv2.warpAffine()函数平移图像

【1】引言 前序已经对图像操作进行了广泛的学习&#xff0c;包括读取、放大缩小&#xff0c;改变BGR通道值等&#xff0c;相关链接包括且不限于&#xff1a; python学opencv|读取图像-CSDN博客 python学opencv|读取图像&#xff08;三&#xff09;放大和缩小图像_python(1)使…...

[Linux]Mysql9.0.1服务端脱机安装配置教程(redhat)

前言 本教程适用于在yum源不可用的LInux主机上安装Mysql的场景。 以redhat系主机做操作示例&#xff0c;debian系主机可参照步骤&#xff0c;将对应的rpm -ivh命令换成dpkg -i。 1. 官网下载安装包 https://dev.mysql.com/downloads/mysql/ 1.1 版本分类 MySQL Enterprise…...

个人 ALL IN ONE 方案搭建方案分享(从硬件到软件)及内网穿透方案

这里只做大概方案分享&#xff0c;每个虚拟机的部署细节滤过。 个人 ALL IN ONE 方案搭建方案分享 本指南将详细介绍如何基于现有硬件搭建一体化家庭/个人服务器解决方案&#xff0c;涵盖从软硬件配置、系统安装到功能实现以及性能优化的全过程。实现集 软路由、旁路由、NAS 网…...

TrustRAG:增强RAG系统鲁棒性与可信度的创新框架

在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;LLMs&#xff09;凭借其强大的语言处理能力在诸多领域大放异彩。检索增强生成&#xff08;RAG&#xff09;系统&#xff08;面向企业RAG&#xff08;Retrieval Augmented Generation&#xff09;系统的多维检索框架…...

使用证件照制作软件的常见问题及解决方案

在数字化时代&#xff0c;证件照的制作变得越来越简单。借助各种证件照制作软件&#xff0c;我们可以轻松在家中制作出符合要求的证件照。然而&#xff0c;用户在使用这些软件时&#xff0c;可能会遇到一些常见问题。为了帮助您顺利制作出满意的证件照&#xff0c;我们整理了一…...

通过gradle发布aar或jar携带sources-jar到maven nexus

找了很久&#xff0c;没有找到满意的。终于找到一个好的办法。 gradle7.x适用。比以前的写法简洁。 发布传统的jar工程 比如okhttp&#xff0c;fastjson等项目&#xff0c;纯java工程。 直接创建新文件publish.gradle: apply plugin: maven-publishProperties properties …...

SAP推出云端ERP解决方案,加速零售行业数字化转型

2025年1月9日&#xff0c;SAP发布了一款专为零售行业设计的云端ERP行业解决方案——S/4HANA Cloud Public Edition&#xff0c;进一步推动企业向云端迁移。这款解决方案旨在集中运营数据&#xff0c;整合财务、采购和商品管理流程&#xff0c;以帮助零售企业优化运营效率。 核…...

RK3568 Android 13 内置搜狗输入法小计

问&#xff1a;为什么写&#xff1f; 答&#xff1a;网上搜出来的都试过了&#xff0c;不行&#xff01;下面直接上代码和注意事项&#xff01; 首先到这个目录&#xff08;/RK3568/Rockchip_Android13_SDK_Release/device/rockchip/rk356x/tl3568_evm/preinstall&#xff09…...

微服务-Nacos(注册中心)

Nacos Nacos可以看作注册中心配置中心&#xff0c;比Eureka更加强大。 注册中心 在父工程中引入SpringCloudAlibaba的版本依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId&g…...

【数据结构:前缀树Trie】

目录 前言前缀树介绍和应用一、前缀树的定义前缀树的问题和思考前缀树的映射思想前缀树三大性质 二.前缀树节点结构三. 前缀树接口介绍和实现四个接口API1. insert(String word)2. search(String word)3. startsWith(String pre)4. delete(String word) API实现1. 查询操作sear…...

如何让QPS提升20倍

一、什么是QPS QPS&#xff0c;全称Queries Per Second&#xff0c;即每秒查询率&#xff0c;是用于衡量信息检索系统&#xff08;例如搜索引擎或数据库&#xff09;或请求-响应系统&#xff08;如Web服务器&#xff09;每秒能够处理的请求数或查询次数的一个性能指标。以下是…...

时间复杂度简介

定义 时间复杂度是用来衡量算法运行时间随着输入规模增长而增长的量级。简单来说&#xff0c;它描述了算法执行时间与数据规模之间的关系。我们通常用大O符号&#xff08; O O O&#xff09;来表示时间复杂度。例如&#xff0c;对于一个简单的加法运算&#xff0c;它的执行时间…...

记一次sealos部署k8s集群之delete了第一台master如何恢复

记一次sealos部署k8s集群之delete了第一台master如何恢复 一、背景描述 使用sealos部署了一套K8S集群 master信息:172.27.100.1、172.27.100.2、172.27.100.3 node信息:172.27.100.4、172.27.100.5 sealos安装在172.27.100.1节点,根目录下/root/.sealos/文件还在! [root…...

【json】

JSON JSON是一种轻量级的,按照指定的格式去组织和封装数据的数据交互格式。 本质上是一个带有特定格式的字符串(py打印json时认定为str类型) 在各个编程语言中流通的数据格式&#xff0c;负责不同编程语言中的数据传递和交互,类似于计算机普通话 python与json关系及相互转换…...

TypeScript语言的并发编程

TypeScript语言的并发编程 引言 随着现代应用程序的复杂性不断增加&#xff0c;性能和用户体验的重要性显得尤为突出。在这种背景下&#xff0c;并发编程应运而生&#xff0c;成为提升应用程序效率的重要手段。在JavaScript及其超集TypeScript中&#xff0c;尽管语言本身是单…...

左值引用(Lvalue Reference)和右值引用(Rvalue Reference)详解

左值引用&#xff08;Lvalue Reference&#xff09;和右值引用&#xff08;Rvalue Reference&#xff09;详解 文章目录 左值引用&#xff08;Lvalue Reference&#xff09;和右值引用&#xff08;Rvalue Reference&#xff09;详解1. 什么是左值和右值&#xff1f;左值&#x…...

音视频入门基础:RTP专题(1)——RTP官方文档下载

一、引言 实时传输协议&#xff08;Real-time Transport Protocol&#xff0c;简写RTP&#xff09;是一个网络传输协议&#xff0c;由IETF的多媒体传输工作小组1996年在《RFC 1889》中公布的。 RTP作为因特网标准在《RFC 3550》有详细说明。而《RFC 3551》详细描述了使用最小…...

【Flutter】使用ScrollController配合EasyRefresh实现列表预加载:在还未滑动到底部时加载下一页数据

需求/背景 在我们的业务场景中&#xff0c;列表的加载使用easy_refresh组件&#xff1a; https://pub.dev/packages/easy_refresh 大概效果是往上滑动到一定的offset会触发一个上滑加载&#xff0c;可以触发一些网络请求拉取列表后面的数据来展示。 这种模式一般在一页翻完…...