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

家用服务器 Ubuntu 服务器配置与 Cloudflare Tunnel 部署指南

Ubuntu 服务器配置与 Cloudflare Tunnel 部署指南

本文档总结了我们讨论的所有内容,包括 Ubuntu 服务器配置、硬盘扩容、静态 IP 设置以及 Cloudflare Tunnel 的部署步骤。

目录

  1. 硬盘分区与扩容
  2. 设置静态 IP
  3. Cloudflare Tunnel 部署
  4. SSH 通过 Cloudflare Tunnel
  5. 常见问题与解决方案

硬盘分区与扩容

问题分析

物理硬盘为 128GB,但 Ubuntu 服务器只使用了约 58GB 空间。通过 lsblk 命令查看:

NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                         8:0    0 119.2G  0 disk 
├─sda1                      8:1    0   1.1G  0 part /boot/efi
├─sda2                      8:2    0     2G  0 part /boot
└─sda3                      8:3    0 116.2G  0 part └─ubuntu--vg-ubuntu--lv 253:0    0  58.1G  0 lvm  /

解决方案

LVM 逻辑卷只使用了 58.1GB,而物理分区 sda3 有 116.2GB。需要扩展 LVM 逻辑卷:

# 1. 查看卷组中可用空间
sudo vgdisplay ubuntu-vg# 2. 扩展逻辑卷以使用所有可用空间
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv# 3. 调整文件系统大小以匹配逻辑卷大小
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv

设置静态 IP

配置步骤

  1. 确定网络接口名称

    ip a
    

    找到主要网络接口名称(如 eth0、ens33 等)

  2. 创建/编辑 Netplan 配置文件

    sudo nano /etc/netplan/01-netcfg.yaml
    
  3. 添加静态 IP 配置(中国大陆优化版)

    network:version: 2renderer: networkdethernets:<你的网络接口>:dhcp4: noaddresses:- 192.168.1.20/24gateway4: 192.168.1.1nameservers:addresses: [223.5.5.5, 223.6.6.6, 114.114.114.114]
    
  4. 应用配置

    sudo netplan apply
    
  5. 验证配置

    ip a
    ping -c 4 baidu.com
    

Cloudflare Tunnel 部署

安装与配置

  1. 安装 cloudflared

    wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
    sudo dpkg -i cloudflared-linux-amd64.deb
    cloudflared --version
    
  2. 登录 Cloudflare

    cloudflared login
    
  3. 创建隧道

    cloudflared tunnel create fengche-homeserver
    
  4. 配置隧道

    sudo mkdir -p /etc/cloudflared
    sudo nano /etc/cloudflared/config.yml
    

    配置文件内容:

    tunnel: <你的隧道ID>
    credentials-file: /root/.cloudflared/<你的隧道ID>.json
    origincert: /root/.cloudflared/cert.pemingress:- hostname: <你的域名>service: http://localhost:80- service: http_status:404
    
  5. 配置 DNS

    cloudflared tunnel route dns fengche-homeserver <你的域名或子域名>
    

    注意:如果域名已有 DNS 记录,使用子域名或先删除现有记录。

设置为系统服务

  1. 创建自定义系统服务文件

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

    添加以下内容:

    [Unit]
    Description=Cloudflare Tunnel
    After=network.target[Service]
    Type=simple
    User=root
    ExecStart=/usr/bin/cloudflared tunnel run fengche-homeserver
    Restart=on-failure
    RestartSec=5s[Install]
    WantedBy=multi-user.target
    
  2. 启动并设置开机自启

    sudo systemctl daemon-reload
    sudo systemctl start cloudflared
    sudo systemctl status cloudflared
    sudo systemctl enable cloudflared
    

SSH 通过 Cloudflare Tunnel

配置步骤

  1. 修改配置文件

    sudo nano /etc/cloudflared/config.yml
    

    添加 SSH 服务:

    tunnel: <你的隧道ID>
    credentials-file: /root/.cloudflared/<你的隧道ID>.json
    origincert: /root/.cloudflared/cert.pemingress:- hostname: ssh.<你的域名>service: ssh://localhost:22- hostname: <你的域名>service: http://localhost:80- service: http_status:404
    
  2. 更新 DNS 记录

    cloudflared tunnel route dns fengche-homeserver ssh.<你的域名>
    
  3. 重启服务

    sudo systemctl restart cloudflared
    

