虛擬檔案系統觀後感

2021-05-26 09:15:29 字數 1775 閱讀 3864

。。。我靠,我記得小時候看完個電影什麼的老師就讓寫觀後感,我通常是玩一天,然後第二天到學校隨便抄個同學的。

虛擬檔案系統(vfs),是我參加工作後做的第乙個東西,當時剛從大學出來,而且c++是自學的,很分散,由此可知該系統被我做的是多麼失敗。

之後在遊戲的開發過程中,該系統是用不上的了,估計老大是實在看不下去了,就自己重新寫了個。但我也一直沒有時間看,這兩天反正離職在家,就看了下這個,學到不少。

首先是看**,不會看,就用比較笨的方法,就像是在大學剛學c的時候——抄**。區別是之前是紙和筆,現在是直接敲**了。大體知道下先從哪個檔案開始抄,就乙個接乙個檔案往下順吧。

乙個是發現有好多好用的系統函式或結構。

1. sscanf.這個函式其實在很早很早以前就知道的,早在還在看c++基礎教程什麼的時候。但之後就沒怎麼用過,一直用sprintf什麼的,看到這個函式的應用真是讓我慚愧到羞愧到尬尷。因為之前有什麼字串轉數字格式總是頭疼,有了這個就好說了

char szfloat[max_path] = "";

sprintf_s(szfloat,"%d.%d",99,88);

float fresult = 0.0f;

sscanf((const char*)szfloat,"%f",&fresult);

這樣組合乙個小數多容易啊哈哈哈,唉…

2. struct _stat. 獲取檔案的狀態資訊

struct _stat    s;

if (!_stat(filename, &s))

info.utime = (unsigned int)s.st_mtime;

3. memchr:finds characters in a buffer.

悲劇啊,這麼好用的函式居然不知道啊,之前都是悲催的自己寫..

4.還有一些多執行緒的函式,對多執行緒沒怎麼用過甚至就沒怎麼學過,所以看到這些函式還是懵一下的.

話說vfs的資料同步安全還是很重要的說,當時我自己寫vfs時那互斥什麼的用的。。現在想起來真是慚愧到羞愧到尬尷。

5.pathcanonicalize;規範化路徑字串。 好,又多記錄一條對路徑操作的函式了。

好吧,以上算是系統本來就有的一些零散的東西。下面還有些有用的東西:

1. smartptr:翻譯成中文應該是智慧型指標。。

都知道在乙個函式中new資料了,在離開函式之前就要del的,好吧,如果這是個smarptr,哈哈,不用手動del了,等執行到其析構函式就自動幫你del了。

2.引用計數。這個應該熟悉點,就是物件被別的地方引用了就增加一次計數,用完了再減一次計數,等到計數為0就delete this.計數中也有多執行緒資料同步的問題,所以用interlockedincrement這個函式。

3. 算出乙個字串的hash,可以搞些唯一id什麼的

for (int i = 0; pstring[i]; i++)

return (id ^ 0x12345678)

4.又得到一些好用的關於檔案或檔案路徑等操作的函式。

5.資源釋放3種型別,free,delete,release()

6.記憶體池。之前寫尋路時自己寫過乙個記憶體池,其實是直接複製的網上的乙個模板。這裡有個記憶體池模板,還有多執行緒的資料保護措施。。。

7.知道了幾種壓縮資料的方法或庫或演算法吧:lzma,ucl;之前我用的是zlib;我看還有一種預設的壓縮方法,我靠,這是什麼方法啊:

for (size_t i = 0; i < nsrclen; i++)

同樣,解壓:

for (size_t i = 0; i < nsrclen; i++)

虛擬檔案系統

虛擬檔案系統 virtual file system,簡稱 vfs 是 linux 核心中的乙個軟體層,用於給使用者空間的程式提供檔案系統介面 同時,它也提供了核心中的乙個 抽象功能,允許不同的檔案系統共存。系統中所有的檔案系統不但依賴 vfs 共存,而且也依靠 vfs 協同工作。為了能夠支援各種實...

檔案系統 虛擬檔案系統(二)

二 虛擬檔案系統 6 與程序相關的檔案結構 檔案最終要被程序訪問,乙個程序可以開啟多個檔案,而乙個檔案可以被多個程序同時訪問。這裡程序是通過檔案描述符來抽象所開啟的檔案的,用使用者開啟檔案表來描述和記錄程序開啟檔案描述符的使用情況。1 檔案物件 每個開啟的檔案都用乙個32位的數字來表示下乙個讀寫的位...

Linux虛擬檔案系統

這一周主要學了檔案系統的相關知識,通過學習基本上掌握了 linux 檔案系統的結構,檔案型別,以及讀取模式等等,也學會怎麼用命令簡單的建立乙個檔案系統。linux 的檔案系統主要有 ext2 ext3 ext4 在windows 下乙個分割槽會採用的一棵目錄樹來管理,而 linux 則只有一棵目錄樹...