锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久国产精品久久久久久久久久,国产精品日韩在线一区,亚洲图片欧美日产http://m.shnenglu.com/mmdengwo/category/16464.htmlzh-cnTue, 05 Apr 2011 10:58:05 GMTTue, 05 Apr 2011 10:58:05 GMT60protobuf鍦ㄧ綉緇滅紪紼嬩腑鐨勫簲鐢ㄦ濊?/title><link>http://m.shnenglu.com/mmdengwo/archive/2011/04/05/143466.html</link><dc:creator>娌涙矝</dc:creator><author>娌涙矝</author><pubDate>Tue, 05 Apr 2011 10:40:00 GMT</pubDate><guid>http://m.shnenglu.com/mmdengwo/archive/2011/04/05/143466.html</guid><wfw:comment>http://m.shnenglu.com/mmdengwo/comments/143466.html</wfw:comment><comments>http://m.shnenglu.com/mmdengwo/archive/2011/04/05/143466.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/mmdengwo/comments/commentRss/143466.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/mmdengwo/services/trackbacks/143466.html</trackback:ping><description><![CDATA[<span id="5l5vfxr" class=Apple-style-span style="WORD-SPACING: 0px; FONT: medium Simsun; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span id="tjrzh5x" class=Apple-style-span style="FONT-SIZE: 14px; LINE-HEIGHT: 21px; FONT-FAMILY: verdana, sans-serif; TEXT-ALIGN: left"> <h3 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">protobuf綆浠?/h3> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px">protobuf鏄痝oogle鎻愪緵鐨勪竴涓紑婧愬簭鍒楀寲妗嗘灦錛岀被浼間簬XML錛孞SON榪欐牱鐨勬暟鎹〃紺鴻璦錛屽叾鏈澶х殑鐗圭偣鏄熀浜庝簩榪涘埗錛屽洜姝ゆ瘮浼犵粺鐨刋ML琛ㄧず楂樻晥鐭皬寰楀銆傝櫧鐒舵槸浜岃繘鍒舵暟鎹牸寮忥紝浣嗗茍娌℃湁鍥犳鍙樺緱澶嶆潅錛屽紑鍙戜漢鍛橀氳繃鎸夌収涓瀹氱殑璇硶瀹氫箟緇撴瀯鍖栫殑娑堟伅鏍煎紡錛岀劧鍚庨佺粰鍛戒護(hù)琛屽伐鍏鳳紝宸ュ叿灝嗚嚜鍔ㄧ敓鎴愮浉鍏崇殑綾伙紝鍙互鏀寔java銆乧++銆乸ython絳夎璦鐜銆傞氳繃灝嗚繖浜涚被鍖呭惈鍦ㄩ」鐩腑錛屽彲浠ュ緢杞繪澗鐨勮皟鐢ㄧ浉鍏蟲柟娉曟潵瀹屾垚涓氬姟娑堟伅鐨勫簭鍒楀寲涓庡弽搴忓垪鍖栧伐浣溿?/p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px">protobuf鍦╣oogle涓槸涓涓瘮杈冩牳蹇冪殑鍩虹搴擄紝浣滀負(fù)鍒嗗竷寮忚繍綆楁秹鍙?qiáng)鍒板ぇ閲忕殑涓嶅悓涓氬姟娑堟伅鐨勪紶閫掞紝濡備綍楂樻晥綆媧佺殑琛ㄧず銆佹搷浣滆繖浜涗笟鍔℃秷鎭湪google榪欐牱鐨勫ぇ瑙勬ā搴旂敤涓槸鑷沖叧閲嶈鐨勩傝宲rotobuf榪欐牱鐨勫簱姝eソ鏄湪鏁堢巼銆佹暟鎹ぇ灝忋佹槗鐢ㄦт箣闂村彇寰椾簡寰堝ソ鐨勫鉤琛°?/p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px">鏇村淇℃伅鍙弬鑰?a style="COLOR: rgb(51,102,153); TEXT-DECORATION: none" target=_blank>瀹樻柟鏂囨。</a><br><span id="tl5v55p" class=Apple-style-span style="WORD-SPACING: 0px; FONT: medium Simsun; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span id="5xn3pdn" class=Apple-style-span style="FONT-SIZE: 14px; LINE-HEIGHT: 21px; FONT-FAMILY: verdana, sans-serif; TEXT-ALIGN: left"></p> <h3 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">渚嬪瓙浠嬬粛</h3> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px">鍏?a style="COLOR: rgb(51,102,153); TEXT-DECORATION: none" target=_blank>涓嬭澆protobuf-2.3.0.zip</a>婧愪唬鐮佸簱錛屼笅杞藉悗瑙e帇錛岄夋嫨vsprojects鐩綍涓嬬殑protobuf.sln瑙e喅鏂規(guī)鎵撳紑錛岀紪璇戞暣涓柟妗堥『鍒╂垚鍔熴傚叾涓湁涓浜涙祴璇曞伐紼嬶紝搴撶浉鍏崇殑宸ョ▼鏄痩ibprotobuf銆乴ibprotobuf-lite銆乴ibprotoc鍜宲rotoc銆傚叾涓璸rotoc鏄懡浠よ宸ュ叿銆傚湪example鐩綍涓嬫湁涓涓湴鍧钖勬秷鎭殑渚嬪瓙錛屼笟鍔℃秷鎭殑瀹氫箟鏂囦歡鍚庣紑涓?proto錛屽叾涓殑addressbook.proto鍐呭涓猴細(xì)</p> <pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)">package tutorial;</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"></pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)">option java_package = "com.example.tutorial";</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)">option java_outer_classname = "AddressBookProtos";</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"></pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)">message Person {</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> required string name = 1;</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> required int32 id = 2; // Unique ID number for this person.</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> optional string email = 3;</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"></pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> enum PhoneType {</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> MOBILE = 0;</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> HOME = 1;</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> WORK = 2;</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> }</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"></pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> message PhoneNumber {</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> required string number = 1;</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> optional PhoneType type = 2 [default = HOME];</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> }</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"></pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> repeated PhoneNumber phone = 4;</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)">}</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"></pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)">// Our address book file is just one of these.</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)">message AddressBook {</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> repeated Person person = 1;</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)">}</pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"></pre> </pre> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px">璇ュ畾涔夋枃浠訛紝瀹氫箟浜嗗湴鍧钖勬秷鎭殑緇撴瀯錛岄《灞傛秷鎭負(fù)AddressBook錛屽叾涓寘鍚涓狿erson娑堟伅錛孭erson娑堟伅涓張鍖呭惈澶氫釜PhoneNumber娑堟伅銆傞噷闈㈣繕瀹氫箟浜嗕竴涓狿honeType鐨勬灇涓劇被鍨嬨?/p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px">綾誨瀷鍓嶉潰鏈塺equired琛ㄧず蹇呴』錛宱ptional琛ㄧず鍙夛紝repeated琛ㄧず閲嶅錛岃繖浜涘畾涔夐兘鏄竴鐩簡鐒剁殑錛屾棤欏誨璇淬傚叧浜庢秷鎭畾涔夌殑璇︾粏璇硶鍙弬鑰冨畼鏂規(guī)枃妗c?br><br><span id="r3vj3d5" class=Apple-style-span style="WORD-SPACING: 0px; FONT: medium Simsun; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span id="d53ll35" class=Apple-style-span style="FONT-SIZE: 14px; LINE-HEIGHT: 21px; FONT-FAMILY: verdana, sans-serif; TEXT-ALIGN: left"></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px">鐜板湪鐢ㄥ懡浠よ宸ュ叿鏉ョ敓鎴愪笟鍔℃秷鎭被錛屽垏鎹㈠埌protoc.exe鎵鍦ㄧ殑debug鐩綍錛屽湪鍛戒護(hù)琛屾暡鍏ワ細(xì)</p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><font color=#0000ff>protoc.exe --proto_path=..\..\examples --cpp_out=..\..\examples ..\..\examples\addressbook.proto</font></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px">璇ュ懡浠や腑--proto_path鍙傛暟琛ㄧず.proto娑堟伅瀹氫箟鏂囦歡璺緞錛?-cpp_out琛ㄧず杈撳嚭c++綾葷殑璺緞錛屽悗闈㈡帴鐫鏄痑ddressbook.proto娑堟伅瀹氫箟鏂囦歡銆傝鍛戒護(hù)浼?xì)璇诲彇addressbook.proto鏂囦歡騫剁敓鎴愬搴旂殑c++綾誨ご鏂囦歡鍜屽疄鐜版枃浠躲傛墽琛屽畬鍚庡湪examples鐩綍鐢熷瓨浜哸ddressbook.pb.h鍜宎ddressbook.pb.cpp銆?/p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px">鐜板湪鏂板緩涓や釜絀烘帶鍒跺彴宸ョ▼錛岀涓涓笉濡ㄥ彨AddPerson錛岀劧鍚庢妸examples鐩綍涓嬬殑add_person.cc銆乤ddressbook.pb.h鍜宎ddressbook.pb.cpp鍔犲叆鍒拌宸ョ▼錛屽彟涓涓伐紼嬩笉濡ㄥ彨ListPerson錛屽皢examples鐩綍涓嬬殑list_people.cc銆乤ddressbook.pb.h鍜宎ddressbook.pb.cpp鍔犲叆鍒拌宸ョ▼錛屽湪涓や釜宸ョ▼鐨勯」鐩睘鎬т腑闄勫姞澶存枃浠惰礬寰?./src銆備袱涓伐紼嬬殑欏圭洰渚濊禆閮介夋嫨libprotobuf宸ョ▼錛堝簱錛夈?/p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px">緇橝ddPerson宸ョ▼娣誨姞涓涓懡浠よ鍙傛暟姣斿鍙玜ddressbook.dat鐢ㄤ簬灝嗗湴鍧钖勪俊鎭簭鍒楀寲鍐欏叆璇ユ枃浠訛紝鐒跺悗緙栬瘧榪愯AddPerson宸ョ▼錛屾牴鎹彁紺鴻緭鍏ュ湴鍧钖勪俊鎭?<br></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><a style="COLOR: rgb(51,102,153); TEXT-DECORATION: none" ></a></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><img src="http://m.shnenglu.com/images/cppblog_com/mmdengwo/1.gif" border=0><br>杈撳叆瀹屾垚鍚庯紝灝嗗簭鍒楀寲鍒癮ddressbook.dat鏂囦歡涓?/p> <span id="b3z5d55" class=Apple-style-span style="WORD-SPACING: 0px; FONT: medium Simsun; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span id="zbd55pz" class=Apple-style-span style="FONT-SIZE: 14px; LINE-HEIGHT: 21px; FONT-FAMILY: verdana, sans-serif; TEXT-ALIGN: left"> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px">鍦↙istPerson宸ョ▼鐨勫懡浠よ鍙傛暟涓姞璇誨彇鏂囦歡鍙傛暟..\AddPerson\addressbook.dat錛岀劧鍚庡湪榪愯ListPerson宸ョ▼錛屽彲鍦?list_people.cc鐨勬渶鍚庤涓柇鐐癸紝閬垮厤鍛戒護(hù)琛岀獥鍙h繍琛屽畬鍚庡叧闂湅涓嶅埌緇撴灉錛?br></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><a style="COLOR: rgb(51,102,153); TEXT-DECORATION: none" ></a></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><img src="http://m.shnenglu.com/images/cppblog_com/mmdengwo/2.gif" border=0><br>鍐欏叆鍦板潃钖勭殑鎿嶄綔錛屽叧閿搷浣滃氨鏄皟鐢╝ddress_book.SerializeToOstream榪涜搴忓垪鍖栧埌鏂囦歡嫻併?/p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px">鑰岃鍙栨搷浣滀腑灝辨槸address_book.ParseFromIstream浠庢枃浠舵祦鍙嶅簭鍒楀寲錛岃繖閮芥槸妗嗘灦鑷姩鐢熸垚鐨勭被涓殑鏂規(guī)硶銆?/p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px">鍏朵粬鎿嶄綔閮芥槸涓氬姟娑堟伅鐨勫瓧孌祍et/get涔嬬被鐨勫璞$駭鎿嶄綔錛屽緢鏄庝簡銆傛洿璇︾粏鐨凙PI鍙傝冨畼鏂規(guī)枃妗f湁璇︾粏璇存槑銆?/p> <h3 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">鍦═CP緗戠粶緙栫▼涓殑鑰冭檻</h3> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px">浠庝笂闈㈢殑渚嬪瓙鍙互鐪嬪嚭protobuf榪欐牱鐨勫簱鏄緢鏂逛究楂樻晥鐨勶紝閭d箞鑷劧鐨勬兂鍒板湪緗戠粶緙栫▼涓敤鏉ュ仛涓氬姟娑堟伅鐨勫簭鍒楀寲銆佸弽搴忓垪鍖栨敮鎸併傚湪鍩轟簬UDP鍗忚鐨勭綉緇滃簲鐢ㄤ腑錛岀敱浜嶶DP鏈韓鏄湁杈圭晫錛岄偅涔堢敤protobuf鏉ュ鐞嗕笟鍔℃秷鎭氨寰堟柟渚褲備絾鍦═CP搴旂敤涓紝鐢變簬TCP鍗忚娌℃湁娑堟伅杈圭晫錛岃繖灝遍渶瑕佹湁涓縐嶆満鍒舵潵紜畾涓氬姟娑堟伅杈圭晫銆傚湪TCP緗戠粶緙栫▼涓繖鏄繀欏婚潰瀵圭殑闂銆?/p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px">娉ㄦ剰涓婇潰鐨刟ddress_book.ParseFromIstream璋冪敤錛屽鏋滄祦鍙傛暟鐨勫唴瀹瑰涓涓瓧鑺傛垨鑰呭皯涓涓瓧鑺傦紝璇ユ柟娉曢兘浼?xì)杩斿洖澶辫触锛堣櫧鐒舵煇浜涘瓧娈靛彲鑳芥纭緱鍒熬l撴灉浜嗭級(jí)錛屼篃灝辨槸璇撮佺粰鍙嶅簭鍒楀寲鐨勬暟鎹弬鏁伴櫎浜嗘牸寮忔紜繕蹇呴』鏈夋紜殑澶у皬銆傚洜姝ゅ湪tcp緗戠粶緙栫▼涓紝瑕佸弽搴忓垪鍖栦笟鍔℃秷鎭紝灝辮鍏堢煡閬撲笟鍔℃暟鎹殑澶у皬銆傝屼笖鍦ㄥ疄闄呭簲鐢ㄤ腑鍙兘鍦ㄤ竴涓彂閫佹搷浣滀腑錛屽彂閫佸涓笟鍔℃秷鎭紝鑰屼笖姣忎釜涓氬姟娑堟伅鐨勫ぇ灝忋佺被鍨嬮兘涓嶄竴鏍楓傝屼笖鍙兘鍙戦佸緢澶х殑鏁版嵁嫻侊紝姣斿鏂囦歡銆?/p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px">鏄劇劧娑堟伅杈圭晫鐨勭‘璁ら棶棰樺拰protobuf搴撴棤鍏籌紝榪樺緱鑷繁鎼炲畾銆傚湪瀹樻柟鏂囨。涓篃鎻愬埌錛宲rotobuf騫朵笉澶傚悎鏉ヤ綔澶ф暟鎹殑澶勭悊錛屽綋涓氬姟娑堟伅瓚呰繃1M鏃訛紝灝卞簲璇ヨ冭檻鏄惁搴旇鐢ㄥ彟澶栫殑鏇夸唬鏂規(guī)銆傚綋鐒跺浜庡ぇ鏁版嵁錛屼綘涔熷彲浠ュ垎鍓蹭負(fù)澶氫釜灝忓潡鐢╬rotobuf鍋氬皬鍧楁秷鎭皝瑁呰繘琛屼紶閫掋備絾瀵瑰緢澶氬簲鐢ㄨ繖鏍風(fēng)殑浣滄硶鏄懼緱姣旇緝澶氫綑錛屾瘮濡傚彂閫佷竴涓ぇ鐨勬枃浠訛紝涓鑸槸鍦ㄦ帴鏀舵柟浠庡崗璁爤鏀跺埌澶氬皯鏁版嵁灝卞啓澶氬皯鏁版嵁鍒扮鐩橈紝榪欐槸涓縐嶈竟鎺ユ敹杈瑰鐞嗙殑嫻佹ā寮忥紝榪欑妯″紡鍩烘湰涓婂拰姣忔鏀跺埌鐨勬暟鎹噺娌℃湁鍏崇郴銆傝繖縐嶆ā寮忎笅鍐嶉噰鐢ㄥ垎鍓叉垚灝忔秷鎭繘琛屽弽搴忓垪鍖栧氨鏄懼緱澶氭涓涓句簡銆?/p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px">鐢變簬姣忎釜涓氬姟娑堟伅鐨勫ぇ灝忓拰澶勭悊鏂瑰紡閮藉彲鑳戒笉涓鏍鳳紝閭d箞灝遍渶瑕佺嫭绔嬫娊璞″嚭涓涓竟鐣屾秷鎭潵鍖哄垎涓嶅悓鐨勪笟鍔℃秷鎭紝鑰屼笖榪欎釜杈圭晫娑堟伅鐨勬牸寮忓拰澶у皬蹇呴』鍥哄畾銆傚浜庣綉緇滅紪紼嬬啛鎵嬶紝鍙兘鏃╁凡緇忔兂鍒頒簡榪欐牱鐨勬秷鎭紝鎴戜滑鍙互緇撳悎protobuf搴撴潵瀹氫箟涓涓竟鐣屾秷鎭紝涓嶅Θ鍙獴oundMsg錛?/p> </span></span><span id="35hx5tj" class=Apple-style-span style="WORD-SPACING: 0px; FONT: medium Simsun; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span id="ph5553p" class=Apple-style-span style="FONT-SIZE: 14px; LINE-HEIGHT: 21px; FONT-FAMILY: verdana, sans-serif; TEXT-ALIGN: left"> <pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)">message BoundMsg </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)">{ </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> required int32 msg_type = 1; </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> required int32 msg_size = 2; </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)">}</pre> </pre> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px">鍙互鏍規(guī)嵁闇瑕佹墿鍏呬竴浜涘瓧孌碉紝浣嗘渶鍩烘湰鐨勮繖涓や釜瀛楁灝卞鐢ㄤ簡銆傛垜浠彧闇瑕佺煡閬撲笟鍔℃秷鎭殑綾誨瀷鍜屽ぇ灝忓嵆鍙傝繖涓秷鎭ぇ灝忔槸鍥哄畾鐨?瀛楄妭錛屼笓闂ㄧ敤鏉ョ‘瀹氭暟鎹祦鐨勮竟鐣屻傛湁浜嗚繖鏍風(fēng)殑杈圭晫娑堟伅錛屽湪鎺ユ敹绔鐞嗕換浣曚笟鍔℃秷鎭氨寰堢伒媧繪柟渚夸簡錛屼笅闈㈡槸鎺ユ敹绔鐞嗙殑綆鍗曚吉浠g爜紺轟緥錛?/p> </span></span><span id="ld3f55v" class=Apple-style-span style="WORD-SPACING: 0px; FONT: medium Simsun; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span id="b5hlrrr" class=Apple-style-span style="FONT-SIZE: 14px; LINE-HEIGHT: 21px; FONT-FAMILY: verdana, sans-serif; TEXT-ALIGN: left"> <pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"><span style="COLOR: rgb(0,0,255)">if</span>(net_read(buf,8)) </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)">{ </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> boundMsg.ParseFromIstream(buf); </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> <span style="COLOR: rgb(0,0,255)">switch</span>(boundMsg.msg_type) </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> { </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> <span style="COLOR: rgb(0,0,255)">case</span> BO_1: </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> <span style="COLOR: rgb(0,0,255)">if</span>(net_read(bo1Buf,boundMsg.msg_size)) </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> { </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> bo1.ParseFromIstream(bo1Buf); </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> .... </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> } </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> <span style="COLOR: rgb(0,0,255)">break</span>; </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> <span style="COLOR: rgb(0,0,255)">case</span> BO_2: </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> <span style="COLOR: rgb(0,0,255)">if</span>(net_read(bo2Buf,boundMsg.msg_size)) </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> { </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> bo2.ParseFromIstream(bo2Buf); </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> .... </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> } </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> <span style="COLOR: rgb(0,0,255)">break</span>; </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"></pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> <span style="COLOR: rgb(0,0,255)">case</span> FILE_DATA: </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> count = 0; </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> <span style="COLOR: rgb(0,0,255)">while</span>(count < boundMsg.msg_size) </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> { </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> piece_size = net_read(fileBuf,1024); </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> write_file(filename,fileBuf,piece_size); </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> count = count + piece_size; </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> } </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> <span style="COLOR: rgb(0,0,255)">break</span>; </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)"> } </pre> <pre style="FONT-SIZE: 12px; MARGIN: 0em; WIDTH: 844px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: rgb(255,255,255)">}</pre> </pre> </span></span><span id="r3z35l5" class=Apple-style-span style="WORD-SPACING: 0px; FONT: medium Simsun; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span id="hbhl5rh" class=Apple-style-span style="FONT-SIZE: 14px; LINE-HEIGHT: 21px; FONT-FAMILY: verdana, sans-serif; TEXT-ALIGN: left"> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px">娉ㄦ剰涓婇潰濡傛灉FILE_DATA娑堟伅鍚庯紝榪樼揣鎺ュ叾浠栦笟鍔℃秷鎭殑璇濓紝闇瑕佸皬蹇冿紝鍗砪ount绱鍑虹殑鍊煎彲鑳藉ぇ浜?/p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px">boundMsg.msg_size鐨勫鹼紝閭d箞澶氬嚭鏉ョ殑瀹為檯涓婂簲璇ユ槸涓嬩竴涓竟鐣屾秷鎭暟鎹簡銆備負(fù)浜嗛伩鍏嶅鐞嗙殑澶嶆潅鎬э紝涓婇潰鎵鏈夌殑寰幆緗戠粶璇誨彇鎿嶄綔錛堜笂闈O_1錛孊O_2閮藉彲鑳介渶瑕佸驚鐜鍙栵紝涓轟簡綆鍖栨病鏈夊啓鎴愬驚鐜級(jí)鐨勭紦鍐插尯浣嶇疆鍜屽ぇ灝忓弬鏁板簲璇ュ姩鎬佽皟鏁達(dá)紝鍗蟲瘡嬈¤鍙栨椂浼犻掔殑閮芥槸榪樻湡鏈涜鍙栫殑鏁版嵁澶у皬錛屽浜庢枃浠剁殑璇濓紝鍙兘鐗規(guī)畩鐐癸紝鍥犱負(fù)杈硅鍙栬竟鍐欏叆錛屽氨娌℃湁蹇呰浜嬪厛瑕佸垎閰嶄竴涓枃浠跺ぇ灝忕殑緙撳啿鍖烘潵瀛樻斁鏁版嵁浜嗐傚浜庢枃浠跺垎閰嶄竴涓皬緙撳啿鍖烘潵璇伙紝娉ㄦ剰紜涓嬭竟鐣屽嵆鍙?/p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px">涓婇潰鏄垜鐨勪竴鐐硅冭檻錛屼笉濡ヤ箣澶勮繕璇峰ぇ瀹惰璁轟氦嫻併傛兂鎯沖熷姪浜嶢CE銆丮INA榪欐牱鐨勭綉緇滅紪紼嬫鏋訛紝鐒跺悗緇撳悎protobuf榪欐牱鐨勫簭鍒楀寲妗嗘灦錛岀綉緇滅紪紼嬩腑鎶鏈熀紜璁炬柦灞傞潰鐨勪笢瑗垮氨緇欐垜浠В鍐沖緱宸笉澶氫簡錛屾垜浠彲浠ョ湡姝e彧鍏蟲敞浜庝笟鍔$殑瀹炵幇銆?/p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"></span></span><br> </p> </span></span></span></span></span></span> <img src ="http://m.shnenglu.com/mmdengwo/aggbug/143466.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/mmdengwo/" target="_blank">娌涙矝</a> 2011-04-05 18:40 <a href="http://m.shnenglu.com/mmdengwo/archive/2011/04/05/143466.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Protocol Buffers Language Guide涔媝roto鏂囦歡綾誨瀷鏍煎紡鍒嗘瀽[鍏抽敭鐐圭炕璇慮http://m.shnenglu.com/mmdengwo/archive/2011/04/05/143465.html娌涙矝娌涙矝Tue, 05 Apr 2011 10:29:00 GMThttp://m.shnenglu.com/mmdengwo/archive/2011/04/05/143465.htmlhttp://m.shnenglu.com/mmdengwo/comments/143465.htmlhttp://m.shnenglu.com/mmdengwo/archive/2011/04/05/143465.html#Feedback0http://m.shnenglu.com/mmdengwo/comments/commentRss/143465.htmlhttp://m.shnenglu.com/mmdengwo/services/trackbacks/143465.html闃呰鍏ㄦ枃