客户端连接

使用 cloudflared 作为代理:

  1. 在客户端安装 cloudflared
  2. 使用以下命令连接:
    cloudflared access ssh --hostname ssh.<你的域名>
    

或配置 SSH 配置文件:

Host <服务器名称>ProxyCommand cloudflared access ssh --hostname ssh.<你的域名>User <用户名>

常见问题与解决方案

Cloudflare Tunnel 在中国大陆的访问情况

  • Cloudflare 的部分 IP 在中国大陆可能被限制访问
  • 访问体验可能不稳定,取决于地理位置和网络提供商
  • 建议先测试访问速度和稳定性,再决定是否全面采用

隧道凭证问题

如果遇到 “Tunnel credentials file doesn’t exist” 错误:

  1. 确保以相同用户身份创建和运行隧道
  2. 检查凭证文件路径是否正确
  3. 必要时重新创建隧道

服务启动失败

如果系统服务启动失败但手动命令可以运行:

  1. 使用自定义服务文件直接调用可工作的命令
  2. 检查日志获取详细错误信息:sudo journalctl -u cloudflared -f

DNS 记录冲突

如果遇到 “An A, AAAA, or CNAME record with that host already exists” 错误:

  1. 使用子域名而不是根域名
  2. 或删除现有 DNS 记录后再配置

演示站 fengche.site

相关文章:

家用服务器 Ubuntu 服务器配置与 Cloudflare Tunnel 部署指南

Ubuntu 服务器配置与 Cloudflare Tunnel 部署指南 本文档总结了我们讨论的所有内容&#xff0c;包括 Ubuntu 服务器配置、硬盘扩容、静态 IP 设置以及 Cloudflare Tunnel 的部署步骤。 目录 硬盘分区与扩容设置静态 IPCloudflare Tunnel 部署SSH 通过 Cloudflare Tunnel常见…...

【C++篇】类和对象(上)

目录 类的定义格式&#xff1a; 内敛函数&#xff1a; 类与struct的区别&#xff1a; 类的访问权限&#xff1a; 类域&#xff1a; 类的实例化&#xff1a; 对象大小&#xff1a; 计算对象的大小时&#xff0c;也存在内存对齐&#xff08;与结构体一样&#xff09;&…...

ES6/ES11知识点 续一

模板字符串 在 ECMAScript&#xff08;ES&#xff09;中&#xff0c;模板字符串&#xff08;Template Literals&#xff09;是一种非常强大的字符串表示方式&#xff0c;它为我们提供了比传统字符串更灵活的功能&#xff0c;尤其是在处理动态内容时。模板字符串通过反引号&…...

ES6入门---第二单元 模块二:关于数组新增

一、扩展运算符。。。 1、可以把ul li转变为数组 <script>window.onloadfunction (){let aLi document.querySelectorAll(ul li);let arrLi [...aLi];arrLi.pop();arrLi.push(asfasdf);console.log(arrLi);};</script> </head> <body><ul><…...

使用python加edge-tts实现文字转语音

文章目录 使用python加edge-tts实现文字转语音1. 使用 Python 安装 Edge-TTS2. 进一步优化3. 使用说明3.1 查看语音列表3.2 单语音转换3.3 批量生成所有语音3.4 改进亮点4. 使用教程最终代码文章创作不易使用python加edge-tts实现文字转语音 Edge-TTS(edge-tts Python 模块)本…...

如何用CSS实现HTML元素的旋转效果:从基础到高阶应用

在网页设计中&#xff0c;元素的动态效果能显著提升用户体验&#xff0c;而旋转效果是其中最常用的交互方式之一。CSS的transform属性提供了强大的旋转功能&#xff0c;结合动画&#xff08;animation&#xff09;和过渡&#xff08;transition&#xff09;&#xff0c;开发者可…...

轻量级RTSP服务模块:跨平台低延迟嵌入即用的流媒体引擎

在音视频流媒体系统中&#xff0c;RTSP&#xff08;Real-Time Streaming Protocol&#xff09;服务模块通常扮演着“视频分发中心”的角色&#xff0c;它将编码后的音视频内容转为标准的流媒体格式&#xff0c;供客户端&#xff08;播放器、云端平台、AI模块等&#xff09;拉流…...

AVInputFormat 再分析

