厌倦了商业远程控制软件的会员限制和功能阉割?渴望拥有一个自由掌控、安全可靠的远程连接方案?开源软件 RustDesk 正是你需要的答案!

相信从事互联网工作的你,一定对向日葵和ToDesk等商业远程控制软件并不陌生。然而,受限于商业利益,它们往往对普通用户不太友好,比如限制免费用户的画质和帧率,以此引导用户开通会员。

今天,我们将向你介绍一款开源的远程桌面软件——RustDesk!它在 GitHub 上已收获 74.6k 的 Star,并且开发社区活跃,版本迭代迅速。

由于 RustDesk 的官方中转服务器位于国外,国内用户使用时可能会遇到连接速度慢、延迟高等问题。为了获得更流畅的体验,我们可以选择自建中转服务器。

接下来,我将给大家提供一个详细的自建 RustDesk 中转服务器教程,助你打造属于自己的高速、稳定、安全的远程连接通道!

RustDesk 介绍

RustDesk 是一款开源、免费、高性能的远程桌面软件,它允许你通过互联网或局域网远程控制另一台计算机。RustDesk 使用 Rust 语言编写,注重安全性、速度和易用性,提供流畅、可靠的远程桌面体验。

与 TeamViewer 或 AnyDesk 等商业软件不同,RustDesk 不依赖中心化的服务器,而是采用端到端加密技术,直接连接你的设备,确保你的隐私安全。你也可以选择自建中继服务器,进一步提升连接速度和稳定性,并完全掌控你的数据。

RustDesk 的主要特点

  • 开源免费: RustDesk 代码完全开源,可以免费使用,没有任何功能限制或隐藏收费。
  • 跨平台支持: 支持 Windows、macOS、Linux、iOS、Android 等多个平台,实现跨设备远程控制。
  • 高性能和低延迟: 采用高效的编码和传输协议,提供流畅的屏幕传输和低延迟的操作体验。
  • 安全性高: 使用端到端加密技术,保护你的连接和数据安全,防止信息泄露。
  • 易于使用: 界面简洁直观,操作简单易懂,即使是新手也能轻松上手。
  • 自建中继服务器: 可以自行搭建中继服务器,实现更快的连接速度和更高的稳定性。

RustDesk 架构

RustDesk 采用了经典的客户端-服务器模型,其中涉及三个主要组件:RustDesk 客户端、RustDesk 服务器和 ID Server。

  • RustDesk 客户端: 运行在你的设备上(Windows,macOS,Linux,Android, iPhone)用于连接两个设备的软件。
  • RustDesk 中继服务器(Relay Server): 运行在服务器上,充当客户端之间的桥梁,转发来自一方的数据包到另一方。在某些环境中(如经过 NAT 出网)设备之间无法进行 P2P 连接,可以用服务器来中转。
  • ID 服务器(ID Server): 运行在服务器上,用于维护客户端及中继服务器的连接信息,促进设备之间建立 P2P 连接。

RustDesk架构图

在 RustDesk 的服务器端部署中,hbbr 和 hbbs 是两个重要的组件,分别用于不同的功能:

  • hbbs: 代表 RustDesk ID / Rendezvous Server,RustDesk ID 注册服务器,用于分配和注册 ID;hbbs 是 RustDesk 的中介服务器(Broker Server),用于管理和协调客户端连接。它帮助客户端找到并建立 P2P 连接。hbbs 负责维护客户端的在线状态,并处理连接请求。当客户端 A 希望连接客户端 B 时,它会向 hbbs 发送请求,hbbs 会帮助它们建立连接。
  • hbbr: 代表 RustDesk Relay Server,RustDesk 中继服务器,如果 P2P 无法连接,会使用 hbbr 进行流量中继。hbbr 是 RustDesk 的中继服务器(Relay Server),用于在两台客户端之间进行连接中继。它允许无法直接建立 P2P 连接的客户端通过中继服务器进行通信。当客户端 A 和客户端 B 之间无法建立直接连接时,它们会通过 hbbr 中继服务器进行数据传输。
  • rustdesk-utils: RustDesk 命令行工具

