锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产AV无码一区二区三区 ,亚洲男同gay片,久久综合久久综合亚洲http://m.tkk7.com/DLevin/category/54894.htmlIn general the OO style is to use a lot of little objects with a lot of little methods that give us a lot of plug points for overriding and variation. To do is to be -Nietzsche, To bei is to do -Kant, Do be do be do -Sinatrazh-cnMon, 03 Aug 2015 11:21:43 GMTMon, 03 Aug 2015 11:21:43 GMT60娣卞叆Protobuf婧愮爜錛岲escriptor銆丮essage銆丷PC妗嗘灦http://m.tkk7.com/DLevin/archive/2015/04/01/424012.htmlDLevinDLevinWed, 01 Apr 2015 01:31:00 GMThttp://m.tkk7.com/DLevin/archive/2015/04/01/424012.htmlhttp://m.tkk7.com/DLevin/comments/424012.htmlhttp://m.tkk7.com/DLevin/archive/2015/04/01/424012.html#Feedback1http://m.tkk7.com/DLevin/comments/commentRss/424012.htmlhttp://m.tkk7.com/DLevin/services/trackbacks/424012.htmlDescriptor妗嗘灦瀵歸潪optimize_for涓?/span>LITE_RUNTIME鐨?/span>proto鏂囦歡錛?/span>protobuf緙栬瘧鍣ㄤ細鍦ㄧ紪璇戝嚭鐨?/span>Java浠g爜鏂囦歡鏈熬娣誨姞涓涓?/span>FileDescriptor闈欐佸瓧孌典互鎻忚堪璇?/span>proto鏂囦歡瀹氫箟鏃剁殑鎵鏈夊厓鏁版嵁淇℃伅銆佷負姣忎釜message瀵硅薄瀹氫箟涓涓?/span>Descriptor闈欐佸瓧孌典互鎻忚堪璇?/span>message瀹氫箟鏃剁殑鍏冩暟鎹俊鎭佷負姣忎釜message瀵硅薄瀹氫箟涓涓?/span>FieldAccessorTable闈欐佸瓧孌電敤浜庝嬌鐢ㄥ弽灝勮鍙?/span>/璁劇疆鏌愪釜瀛楁鐨勫肩瓑錛堜互鎻愪緵GeneratedMessage涓柟娉曠殑鍙嶅皠瀹炵幇錛夛細    
private static Descriptor inter-nal_static_levin_protobuf_Result_descriptor;
private static FieldAccessorTable inter-nal_static_levin_protobuf_Result_fieldAccessorTable;
private static Descriptor inter-nal_static_levin_protobuf_SearchResponse_descriptor;
private static FieldAccessorTable inter-nal_static_levin_protobuf_SearchResponse_fieldAccessorTable;
private static FileDescriptor descriptor;

鍦?/span>protobuf涓瓨鍦ㄥ縐嶇被鍨嬬殑鍏冩暟鎹弿榪扮被錛?/span>

1.     FileDescriptor錛氬涓涓?/span>proto鏂囦歡鐨勬弿榪幫紝瀹冨寘鍚枃浠跺悕銆佸寘鍚嶃侀夐」錛堝java_package銆?/span>java_outer_classname絳夛級銆佹枃浠朵腑瀹氫箟鐨勬墍鏈?/span>message銆佹枃浠朵腑瀹氫箟鐨勬墍鏈?/span>enum銆佹枃浠朵腑瀹氫箟鐨勬墍鏈?/span>service銆佹枃浠朵腑鎵鏈夊畾涔夌殑extension銆佹枃浠朵腑瀹氫箟鐨勬墍鏈変緷璧栨枃浠訛紙import錛夌瓑銆傚湪FileDescriptor涓繕瀛樺湪涓涓?/span>DescriptorPool瀹炰緥錛屽畠淇濆瓨浜嗘墍鏈夌殑dependencies(渚濊禆鏂囦歡鐨?/span>FileDescriptor)銆?/span>name鍒?/span>GenericDescriptor鐨勬槧灝勩佸瓧孌靛埌FieldDescriptor鐨勬槧灝勩佹灇涓鵑」鍒?/span>EnumValueDescriptor鐨勬槧灝勶紝浠庤屽彲浠ヤ粠璇?/span>DescriptorPool涓煡鎵劇浉鍏崇殑淇℃伅錛屽洜鑰屽彲浠ラ氳繃鍚嶅瓧浠?/span>FileDescriptor涓煡鎵?/span>Message銆?/span>Enum銆?/span>Service銆?/span>Extensions絳夈?/span>

