SD演講資料

以下是演講實錄:

岑文初:大家上午好,我叫岑文初,今天給大家講的,看這個題目跟大家在我們冊上印的有點不一樣,我最早是來講技術,商業不是我來講,現在做任何平臺,產品這個設計一定要去考慮,我們在上面稍微加了幾頁PPT,淘寶爲什麼現在做開放平臺?大家會提出疑問,是不是喊口號。

 

今天從三個方面講:第一個開放之於服務提供者,第二開放之於應用開發者,最後一點我給大家講一下開放平臺體系設計基礎性的共性的東西,其實任何一家開放平臺做的事情肯定有自己垂直化的東西,不會有類似所有的東西都可以拷貝,今天會談這些基礎性的東西。

 

這邊有兩個三角形,其實爲什麼今年大家會發覺很多大型網站慢慢提出一個開放的概念,每一個網站到一定階段都變成一個平臺期,平臺期考慮一個事情,怎麼樣增加我們的用戶,怎麼拓展我們產品的推廣度,我們遇到一些困境,找一些突破,特別你的流量很大,你的用戶數很多,你會考慮你的安全,你的效率跟你本身設計的折中,我們會犧牲三和七,或者四和六,我們網站往往會滿足60%的用戶需求和用戶體驗。

 

另外一點就是創新,今天做開放平臺很多人說是爲了創新這一件事情,沒有錯,但是創新這一點,會有很多的內涵在裏面,後面會談到。創新會給平臺瓶頸期創造一定的條件,今天淘寶大家會發覺會去做很多方面的融合,跟傳統媒體去做,跟手機終端去做,甚至給一些電視領域都去做,什麼原因?不可能把淘寶照模照樣去放在手機上,所以下面有領域性的延展,線上來賣,今天淘寶讓他怎麼樣能夠上線,以前看到很多傳統ERP的企業,慢慢成爲TP,它所做的事情就是把原先的ERP系統變成跟互聯網打通的所謂電子商務的系統,領域性這一塊,淘寶今天有很多商品,今天也會看到其實有些領域裏面我們沒有做,收藏領域沒有做,原因很簡單,水太深,做不了。還有更多傳統領域的東西都沒有做,領域性的東西,我昨天在微博裏面發了一句話,今天開放平臺是給更多的開發者,或者更多的領域專家有機會把大家現在面向技術做產品改變成面向用戶去做產品,這個意思就是說,今天用開放平臺能夠降低很多開發門檻,用領域專家用領域思維事情,不是做用戶。爲什麼這裏面的流程是多年積累的經驗,肯定是很規範,我們所謂行業性的規範一樣,其實是不是這樣,你把這個戰場鋪到傳統戰場,你根本不適合在其它的地方使用,規範的東西也是開放之後才發掘出來。今天在場有很多網站需要做開放。第二個大家看到這個餅,其實對於開放來說一直會存在雙韌劍的問題,在這裏面大家會看到,裏面會談到幾點,第一個安全性,今天的開放在一個桶上開了一個孔,希望把桶裏的水放出去,我告訴你,病菌會從這個桶鑽進去,這是最大的口,最容易突破的口,後面會談到會產生哪些問題。另外是性能,今天你會看,我們開放平臺API的訪問量跟主站訪問量趨勢完全不一樣的,用戶行爲跟RSB的行爲完全不一樣,RSB自身的穩定性對訪問量產生影響,你現在說能承擔多少用戶的PV,你今天所說的擴展性只是在這個桶範圍內做到的,一旦開放就面臨這些問題。

 

另外一塊是業務,在上個禮拜我去B2B跟阿里巴巴一家B2B去談的時候,我問他的一個問題,你開放出去,別人做同樣的產品,你怎麼權衡這一件事情。我希望他考慮這一件事情,今天很多開放平臺,所謂開放的服務者有可能不希望你在喊口號,你只是去拿這種引誘讓RSB去跟隨,你今天以數據爲王你東西放出去就沒有了,在業務方面最需要提供者考慮清楚,有一句話很簡單,今天開放收回來很難。

 

另外一點系統結構,昨天正好有一個北京的朋友跟我聊,他說他不想做開放,他希望他內部體系結構服務化一點,內部服務不要交錯那麼厲害,淘寶發展的過程有幾個階段,第一個把自己內部系統完全隔離開,這裏面有一個度的問題,今天開放一定是局部性的,一定是階段性的,你完全不可能一次性放出去,你沒有做好服務化,沒有做好隔離化,你放整個系統就垮掉了。

 

