锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
ProtocolBuffer鏄敤浜庣粨鏋勫寲鏁版嵁涓茶鍖栫殑鐏墊椿銆侀珮鏁堛佽嚜鍔ㄧ殑鏂規(guī)硶錛屾湁濡?/span>XML錛屼笉榪囧畠鏇村皬銆佹洿蹇佷篃鏇寸畝鍗曘備綘鍙互瀹氫箟鑷繁鐨勬暟鎹粨鏋勶紝鐒跺悗浣跨敤浠g爜鐢熸垚鍣ㄧ敓鎴愮殑浠g爜鏉ヨ鍐欒繖涓暟鎹粨鏋勩備綘鐢氳嚦鍙互鍦ㄦ棤闇閲嶆柊閮ㄧ講紼嬪簭鐨勬儏鍐典笅鏇存柊鏁版嵁緇撴瀯銆?/span>
浜屻佺壒鐐?/span>
ProtocolBuffer鎷ユ湁澶氶」姣?/span>XML鏇撮珮綰х殑涓茶鍖栫粨鏋勬暟鎹殑鐗規(guī)э紝ProtocolBuffer錛?/span>
· 鏇寸畝鍗?/span>
· 灝?/span>3-10鍊?/span>
· 蹇?/span>20-100鍊?/span>
· 鏇村皯鐨勬涔?/span>
· 鍙互鏂逛究鐨勭敓鎴愭暟鎹瓨鍙栫被
渚嬪錛岃鎴戜滑鐪嬬湅濡備綍鍦?/span>XML涓緩妯?/span>Person鐨?/span>name鍜?/span>email瀛楁:
<person>
<name>John Doe</name>
<email>jdoe@example.com</email>
</person>
瀵瑰簲鐨?/span>ProtocolBuffer鎶ユ枃鍒欏涓?/span>:
#ProtocolBuffer鐨勬枃鏈〃紺?/span>
#榪欎笉鏄甯告椂浣跨敤鐨勪簩榪涘埗鏁版嵁
person {
name: "John Doe"
email: "jdoe@example.com"
}
涓夈佸紑鍙戞楠?/span>
1銆佷笅杞藉寘( http://code.google.com/p/protobuf/downloads/ )錛屽寘鍚簡Java銆?/span>Python銆?/span>C++鐨?/span>ProtocolBuffer緙栬瘧鍣紝鐢ㄤ簬鐢熸垚浣犻渶瑕佺殑IO綾匯傛瀯寤哄拰瀹夎浣犵殑緙栬瘧鍣紝璺熼殢README鐨勬寚浠ゅ氨鍙互鍋氬埌銆?/span>
涓鏃︿綘瀹夎濂戒簡錛屽氨鍙互璺熺潃緙栫▼鎸囧( http://code.google.com/apis/protocolbuffers/docs/tutorials.html )鏉ラ夋嫨璇█-闅忓悗灝辨槸浣跨敤ProtocolBuffer鍒涘緩涓涓畝鍗曠殑搴旂敤浜嗐?/span>
2銆佸垱寤?/span>. proto鏂囦歡錛屾枃浠朵腑瀹氫箟浣犻渶瑕佸仛涓茶鍖栫殑鏁版嵁緇撴瀯淇℃伅錛屼笅闈㈠畾涔変釜Order. Proto錛?/span>
3銆佷嬌鐢?/span>google鐨?/span>protoc.exe鐢熸垚瀵瑰簲鐨?/span>C++鏂囦歡錛屽湪CMD鍛戒護(hù)妗嗕腑杈撳叆濡備笅鍛戒護(hù)錛堣礬寰勬牴鎹疄闄呮儏鍐典慨鏀癸級錛?/span>
F:\projects\c++\protobuf-2.4.1\examples>protoc --cpp_out=F:\projects\c++\protobu
f-2.4.1\examples order.proto
鐢熸垚鏂囦歡錛?/span>
order.pb.h
order.pb.cc
4銆佹柊寤?/span>C++宸ョ▼Demo錛屾妸order.pb.h鍜?/span>order.pb.cc鍔犲叆宸ョ▼涓紝娣誨姞lib搴?/span>
# pragma comment(lib, "libprotobuf.lib")
浠g爜濡備笅錛?/span>
Java涓嶤++閫氳榪樻湁緙栫爜杞爜鐨勯棶棰樺瓨鍦紝鍋囪閫氳緙栫爜閲囩敤UTF-8
C++瀹㈡埛绔彂閫佹椂闇瑕佽漿鐮佹垚UTF-8緙栫爜錛屾帴鏀舵湇鍔$搴旂瓟娑堟伅鍚庡啀杞洖Unicode鎴栬匞BK緙栫爜
涓嬮潰緇欏嚭瀹屾垚鐨凜++瀹㈡埛绔氳紺轟緥錛?/p>
CXSocket綾諱笅杞藉湴鍧錛?a style="color: #336699; text-decoration: none; ">http://code.google.com/p/x-net/
MINA鏈嶅姟绔疍emo涓嬭澆鍦板潃錛?a style="color: #336699; text-decoration: none; ">http://download.csdn.net/source/3418326
鏈榪戝涔?fàn)浜?span style="font-family: Verdana, Simsun, sans-serif; line-height: 21px; ">Apache MINA閫氳錛屽湪浣跨敤榪囩▼涓鍒頒簡涓浜涢棶棰橈紝璁板綍涓嬩竴浜涘績寰椼?/span>
鍦ㄦ湇鍔$鍜屽鎴風(fēng)閮戒嬌鐢∕INA鎻愪緵鐨勫簱鏃訛紝閫氳涓鍒囨甯革紝褰撴垜鎶婂鎴風(fēng)鏀逛負(fù)C++浠g爜鏃訛紝鍙戠幇瀹㈡埛绔彂閫佺粰鏈嶅姟绔殑浜岃繘鍒舵祦涓殑鏁村艦鏁版嵁錛屼綅緗鍊掔疆浜嗐?/span>
C++瀹㈡埛绔?6榪涘埗 錛?x00000013
MINA鏈嶅姟绔?6榪涘埗錛?x13000000
鏌ヨ浜嗙綉涓婅祫鏂欏悗鎵嶇煡閬揓ava鍦ㄦ墍鏈夊鉤鍙頒笂閮介粯璁ゆ槸big-endian錛岃?/span>C++鍦ㄤ笉鍚岀殑騫沖彴涓婃湁涓嶅悓鐨勫瓧鑺傚簭, X86涓婃槸little-endian, solaris涓婃槸big-endian銆?/span>
娉ㄦ剰闂錛?/span>
1銆佸瓧鑺傚簭
C++鍦ㄤ笉鍚岀殑騫沖彴涓婃湁涓嶅悓鐨勫瓧鑺傚簭, X86涓婃槸little-endian, solaris涓婃槸big-endian; 鑰宩ava鍦ㄦ墍鏈夊鉤鍙頒笂閮介粯璁ゆ槸big-endian, 鎵浠ュ湪浼犺緭璇稿short,int,long鏁版嵁鏃惰鍦–++杞崲鎴愮綉緇滃簭(big-endian)
2銆佸瓧絎︾紪鐮?/span>
C++涓婃渶鏅亶鐨勬槸閲囩敤mbcs, 鑰宩ava涓婃槸鐢╱nicode(騫朵笖鍜屾爣鍑嗙殑unicode榪樻湁浜涘尯鍒?鍙互鍙傝僯ava鏂囨。), 鎵浠ラ櫎闈炲繀欏誨惁鍒欎笉瑕佷紶瀛楃涓? 鍙互浼犳枃鏈枃浠朵唬鏇? 涓瀹氳浼犵殑璇濆彧鑳借嚜宸辮漿鎹簡
3銆?鍐呭瓨瀵歸綈, 鍦–/C++鐨勭綉緇滈氫俊紼嬪簭涓粡甯擱噰鐢ㄨ鍐欑粨鏋勪綋鐨勬柟寮忔柟渚垮湴浜ゆ崲鏁版嵁, 浣嗘槸涓嶆敞鎰忕殑璇濈粨鏋勪綋鍐呭緢鍙兘鏈夌┖闅? 姣斿struct A{ int a; char c }; struct B{ char a; int b }; 榪欎袱涓粨鏋勪綋鍐呴兘鏈夌┖闅? 鑰屽鏋滀笉璇存槑絀洪殭鐨勫瓨鍦╦ava紼嬪簭鏄笉浼?xì)鐭ラ亾鐨? 灝變細(xì)瀵艱嚧鍙屾柟瑙f瀽鏃跺嚭閿? 瑕佹秷闄ょ┖闅欏簲璇ュ皬蹇冨湴瀹夋帓緇撴瀯浣撶殑鎴愬憳, 涓嶆帹鑽愪嬌鐢?pragma pach(1), 鍥犱負(fù)娌℃湁閫氱敤鎬?br />4銆?浣嶅煙
闄ら潪灝忓績瀹夋帓, 鍚﹀垯浣嶅煙瀵艱嚧鐨勭粨鏋勪綋澶у皬涓庡鉤鍙扮浉鍏? int a:4鎵鍗犵敤鐨勫瓧鑺傞殢騫沖彴鍜岀紪璇戝櫒鍙樺寲(char a:4鐩稿紼沖畾鍗?瀛楄妭)
5銆?(鍙兘騫沖彴鐩稿叧)浼犻佷笌鎺ユ敹閫熷害涓嶅悓褰揅++鍚慾ava浼犻佷竴涓ぇ涓浜涚殑鏁版嵁鏃? 鍙兘C++涓杈瑰凡緇忎紶瀹岄鍑轟簡, 鑰宩ava閭h竟榪樻病鏀跺畬, 瀵艱嚧鏈鍚庣殑涓閮ㄥ垎鏁版嵁涓㈠け. 鎵浠ラ」鐩腑閲囩敤浜嗙畝鍗曠殑紜鏈哄埗, 浠諱綍涓鏂規(guī)帴鏀跺畬鏁版嵁灝卞洖閫?瀛楄妭鐨勭‘璁? 浠ラ槻姝++榪囨棭閫鍑?/span>
6銆?鍙兘騫沖彴鐩稿叧)java鍦ㄥ悓C++寤虹珛榪炴帴鍚庝互鍙?qiáng)鍦–++鍚慾ava浼犻佸畬涓孌墊暟鎹悗, java鑻ュ悜C++浼犻佷竴孌墊暟鎹垯絎竴嬈′紶閫佺殑鏁版嵁C++鍙兘鏀跺埌涓涓瓧鑺? 絎竴嬈¤繃鍚庢仮澶嶆甯?/span>
C++鏁村艦杞崲浠g爜濡備笅錛?/span>
鍏充簬IOCP瀹屾垚绔彛鐨勪粙緇嶆湁寰堝錛岃繖閲屽氨涓嶄粙緇嶆蹇典簡銆?/p>
濡傛灉涓嶈冭檻璺ㄥ鉤鍙伴棶棰橈紝鍦╓indows涓婭OCP錛圛/O Completion Port錛孖/O瀹屾垚绔彛錛夋槸鎬ц兘鏈濂界殑涓縐岻/O妯″瀷銆?/p>
浠ヤ笅鏄湰浜哄紑鍙戠殑IO瀹屾垚绔彛鏈嶅姟鍣?瀹㈡埛绔粙緇嶏細(xì)
鍚嶇О錛歺-net
鐗堟湰錛?.0.0
鐗圭偣錛氶拡瀵筎CP緗戠粶閫氳榪涜灝佽錛屼嬌鐢╳idows涓嬫晥鐜囨渶楂樼殑IOCP閫氳鏂瑰紡錛屽伐紼嬪寘鎷湇鍔$鍜屽鎴風(fēng)銆?br /> 鍙簲鐢ㄤ簬鍗蟲椂緗戠粶閫氳銆佽法騫沖彴緗戠粶閫氳絳夈?br />鍔熻兘錛?br /> 1銆佹敮鎸佸鐢ㄦ埛騫跺彂榪炴帴閫氳錛岀悊璁烘敮鎸?0000+鍦ㄧ嚎鐢ㄦ埛錛屽疄闄呰繍琛?000+宸﹀彸
2銆佹敮鎸佽嚜瀹氫箟閫氳澶村崗璁紝浠g爜閲屽疄鐜頒簡涓涓畝鍗曠殑緇勫寘鎷嗗寘鍔熻兘
3銆佹敮鎸佽漿鍙戦氳鍖呮湇鍔?br /> 4銆佹敮鎸佹枃浠朵笅杞戒笂浼?br />
璇存槑:
浣跨敤浜嗗紑婧愭棩蹇楀簱log4cplus錛岀綉鍧錛?a style="color: #336699; text-decoration: none; ">http://log4cplus.sourceforge.net/
綆鍗曠敤渚嬭test鐩綍錛?br />test.vcxproj -- VS2010宸ョ▼
test_2005.vcproj -- VS2005宸ョ▼
婧愪唬鐮佷笅杞藉湴鍧錛?a style="color: #336699; text-decoration: none; ">http://code.google.com/p/x-net/
涓漢瑙夊緱姣旇緝緇忓吀鐨?span lang="EN-US">C++ 寮婧愰」鐩紝鏁寸悊濡備笅錛?/p>
1 銆?span lang="EN-US">log4cplus
log4cplus 鏄?span lang="EN-US">C++ 緙栧啓鐨勫紑婧愮殑鏃ュ織緋葷粺, 鍔熻兘闈炲父鍏ㄩ潰銆?span lang="EN-US">C++ 鐗堢殑log4j
緗戝潃錛?span lang="EN-US">http://log4cplus.sourceforge.net/
2 銆?span lang="EN-US">Glog
Google Glog 鏄竴涓?span lang="EN-US">C++ 璇█鐨勫簲鐢ㄧ駭鏃ュ織璁板綍妗嗘灦錛屾彁渚涗簡 C++ 椋庢牸鐨勬祦鎿嶄綔鍜屽悇縐嶅姪鎵嬪畯銆?/p>
SVN 錛?span lang="EN-US">http://google-glog.googlecode.com/svn/trunk
3 銆?span lang="EN-US">memcached
memcached 鏄竴濂楀垎甯冨紡鐨勫揩鍙栫郴緇燂紝褰撳垵鏄?span lang="EN-US">Danga Interactive 涓轟簡LiveJournal 鎵鍙戝睍鐨勶紝浣嗙洰鍓嶈璁稿杞歡錛堝MediaWiki 錛夋墍浣跨敤銆傝繖鏄竴濂楀紑鏀炬簮浠g爜杞歡錛屼互BSD license 鎺堟潈閲婂嚭銆?/p>
memcached 緙轟箯璁よ瘉浠ュ強(qiáng)瀹夊叏綆″埗錛岃繖浠h〃搴旇灝?span lang="EN-US">memcached 鏈嶅姟鍣ㄦ斁緗湪闃茬伀澧欏悗銆?/p>
SVN 錛?span lang="EN-US">http://code.sixapart.com/svn/memcached
4 銆?/span> TinyXML
TinyXML 鏄洰鍓嶉潪甯告祦琛岀殑涓嬈懼熀浜?span lang="EN-US">DOM 妯″瀷鐨?span lang="EN-US">XML 瑙f瀽鍣紝綆鍗曟槗鐢ㄤ笖灝忓閥 鐜茬彂錛岄潪甯擱傚悎瀛樺偍綆鍗曟暟鎹紝閰嶇疆鏂囦歡錛屽璞″簭鍒楀寲絳夋暟鎹噺涓嶆槸寰堝ぇ鐨勬搷浣?/p>
緗戝潃錛?span lang="EN-US">http://www.grinninglizard.com/tinyxml/
5 銆?span lang="EN-US">OpenSSL
OpenSSL 鍖呭惈涓涓懡浠よ宸ュ叿鐢ㄦ潵瀹屾垚OpenSSL 搴撲腑鐨勬墍鏈夊姛鑳斤紝鏇村ソ鐨勬槸錛屽畠鍙兘宸茬粡瀹夎鍒頒綘鐨勭郴緇熶腑浜嗐?/p>
OpenSSL 鏄竴涓己澶х殑瀹夊叏濂楁帴瀛楀眰瀵嗙爜搴擄紝Apache 浣跨敤瀹冨姞瀵?span lang="EN-US">HTTPS 錛?span lang="EN-US">OpenSSH 浣跨敤瀹冨姞瀵?span lang="EN-US">SSH 錛屼絾鏄紝浣犱笉搴旇鍙皢鍏朵綔涓轟竴涓簱鏉ヤ嬌鐢紝瀹冭繕鏄竴涓鐢ㄩ旂殑銆佽法騫沖彴鐨勫瘑鐮佸伐鍏楓?/p>
緗戝潃錛?span lang="EN-US">http://www.openssl.org/source/
6 銆?span lang="EN-US">xerces
Xerces鏄敱Apache緇勭粐鎵鎺ㄥ姩鐨勪竴欏筙ML鏂囨。瑙f瀽寮婧愰」鐩?瀹冪洰鍓嶆湁澶氱璇█鐗堟湰鍖呮嫭JAVA銆丆++銆丳ERL銆丆OM絳夈?/p>
緗戝潃錛?a mce_>http://xerces.apache.org/xerces-c/download.cgi
7 銆?span lang="EN-US">Boost
Boost 搴撴槸涓涓粡榪囧崈閿ょ櫨鐐箋佸彲縐繪銆佹彁渚涙簮浠g爜鐨?span lang="EN-US">C++ 搴擄紝浣滀負(fù)鏍囧噯搴撶殑鍚庡錛屾槸C++ 鏍囧噯鍖栬繘紼嬬殑鍙戝姩鏈轟箣涓銆?span lang="EN-US"> Boost 搴撶敱C++鏍囧噯濮斿憳浼?xì)搴撳伐浣溇l勬垚鍛樺彂璧鳳紝鍦?span lang="EN-US">C++ 紺懼尯涓獎(jiǎng)鍝嶇敋澶э紝鍏舵垚鍛樺凡榪?span lang="EN-US">2000 浜恒?span lang="EN-US"> Boost 搴撲負(fù)鎴戜滑甯︽潵浜嗘渶鏂般佹渶閰楓佹渶瀹炵敤鐨勬妧鏈紝鏄笉鎶樹笉鎵g殑“ 鍑?span lang="EN-US">” 鏍囧噯搴撱?/p>
緗戝潃錛?span lang="EN-US">http://www.boost.org/
8銆乑lib
Zlib 杞歡鍖呭寘鍚?zlib 搴擄紝寰堝紼嬪簭涓殑鍘嬬緝鎴栬呰В鍘嬬緝鍑芥暟閮戒細(xì)鐢ㄥ埌榪欎釜搴?/p>
緗戝潃錛?a mce_>http://www.zlib.net/