深入理解linux中的文件(下)
目录
一、语言级缓冲区和内核级缓冲区
二、C语音中的FILE* fp = fopen(“./file.txt”,"w"):
四、理解磁盘结构:
物理结构
逻辑结构
五、未被打开的文件:
六、更加深入理解inode编号怎么找到文件:
七、对路径结构进行缓存:
1. 路径名解析加速
2. 更新多叉树的路径
3. 进程如何使用 dentry
(1)打开文件
(2)路径遍历
一、语言级缓冲区和内核级缓冲区
编程语言运行在操作系统之上,并利用操作系统的功能来完成各种任务。当我们提到语言级缓冲区时,它实际上是在操作系统“看不见”的应用层面上工作的。
如果没有语言级缓冲区,在C语言中每次使用fwrite
或fprintf
函数写数据时,都会直接调用系统底层的write
函数,这会导致频繁的数据传输,耗费更多时间。为了避免这种情况,我们在程序里设置了语言级缓冲区。这样,当你使用fwrite
或fprintf
时,数据首先存入这个语言级缓冲区。只有当满足一定条件时,才会一次性把大量数据传给操作系统处理。至于什么时候这些数据最终被保存到硬盘上,则由操作系统决定。
语言级缓冲区刷新的方式有三种:
- 对于显示输出(比如打印到屏幕上),每当遇到换行符
\n
就会自动刷新缓冲区。 - 对于普通文件(保存在磁盘上的文件),当缓冲区满了的时候会自动刷新。
- 使用
fflush()
函数可以手动强制刷新缓冲区,立即把数据写出去。
二、C语音中的FILE* fp = fopen(“./file.txt”,"w"):
1. 在当前目录下创建一个file.txt文件,模式是写入。
2. 返回一个FILE结构体指针
二、C语音中的fclose的作用:
-
刷新缓冲区:如果文件是以写模式(如
"w"
或"a"
)打开的,调用fclose()
会首先将缓冲区中的所有未写入数据强制写入到文件中。这确保了所有通过程序写入的数据都被正确地保存到了文件里。 -
释放资源:关闭文件后,
fclose()
会释放分配给该文件流的所有系统资源。这包括内存中的缓冲区和其他与文件操作相关的资源。这对于保持程序的效率和避免资源泄漏非常重要,尤其是在程序需要处理多个文件或长期运行的情况下。例如:销毁FILE结构体
四、理解磁盘结构:
物理结构
盘片(Platters):硬盘内部由一个或多个圆形盘片组成,这些盘片是实际存储数据的地方。每个盘片都有两面,称为记录面。
磁道(Tracks):盘片上的表面被划分为若干个同心圆,每一个这样的圆被称为磁道。所有盘片上相同位置的磁道合在一起形成柱面(Cylinder)。
扇区(Sectors):每个磁道进一步被分割成多个弧段,每个弧段即为一个扇区。标准的扇区大小通常是512字节或4KB(高级格式化技术)。扇区是磁盘读写的最小单位。
柱面(Cylinders):所有盘片上相同编号的磁道共同构成一个柱面。柱面的概念主要用于描述磁盘的三维地址空间。
磁头(Heads):用于读取和写入数据的装置。每个盘片的每一面都有一个对应的磁头。(注意:各个读写磁头不会分开移动,而是由一个移动臂控制所以的磁头,一起前进后退)
由于磁盘的三维的物理结构,把每一个扇区当成一个数组的格子,就可以把他抽象成一个三维数组。而三维数组又可以抽象成一个超大的一维数组。
逻辑结构
分区(Partition):物理磁盘可以被划分成一个或多个逻辑部分,每个部分称为分区。例如,在Windows系统中的C盘和D盘就是不同的分区。每个分区都可以有自己的文件系统,并像独立的磁盘一样使用。
分组(Block Group):在Ext4等Linux文件系统中,每个分区可以进一步划分为多个块组。这种划分有助于提高性能并简化管理。
超级块(Superblock):在linux文件系统中,超级块包含了关于文件系统的元数据,比如块大小、空闲块数量、inode信息等。(重点:Superblock是管理区的,所以不是每一个组中都含有Superblock。如果Superblock损坏了,就找不到几百个G的区了,,所以Superblock也不能只有一个,整个区中会有两三个Superblock作为备份)
组描述符表(Group Descriptor Table):包含组中的信息:
数据块位图(Block Bitmap)的位置和状态,用于跟踪哪些数据块已被使用,哪些仍然空闲。
inode位图(Inode Bitmap)的位置和状态,用于跟踪哪些inode已被分配,哪些未被使用。
- inode表(Inode Table)的位置,其中包含了该块组内所有文件和目录的inode信息。
- 数据块(Data blocks)的数量以及其他相关信息。
数据块位图 和 inode位图:使用二进制0和1表示空闲和占用的情况。
inode表:inode表中包含很多的inode结构体,通常一个inode结构体大小为128字节。
索引节点(Inode):在Unix/Linux文件系统中,每个文件都有一个对应的inode,它存储了文件的元数据(如权限、所有权、大小等)以及指向文件数据块的指针。(重点:文件名不存储到inode结构体中)
数据块:每一个数据块是4KB大小,里面存放文件的内容,当然,数据块,也会存放指针。这些指针指向其他的数据块,也就是一个数据块有1KB的指针。
一级间接块索引表指针,1KB*4KB=4MB大小,就可以存储4MB大小的文件。
二级索引:4KB * 1KB * 1KB = 4GB。
三级索引:4KB * 1KB * 1KB = 4TB。
到了三级索引就够了,一个文件不会有那么大的,太大了我们也会把他拆小。一个文件太大,你内存放不下,也打不开。
五、未被打开的文件:
未被打开的文件都存储在磁盘上。如果你想访问这些文件,你需要知道它们的具体路径。明明在linux,操作系统只认识inode编号,那么文件路径怎么帮助操作系统找到文件的确切位置?
在Linux系统中,每个目录不仅包含文件名,还存储了指向这些文件的inode信息。这意味着目录实际上保存了一个文件名与inode编号之间的映射表。
例如,如果你有一个文件路径为 /home/chen/communication/mypipe.cc
,以下是系统如何找到这个文件的过程:
- 从根目录
/
开始,系统会根据路径进入home
目录。 - 在
home
目录下,系统查找名为chen
的子目录及其对应的inode编号(比如chen:13425
)。这里的13425
是一个示例inode编号,实际编号可能不同。 - 使用这个inode编号,系统可以定位到
chen
目录。然后在chen
目录中继续查找communication
子目录及其inode信息。 - 最终,在
communication
目录中找到mypipe.cc
文件的inode编号,这样就可以读取该文件的内容了。
需要注意的是,根目录 /
的inode是固定的,这保证了系统始终可以从根目录开始导航至任何文件或目录。这种机制使得即使文件系统非常庞大,也可以高效地定位和管理文件。
通过这种方式,Linux文件系统能够有效地管理和检索文件,同时保持数据的一致性和完整性。
六、更加深入理解inode编号怎么找到文件:
当我们获得了某个文件的inode编号(例如13425),接下来需要定位并读取该inode的具体信息来访问文件的内容和属性。
-
查找组描述符表:首先,系统会根据inode编号确定该inode属于哪个块组。然后从这个块组的组描述符表中获取相关信息。组描述符表包含了关于该块组的重要信息,比如起始inode编号(例如13400)和结束inode编号(例如13700)。
-
计算相对位置:知道了块组的起始inode编号(如13400),我们可以用目标inode编号减去起始inode编号(即13425 - 13400 = 25)。这样我们就得到了目标inode在该块组内的相对位置——这里是第25个inode。
-
访问inode表:接着,系统会在该块组的inode表中查找第25号区域中的inode结构体。每个inode结构体通常包含文件的元数据(如权限、所有权、大小等)以及指向文件数据块的指针。
-
读取文件内容和属性:一旦找到了正确的inode结构体,我们就可以使用其中的信息来定位文件的数据块,进而读取文件的实际内容及其属性。
通过这种方式,即使文件系统非常庞大,操作系统也能高效地定位和访问任何文件。
七、对路径结构进行缓存:
当我们访问文件时,并不是每次都从根目录开始逐层查找,因为这样的效率非常低——实际上,大约99%的文件很少被打开。为了解决这个问题,我们使用多叉树的方式来缓存路径结构。相比直接使用目录结构体,这种多叉树结构更简单,查找速度也更快。
1. 路径名解析加速
当一个进程尝试访问某个文件时,它提供的是文件的路径名。内核需要将这个路径名转换为具体的 inode
。通过使用 dentry
结构体,内核可以快速找到对应路径的 inode
,而不需要每次都从磁盘读取信息。多叉树的每个节点都是一个 dentry
结构体,定义如下:
struct dentry {char *name; // 节点名称struct inode *inode; // 指向inode的指针struct dentry *parent; // 父节点指针struct list_head children; // 子节点链表头
};
2. 更新多叉树的路径
当访问一个新的路径时,如果该路径不存在于当前缓存中,则需要创建新的 dentry
节点,并将其添加到正确的父节点的子节点列表中。同时更新父节点的相关信息,例如增加子节点计数等。
3. 进程如何使用 dentry
(1)打开文件
当一个进程调用 open()
系统调用打开一个文件时,内核会首先通过文件结构体中的 dentry指针,进行查找dentry
缓存中查找该文件的路径。如果找到了,就可以直接获取对应的 inode
和文件描述符;如果没有找到,则需要从磁盘读取相关信息并更新缓存。
(2)路径遍历
对于任何涉及路径的操作(如 stat()
, unlink()
等),内核都会通过 dentry
结构进行路径名解析。这通常涉及到从根目录开始逐步向下遍历直到找到目标文件或目录。
相关文章:
深入理解linux中的文件(下)
目录 一、语言级缓冲区和内核级缓冲区 二、C语音中的FILE* fp fopen(“./file.txt”,"w"): 四、理解磁盘结构: 物理结构 逻辑结构 五、未被打开的文件: 六、更加深入理解inode编号怎么找到文件: 七、对路径结构进行…...
Deepseek系列从v3到R易背面经版
deepseek v3 base要点 MTP : Multi-Token Prediction 训练时: 1. 把前一个block中input tokens经过embedding layer和transformer block的输出,进入output head之前的内容记为h,与下一个block的input tokens经过embedding layer输出的内容都…...
SQLAlchemy 的内存消耗
为何要研究SQLAlchemy 的内存消耗问题?因为SQLAlchemy在应用中,绝大多数问题体现在应用人员对SQLAlchemy 的内存消耗问题不认知、不重视、不处理,最终造成整个系统的大问题,使SQLAlchemy 的性能大打折扣,最终影响了SQL…...
Centos Ollama + Deepseek-r1+Chatbox运行环境搭建
Centos Ollama Deepseek-r1Chatbox运行环境搭建 内容介绍下载ollama在Ollama运行DeepSeek-r1模型使用chatbox连接ollama api 内容介绍 你好! 这篇文章简单讲述一下如何在linux环境搭建 Ollama Deepseek-r1。并在本地安装的Chatbox中进行远程调用 下载ollama 登…...
vscode和pycharm的区别
VSCode(Visual Studio Code)和 PyCharm 是两款常用的 Python 开发工具,它们在功能和使用体验上有一些关键区别: 1. 核心定位 VSCode:轻量级、多语言支持的代码编辑器,依靠插件扩展 Python 开发能力。PyCh…...
【0403】Postgres内核 检查(procArray )给定 db 是否有其他 backend process 正在运行
文章目录 1. 给定 db 是否有其他 backend 正在运行1.1 获取 allPgXact[] 索引1.1.1 MyProc 中 databaseId 初始化实现1.2 allProcs[] 中各 databaseId 判断1. 给定 db 是否有其他 backend 正在运行 CREATE DATABASE 语句创建用户指定 数据库名(database-name)时候, 会通过 …...
MySQL 数据库的体系架构
MySQL 数据库的体系架构是其高效、灵活和可扩展性的核心基础。其设计采用 分层模块化 结构,主要分为以下四层: 1. 连接层(Connectors & Connection Pool) 功能:负责处理客户端连接、认证和权限管理。 连接管理&a…...
【C++高并发服务器WebServer】-14:Select详解及实现
本文目录 一、BIO模型二、非阻塞NIO忙轮询三、IO多路复用四、Select()多路复用实现 明确一下IO多路复用的概念:IO多路复用能够使得程序同时监听多个文件描述符(文件描述符fd对应的是内核读写缓冲区),能够提升程序的性能。 Linux下…...
apisix网关ip-restriction插件使用说明
ip-restriction插件可以在网关层进行客户端请求ip拦截。 当然了,一般不推荐使用该方法,专业的事专业工具做。建议有条件,还是上防火墙或者waf来做。 官方文档:ip-restriction | Apache APISIX -- Cloud-Native API Gateway whit…...
15vue3实战-----props和emit传值
15vue3实战-----props和emit传值 1.emit的使用2.配合props实现完整父子通信 vue3中props和emit的使用有点不一样,但万变不离其宗。 1.emit的使用 子组件: <script setup lang"ts"> // 定义触发的事件及其数据类型 const emit defineEmits([update, delete]…...
第二节 docker基础之---镜像构建及挂载
查看当前镜像: [rootdocker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE [rootdocker ~]#很明显docker是咱们新搭建的所以目前还没有镜像 1,搜索镜像: [rootdocker ~]# docker search centos 搜索镜像并过滤是官…...
Android性能优化
Android性能优化 如何优化一个包含大量图片加载的Android应用,以提高性能和用户体验? 优化一个包含大量图片加载的Android应用,可以从以下几个方面入手,以提高性能和用户体验: 选择合适的图片加载库 使用成熟的图片…...
scikit-learn简介
scikit-learn 是一个广泛使用的 Python 库,主要用于 机器学习(ML)。它提供了一些简单高效的工具,适用于 数据挖掘 和 数据分析。scikit-learn 基于 NumPy、SciPy 和 matplotlib 等科学计算库,具有 易于使用的接口 和 高…...
查询已经运行的 Docker 容器启动命令
一、导语 使用 get_command_4_run_container 查询 docker 容器的启动命令 获取镜像 docker pull cucker/get_command_4_run_container 查看容器命令 docker run --rm -v /var/run/docker.sock:/var/run/docker.sock cucker/get_command_4_run_container 容器id或容器名 …...
ssti学习笔记(服务器端模板注入)
目录 一,ssti是什么 二,原理 所谓模板引擎(三列,可滑动查看) 三,漏洞复现 1,如何判断其所属的模板引擎? 2,判断清楚后开始注入 (1)Jinja2&a…...
Docker 部署 RabbitMQ | 自带延时队列
一、获取镜像 docker pull farerboy/rabbitmq:3.9.9 二、运行镜像 docker run -d --name rabbitmq \n --hostname rabbitmq \n -p 15672:15672/tcp \n -p 5672:5672/tcp \n -v /wwwroot/opt/docker/rabbitmq:/var/lib/rabbitmq \n farerboy/rabbitmq:3.9.9 备注:…...
如何使用deepseek创建钉钉收费AI助理
1、打开deepseek,简单描述下自己的问题,勾选深度思考 2、deepseek给我生成了一大段提示词模板 3、打开钉钉-应用中心-找AI助理 4、点击立即创作 5、创作 默认创建的是免费上网,需要创建收费的话需要先申请,填一个表单内容和价格&…...
【STM32系列】利用MATLAB配合ARM-DSP库设计FIR数字滤波器(保姆级教程)
ps.源码放在最后面 设计IIR数字滤波器可以看这里:利用MATLAB配合ARM-DSP库设计IIR数字滤波器(保姆级教程) 前言 本篇文章将介绍如何利用MATLAB与STM32的ARM-DSP库相结合,简明易懂地实现FIR低通滤波器的设计与应用。文章重点不在…...
2025年日祭
本文将同步发表于洛谷(暂无法访问)、CSDN 与 Github 个人博客(暂未发布) 本蒟自2025.2.8开始半停课。 以下是题目格式: [题目OJ 题号] [来源(选填)] 名称 …… 题号 - 名称 题目:……...
torch_bmm验算及代码测试
文章目录 1. torch_bmm2. pytorch源码 1. torch_bmm torch.bmm的作用是基于batch_size的矩阵乘法,torch.bmm的作用是对应batch位置的矩阵相乘,比如, mat1的第1个位置和mat2的第1个位置进行矩阵相乘得到mat3的第1个位置mat1的第2个位置和mat2的第2个位置…...
ChatGPT提问技巧:行业热门应用提示词案例-文案写作
ChatGPT 作为强大的 AI 语言模型,已经成为文案写作的得力助手。但要让它写出真正符合你需求的文案,关键在于如何与它“沟通”,也就是如何设计提示词(Prompt)。以下是一些实用的提示词案例,帮助你解锁 ChatG…...
k8s中,一.service发布服务,二.dashboard:基于网页的k8s管理插件,三.资源服务与帐号权限
一.service资源对内发布服务Cluster IP对外发布服务NodePortIngress 二.dashboard:基于网页的k8s管理插件 三.资源服务与帐号权限一.service:用户无法预知pod的ip地址以及所在的节点,多个相同的pod如何访问他们上面的服务功能:1.服务自动感知:pod迁移后访问service的ip,不受影响…...
Python的那些事第十六篇:Python的网络爬虫技术
基于Python的网络爬虫技术研究与应用 摘要 随着互联网的飞速发展,网络爬虫技术在数据采集、信息挖掘等领域发挥着重要作用。本文详细介绍了Python环境下常用的网络爬虫技术,包括Requests库、BeautifulSoup库以及Scrapy框架。通过对这些工具的使用方法、…...
Linux第106步_Linux内核RTC驱动实验
1、了解rtc_device结构体 1)、打开“include/linux/rtc.h” rtc_class_ops是需要用户根据所使用的RTC设备编写的,其结构体如下: struct rtc_class_ops { int (*ioctl)(struct device *, unsigned int, unsigned long);/*函数指针ioctl*/ int (*read_time)(struct device *,…...
《XSS跨站脚本攻击》
一、XSS简介 XSS全称(Cross Site Scripting)跨站脚本攻击,为了避免和CSS层叠样式表名称冲突,所以改为了XSS,是最常见的Web应用程序安全漏洞之一,位于OWASP top 10 2013/2017年度分别为第三名和第七名&…...
康谋方案 | BEV感知技术:多相机数据采集与高精度时间同步方案
随着自动驾驶技术的快速发展,车辆准确感知周围环境的能力变得至关重要。BEV(Birds-Eye-View,鸟瞰图)感知技术,以其独特的视角和强大的数据处理能力,正成为自动驾驶领域的一大研究热点。 一、BEV感知技术概…...
堆详解及C语言实现
堆结构与最大堆详解:从原理到C语言实现 1. 堆结构概述 1.1 定义与性质 堆(Heap)是一种特殊的完全二叉树数据结构,满足以下性质: 结构性:完全二叉树结构有序性:每个结点的值都≥(…...
基于STM32的智能鱼缸水质净化系统设计
🤞🤞大家好,这里是5132单片机毕设设计项目分享,今天给大家分享的是智能鱼缸水质净化系统。 目录 1、设计要求 2、系统功能 3、演示视频和实物 4、系统设计框图 5、软件设计流程图 6、原理图 7、主程序 8、总结 1、设计要求…...
python:csv文件批量导入mysql
1.导入sql文件到数据库中 mysql -u username -p要先创建一个空的数据库 CREATE DATABASE your_database_name;USE your_database_name;导入sql文件 source /path/to/your/file.sql;查看某个表格的结构,为后续数据插入做准备 DESCRIBE table_name;2.插入假数据到对应…...
第三十二周:Informer学习笔记
目录 摘要Abstract1 Informer1.1 预备知识1.2 模型框架1.3 实验分析 总结 摘要 本周学习的主要内容是Informer模型,Informer是一种专为长序列时间序列预测(LSTF) 设计的Transformer模型。相较于传统的Transformer,Informer采用Pr…...
计算机视觉核心任务
1. 计算机视频重要分类 计算机视觉的重要任务可以大致分为以下几类: 1. 图像分类(Image Classification) 识别图像属于哪个类别,例如猫、狗、汽车等。 应用场景:物品识别、人脸识别、医疗影像分类。代表模型&#…...
【python】matplotlib(animation)
文章目录 1、matplotlib.animation1.1、FuncAnimation1.2、修改 matplotlib 背景 2、matplotlib imageio2.1、折线图2.2、条形图2.3、散点图 3、参考 1、matplotlib.animation 1.1、FuncAnimation matplotlib.animation.FuncAnimation 是 Matplotlib 库中用于创建动画的一个…...
【Linux网络编程】之守护进程
【Linux网络编程】之守护进程 进程组进程组的概念组长进程 会话会话的概念会话ID 控制终端控制终端的概念控制终端的作用会话、终端、bash三者的关系 前台进程与后台进程概念特点查看当前终端的后台进程前台进程与后台进程的切换 作业控制相关概念作业状态(一般指后…...
Vue.js如何根据访问路径切换页面
Vue Router 在前端工程中,路由指的是,根据不同的访问路径,展示不同组件的内容。 Vue Router是Vue.js的官方路由。 Vue Router介绍。 要使用vue Router,得先安装 npm install vue-router4这里的4,指的是第4个版本 在s…...
Vue与Konva:解锁Canvas绘图的无限可能
前言 在现代Web开发中,动态、交互式的图形界面已成为提升用户体验的关键要素。Vue.js,作为一款轻量级且高效的前端框架,凭借其响应式数据绑定和组件化开发模式,赢得了众多开发者的青睐。而当Vue.js邂逅Konva.js,两者结…...
collabora online+nextcloud+mariadb在线文档协助
1、环境 龙蜥os 8.9 docker 2、安装docker dnf -y install dnf-plugins-core dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sed -i shttps://download.docker.comhttps://mirrors.tuna.tsinghua.edu.cn/docker-ce /etc/yum.repos.…...
linux基础命令1
1、linux目录结构——树型结构 根目录:/ 用户主目录(家目录):~或者 /home/edu 根目录下常见的文件夹: 2、常见的命令 1、pwd 查看当前目录 cd 切换目录 cd ~ 切换到家目录 2、ls 查看当前目录的文件信息 语法:ls [选项] [参…...
[LVGL] 在VC_MFC中移植LVGL
前言: 0. 在MFC中开发LVGL的优点是可以用多个Window界面做辅助扩展【类似GUIguider】 1.本文基于VC2022-MFC单文档框架移植lvgl8 2. gitee上下载lvgl8.3 源码,并将其文件夹改名为lvgl lvgl: LVGL 是一个开源图形库,提供您创建具有易于使用…...
Spring Boot整合MQTT
MQTT是基于代理的轻量级的消息发布订阅传输协议。 1、下载安装代理 进入mosquitto下载地址:Download | Eclipse Mosquitto,进行下载,以win版本为例 下载完成后,在本地文件夹找到下载的代理安装文件 使用管理员身份打开安装 安装…...
elasticsearch实战三 elasticsearch与mysql数据实时同步
一 介绍 elasticsearch数据不是一直不变的,需要与mysql、oracle等数据库的数据做同步。 本博客里涉及到的项目地址:https://www.aliyundrive.com/s/7bRWpTYsxWV 方案一: 同步调用,即操作mysql数据后,接着操作elastic…...
netcore openTelemetry+prometheus+grafana
一、netcore项目 二、openTelemetry 三、prometheus 四、grafana添加Dashborad aspire/src/Grafana/dashboards at main dotnet/aspire GitHub 导入:aspnetcore.json和aspnetcore-endpoint.json 效果:...
StochSync:可在任意空间中生成360°全景图和3D网格纹理
StochSync方法可以用于在任意空间中生成图像,尤其是360全景图和3D网格纹理。该方法利用了预训练的图像扩散模型,以实现零-shot生成,消除了对新数据收集和单独训练生成模型的需求。StochSync 结合了 Diffusion Synchronization(DS&…...
MybatisPlus较全常用复杂查询引例(limit、orderby、groupby、having、like...)
MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。以下是 MyBatis-Plus 中常用复杂查询(如 LIMIT、ORDER BY、GROUP BY、HAVING、LIKE 等)的引例: 1. 环境准备…...
大数据项目2:基于hadoop的电影推荐和分析系统设计和实现
前言 大数据项目源码资料说明: 大数据项目资料来自我多年工作中的开发积累与沉淀。 我分享的每个项目都有完整代码、数据、文档、效果图、部署文档及讲解视频。 可用于毕设、课设、学习、工作或者二次开发等,极大提升效率! 1、项目目标 本…...
win10的Unet项目导入阿里云训练
win10配置文件 annotated-types0.7.0 certifi2024.12.14 charset-normalizer3.4.1 click8.1.8 colorama0.4.6 contourpy1.1.1 cycler0.12.1 docker-pycreds0.4.0 eval_type_backport0.2.2 filelock3.16.1 fonttools4.55.3 fsspec2024.12.0 gitdb4.0.12 GitPython3.1.44 idna3.…...
Linux(20)——调度作业
目录 一、调度延迟的用户作业: 1、延迟的用户作业: 2、查看延迟的用户作业: 3、从计划中删除作业: 二、调度周期性用户作业: 1、周期性用户作业: 2、调度周期性用户作业: 3、用户作业格…...
DeepSeek赋能Vue:打造超丝滑进度条开发指南
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
在CT107D单片机综合训练平台上,8个数码管分别单独依次显示0~9的值,然后所有数码管一起同时显示0~F的值,如此往复。
题目:在CT107D单片机综合训练平台上,8个数码管分别单独依次显示0~9的值,然后所有数码管一起同时显示0~F的值,如此往复。 延时函数分析LED首先实现8个数码管单独依次显示0~9的数字所有数码管一起同时显示0~F的值,如此往…...
清除el-table选中状态 clearSelection
如何在Vue应用中使用Element UI的el-table组件,通过this.$refs.multipleTable.clearSelection()方法来清除所有选中行的状态。适合前端开发者了解表格组件的交互操作。 // el-table绑定ref<el-table selection-change"selsChange" ref"multipl…...
【算法】动态规划专题⑥ —— 完全背包问题 python
目录 前置知识进入正题模板 前置知识 【算法】动态规划专题⑤ —— 0-1背包问题 滚动数组优化 完全背包问题是动态规划中的一种经典问题,它与0-1背包问题相似,但有一个关键的区别:在完全背包问题中,每种物品都有无限的数量可用。…...