学期(2023-2024-1) 学号(20231327) 《计算机基础与程序设计》第10周学习总结
作业信息
课程 | <班级的链接>(2023-2024-1-计算机基础与程序设计) |
---|---|
要求 | <作业要求的链接>(2023-2024-1计算机基础与程序设计第10周作业 |
目标 | <了解文件系统和目录以及字符串的使用> |
作业正文 | https://i.cnblogs.com/posts/edit |
教材学习内容总结
1《计算机科学概论》
1.文件系统
文本文件:
存储数据的基本单元: 文本文件是由字符组成的文件,每个字符通常占据一个字节的存储空间。它包含了可读的文本内容,例如ASCII码表示的字母、数字和符号。
用途: 文本文件常用于存储纯文本信息,例如源代码文件(C、Java等),配置文件,日志文件等。
特点: 文本文件是可读的,可以使用文本编辑器打开查看和编辑。由于其简单的结构,通常占用较小的存储空间。
二进制文件:
存储数据的基本单元: 二进制文件是由比特(0和1)组成的文件,可以存储任意类型的数据,包括文本、图像、音频、视频等。
用途: 二进制文件适用于存储各种复杂的数据,如图像文件(JPEG、PNG)、音频文件(MP3)、可执行程序文件(EXE、ELF)等。
特点: 二进制文件不是直接可读的,通常需要特定的程序或工具来解析和处理。由于可以存储复杂结构的数据,二进制文件可能占据更多的存储空间。
在文件系统中,文本文件和二进制文件都可以存储在目录中,并通过路径唯一标识。文件系统使用权限控制来限制用户对文件和目录的访问。整个文件系统以层次结构的方式组织,形成树状结构,方便用户管理和检索文件。
2.目录
目录树:
目录树是文件系统中目录之间关系的图形表示,通常采用树状结构。根目录位于树的顶部,子目录和文件位于树的分支和叶子节点上。每个节点代表一个目录或文件,它们之间通过父子关系相连接。
路径名:
路径名是用于唯一标识文件或目录在目录树中位置的字符串。路径名描述了从根目录到目标文件或目录的路径。在常见的文件系统中,有两种主要类型的路径名:
绝对路径: 完整地描述了文件或目录的位置,从根目录开始,一直到目标文件或目录。例如,/home/user1/Documents/file.txt 是一个绝对路径。
相对路径: 描述文件或目录相对于当前工作目录的位置。例如,在当前工作目录为/home/user1时,Documents/file.txt 就是一个相对路径。
绝对路径操作:
绝对路径可以直接用于定位文件或目录,无论当前工作目录在哪里。
cd /home/user1/Documents:切换到绝对路径指定的目录。
相对路径操作:
相对路径通常需要基于当前工作目录。
cd Documents:切换到相对路径指定的目录。
路径组合:
cd /home/user1:切换到绝对路径。
cd Documents:切换到相对路径。
3.磁盘调度
先来先服务: 按照请求的顺序进行服务。虽然简单,但可能导致磁头在磁盘上来回移动,产生较长的寻道时间。
最短寻道时间优先: 选择距离当前磁头位置最近的请求进行服务。这样可以最小化寻道时间,但可能导致某些请求长时间等待。
电梯算法(SCAN): 磁头按一个方向移动,服务请求,当到达磁盘的边界时,改变方向继续移动。这类似于电梯在楼层之间移动的方式。SCAN 算法可以防止某些请求长时间等待,但可能导致某些请求等待时间较长。
2.《C语言程序设计》
字符串表示: char *str_ptr = str;
拼接和连接: strcat(dest, src);
字符串比较: strcmp(str1, str2);
字符串复制: strcpy(dest, src);
动态内存分配: char *dynamic_str = malloc(sizeof(char) * length);
字符串传递: void processString(char *str);
字符串数组: char *str_array[] = {"str1", "str2", "str3"};
字符串长度计算: strlen(str);
教材学习中的问题和解决过程
磁盘调度
先来先服务(FCFS):
比喻: 像是在食堂排队打饭。
解释: 每个人请求的数据就像是一个菜品,每个请求按照到达的顺序被处理。但是,如果前面的请求(菜品)需要处理很长时间,后面的请求就要等待很长时间才能被处理。
电梯算法(SCAN):
比喻: 就像是电梯在大厦中运行。
解释: 请求的数据就像是电梯里的乘客,按照一个方向服务。当磁头(电梯)在某一方向上移动时,它处理沿途的请求。这样,就像电梯把同一层的人一起带上去一样,SCAN算法可以一边移动一边处理相邻的请求。
基于AI的学习
代码调试中的问题和解
未初始化: 字符指针必须在使用前初始化。未初始化的指针可能指向随机的内存地址,导致未知行为。
越界访问: 操作字符串时,确保字符指针不越界。访问超出字符串末尾的内存可能导致程序崩溃或产生未定义行为。
未检查空指针: 在使用字符指针前,始终检查是否为空
混淆字符指针和字符数组: 字符指针和字符数组是不同的。字符指针指向字符数组的首地址,但它们有不同的语法和行为。
忘记释放动态分配的内存: 使用 malloc、calloc 或 strdup 等函数分配内存后,必须在不再需要时使用 free 释放。
未考虑字符串结尾: 操作字符串时,要确保字符串以 null 结尾('\0'),否则字符串处理函数可能无法正确工作。