娌涙矝 2011-04-05 18:29 鍙戣〃璇勮
]]>
Protocol Buffers浠嬬粛http://m.shnenglu.com/mmdengwo/archive/2011/04/05/143464.html娌涙矝娌涙矝Tue, 05 Apr 2011 10:26:00 GMThttp://m.shnenglu.com/mmdengwo/archive/2011/04/05/143464.htmlhttp://m.shnenglu.com/mmdengwo/comments/143464.htmlhttp://m.shnenglu.com/mmdengwo/archive/2011/04/05/143464.html#Feedback0http://m.shnenglu.com/mmdengwo/comments/commentRss/143464.htmlhttp://m.shnenglu.com/mmdengwo/services/trackbacks/143464.html

 杞澆鑷?Protocol Buffers Language Guide涔媝roto鏂囦歡綾誨瀷鏍煎紡鍒嗘瀽[鍏抽敭鐐圭炕璇慮 | 婕傛硦濡傞

浠婂ぉ鏉ヤ粙緇嶄竴涓?#8220;Protocol Buffers”錛堜互涓嬬畝縐皃rotobuf錛夎繖涓帺鎰忓効銆?span id=more-62 style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; BACKGROUND-COLOR: transparent; BORDER-RIGHT-WIDTH: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; background-origin: initial; background-clip: initial">

鈽?strong style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; BACKGROUND-COLOR: transparent; BORDER-RIGHT-WIDTH: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; background-origin: initial; background-clip: initial">protobuf鏄暐鐜╂剰鍎匡紵
涓轟簡鐓ч【浠庢病鍚榪囩殑鍚屽錛岀収渚嬪厛鏉ユ壂鐩蹭竴鎶娿?br>棣栧厛錛宲rotobuf鏄竴涓紑婧愰」鐩紙瀹樻柟绔欑偣鍦?#8220;榪欓噷 ”錛夛紝鑰屼笖鏄悗鍙板緢紜殑寮婧愰」鐩傜綉涓婄幇鏈夌殑澶ч儴鍒嗭紙鑷沖皯80%錛夊紑婧愰」鐩紝瑕佷箞鏄煇浜哄崟騫層佽涔堟槸鍑犱釜闂叉潅浜虹瓑鍚堜紮鎼炪傝宲rotobuf鍒欎笉鐒?dòng)灱屽畠鏄?榧庨紟澶у悕鐨凣oogle鍏徃寮鍙戝嚭鏉ワ紝騫朵笖鍦℅oogle鍐呴儴涔呯粡鑰冮獙鐨勪竴涓笢涓溿傜敱姝ゅ彲瑙侊紝瀹冪殑浣滆呯粷闈炰竴鑸棽鏉備漢絳夊彲姣斻?br>閭h繖涓惉璧鋒潵鐗沊鐨勪笢涓滃埌搴曟湁鍟ョ敤澶勬崗錛熺畝鍗曞湴璇達(dá)紝榪欎釜涓滀笢騫茬殑浜嬪効鍏跺疄鍜孹ML宸笉澶氾紝涔熷氨鏄妸鏌愮鏁版嵁緇撴瀯鐨勪俊鎭紝浠ユ煇縐嶆牸寮忎繚瀛樿搗鏉ャ備富瑕佺敤浜庢暟鎹瓨鍌ㄣ佷紶杈撳崗璁牸寮忕瓑 鍦哄悎銆傛湁鍚屽鍙兘蹇冪悊鐘榾鍜曚簡錛氭斁鐫濂藉ソ鐨刋ML涓嶇敤錛屽共鍢涢噸鏂板彂鏄庤疆瀛愬晩錛燂紒鍏堝埆鎬ワ紝鍚庨潰淇鴻嚜鐒朵細(xì)鏈夎閬撱?br>璇濊鍒頒簡鍘誨勾錛堝ぇ綰︽槸08騫? 鏈堬級(jí)錛孏oogle紿佺劧澶у彂鎱堟?zhèn)插Q屾妸榪欎釜濂戒笢瑗胯礎(chǔ)鐚粰浜嗗紑婧愮ぞ鍖恒傝繖涓嬶紝鍍忎亢榪欑鍠滄鎹$幇鎴愮殑瀹朵紮鍙氨鏈夌鍟︼紒璨屼技鍠滄鎹$幇鎴愮殑瀹朵紮榪樿洰澶氭淮錛屽啀鍔犱笂 Google鐨勫彿鍙姏錛屽紑婧愬悗涓嶅埌涓騫達(dá)紝protobuf鐨勪漢姘斿氨宸茬粡寰堟椇浜嗐傛墍浠ヤ亢涓轟簡涓庢椂淇辮繘錛屽氨鍗曠嫭寮涓笘瀛愭潵蹇芥?zhèn)犱竴鎶娿?/p>

鈽?strong style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; BACKGROUND-COLOR: transparent; BORDER-RIGHT-WIDTH: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; background-origin: initial; background-clip: initial">protobuf鏈夊暐鐗硅壊錛?/strong>
鎵洸瀹屼簡涔嬪悗錛屽氨璇ヨ亰涓涓嬫妧鏈柟闈㈢殑璇濋浜嗐傜敱浜庤繖鐜╂剰鍎垮彂甯冪殑鏃墮棿杈冪煭錛堟湭婊″懆宀侊級(jí)錛屾墍浠ヤ亢鎺ヨЕ鐨勬椂闂翠篃涓嶉暱銆備粖澶╁湪姝ゆ槸鍏堝鐜板崠錛屽垪浣嶇湅瀹樺澶氬寘娑?span class=Apple-converted-space> :-)