這邊我再談一下對於我們的應用開發者,我相信有些同學做應用開發的,我記得每一次應用開發者跟我交流的時候最常問的問題,今天我開發這個軟件如果跟淘寶衝突了怎麼辦,將來淘寶會不會收編,我用什麼辦法生存下來,我會談到兩點,這邊有左右兩塊,第一塊推廣和授權,這個其實能夠給開發者提供的便利,對於現在的互聯網開發者來說,他本身產品的生產和產品的推廣是最大的兩個瓶頸,有兩個最大的存在的風險在裏面,它需要投入很多精力資金在裏面,如果通過API的開放,他直接可以省去這兩個東西,後續你的應用發展起來之後你能力的擴展也需要一定的風險避規。另外有行業門檻,渠道門檻,技術門檻,我一直希望大家不要站長再生淘寶這個小圈子裏面看事情,你需要有什麼不同,昨天我記得有一個朋友談到,技術不是門檻,我相信技術不是門檻,技術一定是敲門磚,一定是基礎,你需要做應用開發的時候需要了解你能夠有和別人不同的地方,如果你做一個軟件兩個月,或者幾天之內就能做出來你就不要做,技術只是應用成功其中很小一部分,或者其中一部分,另外有很多門檻,杭州有一個團購網一直是OK的,就是都市快報,有傳統媒體作爲渠道,做的跟別人一模一樣,它一樣能夠產生效益,你一定要找不同點,不管是技術門檻,渠道門檻,一定要找到門檻,當這些門檻都不存在的時候可以看上面的這個服務,最終大家拼的領域裏面的軟件,你的服務好也是一種差異,但是創意這一件事情我希望大家去了解,這是一個概念,但是創意這一件事情一定要依託這個門檻,創意很虛,真正適合是旁邊的東西。

 

 

後面我講一下具體的,有可能程序員比較關心的底層架構的東西,會提一下架構的鏈。第一個是生和養,後面談到細節的優化都是最基礎的環節,其實開放APR只是第一步,後面產品化,把產品推到用戶面前,使開放平臺生態體系有一個很好的發展,你不要想你開放了API就算了,今年開放了沒有人用。第二個是共性和特質,有一些東西一定是特質的,今天你是做電子商務的開放平臺跟做其它開放平臺裏面的東西是不同考慮的。最後是一個目標和願景,其實每一個做開放平臺的,包括淘寶,所有的人進淘寶的時候想要平臺開放,很多人都說我要去做水廠,我要去做電廠,希望把人力都放進去,一個是網站型的開放,一個是平臺型的開放,網站型的開放一定有核心的東西不能開放的,有些核心功能必須自己做,這些核心功能牽住用戶,再把周邊的東西常委交給更多的RSB做,說實話,大家發覺越來越把他的網站,客戶端做的很好,原因是什麼?今年依然是他的客戶端訪問量佔很小的餘地的時候,他本身的盈利所涉及的點很小,整個生態系統一定是多贏的,任何一方達到部分到贏,他一定想去改變。

 

這是一些數據,淘寶開放平臺有些人提的並不是很多,我說做淘寶開放平臺的時候他一定對電子商務這一塊東西瞭解比較透徹,但是電子商務其實有比較深的水。從2008年到2010年在ARR交易量上,大家看翻的很厲害,明年會翻的很厲害,包括明年買家性的工具會全部放出來,後續回去瞭解這一件事情。這個量大家看今天只有七億,這方面我們會做很多限制,這邊是我們整個架構的變革,最早我們會關注,我跟大家談的你要做開放之前一定會把網站裏面做服務化,做隔離,否則你沒有辦法開放,你開放就知道有多大的風險,到09年的時候,我最早阿里巴巴軟件,最早淘寶跟阿里巴巴軟件合作,阿里巴巴是做開放平臺的角色,09年我轉到淘寶那裏,這個時候大家知道阿里巴巴變成雲公司了,定位不同之後,淘寶變成開放平臺的生態體系,後面談的只是最基礎的,真正的體系會影響整個生態圈的發展。

 