2.   Descriptor錛氬涓涓?/span>message瀹氫箟鐨勬弿榪幫紝瀹冨寘鍚message瀹氫箟鐨勫悕瀛椼佹墍鏈夊瓧孌點佸唴宓?/span>message銆佸唴宓?/span>enum銆佸叧鑱旂殑FileDescriptor絳夈傚彲浠ヤ嬌鐢ㄥ瓧孌靛悕鎴栧瓧孌靛彿鏌ユ壘FieldDescriptor銆?/span>

3.   FieldDescriptor錛氬涓涓瓧孌墊垨鎵╁睍瀛楁瀹氫箟鐨勬弿榪幫紝瀹冨寘鍚瓧孌靛悕銆佸瓧孌靛彿銆佸瓧孌電被鍨嬨佸瓧孌靛畾涔?/span>(required/optional/repeated/packed)銆侀粯璁ゅ箋佹槸鍚︽槸鎵╁睍瀛楁浠ュ強鍜屽畠鍏寵仈鐨?/span>Descriptor/FileDescriptor絳夈?/span>

4.   EnumDescriptor錛氬涓涓?/span>enum瀹氫箟鐨勬弿榪幫紝瀹冨寘鍚?/span>enum鍚嶃佸叏鍚嶃佸拰瀹冨叧鑱旂殑FileDescriptor銆傚彲浠ヤ嬌鐢ㄦ灇涓鵑」鎴栨灇涓懼兼煡鎵?/span>EnumValueDescriptor銆?/span>

5.   EnumValueDescriptor錛氬涓涓灇涓鵑」瀹氫箟鐨勬弿榪幫紝瀹冨寘鍚灇涓懼悕銆佹灇涓懼箋佸叧鑱旂殑EnumDescriptor/FileDescriptor絳夈?/span>

6.   ServiceDescriptor錛氬涓涓?/span>service瀹氫箟鐨勬弿榪幫紝瀹冨寘鍚?/span>service鍚嶃佸叏鍚嶃佸叧鑱旂殑FileDescriptor絳夈?/span>

7.   MethodDescriptor錛氬涓涓湪service涓殑method鐨勬弿榪幫紝瀹冨寘鍚?/span>method鍚嶃佸叏鍚嶃佸弬鏁扮被鍨嬨佽繑鍥炵被鍨嬨佸叧鑱旂殑FileDescriptor/ServiceDescriptor絳夈?/span>

鏈鍚庯紝protobuf緙栬瘧鐢熸垚鐨勪唬鐮佹湯灝捐繕鏈変竴涓?/span>descriptorData瀛楃涓叉暟緇勶紝瀹冩槸搴忓垪鍖栧悗鐨?/span>FileDescriptorProto鏁版嵁錛屽湪闈欐佸垵濮嬪寲鍧椾腑鍙互璋冪敤FileDescriptor.internalBuildGeneratedFileFrom()鏂規硶鏋勯犳暣涓?/span>FileDescriptor瀹炰緥錛屽湪瀹屾垚FileDescriptor鐨勬瀯閫犲悗錛岃繕浼氬洖璋冧紶鍏ョ殑InternalDescriptorAssigner瀹炰緥浠ュ垵濮嬪寲鍏朵粬鐨勯潤鎬佸瓧孌碉紝濡備互涓婃彁鍒扮殑鎵鏈夌殑闈欐佸瓧孌點?br />

鍦?/span>protobuf涓?/span>Descriptor鐨勭被鍥撅細


Message銆丮essageLite妗嗘灦

搴忓垪鍖栧拰鍙嶅簭鍒楀寲鏄?/span>protobuf鏈鍩虹鐨勬鏋訛紝瀹冧嬌鐢?/span>MessageLite/Message鎺ュ彛鏉ユ娊璞′竴涓彲搴忓垪鍖栫殑瀹炰緥錛?/span>騫朵笖浣跨敤Builder浠庡瓧鑺傛暟緇勬垨杈撳叆瀛楄妭嫻佷腑鏋勫緩MessageLite/Message瀹炰緥錛?/span>MessageLite鍜?/span>Message鍐呴儴閮藉畾涔変簡鑷繁鐨?/span>Builder綾伙紝浠栦滑涓瓧緇ф壙鑷?/span>MessageLiteOrBuilder浠ュ強MessageOrBuiler錛屽畠浠畾涔変簡MessageLite/Message鍜屽畠浠悇鑷?/span>Builder綾葷殑鍏卞悓鎺ュ彛銆?/span>

