spring源码:资源管理器Resource
//by yan 20191128
Spring為了處理不同的資源類型抽象了一個接口出來,這個接口是Resource。
包路徑:org.springframework.core.io
類圖:
VfsResource
Spring里VfsResource 使用了org.jboss.vfs.VFS。
官網(wǎng)地址:https://developer.jboss.org/wiki/vfs3userguide
相關(guān)知識
VFS是什么?
Linux是一個非常優(yōu)秀的操作系統(tǒng),它是免費(fèi)的,而且很穩(wěn)定。 Linux所支持的文件系統(tǒng)高達(dá)十幾個,除了為它量身打造的Ext2之外,它還支持了Minix,FAT,VFAT,NFS,NTFS…等等。
所謂VFS就是Virtual File System虛擬文件系統(tǒng),也稱為虛擬文件系統(tǒng)開關(guān)(Virtual Filesystem Switch).
這是Linux文件系統(tǒng)對外的接口。任何要使用文件系統(tǒng)的程序都必須經(jīng)由這層接口來使用它。
VFS是一個異構(gòu)文件系統(tǒng)之上的軟件粘合層(注:有時也把VFS稱為可堆疊的文件系統(tǒng)(Stackable Filesystem),因?yàn)閂FS可以無縫地使用多個不同類型的文件系統(tǒng),就像把多個文件系統(tǒng)堆疊在一起一樣,故而得名)。通過VFS,可以為訪問文件系統(tǒng)的系統(tǒng)調(diào)用提供一個統(tǒng)一的抽象接口。
VFS最早由Sun公司提出以實(shí)現(xiàn)NFS(Network FileSystem,網(wǎng)絡(luò)文件系統(tǒng))。但是現(xiàn)在很多Unix系統(tǒng)都采用了VFS(包括Linux、FreeBSD、Solaris等)。
Linux下的VFS:
VFS的作用就是采用標(biāo)準(zhǔn)的Unix系統(tǒng)調(diào)用讀寫位于不同物理介質(zhì)上的不同文件系統(tǒng)。VFS是一個可以讓open()、read()、write()等系統(tǒng)調(diào)用不用關(guān)心底層的存儲介質(zhì)和文件系統(tǒng)類型就可以工作的粘合層。在古老的DOS操作系統(tǒng)中,要訪問本地文件系統(tǒng)之外的文件系統(tǒng)需要使用特殊的工具才能進(jìn)行。而在Linux下,通過VFS,一個抽象的通用訪問接口屏蔽了底層文件系統(tǒng)和物理介質(zhì)的差異性。
每一種類型的文件系統(tǒng)代碼都隱藏了實(shí)現(xiàn)的細(xì)節(jié)。因此,對于VFS層和內(nèi)核的其它部分而言,每一種類型的文件系統(tǒng)看起來都是一樣的。
在Linux中,VFS采用的是面向?qū)ο蟮木幊谭椒ā?/p>
URI & URL
一、URI
<1>什么是URI
URI,通一資源標(biāo)志符(Uniform Resource Identifier, URI),表示的是web上每一種可用的資源,如 HTML文檔、圖像、視頻片段、程序等都由一個URI進(jìn)行定位的。
<2>URI的結(jié)構(gòu)組成
URI通常由三部分組成:
①訪問資源的命名機(jī)制;
②存放資源的主機(jī)名;
③資源自身的名稱。
<3>URI舉例
如:https://blog.csdn.net/qq_32595453/article/details/79516787
我們可以這樣解釋它:
①這是一個可以通過https協(xié)議訪問的資源,
②位于主機(jī) blog.csdn.net上,
③通過“/qq_32595453/article/details/79516787”可以對該資源進(jìn)行唯一標(biāo)識(注意,這個不一定是完整的路徑)
注意:以上三點(diǎn)只不過是對實(shí)例的解釋,以上三點(diǎn)并不是URI的必要條件,URI只是一種概念,怎樣實(shí)現(xiàn)無所謂,只要它唯一標(biāo)識一個資源就可以了。
二、URL
URL是URI的一個子集。它是Uniform Resource Locator的縮寫,譯為“統(tǒng)一資源定位 符”。
通俗地說,URL是Internet上描述信息資源的字符串,主要用在各種WWW客戶程序和服務(wù)器程序上。
采用URL可以用一種統(tǒng)一的格式來描述各種信息資源,包括文件、服務(wù)器的地址和目錄等。URL是URI概念的一種實(shí)現(xiàn)方式。
URL的一般格式為(帶方括號[]的為可選項(xiàng)):
protocol 😕/ hostname[:port] / path / [;parameters][?query]#fragment
URL的格式由三部分組成:
①第一部分是協(xié)議(或稱為服務(wù)方式)。
②第二部分是存有該資源的主機(jī)IP地址(有時也包括端口號)。
③第三部分是主機(jī)資源的具體地址,如目錄和文件名等。
第一部分和第二部分用“😕/”符號隔開,
第二部分和第三部分用“/”符號隔開。
第一部分和第二部分是不可缺少的,第三部分有時可以省略。
三、URI和URL之間的區(qū)別
從上面的例子來看,你可能覺得URI和URL可能是相同的概念,其實(shí)并不是,URI和URL都定義了資源是什么,但URL還定義了該如何訪問資源。URL是一種具體的URI,它是URI的一個子集,它不僅唯一標(biāo)識資源,而且還提供了定位該資源的信息。URI 是一種語義上的抽象概念,可以是絕對的,也可以是相對的,而URL則必須提供足夠的信息來定位,是絕對的。
總結(jié)
以上是生活随笔為你收集整理的spring源码:资源管理器Resource的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows中怎么将swf格式转换为M
- 下一篇: @javax.inject.Inject