2010年對於我來說,當然會關注商業性的東西,當然我會更關注技術性的東西,更關注透明化。透明化在我們技術上做這幾點實施,第一個安全,我先把這些拋出,第一個是安全,首先你網站個人用戶的安全一定會考慮到,你網站自身的安全,會不會釣魚,會不會有些信息被抓取,第三個應用身份安全,淘寶會對於整個RSB分成不同的體系,不同的RSB體系是不一樣的。第二是易用性,我後面會講。

 

然後有一塊速度,速度對於服務來說,第一個是耗帶寬服務,耗時服務,耗資服務。第二個是穩定性,平臺不穩定大家很容易理解,其實我最希望看到的效果,它的開放不是專門的部門去做,是滲透在整個部門裏面去做這一件,今天淘寶在初級的過程中,任何一家公司在做初期的過程中,中國裏面一開始肯定是先以一個部門去集成一些服務,慢慢把這些滲透到整個公司裏面。最後一個是服務易用,今天淘寶很慎重做買家公司的原因,今天有些工具能夠潛入到交易頁面裏面,但是這些不穩定用戶直接感受到淘寶出現問題了,這樣的問題怎麼減少發生。

 

這邊是基礎的平臺,最早的時候我們把服務接入平臺和授權容器是授權在一起的,最早的版本我們相信授權和服務接入在一套體系裏面,因爲比較先進,放在一起的好處是能夠負擔相互風險在裏面,但是其實你會發覺越到後期的時候,你容器的變更會越多,裏面的安全,包括策略會很豐富,它會經常發佈,你的服務接入平臺本身很穩定,我們希望服務接入發佈一個月,兩個月太發一次,但是的容器可能經常發佈,系統架構裏面會把易變的東西,雖然覺得比較關聯,易變的東西抽出來,就算沒有容器我依舊跑下去,因爲授權只是你自己保護你自己,用戶不管。然後會有控制檯,中間會有分佈式的分析,中間會有透明化,透明化把所有的,不管是信用,還是業務,全部如實的記錄下來,及時的瞭解這個狀況,才能去做後面的事情。

 

 

首先是速度,今天你調一個淘寶的RPR,速度我們認爲不管任何開放平臺的第一感觸,剛纔談到幾個問題,第一個是耗帶寬的服務,一種是上行流量比較大,一種是下行流量比較大,像淘寶商品,圖片描述,那個東西相當之大,不比下行速度小多少,我們用AA數據解析的分析,對於我們來說,因爲大型的數據傳輸過來本來對帶寬消耗很大,假如裏面有一些參數是非法的,我們能不能事先就能解析出來,一方面通過客戶端保障,可以放在靠前的位置,當這個管道校驗發現校驗已經出錯了,就可以拿回去了,所以解析能夠減少很多無用大數據量的傳輸。第二塊是容器的選擇,大家會看到在數據量比較大的,Java的讀取可能由於數量量比較大,每次上傳的數據包會很小,你會有很多次讀取,這種消耗很大。在這個方面考慮,我們喜歡替換容器,現在測試效果蠻不錯的。另外一塊就是靜態結果下來,前面都是在上行裏面比較大的數據,當然這裏面有下行的數據,有些賣家有很大的定單,他需要發貨,這個定單超級大,對於容器有很大的消耗,其實對於我們來說,這個平臺最大的功能是什麼,安全,路由,有時候返回的數據,或者把一個請求拆成兩個請求,這樣的話不需要你中轉數據,節省你下行帶寬。第二個是耗時服務,我不知道其它的平臺怎麼樣,淘寶每天數據量相當之大,對於很多定單查詢,歷史定單查詢,包括歷史性的東西查詢都會很慢。我們會用什麼方式呢?它是在前端做派克化,我們在後端在派克化,我們會切成小的任務,這樣做的好處,每一個管道所需要的資源,在這個管道如果結束之後,這個環節結束之後他不再需要用的話,會很快的釋放掉,管道化之後發現每一個資源一旦能夠被快速釋放的話本身它的生命週期短就能夠大大增加它處理的能力,同時後面管道後之後你能夠做降級,有人說有百利無一害,但是不是這樣的,這個東西沒有很好的框架封裝上面的開發很複雜,原先保證他的順序性,你切開之後會有很大的問題。爲什麼大家會談到需要做異步化的事情,因爲我們早先做容器去幫大家感覺回收,這樣的好處讓我們開發者屏蔽很多細節,不好的方法,你最後還得交易一把,等到它們全完了你還得把東西全部塞一下,你沒有辦法根據你的業務性去選擇你應該去做什麼處理,如果你把容器線程業務線程拆開之後,你會發覺第一個容器本身線程壽命週期短,處理效率高了,同時業務線程有更多的業務在裏面去做。耗資源,這時候需要把原始的,如果是Java開發,需要把原始的Java轉成類型,如果放在平臺,大家發現拓撲有可能幾十臺機器,我們後臺芳香油很多機器,我們能不能把結果後一到他們身上,很多把渲染的東西放在前端的,而不是現在放過來,這也是一種優化手段。當你有些東西可以後移,或者前移的東西,對方資源更多的時候,可以移過去,這個代價就是升級的代價。然後決策規則,開放平臺,包括流控等,這一塊的東西我們是不是把所有的決策都是在這裏面做,我一個請求過來根據決策做很多的計算,最後得出你能不能繼續訪問,有沒有出問題,需不需要這樣,如果技術性要求不是很高,我們應該把決策外移出去,最後把一個結果推送給我們的接受平臺,這種外移能夠對開放平臺有很大的性能上的提高,原先這些東西都是揉在一個東西里面,慢慢會抽出來,希望把性能提升到最高。

 