鈼囨ц兘濂?鏁堢巼楂?br>鐜板湪錛屼亢灝辨潵璇磋Google鍏徃涓哄暐鏀劇潃濂界绔殑XML涓嶇敤錛岄潪瑕佸彟璧風(fēng)倝鐏訛紝閲嶆柊閫犺疆瀛愩備竴涓牴鏈殑鍘熷洜鏄疿ML鎬ц兘涓嶅濂姐?br>鍏堣鏃墮棿寮閿錛歑ML鏍煎紡鍖栵紙搴忓垪鍖栵級(jí)鐨勫紑閿鍊掕繕濂斤紱浣嗘槸XML瑙f瀽錛堝弽搴忓垪鍖栵級(jí)鐨勫紑閿灝變笉鏁㈡伃緇村暒銆備亢涔嬪墠緇忓父紕板埌涓浜涙椂闂存ц兘寰堟晱鎰熺殑鍦哄悎錛岀敱浜庝笉鍫繊鍙梄ML瑙f瀽鐨勯熷害錛屽純涔嬪鏁濆飽銆?br>鍐嶆潵鐪嬬┖闂村紑閿錛氱啛鎮(zhèn)塜ML璇硶鐨勫悓瀛﹀簲璇ョ煡閬擄紝XML鏍煎紡涓轟簡鏈夎緝濂界殑鍙鎬э紝寮曞叆浜嗕竴浜涘啑浣欑殑鏂囨湰淇℃伅銆傛墍浠ョ┖闂村紑閿涔熶笉鏄お濂斤紙涓嶈繃榪欑偣緙虹偣錛屼亢涓嶅父紕板埌錛夈?br>鐢變簬Google鍏徃璧栦互鍚瑰槝鐨勫氨鏄畠鐨勬搗閲忔暟鎹拰嫻烽噺澶勭悊鑳藉姏銆傚浜庡嚑鍗佷竾銆佷笂鐧句竾鏈哄櫒鐨勯泦緹わ紝鍔ㄤ笉鍔ㄥ氨鏄疨B綰х殑鏁版嵁閲忥紝鍝曟ц兘紼嶅井鎻愰珮0.1% 涔熸槸鐩稿綋鍙婊淬傛墍浠oogle鑷劧鏃犳硶瀹瑰繊XML鍦ㄦц兘涓婄殑鏄庢樉緙虹偣銆傚啀鍔犱笂Google浠庢潵灝變笉緙洪犺疆瀛愮殑鐗涗漢錛屾墍浠rotobuf涔熷氨搴旇繍鑰岀敓 浜嗐?br>Google瀵逛簬鎬ц兘鐨勫亸鎵э紝閭e彲鏄嚭浜嗗悕鐨勩傛墍浠ワ紝淇哄浜嶨oogle鎼炲嚭鏉rotobuf鏄潪甯告淮鏀懼績錛屾ц兘涓婁笉鏁㈣鏄渶濂斤紝浣嗚偗瀹氫笉浼?xì)澶樊銆?/p>