MessageLiteOrBuilder鎺ュ彛鍙畾涔変簡MessageLite鍜?/span>MessageLite.Builder涓や釜鎺ュ彛鍏辨湁鐨勪袱涓柟娉曪細getDefaultInstanceForType()鏂規硶鑾峰彇涓涓綋鍓嶈繕鏈垵濮嬪寲鐨勫綋鍓?/span>Message瀹炰緥(娌℃湁瀛楁琚祴鍊鹼紝鍥犺屾墍鏈夊瓧孌佃繑鍥為粯璁ゅ鹼紝瀵?/span>repeat瀛楁榪斿洖絀猴紝鍦ㄥ綋鍓?/span>protobuf 2.5.0鐨勫疄鐜頒腑錛屽畠榪斿洖鐨勬槸涓涓崟渚嬶紝鍜屾瘡涓敓鎴愮殑闈欐佹柟娉?/span>getDefaultInstance()榪斿洖鐩稿悓鐨勫疄渚?/span>)錛?/span>isInitialized()鏂規硶鐢ㄦ潵鍒ゆ柇鏄惁鎵鏈?/span>required瀛楁宸茬粡琚祴鍊箋?/span>MessageLite鎺ュ彛涓畾涔変簡涓や釜writeTo()鏂規硶鍒嗗埆灝嗗綋鍓嶅疄渚嬪簭鍒楀寲騫跺啓鍏ヨ緭鍑哄瓧鑺傛祦涓紝鑰屽彟涓涓?/span>writeDelimitedTo()鏂規硶鍒欏湪鍐欏叆涔嬪墠灝嗗綋鍓嶅疄渚嬬殑鎬婚暱搴﹀啓鍏ヨ緭鍑哄瓧鑺傛祦涓紙浠ュ彲鍙橀暱32浣?/span>Int緙栫爜鏂瑰紡錛夛紝浠庤屽彲浠ュ悓鏃跺悜涓涓緭鍑哄瓧鑺傛祦涓啓鍏ュ涓?/span>Message瀹炰緥錛?/span>MessageLite涓繕瀹氫箟浜嗚幏鍙栧綋鍓?/span>MessageLite鍦ㄥ簭鍒楀寲鎴愬瓧鑺傛祦鍚庣殑鎬誨瓧鑺傛暟鐨勬柟娉?/span>getSerializedSize()錛屼袱涓洿鎺ヨ繑鍥炲瓧鑺傛暟緇勭殑toByteArray()/toByteString()鏂規硶錛屼互鍙婅幏鍙栧畠鐨?/span>Parser瀹炰緥(getParserForType())鍜岃繑鍥炲畠鐨?/span>Builder瀹炰緥(toBuilder()錛嶅垱寤轟竴涓柊鐨?/span>Builder瀹炰緥/newBuilderForType()錛嶇敤褰撳墠MessageLite綾誨垵濮嬪寲涓涓柊鐨?/span>Builder瀹炰緥騫惰繑鍥?/span>)鏂規硶銆傚叾涓?/span>Builder鎺ュ彛鐢ㄤ簬浠庡瓧鑺傛祦鎴栧瓧鑺傛暟緇勪腑瑙f瀽騫舵瀯閫?/span>MessageLite瀵硅薄(鍚勭鐗堟湰鐨?/span>mergeFrom()鏂規硶錛屽鏋滃彂閫佺鍐欏叆浜?/span>MessageLite瀛楄妭闀垮害錛屽垯浣跨敤mergeDelimitedFrom()鏂規硶)錛屾渶鍚?/span>Builder浣跨敤build()鏂規硶鏋勯?/span>MessageLite瀵硅薄錛屾鏃跺鏋滄湁required瀛楁榪樻湭琚緗紝浼氭姏鍑?/span>UninitializedMessageException錛屼負浜嗛伩鍏嶆姏鍑哄紓甯革紝鍙互浣跨敤buildPartial()鏂規硶錛涘彟澶?/span>Builder榪樺畾涔変簡clone()鍜?/span>clear()鏂規硶錛涘湪鐢熸垚鐨勬瘡涓?/span>Message瀵硅薄涓兘瀹氫箟浜嗕竴涓?/span>newBuilder()闈欐佹柟娉曪紝涓鑸嬌鐢ㄨ闈欐佹柟娉曞垵濮嬪寲涓涓?/span>Builder瀹炰緥銆?/span>Parser鎺ュ彛涔熷畾涔変簡鍚勪釜鐗堟湰鐨?/span>parseFrom()/parsePartialFrom()/parseDelimitedFrom()/parsePartialDelimitedFrom()鏂規硶鐢ㄦ潵浠庡瓧鑺傛暟緇勬垨瀛楄妭嫻佷腑瑙f瀽鍑?/span>Message瀹炰緥錛屽湪鐢熸垚鐨勪唬鐮佷腑錛?/span>Builder鐨勫疄鐜扮洿鎺ヨ皟鐢?/span>Parser瀹炵幇綾諱腑鐨勬柟娉曘?/span>

