Linux文件系统与磁盘管理
文件系统和磁盘管理是Linux系统管理的核心组成部分,直接影响系统的性能、数据安全性和存储效率。本文将从Linux文件系统的基本概念出发,深入探讨其架构、类型、管理工具以及实际操作技巧,帮助读者全面理解并掌握这一关键领域。
第一章:Linux文件系统基础
1.1 文件系统的定义与重要性
文件系统是操作系统用来组织、管理和存储数据的机制。在Linux中,文件系统不仅负责数据的存储,还涉及权限管理、数据完整性检查和性能优化等功能。一个高效的文件系统可以显著提升系统的运行效率,而错误的选择或管理不当则可能导致数据丢失或性能瓶颈。
Linux支持多种文件系统,每种都有其独特的特性和适用场景。选择合适的文件系统需要综合考虑性能、数据完整性、兼容性和存储需求等因素。以下是几种常见文件系统的特点及应用场景:
- ext2:一种较老的文件系统,不支持日志功能(journaling),因此在现代系统中逐渐被淘汰。但由于其低开销特性,仍适用于某些特定场景,如USB闪存驱动器。
- ext3与ext4:ext3引入了日志功能,能在系统崩溃后快速恢复数据;ext4在此基础上进一步优化,支持更大的文件和分区,是目前大多数Linux发行版的默认选择。ext4在性能、可靠性和大文件支持方面达到了良好的平衡。
- Btrfs:一种现代文件系统,以快照(snapshotting)和内置数据完整性检查著称,适合复杂的存储需求,如企业级存储系统。
- XFS:擅长处理大文件和高I/O负载环境,广泛应用于需要高性能的文件服务器。
- NTFS:最初为Windows设计,但在Linux中也得到支持,主要用于双系统兼容性或外部存储设备。
选择文件系统时,需根据具体需求权衡。例如,如果你需要跨平台兼容性,NTFS可能是更好的选择;若追求性能和数据恢复能力,ext4或Btrfs则更适合。
1.2 Linux文件系统的层次结构
Linux继承了Unix的文件系统架构,采用层次化的树形结构。这种设计以根目录(/
)为顶点,所有文件和目录都从此处展开。与Windows的盘符(如C:\)不同,Linux将所有存储设备整合到一个统一的目录树中。
文件系统的核心组件之一是inode(索引节点)。每个文件或目录都对应一个inode,它是一个存储元数据的数据结构,包括:
- 文件权限
- 所有者信息
- 文件大小
- 时间戳(如创建时间、修改时间)
- 数据块指针(指向文件实际内容的存储位置)
有趣的是,inode并不存储文件名或文件内容本身。文件名由目录项(directory entry)维护,而文件内容则分散在磁盘的数据块中。为了便于理解,我们可以用一个类比:将Linux文件系统想象成一个图书馆。inode就像图书馆书目卡片,记录了每本书的详细信息(作者、位置等),但不包含书的内容;整个inode表则是图书馆的书目数据库,操作系统通过它快速定位和管理文件。
1.3 文件类型
在Linux中,文件不仅仅是普通的数据容器,还包括多种类型,每种类型在文件系统中扮演不同角色:
- 普通文件(Regular Files):最常见的文件类型,可以包含文本数据(如ASCII文件)或二进制数据(如图片、音频或可执行文件)。这些文件分布在文件系统的各个目录中,而非仅限于根目录。
- 目录(Directories):本质上是一种特殊文件,用于存储其他文件或子目录的信息。目录是文件系统的组织单元,类似于文件夹,其父目录是包含它的上一级目录。
- 符号链接(Symbolic Links):类似于快捷方式,指向其他文件或目录。符号链接无需复制文件内容即可提供访问入口,常用于简化复杂目录结构或快速定位重要文件。
每种文件类型都可能拥有不同的权限设置。例如,文件所有者可能拥有读、写、执行权限,而其他用户可能仅限于只读。这种权限机制为Linux提供了灵活的安全性管理。
第二章:文件系统管理
2.1 查看文件与inode信息
在Linux中,管理文件系统首先需要了解其状态。ls -il
命令是一个常用工具,可以列出文件的详细信息,包括inode编号。例如:
@vortex[/vortex]$ ls -il
total 0
10678872 -rw-r--r-- 1 cry0l1t3 vortex 234123 Feb 14 19:30 myscript.py
10678869 -rw-r--r-- 1 cry0l1t3 vortex 43230 Feb 14 11:52 notes.txt
输出中,第一列是inode号(如10678872),后续依次显示权限、所有者、文件大小和时间戳等信息。如果磁盘的inode资源耗尽,即使存储空间仍有剩余,也无法创建新文件。因此,监控inode使用情况是文件系统管理的重要环节。
2.2 文件权限与管理
Linux文件权限分为三类用户:所有者(owner)、组(group)和其他用户(others),每类用户可分别设置读(r)、写(w)和执行(x)权限。例如,-rw-r--r--
表示所有者有读写权限,其他人只有读权限。这种独立性确保了对权限的精确控制。
更改权限可以使用chmod
命令。例如,将myscript.py
的权限改为所有人可执行:
@vortex[/vortex]$ chmod +x myscript.py
@vortex[/vortex]$ ls -l
-rwxr-xr-x 1 cry0l1t3 vortex 234123 Feb 14 19:30 myscript.py
权限管理是Linux安全性的基石,合理设置权限可以有效防止未经授权的访问或误操作。
第三章:磁盘与分区管理
3.1 磁盘管理概述
磁盘管理涉及对物理存储设备的管理,包括硬盘、固态硬盘(SSD)和可移动设备。Linux提供了多种工具来完成这一任务,其中fdisk
是最常用的分区工具。它允许用户创建、删除和查看分区信息。例如:
@vortex[/vortex]$ sudo fdisk -l
Disk /dev/vda: 160 GiB, 171798691840 bytes, 335544320 sectors
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 158974027 158971980 75.8G 83 Linux
/dev/vda2 158974028 167766794 8792767 4.2G 82 Linux swap / Solaris
上述输出显示磁盘/dev/vda
有160GB容量,分为两个分区:一个75.8GB的Linux分区和一个4.2GB的交换分区。除了fdisk
,图形化工具如GParted
也常用于分区管理,适合初学者。
3.2 分区与格式化
分区是将物理磁盘划分为多个逻辑部分的的过程。每个分区可以格式化为不同的文件系统,如ext4或FAT32。格式化使用mkfs
命令,例如:
@vortex[/vortex]$ sudo mkfs.ext4 /dev/vda1
格式化完成后,分区即可用于挂载和存储数据。
第四章:挂载与文件系统整合
4.1 挂载的定义
挂载(mounting)是将磁盘分区或设备关联到文件系统目录的过程。挂载点(mount point)是一个现有目录,挂载后该目录的内容将被替换为设备的内容。例如,将USB设备挂载到/mnt/usb
:
@vortex[/vortex]$ sudo mount /dev/sdb1 /mnt/usb
@vortex[/vortex]$ ls -l /mnt/usb
drwxr-xr-x 1 root root 18 Oct 14 2021 'Account Takeover'
drwxr-xr-x 1 root root 18 Oct 14 2021 'API Key Leaks'
...
挂载后,USB的内容即可通过/mnt/usb
访问。
4.2 自动挂载与/etc/fstab
手动挂载适用于临时使用,但系统重启后需重新操作。为实现开机自动挂载,可以编辑/etc/fstab
文件:
@vortex[/vortex]$ cat /etc/fstab
UUID=3d6a020d-...-9e085e9c927a / btrfs defaults,noatime 0 1
UUID=21f7eb94-...-d4f58f94e141 swap swap defaults 0 0
每行指定了文件系统、挂载点、类型和选项。noatime
等选项可优化性能。
4.3 查看挂载状态
使用mount
命令可以列出当前挂载的文件系统:
@vortex[/vortex]$ mount
/dev/vda1 on / type btrfs (rw,noatime,nodiratime,...)
若需卸载,使用umount
命令:
@vortex[/vortex]$ sudo umount /mnt/usb
注意,卸载前需确保没有进程占用该文件系统,可用lsof
检查:
@vortex[/vortex]$ lsof | grep /mnt/usb
第五章:交换空间(Swap)管理
5.1 交换空间的作用
交换空间是Linux内存管理的重要组成部分。当物理内存(RAM)不足时,系统将不活跃的内存页面移至交换空间,从而释放RAM供活跃进程使用,此过程称为交换。此外,交换空间还支持休眠(hibernation)功能,将系统状态保存至磁盘。
5.2 创建与激活交换空间
创建交换空间可以使用mkswap
和swapon
命令。例如:
@vortex[/vortex]$ sudo fallocate -l 2G /swapfile
@vortex[/vortex]$ sudo chmod 600 /swapfile
@vortex[/vortex]$ sudo mkswap /swapfile
@vortex[/vortex]$ sudo swapon /swapfile
上述命令创建并激活了一个2GB的交换文件。为确保开机生效,需更新/etc/fstab
:
/swapfile none swap sw 0 0
5.3 交换空间的大小与优化
交换空间的大小取决于系统内存和使用场景。传统建议为RAM的1-2倍,但在现代大内存系统中,可能仅需少量或无需交换空间。
设置交换空间时,请务必将其分配到专用分区或文件上,与文件系统的其余部分分开。这可以防止碎片,并确保在需要时有效使用交换区域。此外,由于敏感数据可以临时存储在交换空间中,因此建议对交换空间进行加密,以防止潜在的数据泄露。
除了扩展物理内存外,交换空间还用于休眠。休眠是一种省电功能,可将系统的状态(包括打开的应用程序和进程)保存到交换空间并关闭系统电源。当系统重新打开电源时,它会从交换空间恢复其以前的状态,并准确地从中断的位置恢复。
第六章:实践案例与技巧
6.1 案例:USB设备管理
假设你插入一个USB设备,设备名为/dev/sdb1
,希望挂载并查看内容:
- 检查设备:
lsblk
- 挂载:
sudo mount /dev/sdb1 /mnt/usb
- 浏览:
ls /mnt/usb
- 安全卸载:
sudo umount /mnt/usb
6.2 优化技巧
- 使用
noatime
减少磁盘写入,提升性能。 - 定期检查inode和磁盘使用情况:
df -i
和df -h
。 - 对敏感数据分区启用加密。
结语
Linux文件系统与磁盘管理是一个复杂但充满乐趣的领域。通过理解文件系统类型、层次结构、管理工具和实践技巧,你可以更高效地管理数据和存储设备。本文从基础理论到具体操作,旨在为读者提供全面的学习路径。希望你在Linux的学习与实践中不断进步,探索更多可能性!
相关文章:
Linux文件系统与磁盘管理
文件系统和磁盘管理是Linux系统管理的核心组成部分,直接影响系统的性能、数据安全性和存储效率。本文将从Linux文件系统的基本概念出发,深入探讨其架构、类型、管理工具以及实际操作技巧,帮助读者全面理解并掌握这一关键领域。 第一章&#x…...
【云馨AI-大模型】大模型的开发和应用中,Python、PyTorch和vLLM关系概括
说明 1. Python 定位:基础编程语言。作用:Python 是大模型生态系统的核心语言,几乎所有深度学习框架(如 PyTorch、TensorFlow)和工具链(如 vLLM)都通过 Python 接口提供服务。特点:…...
AWS SAP学习笔记-概念
1、什么是ETL应用程序,举个例子说明? ETL(Extract, Transform, Load)应用程序是一种用于数据处理和迁移的工具或程序,它主要负责从多个数据源提取数据,对数据进行转换和清洗,然后将处理后的数据…...
kotlin知识体系(三) : Android Kotlin 中的函数式编程实践指南
前言 Kotlin以函数式编程革新了Android开发,通过高阶函数、扩展函数等特性,帮助开发者构建高可维护性代码。接下来我们来看一下Kotlin 中的函数式编程的各个特性。 1. 高阶函数与 Lambda 表达式:函数作为参数或返回值 在 Kotlin 中&#x…...
SpringBoot3+Vue3实战(Vue3快速开发登录注册页面并对接后端接口、表单项自定义校验规则、Hutool工具类)(4)
目录 一、SpringBoot3Vue3实现基本增删改查。前后端通信交互、配置后端跨域请求。数据批量删除。(博客链接) 二、SpringBoot3Vue3快速开发登录、注册页面并实现对接。 (1)操作数据表employee(员工信息表)。 <1>修改employee表的字段组成。 <2&g…...
OpenCV图像拼接项目指南
引言 图像拼接是计算机视觉领域中的一个重要应用,它可以将多张有重叠区域的图像拼接成一张全景图。这项技术广泛应用于虚拟现实、医学影像、卫星图像处理等领域。OpenCV作为一个强大的开源计算机视觉库,提供了丰富的工具和函数来实现图像拼接。本文将详…...
机器学习--DBSCAN聚类算法详解
目录 引言 1. 什么是DBSCAN聚类? 2. DBSCAN聚类算法的原理 3. DBSCAN算法的核心概念 3.1 邻域(Neighborhood) 3.2 核心点(Core Point) 3.3 直接密度可达(Directly Density-Reachable) 3…...
使用 Docker 构建 LangChain 开发环镜及 ChatOllama 示例
文章目录 Github官网简介Dockerfilerequirements.txt构建 LangChain 镜像ChatOllama 示例Ollama 示例模拟 tools Github https://github.com/langchain-ai/langchain 官网 https://python.langchain.com/docs/introduction/ 简介 LangChain 是一个用于构建 LLM 驱动的应用…...
持续集成与持续交付:这里有从开发到部署的全流程优化
阅读原文 在上一篇中,我们深入探讨了安全测试的核心内容,强调了它在发现安全漏洞和提升系统安全性中的重要作用。接下来,我们将聚焦于持续集成(CI)与持续交付(CD),这是现代软件开发…...
CH32V208蓝牙内部带运放32位RISC-V工业级微控制器CH32V208CBU6、CH32V208GBU6开发板原理图和PCB
开发板 CH32V208CBU6立创格式的开发板上述链接可下载,官方文件进行了转换,使用前请仔细核对。 CH32V208CBU6原理图,上述图片为芯片部分。已进行DRC。 CH32V208CBU6 PCB三维图,上述图片为芯片部分。已进行DRC。 CH32V208GBU6开发…...
机器臂运动控制算法工程师面试
大厂的经验总结: 一、基础概念理解 请解释机器臂运动学正解和逆解的概念,并分别说明其用途。 正解:已知机器臂各关节的角度(或位移),通过运动学模型计算出机器臂末端执行器在笛卡尔空间中的位置和姿态。用途在于可以根据给定的关节驱动值,预测末端的实际位置,用于运动…...
【一起来学kubernetes】21、Secret使用详解
Secret 的详细介绍 Secret 是 Kubernetes 中用于存储和管理敏感信息(如密码、令牌、密钥等)的资源对象。Secret的设计目的是为了安全地存储和传输敏感信息,如密码、API密钥、证书等。这些信息通常不应该直接硬编码在配置文件或镜像中&#x…...
Java架构师成长之路
概述 本教程主要从6个方面,全面讲解Java技术栈的知识。 1.性能调优 深入理解MySQL底层原理、索引逻辑,数据结构与算法。使用Explain进行优化分析MVCC原理剖析日志机制解析 2.框架源码 掌握Spring底层原理带你手写一个Spring解析IOC、AOP源码、以及事…...
Cyberchef实用功能之-json line格式文件美化和查询
本文将介绍一下如何使用cyberchef对json line格式数据进行美化方便阅读,以及json line格式数据的批量查询操作。 之前的文章介绍了json格式数据的美化和查询,即Cyberchef实用功能之-json解析美化和转换,Cyberchef实用功能之-批量提取json数据…...
span与span之间的空白如何解决?
<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>标题</title> <style>div{background: yellow;}span:first-of-type{background: red;}span:last-of-type{background: blue;}</styl…...
2024年MathorCup数学建模B题甲骨文智能识别中原始拓片单字自动分割与识别研究解题全过程文档加程序
2024年第十四届MathorCup高校数学建模挑战赛 B题 甲骨文智能识别中原始拓片单字自动分割与识别研究 原题再现: 甲骨文是我国目前已知的最早成熟的文字系统,它是一种刻在龟甲或兽骨上的古老文字。甲骨文具有极其重要的研究价值,不仅对中国文…...
3.23学习总结
字符串 String java.lang,String 类代表字符串,Java程序中所有的字符串文字都为此类的对象 字符串的内容是不会发生改变的,它的对象在创建之后不能呗更改 字符串的内存模型 当使用双引号直接赋值时,系统会检查该字符串在串池中是否存在。 …...
RT-Thread CI编译产物artifacts自动上传功能介绍
近期在RT-Thread开源项目中,我们引入了一项实用的功能改进——将每次CI(持续集成)编译生成的产物(artifacts)自动上传到GitHub,方便开发者和用户能够更便捷地获取和测试最新的编译结果。 参考链接…...
Android adb调试应用程序
启动app 有的时候app不是预先安装的,也不能从界面start一个app,这时需要后台拉起app。 $adb shell am start package.name/Activity.name 例如,android原生camera app, 包名为com.android.camera2, mainActivity名为…...
仅靠prompt,Agent难以自救
Alexander的观点很明确:未来 AI 智能体的发展方向还得是模型本身,而不是工作流(Work Flow)。还拿目前很火的 Manus 作为案例:他认为像 Manus 这样基于「预先编排好的提示词与工具路径」构成的工作流智能体,…...
【嵌入式学习2】函数
目录 ## 函数 ## 函数分类 ## 函数定义 1、无参数无返回值 2、有参数无返回值 3、有参数有返回值 ## 函数声明 ## 局部变量和全局变量 ## 多文件编程 如何避免把同一个头文件 include 多次,或者头文件嵌套包含? 命令行编译文件 头文件包含的…...
平芯微PW5012应用电路
PW5012应用电路板介绍: 1.1 单节和两节锂电池升压 12V 或 9V, 1A 至 3A 电路板, 1.2 应用: 升压电压转换板 1.3 VIN 输入电压: 3V-9V 1.4 VOUT 输出电压: 9V 2A(VIN3.7V) ࿰…...
Langchain4J框架相关面试题
以下是关于Langchain4J框架的面试题目及答案 ### Langchain4J基础概念类 1. **Langchain4J框架是什么?它的核心功能有哪些?** Langchain4J是一个用于构建语言模型应用的Java框架,它为开发者提供了一套简洁高效的API,使得在Jav…...
【MySQL】用户管理
目录 一、用户1.1 用户信息1.2 创建用户1.3 删除用户1.4 修改用户密码1.4.1 用户修改自己密码1.4.2 root用户修改指定用户的密码 二、数据库的权限2.1 给用户授权2.2 回收用户权限 结尾 一、用户 1.1 用户信息 MySQL中的用户,都存储在系统数据库mysql的user表中。…...
5.高频加热的原理与常用集成电路介绍
一、高频加热的类型 利用高频电源加热通常由两种方法:电介质加热(被加热物体绝缘)与感应加热(被加热物体导电),详细解释如下: 电介质加热(利用高频电压的高频电场导致物体自身分子摩…...
Elasticsearch:可配置的推理 API 端点分块设置
作者:来自 Elastic Daniel Rubinstein Elasticsearch 开放推理 API 现已支持可配置的分块,以便在文档摄取时处理语义文本字段。 Elasticsearch 推理 API 允许用户利用各种提供商的机器学习模型执行推理操作。其中一个常见用例是在索引中支持用于语义搜索…...
从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.1.2多头注意力扩展与掩码机制(因果掩码与填充掩码)
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 2.1.2 多头注意力扩展与掩码机制(`因果掩码与填充掩码`)1. 多头注意力机制:分治策略的数学实现1.1 多头注意力核心公式2. 逐行代码实现2.1 多头拆分与合并3. 掩码机制:注意力控制的核心技术3.1 因果…...
Scikit-learn模型评估全流程解析:从数据划分到交叉验证优化
模型评估的步骤、scikit-learn函数及实例说明 1. 数据划分(Train-Test Split) 函数:train_test_split使用场景:将数据分为训练集和测试集,避免模型过拟合。作用:确保模型在未见过的数据上验证性能。示例&…...
大模型量化框架GPTQModel的基本使用方法
接上一篇博客:AutoGPTQ报torch._C._LinAlgError: linalg.cholesky: The factorization could not be completed的解决办法-CSDN博客 如果Llama factory量化一直报错,可以改用其他的量化框架,例如GPTQ:https://github.com/ModelCl…...
HTTP长连接与短连接的前世今生
HTTP长连接与短连接的前世今生 大家好!作为一名在互联网摸爬滚打多年的开发者,今天想跟大家聊聊HTTP中的长连接和短连接这个话题。 记得我刚入行时,对这些概念一头雾水,希望这篇文章能帮助新入行的朋友少走些弯路。 什么是HTTP…...
线程控制学习
1、线程创建: int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void * (*start_routine)(void*), void *arg); 参数 thread:返回线程ID;attr:设置线程的属性,attr为nullptr表示使用默认属性(一般…...
使用 Node.js 从零搭建 Kafka 生产消费系统
目录 一、Kafka 核心概念速览 二、环境准备 三、生产者实现:发送消息 四、消费者实现:处理消息 五、高级配置与最佳实践 六、常见问题解决 七、应用场景示例 总结 Apache Kafka 作为高吞吐、分布式的消息队列系统,在实时数据流处理中…...
【Linux系统】Linux权限讲解!!!超详细!!!
目录 Linux文件类型 区分方法 文件类型 Linux用户 用户创建与删除 用户之间的转换 su指令 普通用户->超级用户(root) 超级用户(root) ->普通用户 普通账户->普通账户 普通用户的权限提高 sudo指令 注: Linux权限 定义 权限操作 1、修改文…...
Ubuntu安装TensorFlow 2.13-GPU版全流程指南(anaconda)
目录 一、安装前准备1.版本选择依据2.创建独立环境 二、详细安装步骤1.通过conda自动安装依赖2.手动验证依赖版本 三、补充说明1.组件依赖关系表2.常见问题解决方案3.性能验证脚本 一、安装前准备 1.版本选择依据 当前最新稳定版:TensorFlow 2.13&a…...
Spring事务管理
介绍了事务的概念,事务的特性,JDBC 事务管理的步骤和操作过程,以及Spring事务管理的两种实现方式:编程式事务管理和声明式事务管理。 1.事务的概念 事务(Transaction)就是将一系列的数据库操作作为一个整体…...
避雷 :C语言中 scanf() 函数的错误❌使用!!!
1. 返回值说明 scanf函数会返回成功匹配并赋值的输入项个数,而不是返回输入的数据。 可以通过检查返回值数量来确认输入是否成功。若返回值与预期不符,就表明输入存在问题。 #include <stdio.h>int main() {int num;if (scanf("%d", …...
判断一个操作是不是允许
一、目的 简单探索一个URL请求是不是允许的。 二、具体过程 (一)系统的初始化 系统数据库有账户"admin",密码是"123"。 账号"admin"的角色是管理员"manager"。 假设管理员身份设定的权限是: 1、对于/user/开头的…...
【FPGA开发】Cordic原理推导、Xilinx PG105手册解读
目录 Cordic原理推导PG105手册解读IP核总览核心计算功能总览基本握手信号非阻塞模式 NonBlocking Mode阻塞模式 Block Mode 数据格式数据映射 本文针对Cordic算法本身,以及Xilinx官方CORDIC IP做学习记录,如有纰漏,欢迎指正! Cord…...
数据结构与算法:宽度优先遍历
前言 进入图论部分难度明显提升了一大截,思路想不到一点…… 一、宽度优先遍历 1.内容 宽度优先遍历主要用于在图上求最短路。 (1)特点 宽度优先遍历的特点就是逐层扩展,最短路即层数 (2)使用条件 …...
PyTorch 面试题及参考答案(精选100道)
目录 PyTorch 的动态计算图与 TensorFlow 的静态计算图有何区别?动态图的优势是什么? 解释张量(Tensor)与 NumPy 数组的异同,为何 PyTorch 选择张量作为核心数据结构? 什么是 torch.autograd 模块?它在反向传播中的作用是什么? 如何理解 PyTorch 中的 nn.Module 类?…...
【数理基础】【概率论与数理统计】概率论与数理统计本科课程总结、资料汇总、个人理解
1 前言 概率论与数理统计是数学系核心的基础专业课,我本科的时候,是拆开上的,对应工科专业的高数中的概率论与数理统计,在量子力学,机器学习,计算机领域深度学习,大模型,机器人控制…...
美制 / 英制单位换算/公制/帝国制 单位转换速查表
文章目录 💡Introduction📏 英制(美制)单位与公制换算速查表🧱 一、长度(Length)🧴 二、体积(Volume / Liquid Measure)⚖️ 三、质量 / 重量(Wei…...
ENSP学习day9
ACL访问控制列表实验 ACL(Access Control List,访问控制列表)是一种用于控制用户或系统对资源(如文件、文件夹、网络等)访问权限的机制。通过ACL,系统管理员可以定义哪些用户或系统可以访问特定资源&#x…...
我爱学算法之——滑动窗口攻克子数组和子串难题(中)
学习算法,继续加油!!! 一、将 x 减到 0 的最小操作数 题目解析 来看这一道题,题目给定一个数组nums和一个整数x;我们可以在数组nums的左边或者右边进行操作(x减去该位置的值)&#…...
Linux centos 7 vsftp本地部署脚本
下面是脚本: #!/bin/bash #function:vsftpd脚本 #author: 20230323 IT 小旋风# 判断是否是root用户 if [ "$USER" ! "root" ]; thenecho "不是root 装个蛋啊"exit 1 fi# 关闭防火墙 systemctl stop firewalld && systemctl disable …...
编程考古-安德斯·海尔斯伯格(Anders Hejlsberg)回答离开Borland的原因
安德斯海尔斯伯格(Anders Hejlsberg)是著名的编程语言和工具开发者,曾主导开发了 Turbo Pascal、Delphi(Borland 时期),以及加入微软后参与的 C# 和 TypeScript。关于他离开 Borland 的原因,可以…...
数据库数值函数详解
各类资料学习下载合集 https://pan.quark.cn/s/8c91ccb5a474 数值函数是数据库中用于处理数值数据的函数,可以用于执行各种数学运算、统计计算等。数值函数在数据分析及处理时非常重要,能够帮助我们进行数据的聚合、计算和转换。在本篇博客中,我们将详细介绍常用的…...
SpringBoot与Redisson整合,用注解方式解决分布式锁的使用问题
文章引用:https://mp.weixin.qq.com/s/XgdKE2rBKL0-nFk2NJPuyg 一、单个服务 1.代码 该接口的作用是累加一个值,访问一次该值加1 RestController public class LockController {Autowiredprivate StringRedisTemplate stringRedisTemplate;GetMappin…...
Bash 脚本基础
一、Bash 脚本基础 什么是 Bash 脚本:Bash 脚本是一种文本文件,其中包含了一系列的命令,这些命令可以被 Bash shell 执行。它用于自动化重复性的任务,提高工作效率。 Bash 脚本的基本结构:以 #!/bin/bash 开头&#x…...
【Linux】线程库
一、线程库管理 tid其实是一个地址 void* start(void* args) {const char* name (const char *)args;while(true){printf("我是新线程 %s ,我的地址:0x%lx\n",name,pthread_self());sleep(1);}return nullptr; }int main() {pthread_t tid…...