網(wǎng)絡(luò)_性能調(diào)優(yōu)_第1頁
網(wǎng)絡(luò)_性能調(diào)優(yōu)_第2頁
網(wǎng)絡(luò)_性能調(diào)優(yōu)_第3頁
網(wǎng)絡(luò)_性能調(diào)優(yōu)_第4頁
網(wǎng)絡(luò)_性能調(diào)優(yōu)_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組接口。在設(shè)計(jì)模式中,Socket其實(shí)就是 一個(gè)門面模式,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面,對(duì)用戶來說,一組簡單的接口就是全部,讓 Socket去組織數(shù)據(jù),以符合指定的協(xié)議。一個(gè)生活中的場景。你要打電話給一個(gè)朋友,先撥號(hào),朋友聽到電話鈴聲后提起電話,這時(shí)你和你的朋友就 建立起了連接,就可以講話了。等交流結(jié)束,掛斷電話結(jié)束此次交談。 先從服務(wù)器端說起。1服務(wù)器端先初始化Socket,然后與端口綁定(bind),對(duì)端口進(jìn)行監(jiān)聽(listen),調(diào) 用accept阻塞,等待客戶端連接。2在這時(shí)如果有個(gè)客戶端初始

2、化一個(gè)Socket,然后連接服務(wù)器(connect),3如果 連接成功,這時(shí)客戶端與服務(wù)器端的連接就建立了。客戶端發(fā)送數(shù)據(jù)請(qǐng)求,服務(wù)器端接收請(qǐng)求并處理請(qǐng)求,然后連接成功,這時(shí)客戶端與服務(wù)器端的連接就建立了。客戶端發(fā)送數(shù)據(jù)請(qǐng)求,服務(wù)器端接收請(qǐng)求并處理請(qǐng)求,然后arc=send(fd,szText,cnt,0);把回應(yīng)數(shù)據(jù)發(fā)送給客戶端,客戶端讀取數(shù)據(jù),最后關(guān)閉連接,一次交互結(jié)束。在客戶端輸入服務(wù)器端的IP地址和發(fā)送的數(shù)據(jù),然后按發(fā)送按鈕,服務(wù)器端接收到數(shù)據(jù),然后回應(yīng)客戶端。 客戶端讀取回應(yīng)的數(shù)據(jù),顯示在界面上。在服務(wù)器端,主要是啟動(dòng)Socket和監(jiān)聽線程。服務(wù)器端一直在監(jiān)聽是否有客戶端連接,如有連

3、接,處理客戶端的請(qǐng)求,給出回應(yīng),然后繼續(xù)監(jiān)聽。客戶端:蘋果iso開發(fā): socket tcp/ip 的通訊使用方法如下: 1、創(chuàng)建工程。 2、把AsyncSocket添加到項(xiàng)目中。 3、添加CFNetwork.framework到工程中。 4、實(shí)現(xiàn)測試類: #import #import AsyncSocket.h interface iphone_socketViewController : UIViewController AsyncSocket *asyncSocket; endIOS socket基于tcp/udp的通信 分類: ios開發(fā) 2013-12-03 15:10 1399人

4、閱讀 評(píng)論(0) 收藏 舉報(bào) ios通信socket蘋果網(wǎng)絡(luò)上已經(jīng)有編寫好的開源類庫GCDAsyncSocket 和GCDAsyncUdpSocket這是GCD版的比AsyncSocket 和AsyncUdpSocket估計(jì)要好用點(diǎn) 用法也很簡單,跟http很類似只要指定服務(wù)器的ip和端口 然后再實(shí)現(xiàn)各種回調(diào)就行,原生態(tài)實(shí)現(xiàn)正在摸索。socket 默認(rèn)情況下就是采用TCP協(xié)議,創(chuàng)建之后通信雙方的socket會(huì)一直保持連接,除非手動(dòng)close或因?yàn)榫W(wǎng)絡(luò)原因close,所以,此種狀況對(duì)服務(wù)器而 言是有一定資源消耗的,這種模式只適應(yīng)與對(duì)服務(wù)器小規(guī)模的訪問,特別是對(duì)于實(shí)時(shí)性很高的應(yīng)用,如視頻直播、呼叫

