基础IO -- 理解文件(1)
目录
一:回顾文件
二:加深对文件的理解
1.概念
2.以w写方式打开
3.以a追加方式打开
4.重定向
一:回顾文件
以前学习过在C语言中的文件操作, 但那根本是不足以理解文件的,即站在语言角度是不可能理解文件的

我们要进行文件操作时,前提是我们的程序跑起来了
文件打开和关闭,是CPU在执行我们的代码
二:加深对文件的理解
1.概念
打开文件,本质上就是进程打开文件!!!
即struct task_struct 和struct XXX(文件结构)之间一定存在着两种对象之间的指针关系
文件没有被打开的时候,那它存在哪里呢?? ---> 在磁盘上存在
一个进程是可以打开多个文件的,而系统内部也可以存在很多进程 ---> 因此在很多情况下,操作系统内部一定存在大量的被打开的文件
所有在OS需要将这些被打开的文件进程管理起来 ---> 先描述,再组织
(因此可以大概猜到每一个被打开的文件,在OS内部,一定要存在对应的描述文件属性的结构,类似PCB!)
像PCB一般,把一个文件打开就创建一个结构,然后将其用链表串起来,最后对打开文件的管理就变成了对链表的增删查改
如果我们在磁盘上新建一个大小为0的文件,什么都不写,此时这个文件会不会占据磁盘空间呢??? ---> 会的,因为其存在的各种属性也是数据,也会占据一定的空间
即文件 = 属性 + 内容
2.以w写方式打开
打开方式为 w 时
1.如果不存在,就在当前路径下,新建指定的文件
2.若存在,默认打开文件的时候,就会先把目标文件清空
3.以a追加方式打开
即 appending 追加,不会清空文件,而是在后面追加内容
4.重定向
echo ... > xxx文件 即 重定向操作
输出重定向一定是文件操作
每次写入文件内容都是新的,与以w方式打开文件方式一样(先清空,后写入)
通过这个特性,可以将 echo > 符号做出两个新的用途:
1.创建新文件:
2.清空文件:
echo ... >> xxx 追加重定向 即与以 a方式 打开文件一致
相关文章:
基础IO -- 理解文件(1)
目录 一:回顾文件 二:加深对文件的理解 1.概念 2.以w写方式打开 3.以a追加方式打开 4.重定向 一:回顾文件 以前学习过在C语言中的文件操作, 但那根本是不足以理解文件的,即站在语言角度是不可能理解文件的 我们要…...
golang包管理
package 在工程化的Go语言开发项目中,Go语言的源码复用是建立在包(package)基础之上的。本文介绍了Go语言中如何定义包、如何导出包的内容及如何导入其他包。 包与依赖管理 本章学习目标 掌握包的定义和使用掌握init初始化函数的使用掌握…...
outlook 添加企业邮箱账号出现 553 authentication is required 错误解决
系统报错如下 问题原因 发件服务器身份验证设置错误,或者未勾选发送服务器验证的选项。 解决方案 Outlook客户端 本文以Outlook 2016为例,具体操如下: 1、在Outlook客户端的电子邮件设置窗口中,单击其他设置; 2、…...
一个开源可本地部署的英文翻译服务----EnToZhAPI
EnToZhAPI项目简介 项目背景 提供本地化的英文翻译服务API。支持单句翻译请求或者批量翻译请求。支持建立查询词汇表。 项目架构 前端:使用原生js,使用MDB作为CSS框架。django模板引擎渲染可视化界面。 后端:使用waitress作为后端服务器…...
【unity】编辑器扩展——在OnValidate中创建、删除游戏物体
我们知道在OnValidate中创建游戏物体会发出警告,删除游戏物体会报错。 所以我们使用协程,将开始动作的信号放在OnValidate中,将动作的执行放在帧结尾。 参考代码如下: using System.Collections; using UnityEngine;public clas…...
学习记录:js算法(六十四):最后一块石头的重量
文章目录 最后一块石头的重量思路一思路二 最后一块石头的重量 有一堆石头,每块石头的重量都是正整数。 每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x < y。那么粉碎的可能结果如…...
单片机探秘:从理论到应用
单片机探秘:从理论到应用 在这个科技飞速发展的时代,单片机的应用如同一颗璀璨的星星,照亮了我们生活的方方面面。今天,让我们一同深入探讨单片机的原理与应用,揭开这个技术领域的神秘面纱。 1. 单片机概述 1.1 什么…...
options妙用
options妙用 设置默认浏览器为 Chrome options(browser “chrome”) 再次尝试运行 igsva() res <- igsva() 加载 BiocManager library(BiocManager) 设置超时时间 options(timeout 3600) 安装包 BiocManager::install(c(“org.Hs.eg.db”, “org.Mm.eg.db”)) …...
UE5 圆周运动、贝塞尔曲线运动、贝塞尔曲线点
圆周运动 贝塞尔曲线路径运动 蓝图函数库创建贝塞尔曲线点 // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h" #include "Kismet/BlueprintFunctionLibrary.h" #include "MyB…...
线程局部存储(TLS)
很多时候,我们可能想存储一些线程的私有数据,属于线程的私有变量有局部变量,函数的参数,假如我们要在线程中存储全局变量,多个线程访问都对这个变量有自己的一个副本。 一、隐式实现 __thread int a; //linux __dec…...
JavaSE——集合7:Set接口实现类—TreeSet
目录 一、TreeSet基本介绍 二、TreeSet核心方法 三、TreeSet排序方法 四、TreeSet源码解析 1.无参构造时,底层是创建TreeMap对象 2.有参构造时,底层也创建TreeMap对象 3.执行add方法 4.执行put方法 一、TreeSet基本介绍 TreeSet是 Java 集合框架…...
【idea技巧篇】idea的类注释和方法注释模版自定义设置
这块idea技巧虽然常用,谁没事会经常修改模版设置呢,一般是搭建开发环境的时候或者开发规范要求等设置一次就行了。用的虽然少,但几乎每次搭建环境都会用到,这里记录下并分享设置的过程已经发现的更高级的一些使用技巧。 注释模版…...
【Kubernetes① 基础】一、容器基础
目录 一、进程二、隔离与限制三、容器镜像总结参考书籍 一、进程 容器技术的兴起源于PaaS技术(平台即服务)的普及;Docker公司发布的Docker项目具有里程碑式的意义;Docker项目通过“容器镜像”解决了应用打包这个根本性难题(CloudFoundry)。 容器本身的价…...
计算机网络第1章(概述)万字笔记详细版
1.1、计算机网络在信息时代的作用 计算机网络已由一种通信基础设施发展成为一种重要的信息服务基础设施计算机网络已经像水,电,煤气这些基础设施一样,成为我们生活中不可或缺的一部分 我国互联网发展状况 中国互联网络信息中心CNNIC 1.2、…...
每日一练算法题(堆串的基本操作StrReplace(S, T, V))
6-2 堆串的基本操作StrReplace(S, T, V) 编写算法,实现堆串的基本操作StrReplace(S, T, V)。 初始条件: 串S, T和 V 均已存在,且 V 是非空串。 操作结果: 用V替换主串S中出现的所有与(模式串)T相等的不重叠的子串。输入格式: 第一行:S 第二行&#…...
IRP默认最小流程
IRP是Windows内核中的一种非常重要的数据结构。上层应用程序与底层驱动程序通信时,应用程序会发出I/O请求,操作系统将相应的I/O请求转换成相应的IRP,不同的IRP会根据类型被分派到不同的派遣例程中进行处理。 irp相当于R3下的消息,…...
【全网最全】AI产品经理面试高频100题答案解析
详细的目录如下,需要的小伙伴可以详细看一下~ 第一章:机器学习和深度学习的关系 第二章:机器学习7大经典算法 算法一:K近邻算法【分类算法】 1.1 KNN 算法的实现原理 1.2 KNN应用场景举例:预测候选人能不能拿到 O…...
VLLM实现大模型服务的部署
文章目录 安装离线推理适配openAI-API的API服务使用python命令行部署使用docker部署调用启动成功的API 安装 # (Recommended) Create a new conda environment. conda create -n myenv python3.9 -y conda activate myenv# Install vLLM with CUDA 12.1. pip install vllm -i …...
Java 基数排序
基数排序(Radix Sort)是一种非比较型整数排序算法,通常用于对数字进行排序。它按照数字的每一位(从最低有效位到最高有效位或从最高有效位到最低有效位)进行排序,每次使用一个稳定的排序算法(如…...
红帽发送邮件操作
一.将/mnt挂在至/run/media mount /dev/sr0 /mnt 二.查看下载时间 ll /etc/yum.repos.d/ 三.下载安装包 dnf install s-nail -y 四.配置邮件服务 在最下面一行输入######################### 接着输入邮件 set from18013844913163.com set smtpsmtp.163.com set smt…...
Qwen3字幕系统参数详解:对齐窗口大小、置信度阈值、后处理规则
Qwen3字幕系统参数详解:对齐窗口大小、置信度阈值、后处理规则 1. 系统概述与核心价值 清音刻墨是基于通义千问Qwen3-ForcedAligner核心技术的高精度音视频字幕生成平台。这个系统能够像经验丰富的"司辰官"一样,精确捕捉发音的每一个毫秒&am…...
**发散创新:策略即代码 —— 用 Rust实现动态权限控制引擎**在现代软件架构中,**权限管理不再是静态配
发散创新:策略即代码 —— 用 Rust 实现动态权限控制引擎 在现代软件架构中,权限管理不再是静态配置的附属品,而是核心业务逻辑的一部分。传统 RBAC(基于角色的访问控制)虽然成熟,但在微服务、多租户和复杂…...
Youtu-VL-4B-Instruct效果可视化:热力图呈现视觉词注意力与文本对齐关系
Youtu-VL-4B-Instruct效果可视化:热力图呈现视觉词注意力与文本对齐关系 1. 引言:当模型“看见”并“思考”时,它在看哪里? 想象一下,你给一个AI模型看一张照片,然后问它:“图片里有什么&…...
SUPER COLORIZER一键部署指南:基于Ubuntu 20.04的完整环境配置教程
SUPER COLORIZER一键部署指南:基于Ubuntu 20.04的完整环境配置教程 你是不是也遇到过一些珍贵的老照片,因为年代久远而褪色,想恢复它原本的色彩却无从下手?或者,你有一些黑白的设计稿,想快速预览上色后的效…...
保姆级教程:用MQTT.fx客户端连接电信AEP物联网平台,实现设备数据上报与远程控制
从零到一:用MQTT.fx玩转电信AEP物联网平台全流程实战 在物联网开发领域,电信AEP平台作为国内主流物联网云服务平台之一,为开发者提供了从设备接入到数据管理的完整解决方案。而MQTT.fx作为轻量级MQTT客户端工具,因其简洁直观的界面…...
水墨江南模型Python入门实践:第一个AI国画生成程序
水墨江南模型Python入门实践:第一个AI国画生成程序 你是不是也刷到过那些充满诗意的AI水墨画?烟雨朦胧的江南水乡,寥寥几笔勾勒出的远山,那种独特的意境让人过目不忘。你可能觉得,要做出这样的画,得是懂艺…...
拓扑排序不止于理论:用邻接矩阵实现时,我踩过的3个坑和性能优化
拓扑排序实战:邻接矩阵实现中的性能陷阱与优化策略 邻接矩阵作为图论中最直观的存储结构,常被初学者用来实现拓扑排序算法。但当我们真正将其投入实际项目时,往往会遭遇意想不到的性能瓶颈和逻辑陷阱。本文将分享三个真实项目中踩过的坑&…...
Rufus终极指南:轻松制作Windows 11启动盘,一键绕过TPM限制
Rufus终极指南:轻松制作Windows 11启动盘,一键绕过TPM限制 【免费下载链接】rufus The Reliable USB Formatting Utility 项目地址: https://gitcode.com/GitHub_Trending/ru/rufus 还在为Windows 11的TPM 2.0硬件要求而烦恼吗?你的旧…...
WebRTC信令交换实战:从Socket.io到RTCPeerConnection的完整流程解析
1. WebRTC信令交换的核心逻辑 第一次接触WebRTC时,我被它"点对点直接通信"的特性吸引,但很快发现真正的难点在于如何让两个设备找到彼此——这就是信令交换要解决的问题。信令交换就像两个陌生人交换电话号码的过程,只不过这里交换…...
避坑指南:用conda一键搞定gymnasium[box2d]安装(附常见错误解决方案)
Conda环境下的gymnasium[box2d]高效安装与疑难排解全攻略 强化学习实践者常会遇到一个令人头疼的问题:在Windows系统上安装gymnasium[box2d]时,总是遭遇各种编译错误和依赖问题。本文将带你彻底解决这个痛点,通过conda环境管理工具࿰…...