第二個穩定性,內外兼修的工作。我經常在說,其實我們小病還可以生感冒到醫院看看病,你得了重病起不了牀怎麼辦呢?每天有人詢問人你有沒有生病,他會來做這個事情。對於系統一個內部做監控優化,另外是外部的監控優化,對於系統結構設計來說,第一個是多級緩存,增量與全量緩存,還有究竟換成增量,還是換成權量,第二個是基於基於布隆算法的白名單,有些系統不命中有可能從其它系統拿一些結果,這樣的問題是當別人產生攻擊的時候,大量的無用,緩衝是保證後臺慢的,我們叫白名單,有可能叫它灰名單,在這個灰名單出現的內容未必在你的系統內合法,但是不在你灰名單出現的東西肯定不合法,這一塊東西對於很多緩存系統很有幫助的,然後服務的分流和隔離,剛纔也談到拓撲平臺上接入了各種各樣的服務,這個時候你需要怎麼隔離出來,我們把容器和業務分開之後,你就可以把你的服務進行分流,哪些服務應該優先處理,哪些服務應該慢一點處理,這些都是可以去考慮的,第二個是控制檯,控制檯有幾個功能,對於開放平臺來說,它每一次發佈都影響面很廣,因爲RSB成千上萬都在這上面,拓撲先把這個功能關掉,選出一臺機器,通過控制檯把它打開,看這個功能,我們分析的曲線錯誤率怎麼樣,當分析都沒有問題的時候讓這臺機器跑,這時候發佈大家會看到這個風險大大降低了,我們面對淘寶經常發佈方式的一種改善。

 

第二個是管道化的服務降級,每一個流程裏面沒有把它切開一錯全錯,但是你希不希望有些非關聯性功能不要影響主功能,我打個比方說今天服務平臺裏面會有一個流量控制,流量控制依賴集中式緩存,這個流量控制是爲了保證怎麼服務體系的健康度,如果我的緩存失敗了,這個管道自動,或者手動放下來,這樣發覺我們主流不會受到影響,今天淘寶有很多秒殺系統,有很多關鍵性流程,不是秒殺系統特別好,而是大家真正把關鍵性的步驟抽出來,非關鍵性的步驟省掉,把分析的結果和決策在外部去運算,最後推到接入平臺,讓它做的很純粹。最後一塊就是監控系統,監控系統大家都會有,我這邊大致談一下,第一個基於歷史基線的服務訪問監控,這就是大窗口和小窗口,我們去比較,我今天的數據和昨天的數據去比,如果我比較的窗口比較小的話,大家會發覺產生的毛刺,或者不準確性會很多,因爲每天細微的比較肯定會產生一些波動,我們希望把它放大,放的太大,如果我把一天24小時切成24塊去比較又不精確了,我們用大窗口的方式去比較,比如0點到1點的數據跟明年的0點到1點的數據比較,把毛刺去掉,這樣既能夠精確上達到要求,又能夠在我們整個所謂的準確性達到要求,第二個多緯度的業務比較,今天突然發現訪問量突高了,這個時候需要很多的指標,監控團隊就怕告警風暴,我們做組合設置,我們很快找到出現高警風暴的點。第二個多機對比的監控,像Bela發佈,有兩個環節做不同容器的實驗也好,你怎麼樣去看這個數據,或者它的性能怎麼樣,不同的機器需要對比,才能瞭解到問題。

 

