防止我以後忘記,我還是記一下吧
~雖然都是在別人的基礎上隨便重複寫一下。
然後呢,這裡先跟著書上學軟盤的,等我以後看完了全部去了解下光碟的做法。終於看完第四章了。。。。。。
一:軟盤入門知識
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庫的 詳細執行邏輯請檢視...