Re:從零開始的文件結構(融合線性表來理解 考研向)

文件管理 & 線性表

  • 文件管理
    • 文件的結構
      • 無結構文件
    • 有結構文件(重點)
      • 定長與不定長記錄
      • 順序文件(類線性表)
        • 它的邏輯結構
        • 它的物理結構(存儲結構)
        • 小結
      • 索引順序文件與多級索引順序文件
        • 形象化理解(很清晰)
      • 結語

文件管理

文件的結構

無結構文件

在這里插入圖片描述

有結構文件(重點)

在這里插入圖片描述

定長與不定長記錄

  • 定長記錄:
    在這里插入圖片描述
  • 不定長記錄
  • 其實這個東西就可以類比于我們在學習線性表中所解決的稀疏多項式問題,也就是一旦當數組當中的某些項的差異比較大的時候,我們如果還是采用定長記錄的方式就會使得存儲空間的利用率大大下降,
  • 例如下圖,有的同學沒有特長有的同學特長卻非常多
    在這里插入圖片描述

順序文件(類線性表)

它的邏輯結構

而這里所提到的關鍵字可以看做是一個特征 這個特征唯一可以標識每個數據項(結點)
eg:就像上面的校園管理系統的例子中,我們的關鍵字就是學號,為什么不選擇姓名 作為我們的關鍵字呢,因為在一個龐大的校園里面很有可能出現重名的情況,而現在我們說的是單級目錄,單級目錄是不允許有重復項出現的

在這里插入圖片描述

  • “順序結構” 通常指線性結構(數據元素按線性關系排列,如線性表)
  • “串結構” 是特殊的線性結構(數據元素僅為字符,如字符串)。
它的物理結構(存儲結構)

類似于我們順序表 我們對于它的存儲結構可以分為鏈式存儲(鏈表)和順序存儲(數組)
當然 對于鏈式存儲 不論采用上面哪種記錄方式 我們都得首元結點開始尋找,但是如果要進行增刪目錄是比較方便的

來看順序存儲結合我們前面提到的兩種記錄方式 :

定長記錄下:

  • 我們最理想的狀態就是采取順序存儲的定長記錄方式,這樣一來就可以擁有了數組的一大優勢,隨機存取我們只需要知道首地址我們就可以根據每個記錄長度(數組每個元素的大小)以O(1)的時間來得到目標元素的位置
  • 當前進一步采用順序結構(邏輯結構),那么我們是不是此時是不是就可以將它看做一個有序的數組,此時如果給定關鍵字(學號)我們是不是就可以采用二分查找的快速鎖定對應的記錄在這個目錄的位置呢
  • 但是進一步采用串結構是不能做到快速查找這點的 具體原因如下(了解):
  • 串是 “字符序列” 的邏輯結構,沒有 “元素包含關鍵字” 的邏輯設計,缺乏 “關鍵字→元素” 的映射基礎;
  • 串的操作圍繞字符序列處理,而非關鍵字的高效檢索,無法支持快速查找所需的索引或映射機制;
  • 關鍵字目錄的本質是 “基于唯一標識的元素索引”,這與串結構的設計目標(處理字符序列)完全不匹配

可變長記錄下:

  • 那么如果是可變長記錄那么就可以聯想到我們稀疏多項式的情況 這個時候由于采取的是可變長記錄方式我們并不知道每個記錄內容的長度,所以我們必須得一個一個順序的找

在這里插入圖片描述

小結

在這里插入圖片描述

索引順序文件與多級索引順序文件

形象化理解(很清晰)
  • 對于單級:
    在這里插入圖片描述
  • 對于多級索引:
    在這里插入圖片描述

結語

在這里插入圖片描述