第二個安全性,這也有三塊,第一塊是用戶數據安全性,很少大家看到有應用的授權管理,對於做開放平臺很敏感的事情,淘寶現在還沒有提供,很快就提高了,有些應用,比如護粉率的測算,你只希望測算一把,有些平臺是長期有效,就像谷歌一樣,像拓撲是可延時的,你調一次就延一下,你給要死你不把門關上他每次都能進來,其實我想說,今天根據RSB的要求,今天是賣家工具,我當然不會解除授權,這個可以通過平臺來解決,也可以通過給用戶一個權限去解決。第二多方授權場景,我剛纔說到差異性,今天你會看到我們SMS,或者其它開放平臺授權完之後,哪個訪問出去了,淘寶上大家會看到,如果一筆交易的產生需要兩方授權,買家授權,賣家授權,這是一個雙向授權,團購多方授權,這種就是差異化,不同的領域裏面根本不會考慮這些問題,授權會有很大的不同,另外就是多應用的互通,今天江湖上有很多插件應用,平臺用戶進入之後他不希望反覆跳出授權,需要考慮怎麼樣讓平臺授權得到很好的支持,授權裏面需要解決的。

 

另外應用的身份安全,剛纔說的應用我們一直在糾結一個問題,有BS的應用,也有CS的應用。另外我談一下淘寶主站的安全性,我們授權完成之後轉到第三方的應用上去,轉後就不告訴你,問題是今天釣魚橫行,如果轉到釣魚網站就完了,這個裏面真的是水太深,只是做到初期的問題,後期一大堆的轉跳。第三個是流程化的服務,剛纔說到這個數據被人抓取出去怎麼辦,一種方式你儘量少開放,另外把中間過程封裝,數據不要流到他們那邊去。然後易用性,其實RSB,國外RSB開發那麼多年,任何的平臺一開就容錯,這些東西都會做,在它的可用性達到一定指標之後,他更在乎易用性。易用性我們今天會花很大的力氣去做,淘寶做開放水很深,在這一塊上面我們去做這些事情。上面我還寫了一句,與人方便自己方便,你今天做開放,我們會看到如果你的SDK應用率越廣大將來你升級服務越方便。再就是易接入,原來後端接入進來都需要寫一大堆的服務文件,今天我們通過一個很簡單的平面,輸入一些關鍵性的信息就自動生成文件,甚至連VT都能生成,其實在這一塊上面我們做易接入,第二個易查錯。昨天會拆成幾個階段,其實裏面分成更多的階段,包括DNS解析,包括連接的建立,包括頁面渲染,網絡交互,每個環節都是需要監控的點,這些其實是決定你服務質量很重要的一個保證。我再談一下。剛纔再說透明,透明是什麼,中間是這一塊,服務訪問數據,加上旁邊這些東西,如果把這些數據全部記錄下來,全部有分析,如果加上比較,你就會去優化,我不相信人做系統優化,所以有數據加比較就是優化,有數據加上規則就是決策,加上業務就是趨勢,我們每年會有不同的側重點,去年會做一些賣家工具,大商家的扶植,明年會有數據APR的開放,這些業務數據能夠直接告訴你,這些方向是不是用戶真正的方向。另外就是閥值監控。這邊會有成長軌跡,成長軌跡我們叫分析器的成長軌跡,跟剛纔我們說的整個拓撲成長軌跡很相似,因爲都是以數據爲主,成長軌跡大家會看到數據量是不同的,開始有可能是單機單線程,最後變成多機多線程,其實是有不同的階段,最早只是去做運營分析,後面變成對整個系統和運營的分析,最後變成及時告警的分析。分析裏面,這邊我談,剛纔說有一個延伸的階段,這三個階段裏面有一層一直沒有變,就是統計模型的抽象層,統計抽象,把這些東西抽象出來以後你不需要做很多的瑞迪歐斯。所以這一塊東西一直是我們最早設計的初衷。第二個是數據通信層。第二個是任務管理層,前面兩個任務都是從單機上面拿這些文件數據,其實的確有很多差距可以去適用,對於數據量不是很大,其實它並不是那麼合適,大家會看到兩個圖,左邊和右邊,大家會看到。你這個任務,包括你的數據來源,數據獲取方式,你配置的方式,這些東西都在焦克里面自描述的話,只需要把這些斯瑞沃,大家會看到這種鬆散的方式唯一的缺點是什麼,如果有一個斯瑞沃出現問題,這個任務跑下去了,馬斯特做粗爆的策略,就是我直接把這個任務,最壞的情況無非同樣兩個斯瑞沃做同樣的事情,其實我們叫廉價的斯瑞沃,有時候難免系統會垮,有可能數據增長很快。隨時隨地一個運營,一個問題出現問題,我們希望看是什麼數據產生的問題。第二我們本身的數據量不是很大,一個監控數據量不是很大,一個服務器本身監控的東西不是很多,你可以選擇一些關鍵性的信息,這些處理可以作爲其它系統二次處理的數據,那個數量很小,但是對於你網絡上不會有數據風暴,你不要壓縮,你壓縮會產生CPU的消耗。最早期,這邊會有兩個,圓形的就是一個DB,底下就是FTP的,大家發覺跟多線程設計一樣,有一環二串型的,瓶頸在哪裏?DB的RO,沒有問題,前面的斯迪沃再快也是串行的,這個並行的效果就不好。我們本身的數據來源不是大文件一次性拿過來,這個大家會看到,我一直堅信一個概念,大家做監控系統的時候,一定考慮監控系統是幫人家更好的生存而不是影響它生存,你推的時候,你推過去也是推在那兒,因爲你是主動的過程,你需要做放慢腳步,推和拉還是有一定的差距,如果完全相信它的能力,你不要在業務數據裏面加,如果你覺得它裏面有可能產生問題,你完全根本時間衝做分析,不是當前時間段做易損。

 