鈼囦唬鐮佺敓鎴愭満鍒?br>闄や簡鎬ц兘濂斤紝浠g爜鐢熸垚鏈哄埗鏄富瑕佸惛寮曚亢鐨勫湴鏂廣備負(fù)浜嗚鏄庤繖涓唬鐮佺敓鎴愭満鍒訛紝淇轟婦涓緥瀛愩?br>姣斿鏈変釜鐢?shù)瀛愬晢鍔$殑绯痪l燂紙鍋囪鐢–++瀹炵幇錛夛紝鍏朵腑鐨勬ā鍧桝闇瑕佸彂閫佸ぇ閲忕殑璁㈠崟淇℃伅緇欐ā鍧桞錛岄氳鐨勬柟寮忎嬌鐢╯ocket銆?br>鍋囪璁㈠崟鍖呮嫭濡備笅灞炴э細(xì)
錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞
鏃墮棿錛歵ime錛堢敤鏁存暟琛ㄧず錛?br>瀹㈡埛id錛歶serid錛堢敤鏁存暟琛ㄧず錛?br>浜ゆ槗閲戦錛歱rice錛堢敤嫻偣鏁拌〃紺猴級(jí)
浜ゆ槗鐨勬弿榪幫細(xì)desc錛堢敤瀛楃涓茶〃紺猴級(jí)
錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞
濡傛灉浣跨敤protobuf瀹炵幇錛岄鍏堣鍐欎竴涓猵roto鏂囦歡錛堜笉濡ㄥ彨Order.proto錛夛紝鍦ㄨ鏂囦歡涓坊鍔犱竴涓悕涓?#8221;Order”鐨刴essage緇撴瀯錛岀敤鏉ユ弿榪伴氳鍗忚涓殑緇撴瀯鍖栨暟鎹傝鏂囦歡鐨勫唴瀹瑰ぇ鑷村涓嬶細(xì)
錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞
message Order
{
required int32 time = 1;
required int32 userid = 2;
required float price = 3;
optional string desc = 4;
}
錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞

