linux-vi和文件操作
在 Linux 系统的世界里,有一个核心思想贯穿始终,那就是 “万物都是文件”。这一理念极大地简化了系统资源的管理和操作,为用户和开发者提供了统一且高效的交互方式。本文将深入探讨这一理念在 Linux 文件系统中的具体体现,从硬盘分区管理到文件类型、权限,再到目录操作和文本编辑等各个方面。
硬盘分区管理:提升存储效率的基石
硬盘作为数据存储的核心硬件,在 Linux 系统中通过分区管理来提高使用与管理效率。存储被划分为多个逻辑分区,每个逻辑分区都是硬件存储的一部分。每个分区可看作一个独立的逻辑单元,支持诸如格式化、挂载、卸载等操作。
例如,当我们新添加一块硬盘时,通常会先对其进行分区,将其划分为不同用途的逻辑区域,如一个分区用于安装操作系统,一个分区用于存储用户数据等。通过这种方式,不仅可以更好地组织数据,还能在出现问题时,方便地对特定分区进行维护,而不影响其他分区的数据。
创建文件系统:为数据存储搭建框架
在分区之上,需要创建文件系统。这一过程主要包含两个关键步骤:一是将分区初始化为特定的文件系统,从而创建出能够存储文件和数据的结构;二是通过这种初始化,确保文件能够按照预定的规则进行存储、读取和管理。常见的 Linux 文件系统有 ext4、XFS 等,不同的文件系统在性能、可靠性和功能特性上各有差异,用户可根据实际需求选择合适的文件系统进行格式化。
文件系统的组织架构:基于目录的层次体系
整个 Linux 文件系统基于目录来组织,形成了一种类似于树状的结构,即 “目录树”。在这个目录树中,“/” 具有特殊的双重含义:它既是根目录,代表整个文件系统的起点,包含了所有其他目录和文件;同时也是路径分隔符,用于区分不同层级的目录和文件。
文件的广义定义:超越传统的数据单元
在 Linux 的 “万物都是文件” 理念下,文件的定义被大大拓宽。它不仅仅指磁盘上的数据存储单元,还涵盖了物理设备和虚拟实体。这种广泛的设定带来了诸多优点。一方面,统一了对各种资源的操作方式,使得对文件、设备等的操作具有通用性;另一方面,标准化了输入和输出,极大地简化了 I/O 操作。例如,在 Linux 中,我们可以像操作普通文件一样操作硬件设备文件,通过读取和写入设备文件来与硬件进行交互。
文件类型的多样分类
Linux 系统中的文件主要分为三类:
- 普通文件:这是用户日常使用最为频繁的文件类型,存储在硬盘等设备上。普通文件又可进一步细分为文本文件,如纯文本文件、配置文件等,其内容以字符形式存储,可直接查看和编辑;以及二进制文件,包括可执行文件、图像、音频等,这类文件的内容以二进制格式存储,通常需要特定的程序来解析和处理。
- 目录文件:目录文件并不存储常规的数据,其主要功能是保存其他文件的信息,类似于一个文件索引,通过它可以快速定位和访问文件系统中的其他文件和目录。
- 特殊文件:特殊文件与硬件设备紧密相关,通过这些文件,系统能够实现对硬件设备的访问和控制。例如,/dev 目录下的文件大多是特殊文件,它们代表了各种硬件设备,如硬盘、光驱、串口等。
通过 file 命令,我们可以轻松查看对应文件的类型,这为用户准确识别和处理不同类型的文件提供了便利。
遵循 FHS 标准:保障跨平台兼容性
为了确保不同 Linux 发行版之间的跨平台兼容性,Filesystem Hierarchy Standard(FHS)应运而生。FHS 主要包含以下几个方面的规定:
- 定义了以树形结构来组织文件的方式,使得文件系统的布局具有一致性和可预测性。
- 明确规定了各个目录的名称和作用,让用户和开发者能够清晰了解每个目录的用途。
- 定义了两层规范:一是规定了 “/” 目录下应该放置哪些文件;二是对 “/usr” 以及 “/var” 目录的子目录进行了详细定义。例如,“/usr” 目录主要用于存放应用程序,“/var” 目录用于存放经常变化或增长的文件,如日志、缓存、邮件、打印队列等。
系统定义目录的功能与用途
在 Linux 文件系统中,有许多系统定义的目录,它们各自承担着特定的功能:
- /:根目录,整个文件系统的根基,包含了文件系统中的所有内容,是目录树的起始点。
- /bin:存放着用户可执行的文件,即外部命令,如 cal(日历命令)、date(日期命令)、who(查看在线用户命令)、sh(Bourne shell)、bash(Bourne - Again shell)等。这些命令可供普通用户直接在终端中执行。
- /sbin:该目录存放的是管理员可执行的系统管理命令,例如用于系统启动、网络配置、磁盘管理等操作的命令,普通用户通常没有执行这些命令的权限,只有管理员(root 用户)才能使用。
- /lib, /lib64:这两个目录用于存放函数库和模块文件,这些文件是程序运行所依赖的基础,不同架构的系统可能会有不同的存放目录,/lib64 一般用于 64 位系统存放 64 位的库文件,/lib 则可能存放 32 位库文件或一些通用的库文件。
- /boot:存放 Linux 系统启动时会用到的文件,包括内核文件、引导加载程序(如 GRUB)相关文件等。这些文件对于系统的正常启动至关重要。
- /dev:这是设备文件的存放目录,系统中的每一个硬件设备在该目录下都有对应的文件,通过这些文件,用户和程序可以与硬件设备进行交互。例如,/dev/sda 可能代表第一块硬盘,/dev/tty 代表终端设备等。
- /mnt, /media:用于临时挂载其他文件系统的目录。/mnt 通常用于手动挂载外部存储设备,如移动硬盘、U 盘等;/media 则一般用于自动挂载可移动设备,当插入设备时,系统会自动将其挂载到 /media 目录下的某个子目录中。
- /proc:这是一个虚拟文件系统,它将系统中的进程和内核信息以文本文件的形式呈现出来。我们可以通过 cat 等命令查看对应的进程信息或硬件信息,例如,cat /proc/cpuinfo 可以查看 CPU 的详细信息。/proc 目录下的文件并不实际存储在磁盘上,而是由内核动态生成,反映系统当前的运行状态。
- /root:管理员(root 用户)的家目录,root 用户的个人配置文件、数据等通常存储在此目录下。
- /home:普通用户的家目录,每个用户在 /home 目录下都有一个以自己用户名命名的子目录,用户的个人文件、配置等都存储在这个目录中,具有较高的私密性。
- /etc:用于存储配置文件的重要目录,包含了用户信息、服务的启动信息以及常用服务的配置信息等。例如,/etc/profile 文件用于设置系统环境变量,/etc/passwd 文件存储了用户账户的基本信息。许多系统服务和应用程序在启动时会读取该目录下的配置文件,以确定运行参数和行为。
- /usr:存放应用程序的主要目录,类似于 Windows 系统中的 “Program Files” 目录。大部分安装的软件包会将其文件安装到 /usr 目录下的子目录中,如 /usr/bin 存放可执行文件,/usr/lib 存放库文件,/usr/share 存放共享数据等。
- /opt:用于存放额外安装的软件目录,通常是一些第三方软件或企业自定义软件的安装位置。与 /usr 目录不同,/opt 目录下的软件相对独立,便于管理和卸载。
- /var:如前所述,该目录用于存放经常变化或增长的文件,由于这些文件的内容会不断更新,如日志文件会随着系统运行持续记录新的事件,所以将它们单独存放在 /var 目录下,有利于系统管理和维护,同时也便于对这些动态数据进行监控和分析。
- /run:存放程序或服务运行时产生的信息,例如进程的 PID 文件(记录进程 ID)等。这些信息在系统运行期间动态生成,系统重启后可能会重新生成,因此 /run 目录下的内容通常不会被持久保存。
- /tmp:用于存放临时文件的目录,许多程序在运行过程中会产生一些临时数据,这些数据通常不需要长期保存,系统会定期清理 /tmp 目录下的文件。用户也可以在该目录下创建临时文件,以满足特定的临时需求。
- /sys:存放和内核相关的信息,与 /proc 类似,但 /sys 文件系统更侧重于提供内核对象(如设备驱动程序、总线等)的信息。通过 /sys 目录,用户和管理员可以获取和修改内核对象的一些属性,以调整系统的运行行为。
- /srv:存储一些服务启动后需要提取或访问的数据,例如 Web 服务器可能会将网站数据存储在 /srv/www 目录下。不同的服务可以根据自身需求在 /srv 目录下创建相应的子目录来存储数据。
路径表示:绝对路径与相对路径
在 Linux 文件系统中,路径用于定位文件和目录。路径分为绝对路径和相对路径:
- 绝对路径:从根目录(/)开始,一直到目标文件或目录的完整路径。例如,/home/user/Documents/file.txt 就是一个绝对路径,它明确地指出了 file.txt 文件位于 /home 目录下的 user 子目录中的 Documents 子目录中。
- 相对路径:从当前所在目录出发,到目标文件或目录的路径。相对路径不包含根目录,它是相对于当前工作目录的位置。例如,如果当前工作目录是 /home/user,要访问 Documents 目录下的 file.txt 文件,使用相对路径可以表示为 Documents/file.txt。在相对路径中,可以使用 “..” 来表示回到上一级目录(父目录)。例如,从 /home/user/Documents 目录要回到 /home/user 目录,可以使用 “cd..” 命令。
目录操作命令:管理文件系统的利器
在 Linux 系统中,有一系列用于目录操作的命令,这些命令是用户管理文件系统的常用工具:
- pwd:用于显示当前所在目录的绝对路径。当我们在终端中执行复杂的操作,需要明确当前所处的位置时,pwd 命令能提供清晰的信息。例如,在经过多次目录切换后,执行 “pwd” 命令,系统会输出当前所在的完整路径,如 “/home/user/Documents”。
- cd:用于切换到某个目录。可以使用绝对路径或相对路径来指定目标目录。例如,“cd /home/user” 会切换到 /home 目录下的 user 子目录;“cd..” 会回到当前目录的父目录;“cd ~” 会回到当前用户的家目录(对于普通用户,通常是 /home/ 用户名;对于 root 用户,是 /root)。
- mkdir:用于创建目录。如果要创建单个目录,直接使用 “mkdir 目录名” 即可。例如,“mkdir new_dir” 会在当前目录下创建一个名为 new_dir 的新目录。若要创建多级目录(即递归创建),可以使用 “-p” 选项。例如,“mkdir -p parent_dir/child_dir/grandchild_dir” 会一次性创建 parent_dir 目录及其子目录 child_dir 和孙目录 grandchild_dir,如果这些目录不存在的话。
- rmdir:用于删除空目录。其基本语法为 “rmdir 目录名”。例如,“rmdir empty_dir” 会删除当前目录下名为 empty_dir 的空目录。如果目录不为空,rmdir 命令会报错,提示目录非空无法删除。
- rm -r:可以递归删除目录及其包含的所有子目录和文件。使用时需谨慎,因为该操作会永久删除指定目录下的所有内容,无法恢复。例如,“rm -r my_dir” 会删除 my_dir 目录及其内部的所有文件和子目录。“-f” 选项用于强制删除,即不提示确认信息直接删除,使用时要格外小心,避免误删重要数据;“-i” 选项用于交互删除,在删除每个文件或目录前,系统会提示用户确认是否删除,这种方式可以减少误操作的风险。
- ls:用于展示当前目录中的文件和目录。该命令有多个常用选项:
- “-i”:显示文件和目录的索引节点号。索引节点是文件系统中用于标识文件的一种数据结构,每个文件和目录在文件系统中都有唯一的索引节点号。
- “-a”:显示所有文件,包括以点(.)开头的隐藏文件。在 Linux 系统中,以点开头的文件通常被视为隐藏文件,默认情况下,ls 命令不会显示它们。
- “-l”:以详细信息展示文件和目录,包括文件的权限、所有者、所属组、文件大小、修改时间等信息。例如,“ls -l” 可能会输出类似 “-rwxr - xr-- 1 user group 1024 Apr 15 10:00 example_file” 的信息,其中 “-rwxr - xr--” 表示文件的权限,“1” 表示文件的硬链接数,“user” 是所有者,“group” 是所属组,“1024” 是文件大小(单位为字节),“Apr 15 10:00” 是文件的最后修改时间,“example_file” 是文件名。
- “-d”:罗列目录本身的信息,而非目录内的文件和子目录信息。例如,当我们只想查看某个目录的属性(如权限、所有者等),而不想查看其内部内容时,可以使用 “ls -ld 目录名”。
文件操作命令:处理文件内容的工具集
除了目录操作命令,Linux 系统还提供了丰富的文件操作命令,用于查看、编辑和处理文件内容:
- cat:用于查看文件的内容。它会将文件的全部内容一次性输出到终端。例如,“cat file.txt” 会在终端上显示 file.txt 文件的所有内容。如果文件内容较多,可能会导致终端屏幕快速滚动,不利于查看。
- more:用于分页展示文件的内容。使用 “more file.txt” 命令后,文件内容会以一页一页的形式显示,用户可以通过按回车键向下移动一行,按空格键翻页,按 “q” 键退出查看。这种方式适合查看较长的文件,方便用户逐页阅读。
- head, tail:这两个命令用于指定输出文件的前面或后面几行。使用 “-n” 选项可以规定输出的行数。例如,“head -n 10 file.txt” 会输出 file.txt 文件的前 10 行内容;“tail -n 5 file.txt” 会输出 file.txt 文件的最后 5 行内容。对于 tail 命令,还有一个 “-f” 选项,它表示持续输出文件的最后几行,直到用户手动停止。这个选项在查看实时更新的日志文件时非常有用,用户可以实时看到日志文件中新增的内容。
- wc:用于统计文本文件的行数、单词数和字符数。常用选项如下:
- “-l”:统计文本文件的行数。例如,“wc -l file.txt” 会输出 file.txt 文件的行数。
- “-w”:统计文本文件的单词数。单词是以空格或换行符分隔的字符串。
- “-c”:统计文本文件的字符数,包括所有的字符,如字母、数字、标点符号等。
- diff:用于比较两个文件是否相同。通过 “diff file1.txt file2.txt” 命令,系统会逐行对比两个文件的内容,并输出它们之间的差异。如果两个文件完全相同,diff 命令不会输出任何内容;如果存在差异,它会指出哪些行不同以及具体的差异内容,这对于检查文件的修改情况或对比配置文件的变化非常有帮助。
文件权限:保障系统安全与资源控制
在 Linux 系统中,文件权限通过 10 位字母来表示:
- 第一位:表示文件的类型。常见的类型有:
- “d”:表示目录文件。
- “-”:表示普通文件。
- “b”:表示块设备文件,这类文件通常用于访问如硬盘等以块为单位进行数据存储和传输的设备。
- “c”:表示字符设备文件,用于访问如串口、键盘等以字符为单位进行数据传输的设备。
- “l”:表示链接文件,又分为软链接(符号链接)和硬链接,软链接类似于 Windows 系统中的快捷方式,而硬链接则是为文件创建了一个额外的目录项,多个硬链接可以指向同一个文件实体。
- 后面的 9 位:每 3 位一组,分别表示所有者权限、用户组权限和其他人的权限。权限类型包括:
- 读权限(r):
- 对于文件:若用户对文件具备读权限,那么该用户能够查看文件的内容。例如,当用户拥有读权限时,可以运用 cat、more 或者 less 等命令来查看文件内容。如果文件权限为 “-r--r--r--”,表示所有者、用户组和其他人都只有读权限,只能查看文件内容,不能进行修改或执行。
- 对于目录:若用户对目录有读权限,就能够列出该目录下的文件和子目录。可以使用 ls 命令查看目录内容。但仅有读权限,用户无法进入目录或对目录内的文件进行操作。
- 写权限(w):
- 对于文件:要是用户对文件有写权限,就可以对文件内容进行修改、删除或者添加。举例来说,借助 nano、vim 等文本编辑器就能修改文件内容。如果文件
- 读权限(r):
相关文章:
linux-vi和文件操作
在 Linux 系统的世界里,有一个核心思想贯穿始终,那就是 “万物都是文件”。这一理念极大地简化了系统资源的管理和操作,为用户和开发者提供了统一且高效的交互方式。本文将深入探讨这一理念在 Linux 文件系统中的具体体现,从硬盘分…...
MIT6.S081 - Lab8 Locks(锁优化 | 并发安全)
本篇是 MIT6.S081 2020 操作系统课程 Lab8 的实验笔记,目标是在保证并发安全的前提下,重新设计 内存分配器 和 块缓存 这两个部分代码,提高系统并发性能。 对于有项目经验的同学来说,实验的难度不算高,重点在于找出 “…...
TMS320F28P550SJ9学习笔记15:Lin通信SCI模式结构体寄存器
今日初步认识与配置使用Lin通信SCI模式,用结构体寄存器的方式编程 文章提供完整工程下载、测试效果图 我的单片机平台是这个: LIN通信引脚: LIN通信PIE中断: 这个 PIE Vector Table 表在手册111页: 这是提到LINa的PI…...
JavaWeb 课堂笔记 —— 11 MySQL 多表设计
本系列为笔者学习JavaWeb的课堂笔记,视频资源为B站黑马程序员出品的《黑马程序员JavaWeb开发教程,实现javaweb企业开发全流程(涵盖SpringMyBatisSpringMVCSpringBoot等)》,章节分布参考视频教程,为同样学习…...
2025年最新总结安全基础(面试题)
活动发起人@小虚竹 想对你说: 这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。我们诚挚邀请…...
调试chili3d笔记 typescript预习
https://github.com/xiangechen/chili3d 用firefox拓展附加进程 打开开发者 工具,这个网页按f12没反应,手动打开 创建一个立方体可以看到运行了create.box方法,消息来自commandService.ts 位置 太久没写c了,3目都看不懂了 c没有…...
【北交互联-注册/登录安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...
YOLOv2学习笔记
YOLOv2 背景 YOLOv2是YOLO的第二个版本,其目标是显著提高准确性,同时使其更快 相关改进: 添加了BN层——Batch Norm采用更高分辨率的网络进行分类主干网络的训练 Hi-res classifier去除了全连接层,采用卷积层进行模型的输出&a…...
2025年国企社招欧治链金再生资源入职测评笔试中智赛码平台SHL测试平台Verify认知能力测试
1、欧治链金政治素质测试(中智赛码平台,电脑端作答) 10个单选题、5个多选题、1个问答题 2、欧治链金综合素质测试(SHL测试平台Verify认知能力测试,电脑端作答) 3、欧治链金职业性格测试(中智职…...
MySQL索引和事务
MySQL索引和事务 1.索引1.1概念1.2作用1.3使用场景1.4使用1.4.1查看索引1.4.2创建索引1.4.3删除索引 2.事务2.1使用2.1.1开启事务2.1.2执行多条SQL语句2.1.3回滚或提交 2.2事务的特性2.2.1回滚是怎么做到的2.2.2原子性2.2.3一致性2.2.4持久性2.2.5隔离性2.2.5.1脏读2.2.5.2不可…...
【AI News | 20250415】每日AI进展
AI News 1、字节跳动发布Seaweed-7B视频模型:70亿参数实现音视频同步生成与多镜头叙事 字节跳动推出新一代视频生成模型Seaweed-7B,该模型仅70亿参数却实现多项突破:支持音视频同步生成、多镜头叙事(保持角色连贯性)、…...
MegaTTS3: 下一代高效语音合成技术,重塑AI语音的自然与个性化
在近期的发布中,浙江大学赵洲教授团队与字节跳动联合推出了革命性的第三代语音合成模型——MegaTTS3,该模型不仅在多个专业评测中展现了卓越的性能,还为AI语音的自然性和个性化开辟了新的篇章。 MegaTTS3技术亮点 零样本语音合成 MegaTTS3采用…...
MyBatis-Plus 详解教程
文章目录 1. MyBatis-Plus 简介1.1 什么是 MyBatis-Plus?1.2 为什么要使用 MyBatis-Plus?传统 MyBatis 的痛点MyBatis-Plus 的优势 1.3 MyBatis-Plus 与 MyBatis 的关系 2. 快速开始2.1 环境要求2.2 依赖引入MavenGradle 2.3 数据库准备2.4 配置 Spring …...
Java设计模式之观察者模式:从入门到架构级实践
一、观察者模式的核心价值 观察者模式(Observer Pattern)是行为型设计模式中的经典之作,它建立了对象间的一对多依赖关系,让多个观察者对象能够自动感知被观察对象的状态变化。这种模式在事件驱动系统、实时数据推送、GUI事件处理…...
【双指针】专题:LeetCode 202题解——快乐数
快乐数 一、题目链接二、题目三、题目解析四、算法原理扩展 五、编写代码 一、题目链接 快乐数 二、题目 三、题目解析 快乐数的定义中第二点最重要,只有两种情况,分别拿示例1、示例2分析吧: 示例1中一旦出现1了,继续重复过程就…...
深度学习占用大量内存空间解决办法
应该是缓存的问题,关机重启内存多了10G,暂时没找到别的方法 重启前 关机重启后...
[LeetCode 1871] 跳跃游戏 7(Ⅶ)
题面: 数据范围: 2 ≤ s . l e n g t h ≤ 1 0 5 2 \le s.length \le 10^5 2≤s.length≤105 s [ i ] s[i] s[i] 要么是 ′ 0 ′ 0 ′0′ ,要么是 ′ 1 ′ 1 ′1′ s [ 0 ] 0 s[0] 0 s[0]0 1 ≤ m i n J u m p ≤ m a x J u m p <…...
同济大学轻量化低成本具身导航!COSMO:基于选择性记忆组合的低开销视觉语言导航
作者:Siqi Zhang 1 ^{1} 1, Yanyuan Qiao 3 ^{3} 3, Qunbo Wang 2 ^{2} 2, Zike Yan 4 ^{4} 4, Qi Wu 3 ^{3} 3, Zhihua Wei 1 ^{1} 1, Jing Liu 1 ^{1} 1单位: 1 ^{1} 1同济大学计算机科学与技术学院, 2 ^{2} 2中科院自动化研究所࿰…...
【Ubuntu | 网络】Vmware虚拟机里的Ubuntu开机后没有网络接口、也没有网络图标
😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 😎金句分享😎&a…...
第二十一讲 XGBoost 回归建模 + SHAP 可解释性分析(利用R语言内置数据集)
下面我将使用 R 语言内置的 mtcars 数据集,模拟一个完整的 XGBoost 回归建模 SHAP 可解释性分析 实战流程。我们将以预测汽车的油耗(mpg)为目标变量,构建 XGBoost 模型,并用 SHAP 来解释模型输出。 🚗 示例…...
HP惠普打印机:解决每次打印后额外产生@PJL SET USERNAME=文档的情况
情况描述 惠普商用打印机型号:Color LaserJet Managed MFP E78223 在每次打印文档后都会出现包含我个人电脑用户名的额外文档: 这不是我希望的,因此我联系了惠普官方客服,并得到了解决 解决方案 原因 具客服所说,这些是…...
MariaDB MaxScale 的用途与实现细节
MaxScale 主要用途 MariaDB MaxScale 是一个智能数据库代理(proxy),主要用于增强 MySQL/MariaDB 数据库的高可用性、可扩展性和安全性,同时简化应用程序与数据库基础设施之间的交互。它的核心功能包括: 负载均衡&…...
CTF--eval
一、原网页: 二、步骤: 1.代码分析: <?phpinclude "flag.php"; // 引入一个文件,该文件可能定义了一些变量(例如 $flag)$a $_REQUEST[hello]; // 从用户请求中获取参数 hello 的值&#x…...
Android学习总结之算法篇七(图和矩阵)
有向图的深度优先搜索(DFS)和广度优先搜索(BFS)的示例,以此来模拟遍历 GC Root 引用链这种有向图结构: 一、深度优先搜索(DFS) import java.util.*;public class GraphDFS {privat…...
vmcore分析锁问题实例(x86-64)
问题描述:系统出现panic,dmesg有如下打印: [122061.197311] task:irq/181-ice-enp state:D stack:0 pid:3134 ppid:2 flags:0x00004000 [122061.197315] Call Trace: [122061.197317] <TASK> [122061.197318] __schedule0…...
【vue3】vue3+express实现图片/pdf等资源文件的下载
文件资源的下载,是我们业务开发中常见的需求。作为前端开发,学习下如何自己使用node的express框架来实现资源的下载操作。 实现效果 代码实现 前端 1.封装的请求后端下载接口的方法,需求配置aixos的请求参数里面的返回数据类型为blob // 下载 export…...
【BUG】Redis RDB快照持久化及写操作禁止问题排查与解决
1 问题描述 在使用Redis 的过程中,遇到如下报错,错误信息是 “MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk...”,记录下问题排查过程。 2 问题排查与解决 该错误提示表明&#…...
【HD-RK3576-PI】定制用户升级固件
硬件:HD-RK3576-PI 软件:Linux6.1Ubuntu22.04 在进行 Rockchip 相关开发时,制作自定义的烧写固件是一项常见且重要的操作。这里主要介绍文件系统的修改以及打包成完整update包升级的过程。 一、修改文件系统镜像(Ubuntu环境操作&…...
【AI学习】李宏毅老师讲AI Agent摘要
在b站听了李宏毅2025最新的AI Agent教程,简单易懂,而且紧跟发展,有大量最新的研究进展。 教程中引用了大量论文,为了方便将来阅读相关论文,进一步深入理解,做了截屏纪录。 同时也做一下分享。 根据经验调整…...
狂神SQL学习笔记十:修改和删除数据表字段
1、修改与删除表 alter 修改表的名称: 增加表的字段: 修改表的字段(重命名,修改约束): 修改约束 重命名 删除表的字段 删除表...
OSPF综合实验
一、网络拓扑 二、实验要求 1,R5为ISP,其上只能配置IP地址;R4作为企业边界路由器; 2,整个0SPF环境IP基于172.16.0.8/16划分; 3,所有设备均可访问R5的环回; 4,减少LSA的更新量,加快收敛…...
2025 cs144 Lab Checkpoint 2 小白超详细版
文章目录 1 环形索引的实现1.1 wrap类wrapunwrap 2 实现tcp_receiver2.1 tcp_receiver的功能2.2 传输的报文格式TCPSenderMessageTCPReceiverMessage 2.3 如何实现函数receive()send() 1 环形索引的实现 范围是0~2^32-1 需要有SY…...
VMware虚拟机安装Ubuntu 22.04.2
一、我的虚拟机版本 二、浏览器搜索Ubuntu 三、下载Ubuntu桌面版 四、下这个 五、创建新的虚拟机 六、选择典型,然后下一步 七、选择稍后安装操作系统,然后下一步 八、选择Linux ,版本选择Ubuntu 64位 九、选择好安装位置 十、磁盘大小一般选20G就够用了…...
XSS漏洞及常见处理方案
文章背景: 在近期项目安全测试中,安全团队发现了一处潜在的 跨站脚本攻击(XSS)漏洞,该漏洞可能导致用户数据被篡改或会话劫持等安全风险。针对这一问题,项目组迅速响应,通过代码修复、输入过滤、…...
TCP标志位抓包
说明 TCP协议的Header信息,URG、ACK、PSH、RST、SYN、FIN这6个字段在14字节的位置,对应的是tcp[13],因为字节数是从[0]开始数的,14字节对应的就是tcp[13],因此在抓这几个标志位的数据包时就要明确范围在tcp[13] 示例1…...
C/C++条件判断
条件判断 if语句的三种形态 if(a<b){} 、 if(a<b){}else{} 、 if(a<b){}else if(a>b) else{} if语句的嵌套 嵌套的常见错误(配对错误),与前面最近的,而且还没有配对的if匹配 错误避免方法:严格使用 { }、先写&am…...
单位门户网站被攻击后的安全防护策略
政府网站安全现状与挑战 近年来,随着数字化进程的加速,政府门户网站已成为政务公开和服务公众的重要窗口。然而,网络安全形势却日益严峻。国家互联网应急中心的数据显示,政府网站已成为黑客攻击的重点目标,被篡改和被…...
# 工具记录
工具记录 键盘操作可视化工具openark64系统工具dufs-webui文件共享zotero文献查看cff explorerNoFencesfreeplane开源思维导图...
C/C++运算
C语言字符串的比较 #include <string.h> int strcmp( const char *str1, const char *str2 );例如: int ret; ret strcmp(str1, str2);返回值: str1 < str2时, 返回值< 0(有些编译器返回 -1) str1 > str2时…...
CloudWeGo 技术沙龙·深圳站回顾:云原生 × AI 时代的微服务架构与技术实践
2025 年 3 月 22 日,CloudWeGo “云原生 AI 时代的微服务架构与技术实践”主题沙龙在深圳圆满落幕。作为云原生与 AI 微服务融合领域的深度技术聚会,本次活动吸引了来自企业、开发者社区的百余位参与者,共同探讨如何通过开源技术应对智能时代…...
STM32移植文件系统FATFS——片外SPI FLASH
一、电路连接 主控芯片选型为:STM32F407ZGT6,SPI FLASH选型为:W25Q256JV。 采用了两片32MB的片外SPI FLASH,电路如图所示。 SPI FLASH与主控芯片的连接方式如表所示。 STM32F407GT6W25Q256JVPB3SPI1_SCKPB4SPI1_MISOPB5SPI1_MOSI…...
华为HG8546M光猫宽带密码破解
首先进光猫管理界面 将password改成text就可以看到加密后的密码了 复制密码到下面代码里 import hashlibdef sha256(todo):return hashlib.sha256(str(todo).encode()).hexdigest()def md5(todo):return hashlib.md5(str(todo).encode()).hexdigest()def find_secret(secret,…...
驱动-兼容不同设备-container_of
驱动兼容不同类型设备 在 Linux 驱动开发中,container_of 宏常被用来实现一个驱动兼容多种不同设备的架构。这种设计模式在 Linux 内核中非常常见,特别 是在设备驱动模型中。linux内核的主要开发语言是C,但是现在内核的框架使用了非常多的面向…...
UE5 检测球形范围的所有Actor
和Untiiy不同,不需要复杂的调用 首选确保角色添加了Sphere Collision 然后直接把sphere拖入蓝图,调用GetOverlappingActors来获取碰撞范围内的所有Actor...
AI大模型学习十:Ubuntu 22.04.5 调整根目录大小,解决根目录磁盘不够问题
一、说明 由于默认安装时导致home和根目录大小一样,导致根目录不够,所以我们调整下 二、调整 # 确认/home和/是否为独立逻辑卷,并属于同一卷组(VG) rootnode1:~# lsblk NAME MAJ:MIN RM SIZE…...
在ros2上使用opencv显示一张图片
1.先将图片放到桌面上 2.打开终端ctrlaltT,查看自己是否已安装opencv 3.创建工作环境 4.进入工作目录并创建ROS2包添加OpenCV依赖项 5.进入/home/kong/opencv_ws/opencv_use/src目录创建.cpp文件并编辑 6.代码如下 my_opencv.cpp #include <cstdio> #include…...
训练神经网络的原理(前向传播、反向传播、优化、迭代)
训练神经网络的原理 通过前向传播计算预测值和损失,利用反向传播计算梯度,然后通过优化算法更新参数,最终使模型在给定任务上表现更好。 核心:通过计算损失函数(通常是模型预测与真实值之间的差距)对模型参…...
每日一题(小白)暴力娱乐篇30
顺时针旋转,从上图中不难看出行列进行了变换。因为这是一道暴力可以解决的问题,我们直接尝试使用行列转换看能不能得到想要的结果。 public static void main(String[] args) {Scanner scan new Scanner(System.in);int nscan.nextInt();int mscan.next…...
【HTTPS】免费SSL证书配置Let‘s Encrypt自动续期
【HTTPS】免费SSL证书配置Lets Encrypt自动续期 1. 安装Certbot1.1 snapd1.2 certbot2. 申请泛域名证书使用 DNS 验证申请泛域名证书3.配置nginx申请的 SSL 证书文件所在目录nginx配置证书示例查看证书信息和剩余时间4.自动续期手动自动5.不同服务器使用1. 安装Certbot 1.1 sn…...
企业应如何防范 AI 驱动的网络安全威胁?
互联网技术和 AI 科技为世界开启了一个新的发展篇章。同时,网络攻击也呈现出愈发强势的发展势头:高级持续性威胁 (APT:Advanced Persistent Threat)组织采用新的战术、技术和程序 (TTP)、AI 驱动下攻击数量和速度的提高…...