P2P 直连说明:

RustDesk 首先尝试建立直接 P2P 连接,如果 P2P 失败,将使用中继服务器。

确认连接方式,首先连接到远程主机,可以将鼠标移动到工具栏图标(绿色图标),将显示它是直接连接还是通过中继服务器连接。

使用端口说明:

序号服务端口协议用途是否可选
1hbbs21114TCP用于 Web 控制台 API,仅在专业版中可用可选
2hbbs21115TCPNAT 类型测试必选
3hbbs21116TCP/UDPUDP 用于 ID 注册和心跳服务,TCP 用于 TCP 打洞和连接服务必选
4hbbr21117TCP用于 Relay 服务必选
5hbbs21118TCP用于支持 Web 客户端可选
6hbbr21119TCP用于支持 Web 客户端可选

一般我们使用这些端口就好了:

  • TCP: 21115,21116,21117,21118,21119
  • UDP: 21116

准备工作

  • 准备一台云服务器

若尚未拥有服务器,可前往 雨云官网 https://rainyun.ivwv.site 进行注册,新用户有专属优惠。

开始部署中转服务器

rustdesk-server 官方仓库地址: https://github.com/rustdesk/rustdesk-server

部署方式

RustDesk 提供了多种部署方式,您可以根据自己的需求和技术水平选择合适的方式,主要有以下三种方式:

  1. 使用 Docker / Docker Compose 部署(推荐,选其一): 这是最简单、最快速的部署方式,适合大多数用户。您只需要运行几条 Docker 命令,即可完成 RustDesk 中转服务器的安装和配置。

  2. 使用 PM2 部署: PM2 是一个 Node.js 进程管理工具,可以帮助您方便地管理和维护 RustDesk 服务器进程。

  3. 使用二进制文件运行: 下载预编译的二进制文件,解压后即可运行,无需编译安装,适合快速部署和测试。

我会依次向大家介绍如何部署。

前提要求(重要)

在进行部署之前,请确保您的服务器满足以下前提要求:

  • 一台拥有公网 IP 的 Linux 服务器,例如腾讯云、阿里云等。
  • 服务器已开启必要的端口:
    • TCP: 21115, 21116, 21117, 21118, 21119
    • UDP: 21116

你可以通过服务器管理面板的安全组或防火墙配置中放行这些端口。

使用 Docker 部署(推荐)

1. 安装 Docker
如果您的服务器上还没有安装 Docker,请使用以下命令安装:

# 使用清华源,如果是国外云服务器可以不运行这一步
export DOWNLOAD_URL="https://mirrors.tuna.tsinghua.edu.cn/docker-ce"
# 安装命令
curl -fsSL https://get.docker.com/ | sh

检查是否安装完毕,如果有正确输出版本 ,那么就代表安装成功了。

root@ubuntu:~# docker -v
Docker version 27.1.1, build 6312585

运行命令

mkdir -p ~/rustdesk
cd ~/rustdesk
sudo docker image pull rustdesk/rustdesk-server
sudo docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v ./data:/root -td --net=host rustdesk/rustdesk-server hbbs
sudo docker run --name hbbr -p 21117:21117 -p 21119:21119 -v ./data:/root -td --net=host rustdesk/rustdesk-server hbbr

注意

如果你运行 docker 版本时候,要求注册码,说明你下载的是老版本,因为国内的 docker 镜像缓存可能没有更新

检查是否正常运行

控制台输入 docker ps -a,查看STATUS 状态是否是 Up

root@ubuntu:~/rustdesk# docker ps -a
CONTAINER ID   IMAGE                      COMMAND   CREATED          STATUS          PORTS     NAMES
97e8dfc8939e   rustdesk/rustdesk-server   "hbbr"    44 seconds ago   Up 43 seconds             hbbr
64e629c8a41d   rustdesk/rustdesk-server   "hbbs"    49 seconds ago   Up 48 seconds             hbbs