我覺得如果想要學好文件這一章,需要扎實的數據結構基礎,而這一章跟前面我們剛剛學習的基本存儲管理方式又有很多相似之處,
所以我建議把前面一章消化吸收之后 再來學這一章的內容更為合適一些 我感覺操作系統當中很多知識的大體框架都是差不多的 甚至于介紹順序和前因后果都差不多 只不過應用于不同的方面罷了 、
下一篇我會更新文件目錄部分 如果弄清楚了前面的多級頁表和DS當中的樹 會更好理解一些

******************************************************************************************* signed by 曦月逸霜

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/86586.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/86586.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/86586.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

并發基礎7(守護線程)

目錄 1:什么守護線程 2:守護線程使用 3:守護線程案例 1:什么守護線程 守護線程是Java中的一種特殊的線程類型,它為其他線程(非守護線程)提供后臺支持服務。 在Java多線程編程中&#xff0c…

蜣螂算法+四模型對比!DBO-CNN-BiLSTM-Attention系列四模型多變量時序預測

蜣螂算法四模型對比!DBO-CNN-BiLSTM-Attention系列四模型多變量時序預測(Matlab完整源碼和數據) 目錄 蜣螂算法四模型對比!DBO-CNN-BiLSTM-Attention系列四模型多變量時序預測(Matlab完整源碼和數據)效果一…

服務器的維護技術都有哪些?

服務器的穩定性與可靠性是十分重要的,當服務器出現故障或損壞時,會影響業務的正常運行,還會導致數據丟失給企業帶來巨大的經濟損失,所以大多數的企業通常掌握著有效的服務器維護技術,不僅能夠提高服務器的穩定性&#…

Go 語言并發編程

Go 語言的并發模型是其區別于其他編程語言的重要特性之一,它以簡潔高效的方式解決了現代編程中多核處理器利用和高并發場景的需求。 一、并發與并行:概念與區別 在理解 Go 的并發模型之前,需要明確并發與并行的差異: 并發&…

基于Versoria函數優化協方差更新的改進擴展卡爾曼濾波(MVC-EKF)與經典EKF的對比,附matlab源代碼|訂閱專欄后可查看完整代碼

本代碼實現了基于Versoria函數優化協方差更新的改進擴展卡爾曼濾波(MVC-EKF),并與傳統擴展卡爾曼濾波(EKF)進行對比。代碼通過一維非線性運動模型仿真,展示了MVC-EKF在處理含異常值觀測數據時的魯棒性優勢,適用于目標跟蹤、導航定位等狀態估計場景。訂閱專欄后,可直接查…

使用Docker安裝MySQL和Nginx

在 Docker 中安裝 MySQL 和 Nginx 非常簡單,只需使用 docker run 命令即可快速部署。以下是詳細步驟: 1. 安裝 MySQL (1)拉取 MySQL 鏡像 docker pull mysql:8.0 # 推薦使用 8.0 或 5.7 版本(2)運行 MyS…

線上活動丨主動式語音 AI:全雙工、對話輪次管理、VAD 技術交流會丨RTE Meetup

一同探索語音驅動的下一代人機交互界面,voice agent builder 的小規模深度交流會。 當用戶走在街上時,AI 可以主動提醒他們注意未察覺的來車或騎行者,甚至推薦附近不為人知的特色咖啡館。 同樣,如果系統檢測到用戶持續表達消極情緒…

如何用內網穿透遠程訪問Everything?實現隨時隨地快速檢索文件

Everything 是一款高效的文件搜索工具,但默認僅支持局域網內使用。使用 花生殼(內網穿透),我們可以實現遠程訪問Everything,在外網也能快速檢索和管理本地文件。 本教程將詳細介紹如何配置花生殼映射,并設…

Docker 入門教程(六):聯合文件系統(UnionFS)

文章目錄 🐳 Docker 入門教程(六):聯合文件系統(UnionFS)一、聯合文件系統(UnionFS)二、Docker 鏡像的層級結構三、寫層(Copy-on-Write)四、鏡像構建緩存機制…

SQL在一個表中所有列查詢某個值