鍦ㄥぇ閮ㄥ垎鎯呭喌涓嬶紝MessageLite宸茬粡鑳藉畬鎴愭墍鏈夌殑搴忓垪鍖栧拰鍙嶅簭鍒楀寲鎿嶄綔浜嗭紝鐗瑰埆鏄竴浜涜祫婧愭湁闄愰鎵嬫寔璁懼錛屽畠濡傛灉榪愯鏁翠釜protobuf搴撲細鏄懼緱澶楄祫婧愶紱鍙互鍦?/span>.proto鏂囦歡涓姞鍏ヤ竴涓嬫寚浠ゆ潵鍛婅瘔protobuf緙栬瘧鍣ㄥ彧闇瑕佺敓鎴愬疄鐜?/span>MessageLite鐨勭被錛?/span>

option optimize_for = LITE_RUNTIME

鐒惰屽涓鑸殑Server紼嬪簭鏉ヨ錛屾垜浠茍涓嶅湪涔庤繖鐐硅祫婧愮殑鎹熻楋紝鍥犺屼細閫夋嫨瀹炵幇Message鎺ュ彛錛屽畠鐩告瘮MessageLite錛屾坊鍔犱簡Descriptors鐩稿叧鐨勬敮鎸侊紝鍗蟲敮鎸佷嬌鐢?/span>FieldDescriptor鏉ユ瀯寤?/span>Message.Builder瀹炰緥騫舵渶緇堟瀯寤?/span>Message瀹炰緥銆?/span>

MessageOrBuilder鎺ュ彛緇ф壙鑷?/span>MessageLiteOrBuilder鎺ュ彛錛屽畠瀹氫箟浜?/span>Message鍜?/span>Message.Builder鍏辨湁鐨勬帴鍙o紝鍗蟲坊鍔犱簡Descriptor銆?/span>FieldDescriptor絳夌浉鍏崇殑鎵╁睍銆傜敱浜庡疄鐜?/span>Message鍜?/span>Message.Builder鎺ュ彛鐨勭被淇濆瓨浜嗘墍鏈?/span>Message瀹氫箟鏃跺叿鏈夌殑淇℃伅(鏂囦歡鍚嶃佸寘鍚嶃佸瓧孌靛垪琛ㄧ瓑錛屼嬌鐢ㄥ悇縐?/span>Descriptor綾繪潵鎶借薄)錛屽洜鑰屾垜浠彲浠ヤ嬌鐢?/span>Message/Message.Builder綾昏幏鍙栧埌鏇村鐨勪俊鎭紝濡備竴涓?/span>Message/Message.Builder娌℃湁璧嬪兼墍鏈?/span>required鐨勫瓧孌碉紝鍙互浣跨敤findInitializationErrors()鏂規硶鏉ヨ幏鍙栨墍鏈夋湭璧嬪肩殑瀛楁鍒楄〃(瀛楁鐨勫叏璺緞鍚嶏紝getInitializationErrorString()鏄繖涓垪琛ㄧ殑瀛楃涓插艦寮忚〃杈撅紝涓轟簡鎻愬崌鎬ц兘錛屽緩璁嬌鐢?/span>isInitialized()鏂規硶鍏堝仛鍒濇鍒ゆ柇錛屽洜涓哄畠鏇村揩)錛涘彟澶栧湪MessageOrBuilder涓繕瀹氫箟浜嗗綋鍓?/span>Message瀵瑰簲鐨?/span>Descriptor瀹炰緥錛?/span>getDescriptorForType()鏂規硶錛岃幏鍙栨墍鏈夊凡緇忚祴鍊肩殑FieldDescriptor鍒板叾鍊肩殑涓涓?/span>Map錛?/span>getAllFields()錛岄氳繃FieldDescriptor鍙栧緱鍏跺鹼細getField()錛屽垽鏂竴涓瓧孌墊槸鍚﹀凡緇忚璧嬪鹼細hasField()錛岃幏鍙?/span>repeated瀛楁鐨?/span>count錛?/span>getRepeatedFieldCount()錛岄氳繃FieldDescriptor浠ュ強index鑾峰彇repeated瀛楁鍦?/span>index澶勭殑鍊鹼細getRepeatedField()錛岃幏鍙栨湭鐭ョ殑瀛楁錛?/span>getUnknownFields()銆?/span>Message鎺ュ彛闄や簡緇ф壙鑷?/span>MessageOrBuilder鎺ュ彛鐨勬柟娉曪紝騫舵病鏈夊畾涔夊浣欑殑鏂規硶錛屽彧鏄坊鍔犱簡equals銆?/span>hashCode銆?/span>toString鏂規硶鐨勫畾涔夈傝?/span>Message.Builder鎺ュ彛闄や簡緇ф壙鑷?/span>MessageOrBuilder鎺ュ彛浠ュ錛屽畠榪樺畾涔変簡鍩轟簬FieldDescriptor鐨勬柟娉曪紝濡傞氳繃FieldDescriptor鍒涘緩/鑾峰彇Builder瀹炰緥錛?/span>newBuilderForFileld()/getFieldBuilder()錛岄氳繃FieldDescriptor璁劇疆/娓呴櫎瀛楁鐨勫鹼細setField()/clearField()/setRepeatedField()/addRepeatedField()錛屼互鍙婅緗?/span>UnknownFields錛?/span>setUnknownFields()/mergeUnknownFields()銆?/span>

 

