orange 關於將資料從軟盤讀到記憶體的一些總結

2021-05-24 14:17:58 字數 2107 閱讀 7878

防止我以後忘記,我還是記一下吧

~雖然都是在別人的基礎上隨便重複寫一下。

然後呢,這裡先跟著書上學軟盤的,等我以後看完了全部去了解下光碟的做法。終於看完第四章了。。。。。。

一:軟盤入門知識

1.首先要了解軟盤的構造:(以

1.44mb

軟盤為例)

引導扇區

(扇區號:0)

fat1

(扇區號:

1-9)

fat2

(通常與

fat1

)(扇區號:

10-18

)根目錄區

(扇區號:

19-未知)

資料區.

(扇區號:未知

-2879

)軟盤都是以扇區號為單位來區分的。

2.我們可以通過

fat12

引導扇區來設定很多資訊,

eg:扇區總數,每扇區位元組數,每簇扇區數,磁頭數。。。。等等,注意這些都是可以由我們設定的。

在下面的講述中,我們都假設每簇只有乙個扇區,每個扇區

512位元組。。。詳見

p104 3.

然後我們通常往軟盤寫入資料後,資料都在資料區,但是它不一定是連續存放的,那麼我們怎麼知道某乙個檔案在資料區的哪些簇(扇區)(這裡假定乙個簇只有乙個扇區,所以可以互換)呢,那麼我們要通過根目錄和

fat來得到某個檔案在資料區的簇號。這裡尋找的過程大致如下:

當我們向軟盤寫入檔案後,根目錄裡面有這個檔案的一些資訊,根目錄的每乙個條目佔

32位元組:

檔名(

11位元組)

檔案屬性(1

位元組)保留位(10

位元組)最後一次寫入時間(2

位元組)最後一次寫入日期(2

位元組)此條目對應的開始簇號(

2位元組)

檔案大小(4

位元組)這裡我們只關心

2個東西:

第乙個:是檔名,它的構造如下檔名

8個位元組,副檔名

3位元組,比如:

zxx.bin

,其中的

zxx就是檔名,她沒有

8個位元組怎麼辦呢,都補空格,

bin就是副檔名

第二個:是此條目對應的開始簇號。其實我們得到名字的目的也就是要得到開始簇號。這個開始簇號有

2層含義:一層是在

fat中的偏移簇號,一層是在資料區的偏移簇號,他們都是相同的(注意是偏移哦)。他們雖然在不同的扇區,但是卻有著密切的聯絡,可能你會奇怪:不是說資料區裡面存的才是內容嗎?那我只需要資料區的偏移不就行了嗎?要

fat裡面的幹嘛?確實,第乙個內容你可以通過開始簇號找到,但是,不要忘記,我之前說過,乙個檔案在資料區不一定是連續存放的,那麼還有第二個簇號,第三個簇號。。。。你從**來呢?

這就是fat

的作用了,你可以通過它找到檔案的下個資料區,

fat對應此簇號的內容就是此檔案的下乙個簇號,直到某個簇號是大於等於

0xff8

為止(每乙個

fat條目是

12位的)。

所以我們的整個過程是這樣的:

第一步:首先往軟盤寫入乙個檔案,假設名字是

zxx.bin

第二步:讀取根目錄,乙個條目乙個條目的找,直到找到檔名為

zxx.bin

的條目,用這個條目的首位址

+26得到檔案對應的開始簇號b。

第三步:將資料區對應此簇號

b的乙個扇區內容讀入記憶體

第四步:讀取

fat的

b簇號內容,根據這個內容找到下乙個簇號,然後不斷迴圈第三步第四步,直到

b是大於等於

0xff8

為止。其實上面的只是乙個大致思想,在我們實際程式設計的時候還有好多細節要考慮哦

...

1.我們上面的簇號是不能直接使用的,詳見

p109

的int 13h

,了解他們的轉換。

2.注意資料區的偏移簇號為

2的簇其實是資料區的第乙個簇,所以變成的時候要注意減

2,這裡為什麼沒有0和

1呢,主要是他和

fat對應,

fat的第乙個條目和第二個條目是不使用的

等等....都記在了我亂七八糟的書上。。。加油看~

042 將資料匯入hive,將資料從hive匯出

一 將資料匯入hive 六種方式 1.從本地匯入 load data local inpath file path into table tbname 用於一般的場景。2.從hdfs上匯入資料 load data inpath hafd file path into table tbname 應用場...

將資料從文字匯入資料庫

很少用語句匯入資料,偶爾需要匯入也是用匯入匯出嚮導。今天碰到要匯入30多個表,匯入匯出嚮導的效率不符合我的辦事風格。於是找啊找,本以為bcp不僅可以實現資料匯出,同時也可以實現資料匯入,試了半天未成功 俺承認俺水平不夠 一條語句無法實現。需要建立表,並匯入資料,指令碼如下 create table ...

cobar指定從讀副本上讀資料

下午花了一點時間看了一下cobar的源 無奈cobar的文件寫的臺稀稀拉拉了,只能看源 了 在cobar服務端的schema中配置了兩個datasource,一主一從,在執行sql的時候可以通過cobar的hint語法,在查詢的時候指定是從叢庫上讀取資料 預設是走master庫的 詳細執行邏輯請檢視...