运行好后,可以在当前目录下列出文件,输入ls -l data

root@ubuntu:~/rustdesk# ls -l data
total 132
-rw-r--r-- 1 root root  4096 Oct 26 15:25 db_v2.sqlite3
-rw-r--r-- 1 root root 32768 Oct 26 15:25 db_v2.sqlite3-shm
-rw-r--r-- 1 root root 82432 Oct 26 15:25 db_v2.sqlite3-wal
-rw-r--r-- 1 root root    88 Oct 26 15:25 id_ed25519
-rw-r--r-- 1 root root    44 Oct 26 15:25 id_ed25519.pub

可以看到有5个文件,其中 id_ed25519.pub 文件内容接下来会使用到。

也可以尝试使用Docker Compose 部署(可选)

mkdir -p ~/rustdesk
cd ~/rustdesk
vim docker-compose.yaml

将以下内容复制粘贴进去


networks:rustdesk-net:external: falseservices:hbbs:container_name: hbbsports:- 21115:21115- 21116:21116- 21116:21116/udpimage: rustdesk/rustdesk-servercommand: hbbsvolumes:- ./data:/root # 自定义挂载目录networks:- rustdesk-netdepends_on:- hbbrrestart: unless-stoppeddeploy:resources:limits:memory: 64Mhbbr:container_name: hbbrports:- 21117:21117image: rustdesk/rustdesk-servercommand: hbbrvolumes:- ./data:/root # 自定义挂载目录networks:- rustdesk-netrestart: unless-stoppeddeploy:resources:limits:memory: 64M

运行 Docker compose

docker compose up -d

同样控制台输入 docker ps -a,查看STATUS 状态是否是 Up

root@ubuntu:~/rustdesk# docker ps -a
CONTAINER ID   IMAGE                      COMMAND   CREATED          STATUS          PORTS     NAMES
97e8dfc8939e   rustdesk/rustdesk-server   "hbbr"    44 seconds ago   Up 43 seconds             hbbr
64e629c8a41d   rustdesk/rustdesk-server   "hbbs"    49 seconds ago   Up 48 seconds             hbbs

运行好后,也可以在当前目录下列出文件,输入ls -l data

root@ubuntu:~/rustdesk# ls -l data
total 132
-rw-r--r-- 1 root root  4096 Oct 26 15:25 db_v2.sqlite3
-rw-r--r-- 1 root root 32768 Oct 26 15:25 db_v2.sqlite3-shm
-rw-r--r-- 1 root root 82432 Oct 26 15:25 db_v2.sqlite3-wal
-rw-r--r-- 1 root root    88 Oct 26 15:25 id_ed25519
-rw-r--r-- 1 root root    44 Oct 26 15:25 id_ed25519.pub

可以看到有5个文件,其中 id_ed25519.pub 文件内容接下来会使用到。

到此位置,使用 Docker 的两种方式都已经介绍完毕,客户端的使用可以直接到下一个标题: 客户端使用 查看,接下来我会介绍使用 PM2 部署

使用 PM2 部署(推荐)

首先,是需要一个 NodeJS 的环境

安装 NodeJS 和 NPM

# 更新软件包列表
sudo apt update# 安装 Node.js 和 npm
sudo apt install nodejs npm -y# 验证安装是否成功
node -v
npm -v

安装 PM2

npm i -g pm2
# 验证安装是否成功
pm2 -v

下载 rustdesk-server二进制文件

进入 Github - rustdesk-server - releases

Github-rustdesk-server-releases

找到自己服务器匹配的架构,一般市面上的云服务器都是amd64架构的,跟我一样的命令即可

sudo apt update
sudo apt install curl unzip -y
mkdir -p ~/rustdesk
cd ~/rustdesk
curl -L "https://github.com/rustdesk/rustdesk-server/releases/download/1.1.12/rustdesk-server-linux-amd64.zip" -o "rustdesk-server-linux-amd64.zip"
unzip rustdesk-server-linux-amd64.zip
cd amd64
ls -l