鐒跺悗錛屼嬌鐢╬rotobuf鍐呯疆鐨勭紪璇戝櫒緙栬瘧 璇roto銆傜敱浜庢湰渚嬪瓙鐨勬ā鍧楁槸C++錛屼綘鍙互閫氳繃protobuf緙栬瘧鍣ㄧ殑鍛戒護(hù)琛屽弬鏁幫紙鐪?#8220;榪欓噷 ”錛夛紝鎸囧畾瀹冪敓鎴怌++璇█鐨?#8220;璁㈠崟鍖呰綾?#8221;銆傦紙涓鑸潵璇達(dá)紝涓涓猰essage緇撴瀯浼?xì)鐢熸垚涓涓寘瑁呯被錛?br>鐒跺悗浣犱嬌鐢ㄧ被浼間笅闈㈢殑浠g爜鏉ュ簭鍒楀寲/瑙f瀽璇ヨ鍗曞寘瑁呯被錛?br>錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞

// 鍙戦佹柟
Order order;
order.set_time(XXXX);
order.set_userid(123);
order.set_price(100.0f);
order.set_desc(“a test order”);

string sOrder;
order.SerailzeToString(&sOrder);
// 鐒跺悗璋冪敤鏌愮socket鐨勯氳搴撴妸搴忓垪鍖栦箣鍚庣殑瀛楃涓插彂閫佸嚭鍘?br>// ……

錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞
// 鎺ユ敹鏂?br>string sOrder;
// 鍏堥氳繃緗戠粶閫氳搴撴帴鏀跺埌鏁版嵁錛屽瓨鏀懼埌鏌愬瓧絎︿覆sOrder
// ……

Order order;
if(order.ParseFromString(sOrder)) // 瑙f瀽璇ュ瓧絎︿覆
{
cout << “userid:” << order.userid() << endl
<< “desc:” << order.desc() << endl;
}
else
{
cerr << “parse error!” << endl;
}
錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞

鏈変簡榪欑浠g爜鐢熸垚鏈哄埗錛屽紑鍙戜漢鍛樺啀涔熶笉鐢ㄥ惌鍝у惌鍝у湴緙栧啓閭d簺鍗忚瑙f瀽鐨勪唬鐮佷簡錛堝共榪欑媧繪槸鍏稿瀷鐨勫悆鍔涗笉璁ㄥソ錛夈?br>涓囦竴灝嗘潵闇姹傚彂鐢熷彉鏇達(dá)紝瑕佹眰緇欒鍗曞啀澧炲姞涓涓?#8220;鐘舵?#8221;鐨勫睘鎬э紝閭e彧闇瑕佸湪Order.proto鏂囦歡涓鍔犱竴琛屼唬鐮併傚浜庡彂閫佹柟錛堟ā鍧桝錛夛紝鍙澧炲姞涓琛岃緗姸鎬佺殑浠g爜錛涘浜庢帴鏀舵柟錛堟ā鍧桞錛夊彧瑕佸鍔犱竴琛岃鍙栫姸鎬佺殑浠g爜銆傚搰濉烇紝綆鐩村お杞繪澗浜嗭紒
鍙﹀錛屽鏋滈氳鍙屾柟浣跨敤涓嶅悓鐨勭紪紼嬭璦鏉ュ疄鐜幫紝浣跨敤榪欑鏈哄埗鍙互鏈夋晥紜繚涓よ竟鐨勬ā鍧楀浜庡崗璁殑澶勭悊鏄竴鑷寸殑銆?br>欏轟究璺戦涓涓嬨?br>浠庢煇縐嶆剰涔変笂璁詫紝鍙互鎶妏roto鏂囦歡鐪嬫垚鏄弿榪伴氳鍗忚鐨勮鏍艱鏄庝功錛堟垨鑰呭彨鎺ュ彛瑙勮寖錛夈傝繖縐嶄紟淇╁叾瀹炶佹棭灝辨湁浜嗭紝鎼炶繃寰蔣鐨凜OM緙栫▼鎴栬呮帴瑙﹁繃CORBA鐨勫悓瀛︼紝搴旇閮借兘浠庝腑鐪嬪埌IDL錛堣緇嗚В閲婄湅“榪欓噷 ”錛夌殑褰卞瓙銆傚畠浠殑鎬濇兂鏄浉閫氭淮銆?/p>