AVInputFormat 是 FFmpeg 中用于描述输入格式&#xff08;如文件容器、设备流等&#xff09;的核心结构体&#xff0c;属于 libavformat 库的一部分。其主要功能是定义解封装&#xff08;demuxing&#xff09;过程中如何解析不同格式的输入数据。以下是其关键特性与使用方式的总…...

wpf CommandParameter 传递MouseWheelEventArgs参数

在 WPF 中通过 CommandParameter 传递 MouseWheelEventArgs 参数时&#xff0c;需结合 ‌事件到命令的转换机制‌ 和 ‌参数转换器‌ 来实现。以下是具体实现方案及注意事项&#xff1a; 一、核心实现方法 1. ‌使用 EventToCommand 传递原始事件参数‌ 通过 Interaction.Tr…...

摆脱养生误区泥沼,拥抱科学养生阳光

在养生的道路上&#xff0c;人们总是满怀热忱地追寻健康之道&#xff0c;然而&#xff0c;诸多似是而非的养生误区却如同泥沼一般&#xff0c;让不少人深陷其中&#xff0c;难以自拔。只有奋力摆脱这些误区的束缚&#xff0c;才能拥抱科学养生的温暖阳光&#xff0c;真正实现身…...

FreeRtos实战从入门到精通--任务创建和删除(动态方法)--事了拂衣去,深藏功与名

FreeRtos是之前的一些聪明的工程师写的免费且开源的嵌入式实时操作系统代码&#xff0c;由于我们实际工作中不需要再去写rtos&#xff0c;我们只需要用就行了&#xff0c;所以博主这里只分享项目工程实战相关的内容&#xff0c;具体rtos源码&#xff0c;可以无需理会&#xff0…...

卷积神经网络进化史:从LeNet-5到现代架构的完整发展脉络

摘要 本文系统梳理卷积神经网络(CNN)从诞生到繁荣的发展历程。从1998年Yann LeCun开创性的LeNet-5出发&#xff0c;重点解析2012年引爆深度学习革命的AlexNet&#xff0c;并详细拆解后续演进的五大技术方向&#xff1a;网络深度化(VGG)、卷积功能强化(ResNet)、检测任务迁移(F…...

《Qt C++ 项目中升级 GCC 版本的完整指南》

Qt C++ 项目中升级 GCC 版本的完整指南 在 Qt C++ 项目中升级 GCC 版本可能会影响编译工具链、Qt 库兼容性以及项目配置。以下是针对不同操作系统的升级步骤和注意事项: 一、为什么需要升级 GCC 版本? C++ 标准支持:新版本 GCC 支持 C++17/20 等新标准特性性能优化:编译速…...

Baklib赋能企业知识管理数字化转型

Baklib驱动知识智慧转化 在数字化浪潮中&#xff0c;企业知识资产的碎片化与低效流转已成为制约业务创新的核心瓶颈。Baklib作为新一代知识中台&#xff0c;通过构建智能化的知识治理体系&#xff0c;将分散的文档、数据与经验转化为可复用的业务智慧。其核心能力体现在多模态…...

LeetCode240. 搜索二维矩阵 II(巧妙转换)

编写一个高效的算法来搜索m x n矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 题目中最关键的信息就是每行从左到右升序&#xff0c;每列从左到右升序&#xff0c;如果暴力的话就用不到…...

AVFormatContext 再分析二

说明 &#xff1a;将 avfromatContext 的变量依次打印分析&#xff0c;根据ffmpeg 给的说明&#xff0c;猜测&#xff0c;结合网上的文章字节写测试代码分析二。 37 AVInputFormat *iformat; /** * The input container format. * * Demuxing only, set by avfo…...

leetcode0096. 不同的二叉搜索树-medium

1 题目&#xff1a;不同的二叉搜索树 官方标定难度&#xff1a;中 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xf…...

【科研绘图系列】R语言绘制世界地图(map plot)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理画图输出图片系统信息介绍 【科研绘图系列】R语言绘制世界地图(map plot) 加载R包 library(ggmap) library(RColorBrewer) library(pals) …...

【原创】风云扫描王[特殊字符]OCR识别翻译!证件照

&#x1f4e3;文字识别&#xff0c;文字提取&#xff0c;扫描翻译&#xff0c;证件扫描&#xff0c;表格识别&#xff0c;PDF加水印等一体的扫描应用。扫描任何东西&#xff0c;包括文件、纸质笔记、收据和书籍&#xff0c;把它们扫描成清晰的PDF文件和图像。使用OCR技术将图像…...