MessageLite/Message綾誨浘濡備笅錛?/span>



RPC妗嗘灦

闄や簡搴忓垪鍖栨鏋訛紝protobuf榪樺畾涔変簡涓濂楃畝鍗曠殑RPC妗嗘灦銆備箣鎵浠ヨ綆鍗曟槸鍥犱負瀹冨畾涔夌殑Service灞傛帴鍙g殑鍗忚錛岃屾病鏈夊叿浣撳拰浼犺緭鐩稿叧鐨勫疄鐜幫紝鑰屽彧鏄皢浼犺緭鐩稿叧鐨勯昏緫鎶借薄鎴?/span>RpcChannel鍜?/span>BlockingRpcChannel鍒嗗埆鐢ㄤ簬琛ㄧず鍚屾鍜屼竴姝ユ柟寮忕殑Service鏂規硶璋冪敤錛岃岃嚦浜庡簳灞傜敤浠涔堟牱鐨勫崗璁拰妗嗘灦錛岀敱鐢ㄦ埛鑷繁鍐沖畾騫跺疄鐜般?/span>

鎵璋?/span>RPC妗嗘灦錛屼粠鐢ㄦ埛瑙掑害涓婃渶鍩烘湰鐨勫氨鏄畾涔夊鎴風鍜屾湇鍔″櫒绔殑鍗忚錛屽嵆鏈嶅姟鍣ㄧ鏆撮湶鍑轟粈涔堟牱鐨勬帴鍙d緵瀹㈡埛绔皟鐢紝榪欎釜鎺ュ彛瀹氫箟浜嗘湇鍔″櫒鍦ㄤ竴涓?/span>Host鐨勬煇涓紙浜涳級绔彛涓婃帴鏀舵煇浜涜姹傛暟鎹紝騫舵湡鏈涜兘榪斿洖鐨勫搷搴斻傚叾涓湇鍔″櫒鍜岀鍙e彿灞炰簬浼犺緭瀹炵幇鐨勮寖鐣達紝protobuf鍙槸鐢?/span>RpcChannel/BlockingRpcChannel鐨勬蹇靛仛浜嗘娊璞★紝鑰屾病鏈夌粰鍑哄叿浣撳疄鐜幫紱鑰屾帴鏀舵煇涓姹傛暟鎹互鍙婃湡寰呯殑鍝嶅簲鏁版嵁錛屽湪protobuf浣跨敤Service/BlockingService鎶借薄鏉ュ畾涔夛紝騫朵笖榪欎篃鏄?/span>protobuf涓?/span>RPC妗嗘灦鐨勫畾涔夐儴鍒嗭紝鍏朵腑Service鍜?/span>RpcChannel鍏卞悓鏋勬垚寮傛鏂瑰紡鐨?/span>RPC妗嗘灦錛岃?/span>BlockingService鍜?/span>BlockingRpcChannel鍏卞悓鏋勬垚浜嗗悓姝ワ紙闃誨錛夋柟寮忕殑RPC妗嗘灦銆?/span>

