二.记录
记录是一组相关数据项的集合,用于描述一个对象在某方面的属性。在诸多记录中为了可以唯一的标识一个记录,必须在记录的各个数据项中确定出一个或多个数据项,把它们的集合称为关键字(key)
三.文件(是文件系统中最大的数据单位)
文件是由所创建者所定义的,具有文件名的一组相关元素的集合分为有结构文件(文件由若干相关记录组成)和无结构文件(被看成字符流)
文件的属性:(1)文件类型(2)文件长度(3)文件的物理位置(4)文件的建立时间
文件类型:
-
按用途分:系统文件;用户文件;库文件
-
按文件中的数据形式分类:源文件.c .java文件;目标文件.obj;可执行文件.exe
-
按存取控制属性分类:只执行文件;只读文件;读写文件
-
按组织形式和处理方式分类:普通文件;目录文件;特殊文件
文件系统的模型分为三个层次结构:最底层是对象及其属性,中间层是对对象进行操作和管理的软件集合,最高层是文件系统提供给用户的接口。
对象及其属性——文件管理系统管理的对象有:文件;目录;磁盘(磁带)存储空间
文件系统的接口:命令接口;程序接口
文件操作:1)最基本的文件操作:创建文件;删除文件;读文件;写文件;设置文件的读写位置;2)文件的打开和关闭操作;3)其他文件操作
用户所看到的文件称为逻辑文件,是由一系列的逻辑记录组成,从用户的观点而言文件的逻辑记录是能够被存取的基本单位。在系统中的所有文件都存在两种形式的文件结构:
(1)文件的逻辑结构用户可以直接处理的数据及结构,又称为文件组织。
(2)文件的物理结构,又称为文件的存储结构
文件逻辑结构类型:
1.按文件是否有结构分类
-
有结构文件:记录式文件,记录长度可以分为两类:定长记录和变长记录
-
无结构文件:流式文件,可以看做是记录式文件的一个特例:一个记录仅仅有一个字节。
2.按文件的组织方式分类(把有结构的文件分为三类)
(1)顺序文件
顺序文件:由一系列记录按某种顺序排列所形成的文件,记录可以是定长或者变长。
排列方式:串结构通常按时间顺序排列每次查找要从头开始。
顺序结构用户指定一个字段作为关键字,可以是任意一个类型的变量其中最简单的是正整数
顺序文件的优缺点:最佳应用场合是在对文件中的记录进行批量存取时。所有逻辑文件中顺序文件的存取效率是最高的。对于顺序存储设备(如磁带)也只有顺序文件才能被存储并有效工作。在交互场合对于查找和修改则性能较差。
记录寻址:
1.隐式寻址方式: 对于定长记录的顺序文件,如果已知当前记录的逻辑地址很容易确定下一个记录的逻辑地址。读文件时设一个读指针Rptr令它指向下一个记录的首地址;写指针指向要写记录的首地址;读写完执行加L操作,L是记录长度。也称随机访问或直接访问;对于变长记录的顺序文件需要设置读写指针但是要加上Li(刚读写完的记录长度)也称顺序访问适用于所有文件类型但是需要从头访问速度慢。
2.显示寻址方式: 对定长记录的文件实现直接访问或者随机访问通过文件中记录中的位置;利用关键字。变长不可以实现直接访问。
(2)索引文件
索引文件指为可变长记录文件建立一张索引表,为每个记录设置一个表项,以加速对记录的检索速度。
-
1.按关键字建索引:定长记录文件可以通过简单计算实现随机查找,变长记录文件需要从第一个开始查一直顺序查找目标记录为止。我们为变长记录文件建立一张索引表,为主文件中的每个记录在索引表中分别设置一个表项记录指向记录的指针以及记录的长度L。索引表按关键字排序。索引表本身是一个定长记录的索引文件。把对变长记录顺序文件的顺序检索转变为对定长记录的顺序文件。实现直接存取。根据用户提供的关键字利用折半查找的方法去检索索引表,从中找到表项,在利用表项中给的指针去访问记录
-
2.具有多个索引表的索引文件
索引文件的优点:顺序查找的文件改造成随机查找的文件,插入删除方便。
(3)索引顺序文件:
索引顺序文件是对顺序文件的改进,克服对变长记录的顺序文件不能随机访问以及不便插入和删除的缺点。仍保留顺序文件的关键特征,记录是按关键字的顺序组织起来的,还有两个新特征:引入文件索引表实现随机访问,增加溢出文件记录新增加,删除和修改的记录。
一级顺序索引文件:将变长记录顺序文件中的所有记录分为若干组,为每组的第一个记录在索引表中建立一个索引项,含有该记录的关键字和指向该记录的指针。索引顺序文件是最常见的一种逻辑文件形式。检索效率比顺序文件提高根号N/2倍。记录数为N,分为根号N个分组,每个分组有根号N个记录查找最佳。
两级顺序索引文件:例:对于一个含有10的6次方个记录的顺序文件,作为索引顺序文件时,平均需要查询1000个记录。建立多级索引分组为100*100*100
,此时查找一个记录所需的次数变为50+50+50=150。
直接文件:可根据给定关键字直接获取指定记录的物理地址。关键字就决定了记录的物理地址。
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
最近我根据上述的技术体系图搜集了几十套腾讯、头条、阿里、美团等公司21年的面试题,把技术点整理成了视频(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分
433128037)]
最近我根据上述的技术体系图搜集了几十套腾讯、头条、阿里、美团等公司21年的面试题,把技术点整理成了视频(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分
[外链图片转存中…(img-ONvOZJlb-1710433128037)]