Fabrice Bellard(个人网站:‌bellard.org‌)介绍

Fabrice Bellard 是法国人&#xff0c;国际知名程序员。 Fabrice Bellard&#xff08;个人网站&#xff1a;‌bellard.org‌&#xff09;是计算机领域最具影响力的程序员之一&#xff0c;其贡献跨越多个技术领域并持续推动开源生态发展。以下是其关键成就与技术贡献的梳理&…...

Linux电源管理(5)_Hibernate和Sleep功能介绍

原文&#xff1a;Linux电源管理(5)_Hibernate和Sleep功能介绍 1. 前言 Hibernate和Sleep两个功能是Linux PM的核心功能&#xff0c;它们的目的是类似的&#xff1a;暂停使用——>保存上下文——>关闭系统以节电>恢复系统——>恢复上下文——>继续使用。 本文…...

【C/C++】Linux的futex锁

文章目录 Linux Futex1. 概述2. 核心设计思想3. Futex 系统调用接口4. 核心操作4.1 阻塞等待 (FUTEX_WAIT)4.2 唤醒线程 (FUTEX_WAKE)4.3 进阶操作 5. Futex 的使用场景5.1 实现用户态互斥锁 (Mutex)5.2 实现条件变量 (Condition Variable) 6. Futex 的优缺点7. Futex 与传统同…...

ChatGPT:重塑人工智能交互范式的破晓之作

2022年11月30日&#xff0c;总部位于旧金山的研究公司OpenAI正式发布了ChatGPT——一款以病毒式传播速度席卷全球的AI聊天机器人。它不仅能像人类一样生成内容、回答问题和解决问题&#xff0c;更在推出后的两个月内吸引了超过1亿月活跃用户&#xff0c;刷新了消费级技术应用的…...

java面向对象编程【高级篇】之特殊类

目录 &#x1f680;前言&#x1f31f;final关键字&#x1f4af;常量 &#x1f99c;单例类&#x1f4af;饿汉式单例类&#x1f4af;懒汉式单例类 ✍️枚举类&#x1f40d;抽象类&#x1f4af;应用场景&#x1f4af;模版方法设计模式 ⚙️接口&#x1f4af;实现类&#x1f4af;接…...

JVM 一文详解

目录 JVM 简介 JVM 中的内存区域划分 1. 堆&#xff08;一个进程只有一份 ------ 线程共享&#xff09; 2. 栈&#xff08;一个进程可以有 N 份 ------ 线程私有&#xff09; Java 虚拟机栈&#xff1a; 本机方法栈&#xff1a; 3. 程序计数器&#xff08;一个线程可以…...

PVD中断检测掉电

文章目录 概述配置掉电擦写注意 概述 STM32 PVD功能具体可以检测到上电、掉电瞬间&#xff0c;其处理方式有中断响应及事件响应。掉电设置为上升沿触发&#xff0c;上电为下降沿触发 配置 1.开启PVD中断并设置其优先级 2.配置响应中断或事件的阈值电压 3.配置响应模式 生成…...

Nginx — 防盗链配置

防盗链简述 防盗链是一种保护网络资源所有者权益的技术手段&#xff0c;旨在防止未经授权的用户或网站通过直接链接的方式盗用资源&#xff0c;以下是关于防盗链的简述&#xff1a; 原理 基于请求头验证&#xff1a;服务器通过检查请求头中的特定字段&#xff0c;如Referer字…...

题解:P2485 [SDOI2011] 计算器

### 思路 本题是一个比较模板化的题目。 #### 一操作 考虑使用快速幂。 快速幂&#xff0c;只需要把 $k$ 变成二进制即可实现 $\Theta(\log k)$ 的时间复杂度。 实现方法&#xff1a; cpp long long qmi(long long a,long long k,long long p){ long long res 1; …...

【算法刷题笔记day one】滑动窗口(定长基础版)

前言 hello大家好呀 好久不见&#xff0c;上次更新是去年12月份的事情了。这段时间好好沉淀了一下&#xff0c;打了几场比赛&#xff0c;论文也写了一些&#xff0c;也收集了不少信息&#xff0c;对未来方向也有了不一样的计划。 这个算法系列可以说是接着我之前的数据结构系…...