5、系統(tǒng)等,而http一般都是短連接的,一次 請(qǐng)求完之后客戶端便會(huì)于服務(wù)端端開連接http是凌駕于socket之上的高級(jí)協(xié)議,而socket是比較底層的通訊方式,只是建立了一個(gè)連接通道,具體上面?zhèn)鬏斒裁礃拥臄?shù)據(jù),按照什么格式傳輸,需要你自己定義,所以這就需要重新編寫定義服務(wù)端與客戶端的所應(yīng)遵循的規(guī)定,而http已經(jīng)被前人們定義使用過了先去github的網(wǎng)站下載最新的包,然后先看看介紹。寫的比較詳細(xì)了網(wǎng)上很多都是老版本的帖子。官方已經(jīng)推出了GCDAsyncSocket來代替以前老的AsyncSocket。我的項(xiàng)目是no-ARC的,這個(gè)框架只有arc的版本。所以引入GCDAsyncSocket的.h和

6、.m文件后,修改xcode中項(xiàng)目的屬性。1)targets中“buildsettings”中找到CompilerforccObjectivec的選項(xiàng)。改為AppleLLVMcompiler3.0只要是3.0或以上就可以2)在“buildphases”中“compilesources”中找到GCDAsyncSocket.m,增加參數(shù)-fobj-arc3)引入GCDAsyncSocket所需要的框架,CFNetwork和security這兩個(gè)通訊http,TCP/IP與socket之間的區(qū)別1、TCP/IP連接 手機(jī)能夠使用聯(lián)網(wǎng)功能是因?yàn)槭謾C(jī)底層實(shí)現(xiàn)了TCP/IP協(xié)議,可以使手機(jī)終端通過無線網(wǎng)絡(luò)建

7、立TCP連接。TCP協(xié)議可以對(duì)上層網(wǎng)絡(luò)提供接口,使上層網(wǎng)絡(luò)數(shù)據(jù)的傳輸建立在“無差別”的網(wǎng)絡(luò)之上。建立起一個(gè)TCP連接需要經(jīng)過“三次握手”:第一次握手:客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn);第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=j+1),同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);第三次握手:客戶端收到服務(wù)器的SYNACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成三次握手。握手過程中傳送的包里不包含數(shù)據(jù)

8、,三次握手完畢后,客戶端與服務(wù)器才正式開始傳送數(shù)據(jù)。理想狀態(tài)下,TCP連接一旦建立,在通信雙方中的任何一方主動(dòng)關(guān)閉連接之前,TCP連接都將被一直保持下去。斷開連接時(shí)服務(wù)器和客戶端均可以主動(dòng)發(fā)起斷開TCP連接的請(qǐng)求,斷開過程需要經(jīng)過“四次握手”(過程就不細(xì)寫了,就是服務(wù)器和客戶端交互,最終確定斷開).2、HTTP連接HTTP協(xié)議即超文本傳送協(xié)議(HypertextTransferProtocol),是Web聯(lián)網(wǎng)的基礎(chǔ),也是手機(jī)聯(lián)網(wǎng)常用的協(xié)議之一,HTTP協(xié)議是建立在TCP協(xié)議之上的一種應(yīng)用。HTTP連接最顯著的特點(diǎn)是客戶端發(fā)送的每次請(qǐng)求都需要服務(wù)器回送響應(yīng),在請(qǐng)求結(jié)束后,會(huì)主動(dòng)釋放連接。從建立連

9、接到關(guān)閉連接的過程稱為“一次連接”。3.1套接字(socket)概念套接字(socket)是通信的基石,是支持TCP/IP協(xié)議的網(wǎng)絡(luò)通信的基本操作單元。它是網(wǎng)絡(luò)通信過程中端點(diǎn)的抽象表示,包含進(jìn)行網(wǎng)絡(luò)通信必須的五種信息:連接使用的協(xié)議,本地主機(jī)的IP地址,本地進(jìn)程的協(xié)議端口,遠(yuǎn)地主機(jī)的IP地址,遠(yuǎn)地進(jìn)程的協(xié)議端口。3.2建立socket連接建立Socket連接至少需要一對(duì)套接字,其中一個(gè)運(yùn)行于客戶端,稱為ClientSocket,另一個(gè)運(yùn)行于服務(wù)器端,稱為ServerSocket。套接字之間的連接過程分為三個(gè)步驟:服務(wù)器監(jiān)聽,客戶端請(qǐng)求,連接確認(rèn)。服務(wù)器監(jiān)聽:服務(wù)器端套接字并不定位具體的客戶端套