运行完毕后且无误后,会在终端列出三个二进制可执行文件,分别是:

  • hddr
  • hbbs
  • rustdesk-utils

接下来运行下列命令

pm2 start hbbs
pm2 start hbbr

运行好后,会看到 pm2 输出的列表(也可以后续使用 pm2 list)

idnamenamespaceversionmodepiduptimestatuscpumemuserwatching
1hbbrdefaultN/Afork3294460s0online0%696.0kbrootdisabled
0hbbsdefaultN/Afork3294327s0online0%4.4mbrootdisabled

当看到 status 都是 online 时就表示启动成功。 这里可以看到 cpumem,其实运行这两个程序并不会使用太多的内存和 cpu 接下来查看运行后,会在当前目录下创建什么文件

root@ubuntu:~/rustdesk/amd64# ls -l
total 27688
-rw-r--r-- 1 root root     4096 Oct 26 16:13 db_v2.sqlite3
-rw-r--r-- 1 root root    32768 Oct 26 16:13 db_v2.sqlite3-shm
-rw-r--r-- 1 root root    82432 Oct 26 16:13 db_v2.sqlite3-wal
-rwxr-xr-x 1 root root  9194392 Oct  7 16:37 hbbr
-rwxr-xr-x 1 root root 14290448 Oct  7 16:37 hbbs
-rw-r--r-- 1 root root       88 Oct 26 16:13 id_ed25519
-rw-r--r-- 1 root root       44 Oct 26 16:13 id_ed25519.pub
-rwxr-xr-x 1 root root  4734920 Oct  7 16:37 rustdesk-utils

可以看到,增加了5个文件,其中 id_ed25519.pub 后续客户端使用的时候会用到。
到此位置,使用 pm2 的方式已经介绍完毕,客户端的使用可以直接到下一个标题: 客户端使用 查看,接下来我会介绍使用 使用二进制文件运行 部署。

使用二进制文件运行(不推荐)

这种方式为什么不推荐呢,稍后会提到。
与pm2方式一样,需要下载 rustdesk-server二进制文件

进入 Github - rustdesk-server - releases

Github-rustdesk-server-releases

找到自己服务器匹配的架构,一般市面上的云服务器都是amd64架构的,跟我一样的命令即可

sudo apt update
sudo apt install curl unzip -y
mkdir -p ~/rustdesk
cd ~/rustdesk
curl -L "https://github.com/rustdesk/rustdesk-server/releases/download/1.1.12/rustdesk-server-linux-amd64.zip" -o "rustdesk-server-linux-amd64.zip"
unzip rustdesk-server-linux-amd64.zip
cd amd64
ls -l

这里与 pm2 方式一样,也会输出同样的文件
但是运行方式不一样,由于时二进制文件,我们可以直接运行 hbbshbbr 文件
运行:

root@ubuntu:~/rustdesk/amd64# ./hbbs
[2024-10-26 16:47:14.908679 +08:00] INFO [src/common.rs:122] Private key comes from id_ed25519
[2024-10-26 16:47:14.908702 +08:00] INFO [src/rendezvous_server.rs:1205] Key: Ia42DxVS6hZ07cybqftPxAKXvszpbuj77aM=
[2024-10-26 16:47:14.908705 +08:00] INFO [src/peer.rs:84] DB_URL=./db_v2.sqlite3
[2024-10-26 16:47:14.909695 +08:00] INFO [src/rendezvous_server.rs:99] serial=0
[2024-10-26 16:47:14.909726 +08:00] INFO [src/common.rs:46] rendezvous-servers=[]
[2024-10-26 16:47:14.909730 +08:00] INFO [src/rendezvous_server.rs:101] Listening on tcp/udp :21116
[2024-10-26 16:47:14.909732 +08:00] INFO [src/rendezvous_server.rs:102] Listening on tcp :21115, extra port for NAT test
[2024-10-26 16:47:14.909734 +08:00] INFO [src/rendezvous_server.rs:103] Listening on websocket :21118
[2024-10-26 16:47:14.909762 +08:00] INFO [libs/hbb_common/src/udp.rs:36] Receive buf size of udp [::]:21116: Ok(212992)
[2024-10-26 16:47:14.909809 +08:00] INFO [src/rendezvous_server.rs:138] mask: None
[2024-10-26 16:47:14.909817 +08:00] INFO [src/rendezvous_server.rs:139] local-ip: ""
[2024-10-26 16:47:14.909822 +08:00] INFO [src/common.rs:46] relay-servers=[]
[2024-10-26 16:47:14.909870 +08:00] INFO [src/rendezvous_server.rs:153] ALWAYS_USE_RELAY=N
[2024-10-26 16:47:14.909898 +08:00] INFO [src/rendezvous_server.rs:185] Start
[2024-10-26 16:47:14.909929 +08:00] INFO [libs/hbb_common/src/udp.rs:36] Receive buf size of udp [::]:0: Ok(212992)