Redis从入门到实战实战篇2

面试重点&#xff1a;本篇包含悲观锁&#xff0c;乐观锁&#xff0c;多线程以及分布式锁的知识 目录 3.优惠卷秒杀 3.1 -全局唯一ID 3.2 -Redis实现全局唯一Id 3.3 添加优惠卷 3.4 实现秒杀下单 3.5 库存超卖问题分析 3.6 乐观锁解决超卖问题 3.7 优惠券秒杀-一人一单 …...

代码随想录算法训练营Day43

力扣300.最长递增子序列 力扣674.最长连续递增子序列【easy】 力扣1143.最长公共子序列【medium】 力扣718.最长重复子数组【medium】 一、力扣300.最长递增子序列【medium】 题目链接&#xff1a;力扣300.最长递增子序列 视频链接&#xff1a;代码随想录 题解链接&#xff1a…...

Scrapy框架之【settings.py文件】详解

settings.py 文件的主要作用是对 Scrapy 项目的全局设置进行集中管理。借助修改这个文件中的配置项&#xff0c;你可以对爬虫的行为、性能、数据处理等方面进行灵活调整&#xff0c;而无需修改爬虫代码。 ①默认英文注释settings.py # Scrapy settings for douban project # …...

Nginx发布Vue(ElementPlus),与.NETCore对接(腾讯云)

案例资料链接&#xff1a;https://download.csdn.net/download/ly1h1/90745660 1.逻辑说明 1.1 逻辑示意图 # 前端请求处理逻辑图浏览器请求流程: 1. 浏览器发起请求├─ 开发环境(DEV)│ ├─ 请求URL: http://192.168.0.102:3000/api/xxx│ └─ 被Vite代理处理└─ 生产…...

深入探索 AAC 编码原理与 ADTS 格式:音频世界的智慧结晶

在数字音频的广阔领域中&#xff0c;AAC 编码及其相关的 ADTS 格式扮演着至关重要的角色。无论是在我们日常使用的音乐 APP&#xff0c;还是高清视频中的音频部分&#xff0c;都能看到它们的身影。今天&#xff0c;就让我们深入探索 AAC 编码原理与 ADTS 格式的奥秘&#xff0c…...

深度学习核心架构:探明四种基础神经网络

摘要 本文对多层感知机(MLP)、卷积神经网络(CNN)、循环神经网络(RNN)和注意力机制等深度学习核心架构的内部运作机制进行可视化分析。通过展示参数学习过程、激活映射和注意力分布等关键特征&#xff0c;揭示了"黑箱"模型的内部工作原理&#xff0c;为模型可解释性研…...

解析机器人 2.0.2 | 支持超过50种短视频平台的链接解析,无水印提取,多功能下载工具

解析机器人是一款功能强大的工具软件&#xff0c;登录即可解锁会员特权。它支持超过50种短视频平台的链接解析&#xff0c;包括抖音、快手、西瓜、bilibili等&#xff0c;并能实现无水印提取。此外&#xff0c;还提供P2P下载、磁力链等多种下载方式&#xff0c;确保用户能够快速…...

【漫话机器学习系列】237. TSS总平方和

深度理解 TSS&#xff08;总平方和&#xff09;&#xff1a;公式、意义与应用 在机器学习与统计建模领域&#xff0c;评价模型好坏的重要指标之一就是方差与误差分析。其中&#xff0c;TSS&#xff08;Total Sum of Squares&#xff0c;总平方和&#xff09;扮演着非常关键的角…...

flutter3.29 build.gradle.kts设置安卓签名

1、在android目录下创建key.properties文件 storePassword密码 keyPassword密码 keyAlias别名 storeFilejks文件完整路径 2、修改android/app/build.gradle.kts 顶部插入import java.util.Properties import java.io.FileInputStreamval keystoreProperties Properties() v…...

<servlet-class>和</url-pattern>的作用

在 SpringMVC 的 web.xml 配置中&#xff0c;<servlet-class> 和 <url-pattern> 是两个关键配置项&#xff0c;分别用于指定处理请求的 Servlet 类和定义该 Servlet 拦截的请求路径规则。以下是它们的具体作用及原理分析&#xff1a; 一、<servlet-class> 的…...

linux部署的mysql数据库修改表名为小写配置