10、接字,而是處于等待連接的狀態(tài),實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)狀態(tài),等待客戶端的連接請(qǐng)求。客戶端請(qǐng)求:指客戶端的套接字提出連接請(qǐng)求,要連接的目標(biāo)是服務(wù)器端的套接字。為此,客戶端的套接字必須首先描述它要連接的服務(wù)器的套接字,指出服務(wù)器端套接字的地址和端口號(hào),然后就向服務(wù)器端套接字提出連接請(qǐng)求。連接確認(rèn):當(dāng)服務(wù)器端套接字監(jiān)聽到或者說接收到客戶端套接字的連接請(qǐng)求時(shí),就響應(yīng)客戶端套接字的請(qǐng)求,建立一個(gè)新的線程,把服務(wù)器端套接字的描述發(fā)給客戶端,一旦客戶端確認(rèn)了此描述,雙方就正式建立連接。而服務(wù)器端套接字繼續(xù)處于監(jiān)聽狀態(tài),繼續(xù)接收其他客戶端套接字的連接請(qǐng)求。4、SOCKET連接與TCP/IP連接創(chuàng)建Socket連接時(shí),可以

11、指定使用的傳輸層協(xié)議,Socket可以支持不同的傳輸層協(xié)議(TCP或UDP),當(dāng)使用TCP協(xié)議進(jìn)行連接時(shí),該Socket連接就是一個(gè)TCP連接。5、Socket連接與HTTP連接很多情況下,需要服務(wù)器端主動(dòng)向客戶端推送數(shù)據(jù),保持客戶端與服務(wù)器數(shù)據(jù)的實(shí)時(shí)與同步。此時(shí)若雙方建立的是Socket連接,服務(wù)器就可以直接將數(shù)據(jù)傳送給客戶端;若雙方建立的是HTTP連接,則服務(wù)器需要等到客戶端發(fā)送一次請(qǐng)求后才能將數(shù)據(jù)傳回給客戶端,因此,客戶端定時(shí)向服務(wù)器端發(fā)送連接請(qǐng)求,不僅可以保持在線,同時(shí)也是在“詢問”服務(wù)器是否有新的數(shù)據(jù),如果有就將數(shù)據(jù)傳給客戶端。http協(xié)議是應(yīng)用層的協(xié)義一個(gè)是發(fā)動(dòng)機(jī)(Socket),

12、提供了網(wǎng)絡(luò)通信的能力一個(gè)是轎車(Http),提供了具體的方式兩個(gè)計(jì)算機(jī)之間的交流無非是兩個(gè)端口之間的數(shù)據(jù)通信,具體的數(shù)據(jù)會(huì)以什么樣的形式展現(xiàn)是以不同的應(yīng)用層協(xié)議來定義的如HTTPFTP.socket是對(duì)端口通信開發(fā)的工具,它要更底層一些 .get和post這是http協(xié)議的兩種方法,另外還有head,delete等這兩種方法有本質(zhì)的區(qū)別,get只有一個(gè)流,參數(shù)附加在url后,大小個(gè)數(shù)有嚴(yán)格限制且只能是字符串。post的參數(shù)是通過另外的流傳遞的,不通過url,所以可以很大,也可以傳遞二進(jìn)制數(shù)據(jù),如文件的上傳。在servlet開發(fā)中,TCP/IP、Http、Socket的區(qū)別通過初步的了解,我知道

13、IP協(xié)議對(duì)應(yīng)于網(wǎng)絡(luò)層,TCP協(xié)議對(duì)應(yīng)于傳輸層,而HTTP協(xié)議對(duì)應(yīng)于應(yīng)用層,”而我們平時(shí)說的最多的socket是什么呢,實(shí)際上socket是對(duì)TCP/IP協(xié)議的封裝,Socket本身并不是協(xié)議,而是一個(gè)調(diào)用接口(API)。通過Socket,我們才能使用TCP/IP協(xié)議。實(shí)際上,Socket跟TCP/IP協(xié)議沒有必然的聯(lián)系。Socket編程接口在設(shè)計(jì)的時(shí)候,就希望也能適應(yīng)其他的網(wǎng)絡(luò)協(xié)議。所以說,Socket的出現(xiàn)只是使得程序員更方便地使用TCP/IP協(xié)議棧而已,是對(duì)TCP/IP協(xié)議的抽象,從而形成了我們知道的一些最基本的函數(shù)接口,比如create、listen、connect、accept、sen

14、d、read和write等等。網(wǎng)絡(luò)有一段關(guān)于socket和TCP/IP協(xié)議關(guān)系的說法比較容易理解:“TCP/IP只是一個(gè)協(xié)議棧,就像操作系統(tǒng)的運(yùn)行機(jī)制一樣,必須要具體實(shí)現(xiàn),同時(shí)還要提供對(duì)外的操作接口。CSDN上有個(gè)比較形象的描述:HTTP是轎車,提供了封裝或者顯示數(shù)據(jù)的具體形式;Socket是發(fā)動(dòng)機(jī),提供了網(wǎng)絡(luò)通信的能力。實(shí)際上,傳輸層的TCP是基于網(wǎng)絡(luò)層的IP協(xié)議的,而應(yīng)用層的HTTP協(xié)議又是基于傳輸層的TCP協(xié)議的,而Socket本身不算是協(xié)議,就像上面所說,它只是提供了一個(gè)針對(duì)TCP或套接字之間的連接過程分為三個(gè)步驟:服務(wù)器監(jiān)聽,客戶端請(qǐng)求,連接確認(rèn)。1、服務(wù)器監(jiān)聽:服務(wù)器端套接字并不定