运行后发现,需要一直保持终端不断开,所以这种方式并不推荐,因为这种方式需要同时打开两个终端 ,一个终端运行 hbbr 另一个终端运行 hbbs 当终端结束后,服务也就停止了。

客户端使用

我们进入 rustdesk官网:https://rustdesk.com/zh-cn/ 或者进入 Github-releases

由于rustdesk支持多个平台的客户端。

可以直接从这个表格点击下载。

ArchitectureWindowsUbuntuMacAndroidFlatpakAppImageiOS
x86-64 (64-bit)EXE MSIDownloadDownloadUniversalDownloadDownload
AArch64 (ARM64)DownloadDownloadDownloadDownloadDownloadTestFlight
ARMv7 (32-bit)DownloadDownload
x86-32 (32-bit)Download

我这里以Windows为例,我的下载链接是: x86-64 (64-bit)。

下载完毕后,直接打开双击,同时在你的被控制端也需要下载安装

安装好打开界面如下:

rustdesk安装后打开界面

可以看到底部 服务未运行 启动服务

设置中继服务器

点击窗口右上角 三横线 或 左侧 ID 旁边的 三个点 进入设置页面。

再依次点击: 网络 -> 解锁网络设置

找到设置中级服务器位置

以下是四个输入框的配置说明,具体配置可能会有所不同,取决于你的最初的设置,如果你使用docker方式时,更改了外部映射的端口,可以根据如下默认端口,填写对应的外部端口。

ID 服务器(hbbs)

  • 默认端口:21116

中继服务器(hbbr)

  • 默认端口:21117

API 服务器

  • 默认端口:21118

Key

  • 上面提到的 id_ed25519.pub 文件的内容
  • 使用 cat id_ed25519.pub 命令查看 Key
# 具体根据你该文件的目录来
cd ~/rustdesk/data/
cat id_ed25519.pub# 我的输出
Ia42DxVS6hZ07cybqftPxAKXvszpbuj77aM=

如果是默认rustdesk官方推荐的端口,那么只需要填写你的服务器 IP 到 ID 服务器 输入框即可,如图:

默认方式输入ID中继服务器

如果使用docker方式有更改端口,可以按照如下默认端口,找到自己映射的外部端口

自定义端口模板

最后点击应用即可。

特别需要注意的是,你需要在每一个客户端都这样设置好中继服务器。

启动服务

进入 设置 -> 常规

启动客户端服务

返回主页查看底部状态,如果是绿色圆圈,并且是 就绪两字,就表示成功了 。

查看是否启动成功

被控端

被控端也同样设置好后,就可以看到 ID 和 密码了,将其给到控制端输入就可以了,跟向日葵和Todesk一样的操作

被控端

控制端功能

成功远程后,控制端可以有这些功能操作。

控制端功能

相关链接

我的博客:https://blog.ivwv.site
雨云官网:https://rainyun.ivwv.site

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

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