背景: 使用ruoyi-flowable框架初始化流程表结构时, 执行的sql语句创建的表名是大写。但mysql执行sql时大小写是敏感的 删除大写表 处理配置 使用mysql 8.0.41配置表名大小写敏感配置&#xff0c;需要初始化数据库 在MySQL 8.0及以上版本中&#xff0c;lower_case_table_names参…...

【Hot 100】94. 二叉树的中序遍历

目录 引言二叉树的中序遍历我的解题代码优化更清晰的表述建议&#xff1a; &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;算法专栏&#x1f4a5; 标题&#xff1a;【Hot 100】94. 二叉树的中序遍历❣️ 寄语&#xff1a;书到用时方恨少&#xff…...

基于D-Mixer与TransXNet的YOLOv8改进—融合全局-局部特征与空间降维注意力机制的CNN-ViT混合架构

随着目标检测任务对精度与效率要求的不断提升,传统的卷积神经网络(CNN)在建模长程依赖和复杂语义关系方面逐渐暴露出其局限性。而视觉Transformer(ViT)虽然在全局信息建模上表现优异,却因计算开销大、局部细节感知能力不足,在实时检测任务中难以直接部署。本文提出一种面向Y…...

《算法导论(第4版)》阅读笔记:p2-p3

《算法导论(第4版)》学习第 2 天&#xff0c;p2-p3 总结&#xff0c;总计 2 页。 一、技术总结 无。 二、英语总结(生词&#xff1a;1) 1.incremental (1) increase: in-(“in”) crescere “to grow” (2)increment (3)incremental: increment -al adj. incremental…...

基于Qlearning强化学习的电梯群控系统高效调度策略matlab仿真

目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 Q-learning强化学习原理 2.2 基于Q-learning的电梯群控系统建模 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下&#xff08;完整代码运行后无水印&#xff09;&#xff1a; 仿真操作…...

嵌入式硬件篇---STM32F103C8T6STM32F103RCT6

文章目录 前言一、相同点内核与主频基础外设开发环境 二、不同点1. 存储容量2. 外设资源3. 封装与引脚 三、代码移植注意事项1. 内存与 Flash 限制Flash差异RAM调整 2. 外设差异外设缺失&#xff1a;GPIO 映射&#xff1a; 3. 中断向量表中断向量偏移 4. 时钟与总线配置APB分频…...

rhce第二次作业

任务目标 1.配置ssh实现A&#xff0c;B主机互相免密登录 2.配置nginx服务&#xff0c;通过多ip区分多网站 任务一 关闭防火墙 [rootlocalhost ~]# setenforce 0 [rootlocalhost ~]# systemctl stop firewalld.service A主机免密登录B主机 ### A主机生成密钥 [rootlocalh…...

Linux第20节 --- inode和文件系统

一、没有被打开的文件 如果一个文件没有被打开&#xff0c;那么该文件存储在哪里&#xff1f; 该文件是存储在磁盘当中的&#xff01; 文件 文件内容 文件属性&#xff01; 文件的内容是按照数据块存储的&#xff1b;文件的属性其实就是inode&#xff08;是一个128字节的…...

LeetCode - 19.删除链表的倒数第N个结点

目录 题目 解法一 双指针算法 核心思想 执行流程 具体例子 代码 解法二 两次遍历法 核心思想 执行流程 具体例子 代码 题目 19. 删除链表的倒数第 N 个结点 - 力扣&#xff08;LeetCode&#xff09; 解法一 双指针算法 核心思想 利用双指针间隔固定距离(n1)&a…...

在 Ubuntu 上安装 cPanel

开始之前&#xff0c;请确保拥有一台 Ubuntu 服务器&#xff0c;推荐使用 Ubuntu 22.04 LTS。如果没有&#xff0c;可以查看免费服务器&#xff1a; 11个免费 VPS&#xff0c;够用一辈子了&#xff01;&#xff08;2025最新&#xff09;Top 11 免费VPS推荐平台对比&#xff08…...

《Linux macOS :GCC升级方法》

GCC&#xff08;GNU Compiler Collection&#xff09;是广泛使用的编译器套件&#xff0c;升级到9以上版本可以获得更好的C17/20支持和性能优化。以下是不同Linux发行版和macOS的升级方法&#xff1a; Ubuntu/Debian 系统 添加工具链源 sudo apt update sudo apt install soft…...