15、位具體的客戶端套接字,而是處于等待連接的狀態(tài),實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)狀態(tài),等待客戶端的連接請(qǐng)求。2、客戶端請(qǐng)求:指客戶端的套接字提出連接請(qǐng)求,要連接的目標(biāo)是服務(wù)器端的套接字。為此,客戶端的套接字必須首先描述它要連接的服務(wù)器的套接字,指出服務(wù)器端套接字的地址和端口號(hào),然后就向服務(wù)器端套接字提出連接請(qǐng)求。3、連接確認(rèn):當(dāng)服務(wù)器端套接字監(jiān)聽到或者說接收到客戶端套接字的連接請(qǐng)求時(shí),就響應(yīng)客戶端套接字的請(qǐng)求,建立一個(gè)新的線程,把服務(wù)器端套接字的描述發(fā)給客戶端,一旦客戶端確認(rèn)了此描述,雙方就正式建立連接。而服務(wù)器端套接字繼續(xù)處于監(jiān)聽狀態(tài),繼續(xù)接收其他客戶端套接字的連接請(qǐng)求。三、HTTP鏈接的特點(diǎn)HTTP協(xié)議即超文本

16、傳送協(xié)議(Hypertext Transfer Protocol ),是Web聯(lián)四、TCP和UDP的區(qū)別(考得最多??毂豢紶€了我覺得- -)1、TCP是面向鏈接的,雖然說網(wǎng)絡(luò)的不安全不穩(wěn)定特性決定了多少次握手都不能保證連接的可靠性,但TCP的三次握手在最低限度上(實(shí)際上也很大程度上保證了)保證了連接的可靠性;而UDP不是面向連接的,UDP傳送數(shù)據(jù)前并不與對(duì)方建立連接,對(duì)接收到的數(shù)據(jù)也不發(fā)送確認(rèn)信號(hào),發(fā)送端不知道數(shù)據(jù)是否會(huì)正確接收,當(dāng)然也不用重發(fā),所以說UDP是無連接的、不可靠的一種數(shù)據(jù)傳輸協(xié)議。2、也正由于1所說的特點(diǎn),使得UDP的開銷更小數(shù)據(jù)傳輸速率更高,因?yàn)椴槐剡M(jìn)行收發(fā)數(shù)據(jù)的確認(rèn),所以UD

17、P的實(shí)時(shí)性更好。知道了TCP和UDP的區(qū)別,就不難理解為何采用TCP傳輸協(xié)議的MSN比采用UDP的QQ傳輸文件慢了,但并不能說QQ的通信是不安全的,因?yàn)槌绦騿T可以手動(dòng)對(duì)UDP的數(shù)據(jù)收發(fā)進(jìn)行驗(yàn)證,比如發(fā)送方對(duì)每個(gè)數(shù)據(jù)包進(jìn)行編號(hào)然后由接收方進(jìn)行驗(yàn)證啊什么的,即使是這樣,UDP因?yàn)樵诘讓訁f(xié)議的封裝上沒有采用類似TCP的“三次握手”而實(shí)現(xiàn)了TCP所無法達(dá)到的傳輸效率。iOS應(yīng)用是非常注重用戶體驗(yàn)的,不光是要求界面設(shè)計(jì)合理美觀,也要求各種UI的反應(yīng)靈敏,我相信大家對(duì)那種一拖就卡卡卡的 TableView 應(yīng)用沒什么好印象。還記得12306么,那個(gè)速度,相信大家都受不了。為了提高 iOS 的運(yùn)行速度,下面

18、我將拋磚引玉介紹一些我實(shí)踐過的用來提供iOS程序運(yùn)行效率的方法,與大家分享,希望能得到更多的反饋和建議。1,計(jì)算代碼運(yùn)行時(shí)間:相信數(shù)據(jù),不要太相信感覺。2,善用性能分析工具。4 不要使用太多的Xib xib編譯速度慢,有個(gè)將xib轉(zhuǎn)化為代碼的過程5. 對(duì)于 TableView,重用 cell;減少 cell 初始化的工作量,延遲裝載;6. 在線程中使用 autoreleasepool。7,將一些不太重要的任務(wù)放在 idle 時(shí)運(yùn)行。8,不要在 viewWillAppear 中做費(fèi)時(shí)的操作。9,使用多線程來延遲加載資源。占位,異步,主線程10 利用 cache 空間換時(shí)間。cache 是一種常見