使用場景:知道表名,同時知道這個表中含有某個字符串,但是不知道這個字符串是在表的哪些列,在列比較多的情況下,查詢很麻煩,通過以下語句或者封裝的存儲可以查出字符串在哪些列出現。結果集里 ContainsValue…

【Outline】純Docker部署指南

本文介紹了使用Docker部署Outline知識管理系統的完整流程。 主要內容包括: 部署PostgreSQL 12數據庫并創建用戶;安裝Redis 6緩存服務;配置Minio對象存儲服務替代AWS S3;搭建SSO單點登錄服務器;準備Outline容器鏡像和環…

終止分區表變更操作時誤刪數據字典緩存導致MySQL崩潰分析

終止分區表變更操作時誤刪數據字典緩存導致MySQL崩潰分析 1. 問題簡述 在 MySQL 中,當終止一個處于 committing alter table to storage engine 階段的分區表操作時,InnoDB 會嘗試進行回滾并清理數據字典緩存。不幸的是,過程中發生了誤刪表…

進程關系與守護進程全解析

進程關系和守護進程 進程組 每一個進程除了有一個進程ID(PID)之外還屬于一個進程組。進程組是一個或者多個進程的集合, 一個進程組可以包含多個進程,每一個進程組也有一個唯一的進程組ID(PGID), 并且這個PGID 類似于進程ID, 同樣…

PyAutoGUI 測試框架

??親愛的技術愛好者們,熱烈歡迎來到 Kant2048 的博客!我是 Thomas Kant,很開心能在CSDN上與你們相遇~?? 本博客的精華專欄: 【自動化測試】 【測試經驗】 【人工智能】 【Python】

Git安裝避坑指南

Git高速下載 程序員面試資料大全|各種技術書籍等資料-1000G 一、安裝前準備:避免環境沖突 1. 檢查系統殘留(Windows) # 檢查舊版Git殘留 where git where git.exe# 檢查環境變量 $env:PATH -split ; | Select-String git# 清理…

MATLAB中的并行加速技術與工具

文章目錄 MATLAB中的并行加速技術與工具1. 多線程計算(隱式并行)2. Parallel Computing Toolbox (并行計算工具箱)2.1 parfor (并行for循環)2.2 spmd (單程序多數據)2.3 parfeval (異步并行執行) 3. GPU計算4. 分布式計算 (MATLAB Parallel Server)5. 批…

GR00T N1.5 技術報告 -- Nvidia -- 2025.6.11 -- 開源

0. 前言 GR00T N1 的詳細介紹 Isaac-GR00T 在6.11 進行了全面升級,從 N1 進化為 N1.5,但基本還是基于之前的架構,官方發布了一個技術報告,并更新了github庫,之前的N1也做了獨立版本 N1 N 1.5 github 技術報告 model…

SRS WebRTC 入門

什么是 SRS WebRTC? SRS (Simple Realtime Server) 是一個支持 WebRTC 流媒體的開源媒體服務器。它允許你建立基于 WebRTC 的低延遲直播和實時通信應用。 快速開始 1. 安裝 SRS bash # 使用 Docker 快速安裝 docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080…

從手機隨拍到標準掃描件:AI如何智能校正證件照片(Python+OpenCV)

目錄 一、概述二、解決方案2.1 核心挑戰:AI眼中的“三座大山”2.2 設計思路:給AI一個“智能提示”2.3 實現流程:四步搞定 三、代碼實現3.1 依賴庫3.2 代碼 四、結語 一、概述 在當今的線上業務中,要求用戶上傳身份證、駕駛證等證…

基于OpenCV圖像分割與PyTorch的增強圖像分類方案

在圖像分類任務中,背景噪聲和復雜場景常常會對分類準確率產生負面影響。為了應對這一挑戰,本文介紹了一種結合OpenCV圖像分割與PyTorch深度學習框架的增強圖像分類方案。通過先對圖像進行分割提取感興趣區域(Region of Interest,R…