鈼囨敮鎸?#8220;鍚戝悗鍏煎”鍜?#8220;鍚戝墠鍏煎”
榪樻槸鎷垮垰鎵嶇殑渚嬪瓙鏉ヨ浜嬪効銆備負(fù)浜嗗彊榪版柟渚匡紝淇烘妸澧炲姞浜?#8220;鐘舵?#8221;灞炴х殑璁㈠崟鍗忚鎴愪負(fù)“鏂扮増鏈?#8221;錛涗箣鍓嶇殑鍙?#8220;鑰佺増鏈?#8221;銆?br>鎵璋撶殑“鍚戝悗鍏煎”錛坆ackward compatible錛夛紝灝辨槸璇達(dá)紝褰撴ā鍧桞鍗囩駭浜嗕箣鍚庯紝瀹冭兘澶熸紜瘑鍒ā鍧桝鍙戝嚭鐨勮佺増鏈殑鍗忚銆傜敱浜庤佺増鏈病鏈?#8220;鐘舵?#8221;榪欎釜灞炴э紝鍦ㄦ墿鍏呭崗璁椂錛屽彲浠ヨ冭檻鎶?#8220;鐘舵?#8221;灞炴ц緗垚闈炲繀濉?/strong> 鐨勶紝鎴栬呯粰“鐘舵?#8221;灞炴ц緗竴涓己鐪佸鹼紙濡備綍璁劇疆緙虹渷鍊鹼紝鍙傝“榪欓噷 ”錛夈?br>鎵璋撶殑“鍚戝墠鍏煎”錛坒orward compatible錛夛紝灝辨槸璇達(dá)紝褰撴ā鍧桝鍗囩駭浜嗕箣鍚庯紝妯″潡B鑳藉姝e父璇嗗埆妯″潡A鍙戝嚭鐨勬柊鐗堟湰鐨勫崗璁傝繖鏃跺欙紝鏂板鍔犵殑“鐘舵?#8221;灞炴т細(xì)琚拷鐣ャ?br>“鍚戝悗鍏煎”鍜?#8220;鍚戝墠鍏煎”鏈夊暐鐢ㄦ崗錛熶亢涓句釜渚嬪瓙錛氬綋浣犵淮鎶や竴涓緢搴炲ぇ鐨勫垎甯冨紡緋葷粺鏃訛紝鐢變簬浣犳棤娉?strong style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; BACKGROUND-COLOR: transparent; BORDER-RIGHT-WIDTH: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; background-origin: initial; background-clip: initial">鍚屾椂 鍗囩駭鎵鏈?/strong> 妯″潡錛屼負(fù)浜嗕繚璇佸湪鍗囩駭榪囩▼涓紝鏁翠釜緋葷粺鑳藉灝藉彲鑳戒笉鍙楀獎(jiǎng)鍝嶏紝灝遍渶瑕佸敖閲忎繚璇侀氳鍗忚鐨?#8220;鍚戝悗鍏煎”鎴?#8220;鍚戝墠鍏煎”銆?/p>

鈼囨敮鎸佸縐嶇紪紼嬭璦
淇哄紑鍗氫互鏉ョ偣璇勭殑鍑犱釜寮婧愰」鐩紙姣斿“Sqlite ”銆?#8220;cURL ”錛夛紝閮芥槸鏀寔寰堝縐?/strong> 緙栫▼璇█婊達(dá)紝榪欐鐨刾rotobuf涔熶笉渚嬪銆傚湪Google瀹樻柟鍙戝竷鐨勬簮浠g爜涓寘鍚簡C++銆丣ava銆丳ython涓夌璇█錛堟濂戒篃鏄亢鏈甯哥敤鐨勪笁縐嶏紝鐪熺埥錛夈傚鏋滀綘騫蟲椂鐢ㄧ殑灝辨槸榪欎笁縐嶈璦涔嬩竴錛岄偅灝卞ソ鍔炰簡銆?br>鍋囧浣犳兂鎶妏rotobuf鐢ㄤ簬鍏跺畠璇█錛屽拫鍔炴崗錛熺敱浜嶨oogle涓鍛肩櫨搴旂殑鍙峰彫鍔涳紝寮婧愮ぞ鍖哄protobuf鍝嶅簲韙婅穬錛岃繎鏈熷啋鍑哄緢澶氬叾瀹冪紪紼嬭璦 鐨勭増鏈紙姣斿ActionScript銆丆#銆丩isp銆丒rlang銆丳erl銆丳HP銆丷uby絳夛級(jí)錛屾湁浜涜璦榪樺悓鏃舵悶鍑轟簡澶氫釜寮婧愮殑欏圭洰銆傚叿浣撶粏鑺傚彲浠ュ弬瑙?#8220;榪欓噷 ”銆?br>涓嶈繃淇烘湁涔夊姟鎻愰啋涓涓嬪湪搴х殑鍚勪綅鍚屽銆傚鏋滀綘鑰冭檻鎶妏rotobuf鐢ㄤ簬涓婅堪榪欎簺璇█錛屼竴瀹氳鐪熻瘎浼板搴旂殑寮婧愬簱銆傚洜涓鴻繖浜涘紑婧愬簱涓嶆槸Google瀹樻柟鎻愪緵鐨勩佽屼笖鍑烘潵鐨勬椂闂磋繕涓嶉暱銆傛墍浠ワ紝瀹冧滑鐨勮川閲忋佹ц兘絳夋柟闈㈠彲鑳借繕鏈夋瑺緙恒?/p>