相关文章

Spring Boot 2整合Druid的两种方式

一、自定义整合Druid&#xff08;非Starter方式&#xff09;适用于需要完全手动控制配置的场景添加依赖&#xff08;pom.xml&#xff09;<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</ve…

鸿蒙Next-开发版本升级,API升级(例如API12升API16)

鸿蒙更新换代很快的&#xff0c;2025年1月&#xff0c;截至4月就有 DevEco Studio 5.0.2 Release 升级到 DevEco Studio 5.0.3 Release 升级到 DevEco Studio 5.0.4 Release&#xff0c;三次大版本更新。 作者也想在年前创建的项目中体验一下新版本的特性&#xff0c;于是查看了…

树莓派设置时区

查看当前时间 piraspberrypi-CM5:~ $ date Mon 28 Jul 09:22:38 BST 2025BST 指的是 British Summer Time&#xff0c;即英国夏令时&#xff08;UTC1&#xff09;。 所以这是英国&#xff08;伦敦等地&#xff09;在夏令时期间的本地时间&#xff0c;比标准的 UTC 时间快 1 小时…

C Primer Plus 第6版 编程练习——第13章(下)

8.编写一个程序&#xff0c;以一个字符和任意文件名作为命令行参数。如果字符后面没有参数&#xff0c;该程序读取标 淮输入;否则&#xff0c;程序依次打开每个文件并报告每个文件中该字符出现的次数。文件名和字符本身也要一同报告。程序应包含错误检查&#xff0c;以确定参数…

王树森推荐系统公开课

github&#xff1a;https://github.com/wangshusen/RecommenderSystem b站&#xff1a;推荐系统公开课——8小时完整版&#xff0c;讲解工业界真实的推荐系统_哔哩哔哩_bilibili 知乎上一个比较全面的笔记&#xff1a;https://zhuanlan.zhihu.com/p/678664853 我的笔记&…

<RT1176系列11>DMAMUX解读

1、概述DMA&#xff08;直接内存访问&#xff0c;DIrect Memory Access&#xff09;工作原理&#xff1a;DMA控制器直接在内存和外设之间传输数据&#xff0c;而不需要CPU的干预。优点&#xff1a;极大地提高了数据传输效率&#xff0c;释放CPU资源。适合大批量数据传输&#x…

【MySQL】MySQL 缓存方案

一、MySQL主从同步 1.1 主从同步是什么 MySQL 主从同步是一种数据复制机制&#xff0c;通过该机制可以实现将主数据库&#xff08;Master&#xff09;的 DDL&#xff08;数据定义语言&#xff09;和 DML&#xff08;数据操纵语言&#xff0c;如 update、insert、delete&#x…

base64.b64encode(f.read()).decode(‘utf-8‘)作用

base64.b64encode(f.read()).decode(utf-8) 的作用是将文件内容&#xff08;通常是二进制文件&#xff09;编码为一个 UTF-8 格式的字符串。下面逐步解释这个过程&#xff1a;f.read()&#xff1a;读取文件 f 中的内容。这将返回文件的二进制数据。base64.b64encode()&#xff…

集合框架学习

目录 集合体系结构 Collection的常用方法 Collection的遍历方式 迭代器 增强for Lambda表达式 集合框架概述 集合体系结构 单列集合 Collection代表单列集合,每个元素(数据)只包含一个值 双列集合 Map代表双列集合,每个元素包含两个值(键值对) Collection集合特点 Li…

经典算法题解析:从思路到实现,掌握核心编程思维

算法是编程的灵魂&#xff0c;也是面试中的重点考察内容。本文精选了几道经典算法题&#xff0c;涵盖字符串处理、链表操作、树遍历等常见场景&#xff0c;通过详细解析帮助你理解算法设计思路与实现细节&#xff0c;提升解题能力。一、无重复字符的最长子串题目描述给定一个字…

【Unity游戏】——1.俄罗斯方块