浠庡簳灞傚疄鐜扮殑瑙掑害錛屼竴涓?/span>RPC璋冪敤灝辨槸瀹㈡埛绔彂閫佷竴浜涜姹傛暟鎹粰鏈嶅姟鍣紝鏈嶅姟鍣ㄨВ鏋愬茍澶勭悊榪欎簺璇鋒眰鏁版嵁錛岀劧鍚庡皢鍝嶅簲鏁版嵁榪斿洖緇欏鎴風銆備負浜嗛殣钘忓唴閮ㄥ疄鐜扮粏鑺傦紝鎻愬崌鍐欎唬鐮佺殑鏁堢巼錛?/span>RPC灝嗚繖涓榪囩▼灝佽鎴愭柟娉曡皟鐢紝鍗充笉鍚岀殑璇鋒眰鐢ㄤ笉鍚岀殑鏂規硶琛ㄨ揪錛岃繖灝辨槸protobuf涓?/span>RPC鐨勫畾涔夈傚湪protobuf涓紝瀹氫箟涓涓?/span>PRC鎺ュ彛姣旇緝綆鍗曪細棣栧厛寮鍚?/span>RPC鍔熻兘錛岀劧鍚庣敤service鍏抽敭瀛楀畾涔変竴涓帴鍙o紝鍦ㄦ帴鍙d腑浣跨敤rpc鍏抽敭瀛楀畾涔変竴涓柟娉曪紝鏂規硶鍖呭惈鏂規硶鍚嶃佹柟娉曞弬鏁般佽繑鍥炲鹼紝鍏朵腑鏂規硶鍙傛暟鍜岃繑鍥炲奸兘蹇呴』鏄竴涓?/span>message綾誨瀷錛屽茍涓斿彧鑳芥湁涓涓細

option java_generic_services = true;

service MyService {
    rpc request(SearchRequest) returns(SearchResponse);
}

鍦?/span>protobuf緙栬瘧鐢熸垚鐨勪唬鐮佷腑錛屽畠浼氱敓鎴愪竴涓?/span>MyService鎶借薄綾誨疄鐜頒簡Service鎺ュ彛錛屼竴鑸畠鍙槸浣滀負涓涓懡鍚嶇┖闂達紝瀹冨唴閮ㄥ畾涔変簡涓や釜鎺ュ彛錛?/span>Interface鍜?/span>BlockingInterface鏈埆緇ф壙鑷?/span>Service鎺ュ彛鍜?/span>BlockingService鎺ュ彛錛岀敤浜庢娊璞″紓姝ュ拰鍚屾鏂瑰紡鐨?/span>RPC鏂規硶璋冪敤錛涜繖涓や釜鎺ュ彛鏈変袱涓疄鐜扮被錛?/span>Stub鍜?/span>BlockingStub錛屼粬浠垎鍒帴鏀?/span>RpcChannel鍜?/span>BlockingRpcChannel瀹炰緥浣滀負鏋勯犲嚱鏁板弬鏁幫紝鍙互浣跨敤MyService涓殑闈欐佹柟娉?/span>newStub()鍜?/span>newBlockingStub()鏂規硶鑾峰彇浠栦滑鍚勮嚜瀹炰緥錛屼粬浠富瑕佺敤浜庡鎴風鐨勮皟鐢ㄣ傚湪鐢熸垚鐨?/span>request鏂規硶涓紝闄や簡request鏈韓鐨勫弬鏁幫紝榪樻湁涓涓?/span>RpcController鍙傛暟錛屽畠鐢ㄤ簬澶勭悊鍦?/span>RpcChannel/BlockingRpcChannel璋冪敤涓殑鐘舵佸鐞嗭紝濡傞敊璇鐞嗙瓑錛屼嬌鐢ㄥ畠鍙互鑾風煡姝ゆ璋冪敤鏄惁鍑洪敊錛岄敊璇俊鎭槸浠涔堢瓑銆傚湪MyService涓繕瀹氫箟浜嗕袱涓潤鎬佹柟娉?/span>newReflectiveService/newReflectiveBlockingService錛屼粬浠帴鏀?/span>Interface/BlockingInterface瀹炰緥錛屽茍榪斿洖Service/BlockingService鐨勫疄鐜板疄渚嬶紙鏆傛椂榪樻病鏈夋兂鍒頒嬌鐢ㄤ粬浠殑鍦烘櫙錛夈?/span>