鈽?strong style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; BACKGROUND-COLOR: transparent; BORDER-RIGHT-WIDTH: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; background-origin: initial; background-clip: initial">protobuf鏈夊暐緙洪櫡錛?/strong>
鍓嶅嚑澶╁垰鍒氬湪“鍏夌幆鏁堝簲 ”鐨勫笘瀛愰噷寮鴻皟浜?#8220;瑕佸悓鏃惰瘎浼頒紭鐐瑰拰緙虹偣”銆傛墍浠ヤ亢鏈鍚庡啀鏉ユ壒鍒や竴涓嬭繖鐜╂剰鍎跨殑緙虹偣銆?br>鈼囧簲鐢ㄤ笉澶熷箍
鐢變簬protobuf鍒氬叕甯冩病澶氫箙錛岀浉姣擷ML鑰岃█錛宲rotobuf榪樺睘浜庡垵鍑鴻寘搴愩傚洜姝わ紝鍦ㄧ煡鍚嶅害銆佸簲鐢ㄥ箍搴︾瓑鏂歸潰閮借繙涓嶅XML銆傜敱浜庤繖涓師鍥狅紝鍋囧浣犺璁$殑緋葷粺闇瑕佹彁渚涜嫢騫插澶栫殑鎺ュ彛緇欑涓夋柟緋葷粺璋冪敤錛屼亢濂夊姖浣犳殏鏃朵笉瑕佽冭檻protobuf鏍煎紡銆?br>鈼囦簩榪涘埗鏍煎紡瀵艱嚧鍙鎬у樊
涓轟簡鎻愰珮鎬ц兘錛宲rotobuf閲囩敤浜嗕簩榪涘埗鏍煎紡榪涜緙栫爜銆傝繖鐩存帴瀵艱嚧浜嗗彲璇繪у樊鐨勯棶棰橈紙涓ユ牸鍦拌錛屾槸娌℃湁鍙鎬э級(jí)銆傝櫧鐒秔rotobuf鎻愪緵浜員extFormat榪欎釜宸ュ叿綾伙紙鏂囨。鍦?#8220;榪欓噷 ”錛夛紝浣嗙粓絀舵棤娉曞交搴曡В鍐蟲闂銆?br>鍙鎬у樊鐨勫嵄瀹籌紝淇哄啀鏉ヤ婦涓緥瀛愩傛瘮濡傞氳鍙屾柟濡傛灉鍑虹幇闂錛屾瀬鏄撳鑷存壇鐨紙閮戒笉鎵胯鑷繁鏈夐棶棰橈紝閮借鏄鏂圭殑閿欙級(jí)銆備亢瀵逛粯鎵毊鐨勪竴涓畝鍗曟柟娉曞氨鏄洿鎺?鎶撳寘騫禿ump鎴恖og錛岃兘姣旇緝瀹規(guī)槗鍦扮湅鍑洪敊璇湪鍝竴鏂廣備絾鏄痯rotobuf鐨勪簩榪涘埗鏍煎紡錛屽鑷翠綘鎶撳寘騫剁洿鎺ump鍑烘潵鐨刲og闅句互鐪嬫噦銆?br>鈼囩己涔忚嚜鎻忚堪
涓鑸潵璇達(dá)紝XML鏄嚜鎻忚堪鐨勶紝鑰宲rotobuf鏍煎紡鍒欎笉鏄傜粰浣犱竴孌典簩榪涘埗鏍煎紡鐨勫崗璁唴瀹癸紝濡傛灉涓嶉厤鍚堢浉搴旂殑proto鏂囦歡錛岄偅綆鐩村氨鍍忓ぉ涔︿竴鑸?br>鐢變簬“緙轟箯鑷弿榪?#8221;錛屽啀鍔犱笂“浜岃繘鍒舵牸寮忓鑷村彲璇繪у樊”銆傛墍浠ュ湪閰嶇疆鏂囦歡鏂歸潰錛宲rotobuf鏄偗瀹氭棤娉曞彇浠ML鐨勫湴浣嶆淮銆?/p>

娌涙矝 2011-04-05 18:26 鍙戣〃璇勮
]]>
久久国产三级无码一区二区| 九九久久精品无码专区| 久久久久久久波多野结衣高潮 | 久久中文精品无码中文字幕| 久久久久久久久久免免费精品 | 久久高潮一级毛片免费| 一本久久a久久精品综合香蕉| 婷婷伊人久久大香线蕉AV| 久久99精品国产一区二区三区| 国产精品成人久久久久三级午夜电影| 中文字幕无码久久久| 国产精品久久久天天影视| 亚洲精品97久久中文字幕无码| 久久91精品国产91久久户| 久久无码AV一区二区三区| 99热成人精品热久久669| 欧美亚洲国产精品久久| 久久99国产精品久久| 亚洲国产精品无码久久青草| 久久亚洲国产午夜精品理论片 | 国产精品免费看久久久| 亚洲欧洲精品成人久久曰影片| 免费观看久久精彩视频| 热re99久久6国产精品免费| 欧美日韩中文字幕久久久不卡| 国产情侣久久久久aⅴ免费| 国色天香久久久久久久小说| 久久久精品国产亚洲成人满18免费网站 | 亚洲中文字幕无码一久久区| 色婷婷狠狠久久综合五月| 久久精品无码一区二区三区| 久久久久亚洲精品天堂| 久久精品毛片免费观看| 亚洲愉拍99热成人精品热久久| 久久国产精品波多野结衣AV| 国产精品va久久久久久久| 久久久久免费精品国产| 99久久精品这里只有精品| 91麻精品国产91久久久久| 国产日韩久久免费影院| 久久亚洲电影|