搭建场景 使用任意方块、纯色瓦片或者其他图形作为背景&#xff0c;设置其大小与目标大小一致或者更大&#xff0c;设置左下角为场景顶点&#xff0c;并放置在&#xff08;0&#xff0c;0&#xff09;处。调整摄像机至合适位置。 制作游戏预制体 每个方块预制体包含有4个小方…

【C++进阶】---- 二叉搜索树

1.二叉搜索树的概念 ⼆叉搜索树⼜称⼆叉排序树&#xff0c;它或者是⼀棵空树&#xff0c;或者是具有以下性质的⼆叉树: • 若它的左⼦树不为空&#xff0c;则左⼦树上所有结点的值都⼩于等于根结点的值 • 若它的右⼦树不为空&#xff0c;则右⼦树上所有结点的值都⼤于等于根结…

基于 OpenCV 与 sklearn 的数字识别:KNN 算法实践

在计算机视觉领域&#xff0c;数字识别是一个经典问题&#xff0c;广泛应用于邮政编码识别、车牌识别等场景。本文将介绍如何使用 OpenCV 进行图像处理&#xff0c;并结合 KNN&#xff08;K 近邻&#xff09;算法实现数字识别&#xff0c;同时对比 OpenCV 内置 KNN 与 scikit-l…

利用径向条形图探索华盛顿的徒步旅行

利用径向条形图探索华盛顿的徒步旅行 import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np import pandas as pdfrom matplotlib.cm import ScalarMappable from matplotlib.lines import Line2D from mpl_toolkits.axes_grid1.inset_locator impor…

火狐浏览器中国特供版关闭,如何下载 Firefox 国际版?如何备份数据?

火狐浏览器中国特供版关闭&#xff0c;如何下载 Firefox 国际版&#xff1f;如何备份数据&#xff1f;各位火狐老用户注意了&#xff01;7 月 27 日北京谋智火狐正式发布公告&#xff1a;2025 年 9 月 29 日 24:00 起&#xff0c;中国特供版账户服务将彻底关闭&#xff0c;所有…

C语言操作符详解:从基础到进阶

在C语言中&#xff0c;操作符是构建表达式的基础&#xff0c;掌握各类操作符的用法、优先级及特性&#xff0c;对写出高效且正确的代码至关重要。本文将系统梳理C语言操作符的核心知识点&#xff0c;包含实例代码与详细解析&#xff0c;助你彻底搞懂操作符。 1. 操作符的分类 C…

鸿蒙平台运行Lua脚本

1. 目标 使用 rust 在移动端实现 Lua 脚本的运行。 2. 核心步骤 [Rust Host App]│├── [mLua VM] (通过 mlua 或 rlua 库嵌入)│ ├── 独立Lua状态&#xff08;隔离执行&#xff09;│ ├── 受限标准库&#xff08;禁用危险函数&#xff09;│ └── 内存/CPU限…

【Ubuntu】发展历程

Ubuntu 是一个基于 Debian 的 Linux 发行版&#xff0c;由 Canonical 公司开发和维护。它以其易用性、稳定性和强大的社区支持而著称。以下是 Ubuntu 从发布以来的主要版本和发展历程&#xff1a;1. Ubuntu 4.10 "Warty Warthog" (2004)发布日期&#xff1a;2004年10…

k8s下springboot-admin 监控服务部署,客户端接入

踩坑及解决以下问题 1、客户端监控信息不显示,需要暴露监控检查接口路径 2、服务端不显示客户端日志,需要启用日志,并指定日志路径 3、解决在k8s下,客户端多实例注册id相同,如2个实例只显示一个 整体架构 springboot-admin 由服务端和客户端组成 服务端负责 1、提供 We…

git删除远程分支和本地分支

1. git删除远程分支 git push origin --delete [branch_name]2. 删除本地分支 2.1 git branch -d 会在删除前检查merge状态&#xff08;其与上游分支或者与head&#xff09;。 git branch -d [branch_name] 2.2 git branch -D 直接删除 git branch -D 是 git branch --delete…