鍦?/span>MyService鐨?/span>RPC妗嗘灦瀹炵幇涓紝鍦ㄦ湇鍔″櫒绔紝瀹炵幇MyService.Interface/MyService.BlockingInterface鎺ュ彛錛岀劧鍚庡皢瀹冩敞鍐屽埌瀵?/span>RpcChannel/BlockingRpcChannel妗嗘灦鐨勫疄鐜頒腑錛涘湪瀹㈡埛绔垯鍒涘緩涓涓?/span>RpcChannel/BlockingRpcChannel瀹炰緥錛屼紶鍏?/span>MyService.newStub()/MyService.newBlockingStub()鏂規硶鑾峰彇瀵瑰簲鐨勫疄渚嬶紝鐒跺悗浣跨敤榪欎釜Stub/BlockingStub瀹炰緥璋冪敤鐩稿簲鐨勬柟娉曞嵆鍙?/span>



DLevin 2015-04-01 09:31 鍙戣〃璇勮
]]>
娣卞叆Protobuf婧愮爜錛嶇紪鐮佸疄鐜?/title><link>http://m.tkk7.com/DLevin/archive/2015/04/01/424011.html</link><dc:creator>DLevin</dc:creator><author>DLevin</author><pubDate>Wed, 01 Apr 2015 01:23:00 GMT</pubDate><guid>http://m.tkk7.com/DLevin/archive/2015/04/01/424011.html</guid><wfw:comment>http://m.tkk7.com/DLevin/comments/424011.html</wfw:comment><comments>http://m.tkk7.com/DLevin/archive/2015/04/01/424011.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/DLevin/comments/commentRss/424011.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/DLevin/services/trackbacks/424011.html</trackback:ping><description><![CDATA[     鎽樿: 鍩烘湰綾誨瀷緙栫爜鍦ㄥ墠鏂囨湁鎻愬埌娑堟伅鏄竴緋誨垪鐨勫熀鏈被鍨嬩互鍙婂叾浠栨秷鎭被鍨嬬殑緇勫悎錛屽洜鑰屽熀鏈被鍨嬫槸probobuf緙栫爜瀹炵幇鐨勫熀紜錛岃繖浜涘熀鏈被鍨嬫湁錛? .proto Type Java Type C++ Type Wire Type double double double WI...  <a href='http://m.tkk7.com/DLevin/archive/2015/04/01/424011.html'>闃呰鍏ㄦ枃</a><img src ="http://m.tkk7.com/DLevin/aggbug/424011.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/DLevin/" target="_blank">DLevin</a> 2015-04-01 09:23 <a href="http://m.tkk7.com/DLevin/archive/2015/04/01/424011.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>娣卞叆Protobuf婧愮爜錛嶆榪般佷嬌鐢ㄤ互鍙婁唬鐮佺敓鎴愬疄鐜?/title><link>http://m.tkk7.com/DLevin/archive/2015/04/01/424009.html</link><dc:creator>DLevin</dc:creator><author>DLevin</author><pubDate>Wed, 01 Apr 2015 01:13:00 GMT</pubDate><guid>http://m.tkk7.com/DLevin/archive/2015/04/01/424009.html</guid><wfw:comment>http://m.tkk7.com/DLevin/comments/424009.html</wfw:comment><comments>http://m.tkk7.com/DLevin/archive/2015/04/01/424009.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/DLevin/comments/commentRss/424009.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/DLevin/services/trackbacks/424009.html</trackback:ping><description><![CDATA[     鎽樿: 姒傝堪 鎹i紦hdfs銆亂arn銆乭base銆亃ookeeper鐨勪唬鐮佷竴騫村浜嗭紝鏄椂鍊欐暣鐞嗕竴涓嬩簡銆傚湪hadoop 錛?.5.2錛変腑protobuf鏄妭鐐逛箣闂翠互鍙婂鎴風鍜屽悇涓妭鐐歸氫俊鐨勫熀紜搴忓垪鍖栨鏋訛紙鍗忚錛夛紝鑰屽熀浜巃vro鍜學ritable鐨勫簭鍒楀寲妗嗘灦鍒欐槸榪欎釜鍗忚閲岀殑payload錛屽洜鑰岃繖涓緋誨垪鐨勬枃绔犳墦綆椾粠protobuf榪欎釜妗嗘灦寮濮嬪叆鎵?鐗堟湰2.5.0)銆?浠庢娊璞$殑瑙掑害鏉ヨ錛宲rotobuf妗嗘灦鏄?..  <a href='http://m.tkk7.com/DLevin/archive/2015/04/01/424009.html'>闃呰鍏ㄦ枃</a><img src ="http://m.tkk7.com/DLevin/aggbug/424009.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/DLevin/" target="_blank">DLevin</a> 2015-04-01 09:13 <a href="http://m.tkk7.com/DLevin/archive/2015/04/01/424009.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> 主站蜘蛛池模板: <a href="http://twtairun.com" target="_blank">国产在线观看麻豆91精品免费</a>| <a href="http://snbbearing.com" target="_blank">一级毛片免费一级直接观看</a>| <a href="http://lkzrgy.com" target="_blank">在线成人爽a毛片免费软件</a>| <a href="http://hh5151.com" target="_blank">亚洲人成精品久久久久</a>| <a href="http://www961dd.com" target="_blank">在线观看黄片免费入口不卡</a>| <a href="http://taojin5.com" target="_blank">国产精品亚洲片在线</a>| <a href="http://2023852.com" target="_blank">久久这里只精品99re免费</a>| <a href="http://33eaa.com" target="_blank">亚洲综合激情九月婷婷</a>| <a href="http://qestest.com" target="_blank">四虎最新永久免费视频</a>| <a href="http://caoporg.com" target="_blank">亚洲成年网站在线观看</a>| <a href="http://zjhydouyaji.com" target="_blank">青青草国产免费久久久下载</a>| <a href="http://5shitou.com" target="_blank">免费一级特黄特色大片</a>| <a href="http://xinyuanmy.com" target="_blank">三上悠亚亚洲一区高清</a>| <a href="http://583s.com" target="_blank">日韩精品无码免费一区二区三区</a>| <a href="http://plladay.com" target="_blank">亚洲精品视频免费看</a>| <a href="http://wjjccw.com" target="_blank">免费人成视频在线</a>| <a href="http://97chaopeng2.com" target="_blank">美女无遮挡免费视频网站 </a>| <a href="http://kkk28.com" target="_blank">亚洲狠狠爱综合影院婷婷</a>| <a href="http://4438xa48.com" target="_blank">免费精品国自产拍在线播放</a>| <a href="http://zcrencai.com" target="_blank">亚洲日韩涩涩成人午夜私人影院</a>| <a href="http://b2bautoparts.com" target="_blank">五月婷婷免费视频</a>| <a href="http://pchbgs.com" target="_blank">亚洲电影中文字幕</a>| <a href="http://chn139.com" target="_blank">在线观看的免费网站</a>| <a href="http://9527paotui.com" target="_blank">色窝窝亚洲av网</a>| <a href="http://www-533999.com" target="_blank">国产亚洲一区二区三区在线观看</a>| <a href="http://yy1514.com" target="_blank">麻豆成人久久精品二区三区免费 </a>| <a href="http://dxj588.com" target="_blank">亚洲Av无码国产情品久久 </a>| <a href="http://www-777768.com" target="_blank">一级特黄a免费大片</a>| <a href="http://xxxxxxxxcccc.com" target="_blank">亚洲成a人片在线观看无码专区</a>| <a href="http://35633487.com" target="_blank">3344免费播放观看视频</a>| <a href="http://992fanli.com" target="_blank">亚洲av无码日韩av无码网站冲</a>| <a href="http://spxingyiquan.com" target="_blank">亚洲AⅤ视频一区二区三区</a>| <a href="http://da666f.com" target="_blank">久久久久久AV无码免费网站</a>| <a href="http://www431234.com" target="_blank">99999久久久久久亚洲</a>| <a href="http://sqmdjz.com" target="_blank">亚洲一级特黄大片无码毛片</a>| <a href="http://jogador1.com" target="_blank">日韩免费人妻AV无码专区蜜桃</a>| <a href="http://123470c.com" target="_blank">亚洲人成人网站18禁</a>| <a href="http://s8023.com" target="_blank">亚洲精品无码久久久久</a>| <a href="http://wwwp784.com" target="_blank">免费a级毛片高清视频不卡</a>| <a href="http://448tk.com" target="_blank">在线视频网址免费播放</a>| <a href="http://1880531.com" target="_blank">亚洲一级免费视频</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>