這邊就是一個多組建的協同,大家會看到,這邊有一個管理員,然後在我們的統計結果會及時更新這些結果,有些可以拿這些結果做一些告警,有些團隊,比如RSB,他需要做二次處理就拿這些數據二次處理。再底下是監控平臺,一旦蒐集這些數據能得到這些信息告警,怎麼樣及時高效產生,包括監控和業務處理。剛纔我說的有些東西都是比較基層的,淘寶這邊有沙箱,還有推送的數據,如果淘寶一個流程裏面需要推送的話,比如一筆交易成功了,那些IPR肯定不是交易用的,這邊會有監控系統,拓撲服務器就是最穩定的這一塊,就是接入這一塊,真正的開放會滲透到骨子裏去,每一個大的網站開放不是某一個部門的事情,是整個網站的事情,原始性的開放的確滲透到骨子裏面,但是上升RSB引導上面有更多流程性的封裝。這裏面我們有一個叫TB,作爲數據中心,好處大家的數據系統是統一的,但是拓撲必須有完整的設計裏面做這一件事情。會有很多面向開發者,包括面向RSB去運營它的產品,這一系列的門戶,你做開放平臺,你真的做成有效果的東西一定做成一個體系,上面只是一個敲門磚,也是RSB繼續信任你繼續玩下去的重點。裏面有很多東西。我稍微簡單說一下運營門戶,原先我們運營門戶都在一個門戶上運營,今天我們有一個藍海項目,明年我們把這些運營切開,APA的產品運營其實有方向性和垂直化,這時候也只有這樣的PT能享受更多的東西,初期的時候肯定是揉在一起的。

 

今天講的比較快,最後我一直在說兩句話,第一個透明的平臺是成功的平臺,第二個是無聲的技術是最好的技術,爲什麼這麼說?你的用戶,不管是程序員也好,感覺不到你有平臺,你的平臺就做成功了,他覺得你有平臺就證明你有很多門檻他受不了。後面兩個詞,簡單和直接,你不用覺得,畫這個圖,幾個框框,很不好意思,如果你畫幾個框框,幾個線就解決問題了就好了,畫很多框框,畫很多線反而不一定好。淘寶會把很多關聯切掉。


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/cenwenchu79/archive/2010/12/13/6074019.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章