19、的空間換時(shí)間的提供性能的收到,可以用在相當(dāng)多的場合。iOS6,7的時(shí)間1.按照傳統(tǒng) 新版IOS會(huì)隨著新版IOS設(shè)備一起出現(xiàn),也就是下個(gè)月發(fā)布的全新iphone,但是在6月蘋果召開大會(huì)的時(shí)候已經(jīng)放出了ios6的bate版,如果你有開發(fā)者賬號(hào),便可以更新到最新的測試版,如果沒有下個(gè)月也勢必可以等到正式版IOS6iOS6新特性 每次ios大版本的更新,都會(huì)帶來一些新的東西,對(duì)開發(fā)者來說,有利有弊。 好處是,新增了很多新的屬性,控件和api,開發(fā)者權(quán)限更大了,可以輕松實(shí)現(xiàn)更多的功能。弊端在于,可能廢除了一些舊的api接口,需要做更多的適配和兼 容。通過自己開發(fā)過程中的一些經(jīng)驗(yàn),查閱ios6 SDK以及

20、參考網(wǎng)上一些文檔。 總結(jié)了下面這些關(guān)于ios6系統(tǒng)的新特性,方便大家在后續(xù)開發(fā)過程中進(jìn)行對(duì)比參考。一 關(guān)于內(nèi)存警告 ios6中廢除了viewDidUnload,viewWillUnload這兩個(gè)系統(tǒng)回調(diào), 收到內(nèi)存警告時(shí)在didReceiveMemoryWarning中進(jìn)行相關(guān)的處理。二 關(guān)于屏幕旋轉(zhuǎn) 同樣ios6 廢除了shouldAutorotateToInterfaceOrientation這個(gè)旋轉(zhuǎn)屏幕的設(shè)置接口。 必須在兩個(gè)新接口中設(shè)置旋轉(zhuǎn)屬性:shouldAutorotatesupportedInterfaceOrientations收到旋轉(zhuǎn)事件后的處理,同樣在willRotateT

21、oInterfaceOrientation,和didRotateFromInterfaceOrientation中進(jìn)行。三 UISwitch ios6下,新增了以下幾個(gè)屬性,可以設(shè)置開關(guān)的顏色以及背景圖property ( nonatomic , retain ) UIColor*tintColor; property ( nonatomic , retain ) UIColor*thumbTintColor; property ( nonatomic , retain ) UIImage*onImage; property ( nonatomic , retain )UIImage *off

22、Image; 四 UINavigationBar ios6新增了,設(shè)置陰影圖片的屬性property ( nonatomic , retain ) UIImage*shadowImage; 五 UIImage 可以在ios6下設(shè)置圖片的scale比例尺寸了+ (UIImage *)imageWithData:(NSData *)data scale:(CGFloat)scale;- ( id )initWithData:(NSData *)data scale:(CGFloat)scale; 六 UIRefreshControl 之前蘋果官方是沒有現(xiàn)成的下拉刷新的控件,都是自己實(shí)現(xiàn)或者使用比較

23、成熟的開源庫。 這次,ios6 蘋果加入了UIRefreshControl,配合UITableView直接實(shí)現(xiàn)下拉刷新。但是為了保證兼容性, 還是不推薦目前使用這個(gè)控件。七UICollectionView 全新的集合控件, 應(yīng)用場景有類似照片墻,瀑布流等。Github里之前已經(jīng)有很多開源庫實(shí)現(xiàn)了這個(gè)控件的功能。iOS7新特性全新UI設(shè)計(jì) iOS7最大的變化莫過于UI設(shè)計(jì),也許你會(huì)說UI設(shè)計(jì)“這是設(shè)計(jì)師大大們應(yīng)該關(guān)注的事情,不關(guān)開發(fā)者的事,我們只需要替換圖片就行了”。那你就錯(cuò)了。 UI的變化必然帶來使用習(xí)慣和方式的轉(zhuǎn)變,如何運(yùn)用iOS7的UI,如何是自己的應(yīng)用更切合新的系統(tǒng),都是需要考慮的事情。另外值得注意的是,使用 iOS7 SDK(現(xiàn)在只有Xcode5預(yù)覽版提供)打包的應(yīng)用在iOS7上運(yùn)行時(shí)將會(huì)自動(dòng)使用iOS7的新界面,所以原有應(yīng)用可能需要對(duì)新界面進(jìn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論