磁盘内部构造详解
一般硬盤正面貼有產(chǎn)品標簽,主要包括廠家信息和產(chǎn)品信息,如商標、型號、序列號、生產(chǎn)日期、容量、參數(shù)和主從設置方法等。這些信息是正確使用硬盤的基本依據(jù),下面將逐步介紹它們的含義。
硬盤主要由盤體、控制電路板和接口部件等組成,如圖1-1所示。盤體是一個密封的腔體。硬盤的內(nèi)部結(jié)構(gòu)通常是指盤體的內(nèi)部結(jié)構(gòu);控制電路板上主要有硬盤BIOS、硬盤緩存(即CACHE)和主控制芯片等單元,如圖1-2所示;硬盤接口包括電源插座、數(shù)據(jù)接口和主、從跳線,如圖1-3所示。
圖1-1 硬盤的外觀
圖1-2 控制電路板
圖1-3 硬盤接口
電源插座連接電源,為硬盤工作提供電力保證。數(shù)據(jù)接口是硬盤與主板、內(nèi)存之間進行數(shù)據(jù)交換的通道,使用一根40針40線(早期)或40針80線(當前)的IDE接口電纜進行連接。新增加的40線是信號屏蔽線,用于屏蔽高速高頻數(shù)據(jù)傳輸過程中的串擾。中間的主、從盤跳線插座,用以設置主、從硬盤,即設置硬盤驅(qū)動器的訪問順序。其設置方法一般標注在盤體外的標簽上,也有一些標注在接口處,早期的硬盤還可能印在電路板上。
此外,在硬盤表面有一個透氣孔(見圖1-1),它的作用是使硬盤內(nèi)部氣壓與外部大氣壓保持一致。由于盤體是密封的,所以,這個透氣孔不直接和內(nèi)部相通,而是經(jīng)由一個高效過濾器和盤體相通,用以保證盤體內(nèi)部的潔凈無塵,使用中注意不要將它蓋住。
1.2 硬盤的內(nèi)部結(jié)構(gòu)
硬盤的內(nèi)部結(jié)構(gòu)通常專指盤體的內(nèi)部結(jié)構(gòu)。盤體是一個密封的腔體,里面密封著磁頭、盤片(磁片、碟片)等部件,如圖1-4所示。
圖1-4 硬盤內(nèi)部結(jié)構(gòu)
硬盤的盤片是硬質(zhì)磁性合金盤片,片厚一般在0.5mm左右,直徑主要有1.8in(1in=25.4mm)、2.5in、3.5in和5.25in 4種,其中2.5in和3.5in盤片應用最廣。盤片的轉(zhuǎn)速與盤片大小有關,考慮到慣性及盤片的穩(wěn)定性,盤片越大轉(zhuǎn)速越低。一般來講,2.5in硬盤的轉(zhuǎn)速在5 400 r/min~7 200 r/ min之間;3.5in硬盤的轉(zhuǎn)速在4 500 r/min~5 400 r/min之間;而5.25in硬盤轉(zhuǎn)速則在3 600 r/min~4 500 r/min之間。隨著技術的進步,現(xiàn)在2.5in硬盤的轉(zhuǎn)速最高已達15 000 r/min,3.5in硬盤的轉(zhuǎn)速最高已達12 000 r/min。
有的硬盤只裝一張盤片,有的硬盤則有多張盤片。這些盤片安裝在主軸電機的轉(zhuǎn)軸上,在主軸電機的帶動下高速旋轉(zhuǎn)。每張盤片的容量稱為單碟容量,而硬盤的容量就是所有盤片容量的總和。早期硬盤由于單碟容量低,所以,盤片較多,有的甚至多達10余片,現(xiàn)代硬盤的盤片一般只有少數(shù)幾片。一塊硬盤內(nèi)的所有盤片都是完全一樣的,不然控制部分就太復雜了。一個牌子的一個系列一般都用同一種盤片,使用不同數(shù)量的盤片,就出現(xiàn)了一個系列不同容量的硬盤產(chǎn)品。
盤體的完整構(gòu)造如圖1-5所示。
圖1-5 盤體的完整結(jié)構(gòu)
硬盤驅(qū)動器采用高精度、輕型磁頭驅(qū)動/定位系統(tǒng)。這種系統(tǒng)能使磁頭在盤面上快速移動,可在極短的時間內(nèi)精確地定位在由計算機指令指定的磁道上。目前,磁道密度已高達5 400Tpi(每英寸磁道數(shù))或更高;人們還在研究各種新方法,如在盤上擠壓(或刻蝕)圖形、凹槽和斑點等作為定位和跟蹤標記,以提高到和光盤相等的道密度,從而在保持磁盤機高速度、高位密度和高可靠性的優(yōu)勢下,大幅度提高存儲容量。
硬盤驅(qū)動器內(nèi)的電機都是無刷電機,在高速軸承支持下機械磨損很小,可以長時間連續(xù)工作。高速旋轉(zhuǎn)的盤體產(chǎn)生明顯的陀螺效應,所以,在硬盤工作時不宜搬動,否則,將增加軸承的工作負荷。為了高速存儲和讀取信息,硬盤驅(qū)動器的磁頭質(zhì)量小,慣性也小,所以,硬盤驅(qū)動器的尋道速度明顯快于軟驅(qū)和光驅(qū)。
硬盤驅(qū)動器磁頭與磁頭臂及伺服定位系統(tǒng)是一個整體。伺服定位系統(tǒng)由磁頭臂后的線圈和固定在底板上的電磁控制系統(tǒng)組成。由于定位系統(tǒng)限制,磁頭臂只能在盤片的內(nèi)外磁道之間移動。因此,不管開機還是關機,磁頭總在盤片上;所不同的是,關機時磁頭停留在盤片啟停區(qū),開機時磁頭“飛行”在磁盤片上方。
硬盤上的數(shù)據(jù)是如何組織與管理的呢?硬盤首先在邏輯上被劃分為磁道、柱面以及扇區(qū),其結(jié)構(gòu)關系如圖1-6所示。
圖1-6 磁頭、柱面和扇區(qū)
每個盤片的每個面都有一個讀寫磁頭,磁盤盤面區(qū)域的劃分如圖1-7所示。磁頭靠近主軸接觸的表面,即線速度最小的地方,是一個特殊的區(qū)域,它不存放任何數(shù)據(jù),稱為啟停區(qū)或著陸區(qū)(Landing Zone),啟停區(qū)外就是數(shù)據(jù)區(qū)。在最外圈,離主軸最遠的地方是“0”磁道,硬盤數(shù)據(jù)的存放就是從最外圈開始的。那么,磁頭是如何找到“0”磁道的位置的呢?從圖1-5中可以看到,有一個“0”磁道檢測器,由它來完成硬盤的初始定位。“0”磁道是如此的重要,以致很多硬盤僅僅因為“0”磁道損壞就報廢,這是非常可惜的。這種故障的修復技術在后面的章節(jié)中有詳細的介紹。
圖1-7 硬盤盤片的啟停區(qū)和數(shù)據(jù)區(qū)
早期的硬盤在每次關機之前需要運行一個被稱為Parking的程序,其作用是讓磁頭回到啟停區(qū)。現(xiàn)代硬盤在設計上已摒棄了這個雖不復雜卻很讓人不愉快的小缺陷。硬盤不工作時,磁頭停留在啟停區(qū),當需要從硬盤讀寫數(shù)據(jù)時,磁盤開始旋轉(zhuǎn)。旋轉(zhuǎn)速度達到額定的高速時,磁頭就會因盤片旋轉(zhuǎn)產(chǎn)生的氣流而抬起,這時磁頭才向盤片存放數(shù)據(jù)的區(qū)域移動。盤片旋轉(zhuǎn)產(chǎn)生的氣流相當強,足以使磁頭托起,并與盤面保持一個微小的距離。這個距離越小,磁頭讀寫數(shù)據(jù)的靈敏度就越高,當然對硬盤各部件的要求也越高。早期設計的磁盤驅(qū)動器使磁頭保持在盤面上方幾微米處飛行。稍后一些設計使磁頭在盤面上的飛行高度降到約0.1μm~0.5μm,現(xiàn)在的水平已經(jīng)達到0.005μm~0.01μm,這只是人類頭發(fā)直徑的千分之一。氣流既能使磁頭脫離開盤面,又能使它保持在離盤面足夠近的地方,非常緊密地跟隨著磁盤表面呈起伏運動,使磁頭飛行處于嚴格受控狀態(tài)。磁頭必須飛行在盤面上方,而不是接觸盤面,這種位置可避免擦傷磁性涂層,而更重要的是不讓磁性涂層損傷磁頭。但是,磁頭也不能離盤面太遠,否則,就不能使盤面達到足夠強的磁化,難以讀出盤上的磁化翻轉(zhuǎn)(磁極轉(zhuǎn)換形式,是磁盤上實際記錄數(shù)據(jù)的方式)。
硬盤驅(qū)動器磁頭的飛行懸浮高度低、速度快,一旦有小的塵埃進入硬盤密封腔內(nèi),或者一旦磁頭與盤體發(fā)生碰撞,就可能造成數(shù)據(jù)丟失,形成壞塊,甚至造成磁頭和盤體的損壞。所以,硬盤系統(tǒng)的密封一定要可靠,在非專業(yè)條件下絕對不能開啟硬盤密封腔,否則,灰塵進入后會加速硬盤的損壞。另外,硬盤驅(qū)動器磁頭的尋道伺服電機多采用音圈式旋轉(zhuǎn)或直線運動步進電機,在伺服跟蹤的調(diào)節(jié)下精確地跟蹤盤片的磁道,所以,硬盤工作時不要有沖擊碰撞,搬動時要小心輕放。
這種硬盤就是采用溫徹斯特(Winchester)技術制造的硬盤,所以也被稱為溫盤。其結(jié)構(gòu)特點如下。
①磁頭、盤片及運動機構(gòu)密封在盤體內(nèi)。
②磁頭在啟動、停止時與盤片接觸,在工作時因盤片高速旋轉(zhuǎn),帶動磁頭“懸浮”在盤片上面呈飛行狀態(tài)(空氣動力學原理),“懸浮”的高度約為0.1μm~0.3μm,這個高度非常小,圖1-8標出了這個高度與頭發(fā)、煙塵和手指印的大小比較關系,從這里可以直觀地“看”出這個高度有多“高”。
圖1-8 盤片結(jié)構(gòu)及磁頭高度示意圖
③磁頭工作時與盤片不直接接觸,所以,磁頭的加載較小,磁頭可以做得很精致,檢測磁道的能力很強,可大大提高位密度。
④磁盤表面非常平整光滑,可以做鏡面使用。
下面對“盤面”、“磁道”、“柱面”和“扇區(qū)”的含義逐一進行介紹。
盤面號
硬盤的盤片一般用鋁合金材料做基片,高速硬盤也可能用玻璃做基片。玻璃基片更容易達到所需的平面度和光潔度,且有很高的硬度。磁頭傳動裝置是使磁頭部件作徑向移動的部件,通常有兩種類型的傳動裝置。一種是齒條傳動的步進電機傳動裝置;另一種是音圈電機傳動裝置。前者是固定推算的傳動定位器,而后者則采用伺服反饋返回到正確的位置上。磁頭傳動裝置以很小的等距離使磁頭部件做徑向移動,用以變換磁道。
硬盤的每一個盤片都有兩個盤面(Side),即上、下盤面,一般每個盤面都會利用,都可以存儲數(shù)據(jù),成為有效盤片,也有極個別的硬盤盤面數(shù)為單數(shù)。每一個這樣的有效盤面都有一個盤面號,按順序從上至下從“0”開始依次編號。在硬盤系統(tǒng)中,盤面號又叫磁頭號,因為每一個有效盤面都有一個對應的讀寫磁頭。硬盤的盤片組在2~14片不等,通常有2~3個盤片,故盤面號(磁頭號)為0~3或0~5。
磁道
磁盤在格式化時被劃分成許多同心圓,這些同心圓軌跡叫做磁道(Track)。磁道從外向內(nèi)從0開始順序編號。硬盤的每一個盤面有300~1 024個磁道,新式大容量硬盤每面的磁道數(shù)更多。信息以脈沖串的形式記錄在這些軌跡中,這些同心圓不是連續(xù)記錄數(shù)據(jù),而是被劃分成一段段的圓弧,這些圓弧的角速度一樣。由于徑向長度不一樣,所以,線速度也不一樣,外圈的線速度較內(nèi)圈的線速度大,即同樣的轉(zhuǎn)速下,外圈在同樣時間段里,劃過的圓弧長度要比內(nèi)圈劃過的圓弧長度大。每段圓弧叫做一個扇區(qū),扇區(qū)從“1”開始編號,每個扇區(qū)中的數(shù)據(jù)作為一個單元同時讀出或?qū)懭搿R粋€標準的3.5in硬盤盤面通常有幾百到幾千條磁道。磁道是“看”不見的,只是盤面上以特殊形式磁化了的一些磁化區(qū),在磁盤格式化時就已規(guī)劃完畢。
柱面
所有盤面上的同一磁道構(gòu)成一個圓柱,通常稱做柱面(Cylinder),每個圓柱上的磁頭由上而下從“0”開始編號。數(shù)據(jù)的讀/寫按柱面進行,即磁頭讀/寫數(shù)據(jù)時首先在同一柱面內(nèi)從“0”磁頭開始進行操作,依次向下在同一柱面的不同盤面即磁頭上進行操作,只在同一柱面所有的磁頭全部讀/寫完畢后磁頭才轉(zhuǎn)移到下一柱面,因為選取磁頭只需通過電子切換即可,而選取柱面則必須通過機械切換。電子切換相當快,比在機械上磁頭向鄰近磁道移動快得多,所以,數(shù)據(jù)的讀/寫按柱面進行,而不按盤面進行。也就是說,一個磁道寫滿數(shù)據(jù)后,就在同一柱面的下一個盤面來寫,一個柱面寫滿后,才移到下一個扇區(qū)開始寫數(shù)據(jù)。讀數(shù)據(jù)也按照這種方式進行,這樣就提高了硬盤的讀/寫效率。
一塊硬盤驅(qū)動器的圓柱數(shù)(或每個盤面的磁道數(shù))既取決于每條磁道的寬窄(同樣,也與磁頭的大小有關),也取決于定位機構(gòu)所決定的磁道間步距的大小。更深層的內(nèi)容請參考其他書籍,限于篇幅,這里不再深入介紹。
扇區(qū)
操作系統(tǒng)以扇區(qū)(Sector)形式將信息存儲在硬盤上,每個扇區(qū)包括512個字節(jié)的數(shù)據(jù)和一些其他信息。一個扇區(qū)有兩個主要部分:存儲數(shù)據(jù)地點的標識符和存儲數(shù)據(jù)的數(shù)據(jù)段,如圖1-9所示。
圖1-9 硬盤扇區(qū)的構(gòu)成
標識符就是扇區(qū)頭標,包括組成扇區(qū)三維地址的三個數(shù)字:扇區(qū)所在的磁頭(或盤面)、磁道(或柱面號)以及扇區(qū)在磁道上的位置即扇區(qū)號。頭標中還包括一個字段,其中有顯示扇區(qū)是否能可靠存儲數(shù)據(jù),或者是否已發(fā)現(xiàn)某個故障因而不宜使用的標記。有些硬盤控制器在扇區(qū)頭標中還記錄有指示字,可在原扇區(qū)出錯時指引磁盤轉(zhuǎn)到替換扇區(qū)或磁道。最后,扇區(qū)頭標以循環(huán)冗余校驗(CRC)值作為結(jié)束,以供控制器檢驗扇區(qū)頭標的讀出情況,確保準確無誤。
扇區(qū)的第二個主要部分是存儲數(shù)據(jù)的數(shù)據(jù)段,可分為數(shù)據(jù)和保護數(shù)據(jù)的糾錯碼(ECC)。在初始準備期間,計算機用512個虛擬信息字節(jié)(實際數(shù)據(jù)的存放地)和與這些虛擬信息字節(jié)相應的ECC數(shù)字填入這個部分。
扇區(qū)頭標包含一個可識別磁道上該扇區(qū)的扇區(qū)號。有趣的是,這些扇區(qū)號物理上并不連續(xù)編號,它們不必用任何特定的順序指定。扇區(qū)頭標的設計允許扇區(qū)號可以從1到某個最大值,某些情況下可達255。磁盤控制器并不關心上述范圍中什么編號安排在哪一個扇區(qū)頭標中。在很特殊的情況下,扇區(qū)還可以共用相同的編號。磁盤控制器甚至根本就不管數(shù)據(jù)區(qū)有多大,只管讀出它所找到的數(shù)據(jù),或者寫入要求它寫的數(shù)據(jù)。
給扇區(qū)編號的最簡單方法是l,2,3,4,5,6等順序編號。如果扇區(qū)按順序繞著磁道依次編號,那么,控制器在處理一個扇區(qū)的數(shù)據(jù)期間,磁盤旋轉(zhuǎn)太遠,超過扇區(qū)間的間隔(這個間隔很小),控制器要讀出或?qū)懭氲南乱簧葏^(qū)已經(jīng)通過磁頭,也許是相當大的一段距離。在這種情況下,磁盤控制器就只能等待磁盤再次旋轉(zhuǎn)幾乎一周,才能使得需要的扇區(qū)到達磁頭下面。
顯然,要解決這個問題,靠加大扇區(qū)間的間隔是不現(xiàn)實的,那會浪費許多磁盤空間。許多年前,IBM的一位杰出工程師想出了一個絕妙的辦法,即對扇區(qū)不使用順序編號,而是使用一個交叉因子(interleave)進行編號。交叉因子用比值的方法來表示,如3﹕1表示磁道上的第1個扇區(qū)為1號扇區(qū),跳過兩個扇區(qū)即第4個扇區(qū)為2號扇區(qū),這個過程持續(xù)下去直到給每個物理扇區(qū)編上邏輯號為止。例如,每磁道有17個扇區(qū)的磁盤按2﹕1的交叉因子編號就是:l,10,2,11,3,12,4,13,5,14,6,15,7,16,8,17,9,而按3﹕1的交叉因子編號就是:l,7,13,2,8,14,3,9,15,4,10,16,5,11,17,6,12。當設置1﹕l的交叉因子時,如果硬盤控制器處理信息足夠快,那么,讀出磁道上的全部扇區(qū)只需要旋轉(zhuǎn)一周;但如果硬盤控制器的后處理動作沒有這么快,磁盤所轉(zhuǎn)的圈數(shù)就等于一個磁道上的扇區(qū)數(shù),才能讀出每個磁道上的全部數(shù)據(jù)。將交叉因子設定為2﹕1時,磁頭要讀出磁道上的全部數(shù)據(jù),磁盤只需轉(zhuǎn)兩周。如果2﹕1的交叉因子仍不夠慢,磁盤旋轉(zhuǎn)的周數(shù)約為磁道的扇區(qū)數(shù),這時,可將交叉因子調(diào)整為3﹕1,如圖1-10所示。
圖1-10 不同交叉因子的效果示例
圖1-10所示的是典型的MFM(Modified Frequency Modulation,改進型調(diào)頻制編碼)硬盤,每磁道有17個扇區(qū),畫出了用三種不同的扇區(qū)交叉因子編號的情況。最外圈的磁道(0號柱面)上的扇區(qū)用簡單的順序連續(xù)編號,相當于扇區(qū)交叉因子是1﹕1。1號磁道(柱面)的扇區(qū)按2﹕1的交叉因子編號,而2號磁道按3﹕1的扇區(qū)交叉因子編號。
早期的硬盤管理工作中,設置交叉因子需要用戶自己完成。用BIOS中的低級格式化程序?qū)τ脖P進行低級格式化時,就需要指定交叉因子,有時還需要設置幾種不同的值來比較其性能,而后確定一個比較好的值,以期硬盤的性能較好。現(xiàn)在的硬盤BIOS已經(jīng)自己解決這個問題,所以,一般低級格式化程序不再提供這一選項設置。
系統(tǒng)將文件存儲到磁盤上時,按柱面、磁頭、扇區(qū)的方式進行,即最先是第1磁道的第一磁頭下(也就是第1盤面的第一磁道)的所有扇區(qū),然后,是同一柱面的下一磁頭,……,一個柱面存儲滿后就推進到下一個柱面,直到把文件內(nèi)容全部寫入磁盤。系統(tǒng)也以相同的順序讀出數(shù)據(jù)。讀出數(shù)據(jù)時通過告訴磁盤控制器要讀出扇區(qū)所在的柱面號、磁頭號和扇區(qū)號(物理地址的三個組成部分)進行。磁盤控制器則直接使磁頭部件步進到相應的柱面,選通相應的磁頭,等待要求的扇區(qū)移動到磁頭下。在扇區(qū)到來時,磁盤控制器讀出每個扇區(qū)的頭標,把這些頭標中的地址信息與期待檢出的磁頭和柱面號做比較(即尋道),然后,尋找要求的扇區(qū)號。待磁盤控制器找到該扇區(qū)頭標時,根據(jù)其任務是寫扇區(qū)還是讀扇區(qū),來決定是轉(zhuǎn)換寫電路,還是讀出數(shù)據(jù)和尾部記錄。找到扇區(qū)后,磁盤控制器必須在繼續(xù)尋找下一個扇區(qū)之前對該扇區(qū)的信息進行后處理。如果是讀數(shù)據(jù),控制器計算此數(shù)據(jù)的ECC碼,然后,把ECC碼與已記錄的ECC碼相比較。如果是寫數(shù)據(jù),控制器計算出此數(shù)據(jù)的ECC碼,與數(shù)據(jù)一起存儲。在控制器對此扇區(qū)中的數(shù)據(jù)進行必要處理期間,磁盤繼續(xù)旋轉(zhuǎn)。由于對信息的后處理需要耗費一定的時間,在這段時間內(nèi),磁盤已轉(zhuǎn)了相當?shù)慕嵌取?br /> 交叉因子的確定是一個系統(tǒng)級的問題。一個特定硬盤驅(qū)動器的交叉因子取決于:磁盤控制器的速度、主板的時鐘速度、與控制器相連的輸出總線的操作速度等。如果磁盤的交叉因子值太高,就需多花一些時間等待數(shù)據(jù)在磁盤上存入和讀出。如果交叉因子值太低,就會大大降低磁盤性能。
前面已經(jīng)述及,系統(tǒng)在磁盤上寫入信息時,寫滿一個磁道后轉(zhuǎn)到同一柱面的下一個磁頭,當柱面寫滿時,再轉(zhuǎn)向下一柱面。從同一柱面的一個磁道到另一個磁道,從一個柱面轉(zhuǎn)到下一個柱面,每一個轉(zhuǎn)換都需要時間,在此期間磁盤始終保持旋轉(zhuǎn),這就會帶來一個問題:假定系統(tǒng)剛剛結(jié)束對一個磁道前一個扇區(qū)的寫入,并且已經(jīng)設置了最佳交叉因子比值,現(xiàn)在準備在下一磁道的第一扇區(qū)寫入,這時,必須等到磁頭轉(zhuǎn)換好,讓磁頭部件重新準備定位在下一道上。如果這種操作占用的時間超過了一點,盡管是交叉存取,磁頭仍會延遲到達。這個問題的解決辦法是以原先磁道所在位置為基準,把新的磁道上全部扇區(qū)號移動約一個或幾個扇區(qū)位置,這就是磁頭扭斜。磁頭扭斜可以理解為柱面與柱面之間的交叉因子,已由生產(chǎn)廠設置好,用戶一般不用去改變它。磁頭扭斜的更改比較困難,但是,它們只在文件很長、超過磁道結(jié)尾進行讀出和寫入時才發(fā)揮作用,所以,扭斜設置不正確所帶來的時間損失比采用不正確的扇區(qū)交叉因子值帶來的損失要小得多。交叉因子和磁頭扭斜可用專用工具軟件來測試和更改。更具體的內(nèi)容這里就不再詳述,畢竟現(xiàn)在很多用戶都沒有見過這些參數(shù)。
扇區(qū)號存儲在扇區(qū)頭標中,扇區(qū)交叉因子和磁頭扭斜的信息也存放在這里。最初,硬盤低級格式化程序只是行使有關磁盤控制器的專門職能來完成設置任務。由于這個過程可能破壞低級格式化的磁道上的全部數(shù)據(jù),也極少采用。
扇區(qū)交叉因子由寫入到扇區(qū)頭標中的數(shù)字設定,所以,每個磁道可以有自己的交叉因子。在大多數(shù)驅(qū)動器中,所有磁道都有相同的交叉因子。但有時因為操作上的原因,也可能導致各磁道有不同的扇區(qū)交叉因子。如在交叉因子重置程序工作時,由于斷電或人為中斷,就會造成一些磁道的交叉因子發(fā)生了改變,而另一些磁道的交叉因子沒有改變。這種不一致性對計算機不會產(chǎn)生不利影響,只是有最佳交叉因子的磁道要比其他磁道的工作速度更快
總結(jié)
- 上一篇: Mvp(RxJava+Retrofit+
- 下一篇: LPNMA