锘??xml version="1.0" encoding="utf-8" standalone="yes"?>午夜精品久久久久,日韩午夜免费,一区二区三区免费网站http://m.shnenglu.com/tianbianlan/zh-cnWed, 24 Sep 2025 02:55:57 GMTWed, 24 Sep 2025 02:55:57 GMT60 Sequoiadb涓巗park瀵規帴姝ラhttp://m.shnenglu.com/tianbianlan/archive/2015/05/26/210753.html澶╄竟钃?/dc:creator>澶╄竟钃?/author>Tue, 26 May 2015 09:13:00 GMThttp://m.shnenglu.com/tianbianlan/archive/2015/05/26/210753.htmlhttp://m.shnenglu.com/tianbianlan/comments/210753.htmlhttp://m.shnenglu.com/tianbianlan/archive/2015/05/26/210753.html#Feedback0http://m.shnenglu.com/tianbianlan/comments/commentRss/210753.htmlhttp://m.shnenglu.com/tianbianlan/services/trackbacks/210753.html hive.aux.jars.path file:///ocsdev/hadoop/apache-hive-1.1.0-bin/lib/hive-sequoiadb-apache.jar,file:///ocsdev/hadoop/apache-hive-1.1.0-bin/lib/sequoiadb.jar Sequoiadb store handler jar file 2.閰嶇疆SPARK_CLASSPATH export SPARK_CLASSPATH=/path/to/spark/lib/sequoiadb-driver-1.12.jar:/path/to/spark/lib/lib/spark-sequoiadb_2.10-1.12.jar:/ocsdev/hadoop/spark-1.3.1-bin-hadoop2.6/lib://path/to/spark/lib/mysql-connector-java-5.1.5-bin.jar 3.灝唖equoiadb-driver-1.12.jar銆乻park-sequoiadb_2.10-1.12.jar鎷瘋礉鍒皊park鐨刲ib鐩綍涓嬶紱 4.hive-site.xml閰嶇疆鍏冩暟鎹瓨鍌ㄦ柟寮? hive.metastore.local true javax.jdo.option.ConnectionURL jdbc:mysql://192.168.0.103:3306/hive?characterEncoding=UTF-8 javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver javax.jdo.option.ConnectionUserName hive javax.jdo.option.ConnectionPassword hive 5.鍒涘緩Sequoiadb闆嗗悎鏄犲皠鍏崇郴錛? ./spark_sql >CREATE table lw_test_sdb (id int, r5 double) using com.sequoiadb.spark OPTIONS ( host '192.168.0.103:11810,192.168.0.104:11810,192.168.0.102:11810', collectionspace 'hj', collection 'aws_min',username '',password ''); 6.鏌ヨ鏁版嵁 >select * from lw_test_sdb NULL 0.0 23 23.4 12 34.5 Time taken: 0.825 seconds, Fetched 3 row(s)

]]>
RDD鍒濇帰http://m.shnenglu.com/tianbianlan/archive/2015/04/18/210383.html澶╄竟钃?/dc:creator>澶╄竟钃?/author>Sat, 18 Apr 2015 14:16:00 GMThttp://m.shnenglu.com/tianbianlan/archive/2015/04/18/210383.htmlhttp://m.shnenglu.com/tianbianlan/comments/210383.htmlhttp://m.shnenglu.com/tianbianlan/archive/2015/04/18/210383.html#Feedback0http://m.shnenglu.com/tianbianlan/comments/commentRss/210383.htmlhttp://m.shnenglu.com/tianbianlan/services/trackbacks/210383.html

]]>
[杞琞The Biggest Changes in C++11 http://m.shnenglu.com/tianbianlan/archive/2013/05/05/199992.html澶╄竟钃?/dc:creator>澶╄竟钃?/author>Sun, 05 May 2013 13:26:00 GMThttp://m.shnenglu.com/tianbianlan/archive/2013/05/05/199992.htmlhttp://m.shnenglu.com/tianbianlan/comments/199992.htmlhttp://m.shnenglu.com/tianbianlan/archive/2013/05/05/199992.html#Feedback0http://m.shnenglu.com/tianbianlan/comments/commentRss/199992.htmlhttp://m.shnenglu.com/tianbianlan/services/trackbacks/199992.html

婧愭枃绔犳潵鑷墠C++鏍囧噯濮斿憳浼氱殑 Danny Kalev 鐨?nbsp;The Biggest Changes in C++11 (and Why You Should Care)錛岃禆鍕囨旦鍋氫簡涓涓?a target="_blank">涓枃緲昏瘧鍦ㄨ繖閲?/a>銆傛墍浠ワ紝鎴戝氨涓嶇炕璇戜簡錛屾垜鍦ㄨ繖閲屼粎瀵規枃涓彁鍒扮殑榪欎簺鍙樺寲“榪介棶涓轟粈涔堣寮曞叆榪欎簺鍙樺寲”鐨勪竴涓帰璁紝鍙湁鐭ラ亾涓轟簡浠涔堬紝鐢ㄥ湪浠涔堝湴鏂癸紝鎴戜滑鎵嶈兘鐪熸瀛﹀埌榪欎釜鐭ヨ瘑銆傝屼互姝や綘鍙互鏇存繁鍏ュ湴浜嗚В榪欎簺鍙樺寲銆傛墍浠ワ紝鏈枃涓嶆槸緲昏瘧銆傚洜涓哄啓寰楁湁浜涗粨淇冿紝鎵浠ラ毦鍏嶆湁闂錛岃繕璇峰ぇ瀹舵寚姝c?/p>

Lambda 琛ㄨ揪寮?/h4>

Lambda琛ㄨ揪寮忔潵婧愪簬鍑芥暟寮忕紪紼嬶紝璇寸櫧灝變簡灝辨槸鍦ㄤ嬌鐢ㄧ殑鍦版柟瀹氫箟鍑芥暟錛屾湁鐨勮璦鍙?#8220;闂寘”錛屽鏋?lambda 鍑芥暟娌℃湁浼犲洖鍊?渚嬪 void )錛屽叾鍥炶繑綾誨瀷鍙瀹屽叏蹇界暐銆?瀹氫箟鍦ㄤ笌 lambda 鍑芥暟鐩稿悓浣滅敤鍩熺殑鍙橀噺鍙傝冧篃鍙互琚嬌鐢ㄣ傝繖縐嶇殑鍙橀噺闆嗗悎涓鑸縐頒綔 closure錛堥棴鍖咃級銆傛垜鍦ㄨ繖閲屽氨涓嶅啀璁茶繖涓簨浜嗐傝〃杈懼紡鐨勭畝鍗曡娉曞涓嬶紝

1
[capture](parameters)->return_type {body}

鍘熸枃鐨勪綔鑰呯粰鍑轟簡涓嬮潰鐨勪緥瀛愶細

1
2
3
4
5
6
7
8
9
10
int main()
{
   char s[]="Hello World!";
   int Uppercase = 0; //modified by the lambda
   for_each(s, s+sizeof(s), [&Uppercase] (char c) {
    if (isupper(c))
     Uppercase++;
    });
 cout << Uppercase << " uppercase letters in: " << s <<endl;
}

鍦ㄤ紶緇熺殑STL涓璮or_each() 榪欎釜鐜╂剰鏈鍚庨偅涓弬鏁伴渶瑕佷竴涓?#8220;鍑芥暟瀵硅薄”錛屾墍璋撳嚱鏁板璞★紝鍏跺疄鏄竴涓猚lass錛岃繖涓猚lass閲嶈澆浜唎perator()錛屼簬鏄繖涓璞″彲浠ュ儚鍑芥暟鐨勫紡鏍風殑浣跨敤銆傚疄鐜頒竴涓嚱鏁板璞″茍涓嶅鏄擄紝闇瑕佷嬌鐢╰emplate錛屾瘮濡備笅闈㈣繖涓緥瀛愬氨鏄嚱鏁板璞$殑綆鍗曚緥瀛愶紙瀹為檯鐨勫疄鐜拌繙姣旇繖涓鏉傦級錛?/p>

1
2
3
4
5
6
7
8
9
template <class T>
class less
{
public:
    bool operator()(const T&l, const T&r)const
    {
        return l < r;
    }
};

鎵浠ワ紝C++寮曞叆Lambda鐨勬渶涓昏鍘熷洜灝辨槸1錛夊彲浠ュ畾涔夊尶鍚嶅嚱鏁幫紝2錛夌紪璇戝櫒浼氭妸鍏惰漿鎴愬嚱鏁板璞?/strong>銆傜浉淇′綘浼氬拰鎴戜竴鏍鳳紝浼氱枒闂負浠涔堜互鍓峉TL涓殑ptr_fun()榪欎釜鍑芥暟瀵硅薄涓嶈兘鐢紵錛坧tr_fun()灝辨槸鎶婁竴涓嚜鐒跺嚱鏁拌漿鎴愬嚱鏁板璞$殑錛夈傚師鍥犳槸錛宲tr_fun() 鐨勫眬闄愭槸鍏舵帴鏀剁殑鑷劧鍑芥暟鍙兘鏈?鎴?涓弬鏁般?/p>

閭d箞錛岄櫎浜嗘柟渚垮錛屼負浠涔堜竴瀹氳浣跨敤Lambda鍛紵瀹冩瘮浼犵粺鐨勫嚱鏁版垨鏄嚱鏁板璞℃湁浠涔堝ソ澶勫憿錛熸垜涓漢鎵鐞嗚В鐨勬槸錛岃繖縐嶅嚱鏁頒箣騫翠互鍙?#8220;闂寘”錛屽氨鏄洜涓哄叾闄愬埗浜嗗埆浜虹殑璁塊棶錛屾洿縐佹湁銆備篃鍙互璁や負浠栨槸涓嬈℃х殑鏂規硶銆侺ambda琛ㄨ揪寮忓簲璇ユ槸綆媧佺殑錛屾瀬縐佹湁鐨勶紝涓轟簡鏇存槗鐨勪唬鐮佸拰鏇存柟渚跨殑緙栫▼銆?/p>

鑷姩綾誨瀷鎺ㄥ auto

鍦ㄨ繖涓鑺備腑錛屽師鏂囦富瑕佷粙緇嶄簡涓や釜鍏抽敭瀛?auto 鍜?deltype錛岀ず渚嬪涓嬶細

1
2
3
4
auto x=0; //x has type int because 0 is int
auto c='a'; //char
auto d=0.5; //double
auto national_debt=14400000000000LL;//long long

auto 鏈澶х殑濂藉灝辨槸璁╀唬鐮佺畝媧侊紝灝ゅ叾鏄偅浜涙ā鏉跨被鐨勫0鏄庯紝姣斿錛歋TL涓殑瀹瑰櫒鐨勮凱浠e瓙綾誨瀷銆?/p>

1
vector<int>::const_iterator ci = vi.begin();

鍙互鍙樻垚錛?/p>

1
auto ci = vi.begin();

妯℃澘榪欎釜鐗規цC++鐨勪唬鐮佸彉寰楀緢闅捐錛屼笉淇′綘鍙互鐪嬬湅STL鐨勬簮鐮侊紝閭f槸涓涓貢鍟娿備嬌鐢╝uto蹇呴渶涓涓垵濮嬪寲鍊鹼紝緙栬瘧鍣ㄥ彲浠ラ氳繃榪欎釜鍒濆鍖栧兼帹瀵煎嚭綾誨瀷銆傚洜涓篴uto鏄潵綆鍖栨ā鏉跨被寮曞叆鐨勪唬鐮侀毦璇葷殑闂錛屽涓婇潰鐨勭ず渚嬶紝iteration榪欑綾誨瀷灝辨渶閫傚悎鐢╝uto鐨勶紝浣嗘槸錛屾垜浠笉搴旇鎶婂叾婊ョ敤銆?/p>

姣斿涓嬮潰鐨勪唬鐮佺殑鍙鎬у氨闄嶄綆浜嗐傚洜涓猴紝鎴戜笉鐭ラ亾ProcessData榪斿洖浠涔堬紵int? bool? 榪樻槸瀵硅薄錛熸垨鏄埆鐨勪粈涔堬紵榪欒浣犲悗闈㈢殑紼嬪簭涓嶇煡閬撴庝箞鍋氥?/p>

1
auto obj = ProcessData(someVariables);

浣嗘槸涓嬮潰鐨勭▼搴忓氨娌℃湁闂錛屽洜涓簆Object鐨勫瀷鍒湪鍚庨潰鐨刵ew涓湁浜嗐?/p>

1
auto pObject = new SomeType<OtherType>::SomeOtherType();

鑷姩鍖栨帹瀵?decltype

鍏充簬 decltype 鏄竴涓搷浣滅錛屽叾鍙互璇勪及鎷彿鍐呰〃杈懼紡鐨勭被鍨嬶紝鍏惰鍒欏涓嬶細

  1. 濡傛灉琛ㄨ揪寮廵鏄竴涓彉閲忥紝閭d箞灝辨槸榪欎釜鍙橀噺鐨勭被鍨嬨?/li>
  2. 濡傛灉琛ㄨ揪寮廵鏄竴涓嚱鏁幫紝閭d箞灝辨槸榪欎釜鍑芥暟榪斿洖鍊肩殑綾誨瀷銆?/li>
  3. 濡傛灉涓嶇鍚?鍜?錛屽鏋渆鏄乏鍊鹼紝綾誨瀷涓篢錛岄偅涔坉ecltype(e)鏄疶&錛涘鏋滄槸鍙沖鹼紝鍒欐槸T銆?/li>

鍘熸枃緇欏嚭鐨勭ず渚嬪涓嬶紝鎴戜滑鍙互鐪嬪埌錛岃繖涓鐨勭‘鎴戜滑鐨勫畾涔夊彉閲忕渷浜嗗緢澶氫簨銆?/p>

1
2
3
const vector<int> vi;
typedef decltype (vi.begin()) CIT;
CIT another_const_iterator;

榪樻湁涓涓傚悎鐨勭敤娉曟槸鐢ㄦ潵typedef鍑芥暟鎸囬拡錛屼篃浼氱渷寰堝浜嬨傛瘮濡傦細

1
2
3
decltype(&myfunc) pfunc = 0;
 
typedef decltype(&A::func1) type;

auto 鍜?decltype 鐨勫樊鍒拰鍏崇郴

Wikipedia 涓婃槸榪欎箞璇寸殑錛堝叧浜巇ecltype鐨勮鍒欒涓婏級

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <vector>
 
int main()
{
    const std::vector<int> v(1);
    auto a = v[0];        // a 鐨勭被鍨嬫槸 int
    decltype(v[0]) b = 1; // b 鐨勭被鍨嬫槸 const int&, 鍥犱負鍑芥暟鐨勮繑鍥炵被鍨嬫槸
                          // std::vector<int>::operator[](size_type) const
    auto c = 0;           // c 鐨勭被鍨嬫槸 int
    auto d = c;           // d 鐨勭被鍨嬫槸 int
    decltype(c) e;        // e 鐨勭被鍨嬫槸 int, 鍥犱負 c 鐨勭被鍨嬫槸int
    decltype((c)) f = c;  // f 鐨勭被鍨嬫槸 int&, 鍥犱負 (c) 鏄乏鍊?/code>
    decltype(0) g;        // g 鐨勭被鍨嬫槸 int, 鍥犱負 0 鏄彸鍊?/code>
}

濡傛灉auto 鍜?decltype 鍦ㄤ竴璧蜂嬌鐢ㄤ細鏄粈涔堟牱瀛愶紵鑳界湅涓嬮潰鐨勭ず渚嬶紝涓嬮潰榪欎釜紺轟緥涔熸槸寮曞叆decltype鐨勪竴涓師鍥?#8212;—璁〤++鏈夎兘鍔涘啓涓涓?“ forwarding function 妯℃澘”錛?/p>

1
2
3
template< typename LHS, typename RHS>
  auto AddingFunc(const LHS &lhs, const RHS &rhs) -> decltype(lhs+rhs)
{return lhs + rhs;}

榪欎釜鍑芥暟妯℃澘鐪嬭搗鏉ョ浉褰撹垂瑙o紝鍏剁敤鍒頒簡auto 鍜?decltype 鏉ユ墿灞曚簡宸叉湁鐨勬ā鏉挎妧鏈殑涓嶈凍銆傛庝箞涓笉瓚沖憿錛熷湪涓婁緥涓紝鎴戜笉鐭ラ亾AddingFunc浼氭帴鏀朵粈涔堟牱綾誨瀷鐨勫璞★紝榪欎袱涓璞$殑 + 鎿嶄綔絎﹁繑鍥炵殑綾誨瀷涔熶笉鐭ラ亾錛岃佺殑妯℃澘鍑芥暟鏃犳硶瀹氫箟AddingFunc榪斿洖鍊煎拰榪欎袱涓璞$浉鍔犲悗鐨勮繑鍥炲煎尮閰嶏紝鎵浠ワ紝浣犲彲浠ヤ嬌鐢ㄤ笂榪扮殑榪欑瀹氫箟銆?/p>

緇熶竴鐨勫垵濮嬪寲璇硶

C/C++鐨勫垵濮嬪寲鐨勬柟娉曟瘮杈冿紝C++ 11 鐢ㄥぇ鎷彿緇熶竴浜嗚繖浜涘垵濮嬪寲鐨勬柟娉曘?/p>

姣斿錛歅OD鐨勭被鍨嬨?/p>

1
2
int arr[4]={0,1,2,3};
struct tm today={0};

鍏充簬POD鐩歌涓ゅ彞錛屾墍璋揚OD灝辨槸Plain Old Data錛屽綋class/struct鏄?em>鏋佺畝鐨?trivial)銆佸睘浜?em>鏍囧噯甯冨眬(standard-layout)錛屼互鍙婁粬鐨勬墍鏈夐潪闈欐侊紙non-static錛夋垚鍛橀兘鏄疨OD鏃訛紝浼氳瑙嗕負POD銆傚錛?/p>

1
2
3
struct A { int m; }; // POD
struct B { ~B(); int m; }; // non-POD, compiler generated default ctor
struct C { C() : m() {}; ~C(); int m; }; // non-POD, default-initialising m

POD鐨勫垵濮嬪寲鏈夌偣鎬紝姣斿涓婁緥錛宯ew A; 鍜宯ew A(); 鏄笉涓鏍風殑錛屽浜庡叾鍐呴儴鐨刴錛屽墠鑰呮病鏈夎鍒濆鍖栵紝鍚庤呰鍒濆鍖栦簡錛堜笉鍚?鐨勭紪璇戝櫒琛屼負涓嶄竴鏍鳳紝VC++鍜孏CC涓嶄竴鏍鳳級銆傝岄潪POD鐨勫垵濮嬪寲錛屽垯閮戒細琚垵濮嬪寲銆?/p>

浠庤繖鐐瑰彲浠ョ湅鍑猴紝C/C++鐨勫垵濮嬪寲闂寰堝鎬紝鎵浠ワ紝鍦–++ 2011鐗堜腑灝卞仛浜嗙粺涓銆傚師鏂囦綔鑰呯粰鍑轟簡濡備笅鐨勭ず渚嬶細

1
2
3
4
5
6
7
8
9
C c {0,0}; //C++11 only. 鐩稿綋浜? C c(0,0);
 
int* a = new int[3] { 1, 2, 0 }; /C++11 only
 
class X {
    int a[4];
    public:
        X() : a{1,2,3,4} {} //C++11, member array initializer
};

瀹瑰櫒鐨勫垵濮嬪寲錛?/p>

1
2
3
4
5
// C++11 container initializer
vector<string> vs={ "first", "second", "third"};
map singers =
{ {"Lady Gaga", "+1 (212) 555-7890"},
{"Beyonce Knowles", "+1 (212) 555-0987"}};

榪樻敮鎸佸儚Java涓鏍風殑鎴愬憳鍒濆鍖栵細

1
2
3
4
5
6
class C
{
   int a=7; //C++11 only
 public:
   C();
};

Delete 鍜?Default 鍑芥暟

鎴戜滑鐭ラ亾C++鐨勭紪璇戝櫒鍦ㄤ綘娌℃湁瀹氫箟鏌愪簺鎴愬憳鍑芥暟鐨勬椂鍊欎細緇欎綘鐨勭被鑷姩鐢熸垚榪欎簺鍑芥暟錛屾瘮濡傦紝鏋勯犲嚱鏁幫紝鎷瘋礉鏋勯狅紝鏋愭瀯鍑芥暟錛岃祴鍊煎嚱鏁般傛湁浜涙椂鍊欙紝鎴戜滑涓嶆兂瑕佽繖浜涘嚱鏁幫紝姣斿錛屾瀯閫犲嚱鏁幫紝鍥犱負鎴戜滑鎯沖仛瀹炵幇鍗曚緥妯″紡銆備紶緇熺殑鍋氭硶鏄皢鍏跺0鏄庢垚private綾誨瀷銆?/p>

鍦ㄦ柊鐨凜++涓紩鍏ヤ簡涓や釜鎸囩ず絎︼紝delete鎰忎負鍛婅瘔緙栬瘧鍣ㄤ笉鑷姩浜х敓榪欎釜鍑芥暟錛宒efault鍛婅瘔緙栬瘧鍣ㄤ駭鐢熶竴涓粯璁ょ殑銆傚師鏂囩粰鍑轟簡涓嬮潰涓や釜渚嬪瓙錛?/p>

1
2
3
4
5
struct A
{
    A()=default; //C++11
    virtual ~A()=default; //C++11
};

鍐嶅delete

1
2
3
4
5
6
7
struct NoCopy
{
    NoCopy & operator =( const NoCopy & ) = delete;
    NoCopy ( const NoCopy & ) = delete;
};
NoCopy a;
NoCopy b(a); //compilation error, copy ctor is deleted

榪欓噷錛屾垜鎯寵涓涓嬶紝涓轟粈涔堟垜浠渶瑕乨efault錛熸垜浠涔堥兘涓嶅啓涓嶅氨鏄痙efault鍚楋紵涓嶅叏鐒舵槸錛屾瘮濡傛瀯閫犲嚱鏁幫紝鍥犱負鍙浣犲畾涔変簡涓涓瀯閫犲嚱鏁幫紝緙栬瘧鍣ㄥ氨涓嶄細緇欎綘鐢熸垚涓涓粯璁ょ殑浜嗐傛墍浠ワ紝涓轟簡瑕佽榛樿鐨勫拰鑷畾涔夌殑鍏卞瓨錛屾墠寮曞叆榪欎釜鍙傛暟錛屽涓嬩緥鎵紺猴細

1
2
3
4
5
struct SomeType
{
 SomeType() = default; // 浣跨敤緙栬瘧鍣ㄧ敓鎴愮殑榛樿鏋勯犲嚱鏁?/code>
 SomeType(OtherType value);
};

鍏充簬delete榪樻湁涓や釜鏈夌敤鐨勫湴鏂規槸

1錛夎浣犵殑瀵硅薄鍙兘鐢熸垚鍦ㄦ爤鍐呭瓨涓婏細

1
2
3
struct NonNewable {
    void *operator new(std::size_t) = delete;
};

2錛夐樆姝㈠嚱鏁扮殑鍏跺艦鍙傜殑綾誨瀷璋冪敤錛氾紙鑻ュ皾璇曚互 double 鐨勫艦鍙傝皟鐢?nbsp;f()錛屽皢浼氬紩鍙戠紪璇戞湡閿欒錛?緙栬瘧鍣ㄤ笉浼氳嚜鍔ㄥ皢 double 褰㈠弬杞瀷涓?int 鍐嶈皟鐢?code>f()錛屽鏋滀紶鍏ョ殑鍙傛暟鏄痙ouble錛屽垯浼氬嚭鐜扮紪璇戦敊璇級

1
2
void f(int i);
 void f(double) = delete;

nullptr

C/C++鐨凬ULL瀹忔槸涓鏈夊緢澶氭綔鍦˙UG鐨勫畯銆傚洜涓烘湁鐨勫簱鎶婂叾瀹氫箟鎴愭暣鏁?錛屾湁鐨勫畾涔夋垚 (void*)0銆傚湪C鐨勬椂浠h繕濂姐備絾鏄湪C++鐨勬椂浠o紝榪欏氨浼氬紩鍙戝緢澶氶棶棰樸備綘鍙互涓婄綉鐪嬬湅銆傝繖鏄負浠涔堥渶瑕?nbsp;nullptr 鐨勫師鍥犮?nbsp;nullptr 鏄己綾誨瀷鐨勩?/p>

1
2
3
4
5
6
void f(int); //#1
void f(char *);//#2
//C++03
f(0); //浜屼箟鎬?/code>
//C++11
f(nullptr) //鏃犱簩涔夋э紝璋冪敤f(char*)

鎵浠ュ湪鏂扮増涓浠?nullptr 鍒濆鍖栨寚閽堛?/p>

濮旀墭鏋勯?/h4>

鍦ㄤ互鍓嶇殑C++涓紝鏋勯犲嚱鏁頒箣闂翠笉鑳戒簰鐩歌皟鐢紝鎵浠ワ紝鎴戜滑鍦ㄥ啓榪欎簺鐩鎬技鐨勬瀯閫犲嚱鏁伴噷錛屾垜浠細鎶婄浉鍚岀殑浠g爜鏀懼埌涓涓鏈夌殑鎴愬憳鍑芥暟涓?/p>

1
2
3
4
5
6
7
8
9
10
class SomeType {
private:
  int number;
  string name;
  SomeType( int i, string&amp; s ) : number(i), name(s){}
public:
  SomeType( )               : SomeType( 0, "invalid" ){}
  SomeType( int i )         : SomeType( i, "guest" ){}
  SomeType( string&amp; s ) : SomeType( 1, s ){ PostInit(); }
};

浣嗘槸錛屼負浜嗘柟渚垮茍涓嶈凍璁?#8220;濮旀墭鏋勯?#8221;榪欎釜浜嬪嚭鐜幫紝鏈涓昏鐨勯棶棰樻槸錛屽熀綾葷殑鏋勯犱笉鑳界洿鎺ユ垚涓烘淳鐢熺被鐨勬瀯閫狅紝灝辯畻鏄熀綾葷殑鏋勯犲嚱鏁板浜嗭紝媧劇敓綾昏繕瑕佽嚜宸卞啓鑷繁鐨勬瀯閫犲嚱鏁幫細

1
2
3
4
5
6
7
8
9
10
11
class BaseClass
{
public:
  BaseClass(int iValue);
};
 
class DerivedClass : public BaseClass
{
public:
  using BaseClass::BaseClass;
};

涓婁緥涓紝媧劇敓綾繪墜鍔ㄧ戶鎵垮熀綾葷殑鏋勯犲嚱鏁幫紝 緙栬瘧鍣ㄥ彲浠ヤ嬌鐢ㄥ熀綾葷殑鏋勯犲嚱鏁板畬鎴愭淳鐢熺被鐨勬瀯閫犮?鑰屽皢鍩虹被鐨勬瀯閫犲嚱鏁板甫鍏ユ淳鐢熺被鐨勫姩浣?鏃犳硶閫夋嫨鎬у湴閮ㄥ垎甯﹀叆錛?鎵浠ワ紝瑕佷笉灝辨槸緇ф壙鍩虹被鍏ㄩ儴鐨勬瀯閫犲嚱鏁幫紝瑕佷笉灝辨槸涓涓兘涓嶇戶鎵?涓嶆墜鍔ㄥ甫鍏?銆?姝ゅ錛岃嫢鐗墊秹鍒板閲嶇戶鎵匡紝浠庡涓熀綾葷戶鎵胯屾潵鐨勬瀯閫犲嚱鏁頒笉鍙互鏈夌浉鍚岀殑鍑芥暟絳懼悕(signature)銆?鑰屾淳鐢熺被鐨勬柊鍔犲叆鐨勬瀯閫犲嚱鏁頒篃涓嶅彲浠ュ拰緇ф壙鑰屾潵鐨勫熀綾繪瀯閫犲嚱鏁版湁鐩稿悓鐨勫嚱鏁扮鍚嶏紝鍥犱負榪欑浉褰撲簬閲嶅澹版槑銆傦紙鎵璋撳嚱鏁扮鍚嶅氨鏄嚱鏁扮殑鍙傛暟綾誨瀷鍜岄『搴忎笉錛?/p>

鍙沖煎紩鐢ㄥ拰move璇箟

鍦ㄨ佺増鐨凜++涓紝涓存椂鎬у彉閲忥紙縐頒負鍙沖?#8221;R-values”錛屼綅浜庤祴鍊兼搷浣滅涔嬪彸錛夌粡甯哥敤浣滀氦鎹袱涓彉閲忋傛瘮濡備笅闈㈢殑紺轟緥涓殑tmp鍙橀噺銆傜ず渚嬩腑鐨勯偅涓嚱鏁伴渶瑕佷紶閫掍袱涓猻tring鐨勫紩鐢紝浣嗘槸鍦ㄤ氦鎹㈢殑榪囩▼涓駭鐢熶簡瀵硅薄鐨勬瀯閫狅紝鍐呭瓨鐨勫垎閰嶈繕鏈夊璞$殑鎷瘋礉鏋勯犵瓑絳夊姩浣滐紝鎴愭湰姣旇緝楂樸?/p>

1
2
3
4
5
6
void naiveswap(string &amp;a, string &amp;b)
{
 string temp = a;
 a=b;
 b=temp;
}

C++ 11澧炲姞涓涓柊鐨勫紩鐢紙reference錛夌被鍨嬬О浣滃彸鍊煎紩鐢紙R-value reference錛夛紝鏍囪涓?tt>typename &&銆備粬浠兘澶熶互non-const鍊肩殑鏂瑰紡浼犲叆錛屽厑璁稿璞″幓鏀瑰姩浠栦滑銆傝繖欏逛慨姝e厑璁哥壒瀹氬璞″垱閫犲嚭move璇箟銆?/p>

涓句緥鑰岃█錛屼笂闈㈤偅涓緥瀛愪腑錛宻tring綾諱腑淇濆瓨浜嗕竴涓姩鎬佸唴瀛樺垎瀛樼殑char*鎸囬拡錛屽鏋滀竴涓猻tring瀵硅薄鍙戠敓鎷瘋礉鏋勯狅紙濡傦細鍑芥暟榪斿洖錛夛紝string綾婚噷鐨刢har*鍐呭瓨鍙兘閫氳繃鍒涘緩涓涓柊鐨勪復鏃跺璞★紝騫舵妸鍑芥暟鍐呯殑瀵硅薄鐨勫唴瀛榗opy鍒拌繖涓柊鐨勫璞′腑錛岀劧鍚庨攢姣佷復鏃跺璞″強鍏跺唴瀛樸?strong>榪欐槸鍘熸潵C++鎬ц兘涓婇噸鐐硅鎵硅瘎鐨勪簨銆?/p>

鑳借繃鍙沖煎紩鐢紝string鐨勬瀯閫犲嚱鏁伴渶瑕佹敼鎴?#8220;move鏋勯犲嚱鏁?#8221;錛屽涓嬫墍紺恒傝繖鏍蜂竴鏉ワ紝浣垮緱瀵規煇涓?span style="font-family: monospace">stirng鐨勫彸鍊煎紩鐢ㄥ彲浠ュ崟綰湴浠庡彸鍊煎鍒跺叾鍐呴儴C-style鐨勬寚閽堝埌鏂扮殑string錛岀劧鍚庣暀涓嬬┖鐨勫彸鍊箋傝繖涓搷浣滀笉闇瑕佸唴瀛樻暟緇勭殑澶嶅埗錛岃屼笖絀虹殑鏆傛椂瀵硅薄鐨勬瀽鏋勪篃涓嶄細閲婃斁鍐呭瓨銆傚叾鏇存湁鏁堢巼銆?/p>

1
2
3
4
5
class string
{
    string (string&&); //move constructor
    string&& operator=(string&&); //move assignment operator
};

The C++11 STL涓箍娉涘湴浣跨敤浜嗗彸鍊煎紩鐢ㄥ拰move璇銆傚洜姝わ紝寰堝綆楁硶鍜屽鍣ㄧ殑鎬ц兘閮借浼樺寲浜嗐?/p>

C++ 11 STL 鏍囧噯搴?/h4>

C++ STL搴撳湪2003騫寸粡鍘嗕簡寰堝ぇ鐨勬暣瀹規墜鏈?nbsp;Library Technical Report 1 (TR1)銆?TR1 涓嚭鐜頒簡寰堝鏂扮殑瀹瑰櫒綾?(unordered_set, unordered_map, unordered_multiset, 鍜?nbsp;unordered_multimap) 浠ュ強涓浜涙柊鐨勫簱鏀寔璇稿錛氭鍒欒〃杈懼紡錛?tuples錛屽嚱鏁板璞″寘瑁咃紝絳夌瓑銆?C++11 鎵瑰噯浜?TR1 鎴愪負姝e紡鐨凜++鏍囧噯錛岃繕鏈変竴浜汿R1 鍚庢柊鍔犵殑涓浜涘簱錛屼粠鑰屾垚涓轟簡鏂扮殑C++ 11 STL鏍囧噯搴撱傝繖涓簱涓昏鍖呭惈涓嬮潰鐨勫姛鑳斤細

綰跨▼搴?/h5>

榪欎滑灝變笉澶氳浜嗭紝浠ュ墠鐨凷TL楗卞彈綰跨▼瀹夊叏鐨勬壒璇勩傜幇鍦ㄥソ 浜嗐侰++ 11 鏀寔綰跨▼綾諱簡銆傝繖灝嗘秹鍙婁袱涓儴鍒嗭細絎竴銆佽璁′竴涓彲浠ヤ嬌澶氫釜綰跨▼鍦ㄤ竴涓繘紼嬩腑鍏卞瓨鐨勫唴瀛樻ā鍨嬶紱絎簩銆佷負綰跨▼涔嬮棿鐨勪氦浜掓彁渚涙敮鎸併傜浜岄儴鍒嗗皢鐢辯▼搴忓簱鎻愪緵鏀寔銆傚ぇ瀹跺彲浠ョ湅鐪?a target="_blank">promises and futures錛屽叾鐢ㄤ簬瀵硅薄鐨勫悓姝ャ?nbsp;async() 鍑芥暟妯℃澘鐢ㄤ簬鍙戣搗騫跺彂浠誨姟錛岃?nbsp;thread_local 涓虹嚎紼嬪唴鐨勬暟鎹寚瀹氬瓨鍌ㄧ被鍨嬨傛洿澶氱殑涓滆タ錛屽彲浠ユ煡鐪?Anthony Williams鐨?nbsp;Simpler Multithreading in C++0x.

鏂板瀷鏅鴻兘鎸囬拡

C++98 鐨勭煡鑳芥寚閽堟槸 auto_ptr錛?鍦–++ 11涓搴熷純浜嗐?/code>C++11  寮曞叆浜嗕袱涓寚閽堢被錛?nbsp;shared_ptr 鍜?unique_ptr銆?shared_ptr鍙槸鍗曠函鐨勫紩鐢ㄨ鏁版寚閽堬紝unique_ptr 鏄敤鏉ュ彇浠?code>auto_ptr銆?nbsp;unique_ptr 鎻愪緵 auto_ptr 澶ч儴浠界壒鎬э紝鍞竴鐨勪緥澶栨槸 auto_ptr 鐨勪笉瀹夊叏銆侀殣鎬х殑宸﹀兼惉縐匯備笉鍍?nbsp;auto_ptr錛?code>unique_ptr 鍙互瀛樻斁鍦?C++0x 鎻愬嚭鐨勯偅浜涜兘瀵熻鎼Щ鍔ㄤ綔鐨勫鍣ㄤ箣涓?/p>

涓轟粈涔堣榪欎箞騫詫紵澶у鍙互鐪嬬湅銆奙ore Effective C++銆嬩腑瀵?auto_ptr鐨勮璁恒?/p>

鏂扮殑綆楁硶

瀹氫箟浜嗕竴浜涙柊鐨勭畻娉曪細 all_of(), any_of() 鍜?nbsp;none_of()銆?/code>

1
2
3
4
5
6
7
8
#include &lt;algorithm&gt;
//C++11 code
//are all of the elements positive?
all_of(first, first+n, ispositive()); //false
//is there at least one positive element?
any_of(first, first+n, ispositive());//true
// are none of the elements positive?
none_of(first, first+n, ispositive()); //false

浣跨敤鏂扮殑copy_n()綆楁硶錛屼綘鍙互寰堟柟渚垮湴鎷瘋礉鏁扮粍銆?/p>

1
2
3
4
5
#include &lt;algorithm&gt;
int source[5]={0,12,34,50,80};
int target[5];
//copy 5 elements from source to target
copy_n(source,5,target);

浣跨敤 iota() 鍙互鐢ㄦ潵鍒涘緩閫掑鐨勬暟鍒椼傚涓嬩緥鎵紺猴細

1
2
3
4
5
include &lt;numeric&gt;
int a[5]={0};
char c[3]={0};
iota(a, a+5, 10); //changes a to {10,11,12,13,14}
iota(c, c+3, 'a'); //{'a','b','c'}

鎬諱箣錛岀湅涓嬫潵錛孋++11 榪樻槸寰堝闄㈡淳錛屽緢澶氬疄鐢ㄧ殑涓滆タ榪樻槸娌℃湁錛屾瘮濡傦細 XML錛宻ockets錛宺eflection錛屽綋鐒惰繕鏈夊瀮鍦懼洖鏀躲傜湅鏉ヨ絳夊埌C++ 20浜嗐傚懙鍛點備笉榪嘋++ 11鍦ㄦц兘涓婅繕鏄緢蹇傚弬鐪?Google’s benchmark tests銆傚師鏂囪繕寮曠敤Stroustrup 鐨勮鐐癸細C++11 鏄竴闂ㄦ柊鐨勮璦——涓涓洿濂界殑 C++銆?/p>

濡傛灉鎶婃墍鏈夌殑鏀瑰彉閮藉垪鍑烘潵錛屼綘浼氬彂鐜扮湡澶氬晩銆傛垜浼拌C++ Primer閭f湰涔︾殑鍘氬害瑕佸鍔犺嚦灝?0%浠ヤ笂銆侰++鐨勯棬妲涗細涓嶄細瓚婃潵瓚婇珮浜嗗憿錛熸垜涓嶇煡閬擄紝浣嗘垜涓漢瑙夊緱榪欓棬璇█鐨勭‘鏄彉寰楄秺鏉ヨ秺浠や漢鏈涜屽嵈姝ヤ簡銆傦紙鎯寵搗浜嗘煇浜哄拰鎴戣鐨勪竴鍙ヨ瘽——瀛︽妧鏈湡鐨勬槸澶瘡浜嗭紝榪樻槸鎼炴柟娉曡濂芥販浜涳紵錛?/p>

]]>
鍚勭紪璇戝櫒瀵逛簬C++11鏂扮壒鎬х殑鏀寔鎯呭喌http://m.shnenglu.com/tianbianlan/archive/2013/05/05/199991.html澶╄竟钃?/dc:creator>澶╄竟钃?/author>Sun, 05 May 2013 13:11:00 GMThttp://m.shnenglu.com/tianbianlan/archive/2013/05/05/199991.htmlhttp://m.shnenglu.com/tianbianlan/comments/199991.htmlhttp://m.shnenglu.com/tianbianlan/archive/2013/05/05/199991.html#Feedback0http://m.shnenglu.com/tianbianlan/comments/commentRss/199991.htmlhttp://m.shnenglu.com/tianbianlan/services/trackbacks/199991.htmlhttp://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport
The following table lists C++0x features and their support in popular compilers.

Status Of C++ 0x Language Features in Compilers

C++ 0x FEATURE

PAPER(S)

HP aCC

EDG eccp

GCC

Intel C++

MSVC

IBM XLC++

Sun/ Oracle C++

Embarcadero C++ Builder

Digital Mars C++

Clang

alignas

N2341

4.8

3.0

alignof

N2341

4.5

Yes

2.9

Atomic operations

N2427

4.4

13.0

11.0

3.1

auto

v0.9: N1984, v1.0: N2546

4.1(v0.9)

4.4(v1.0)

11.0(v0.9)

10.0(v0.9)

11.1 (V1.0)

Yes

C99 preprocessor

N1653

4.3

11.1

10.1

5.9

Yes

Yes

Concepts [removed]

N2617

ConceptGcc


constexpr

N2235

4.6

13.0

12.1

3.1

decltype

v1.0: N2343, v1.1: N3276

4.1(v1.0)

4.3(v1.0) 4.8.1(v1.1)

11.0(v1.0)

10.0(v1.0), 11.0(v1.1)

11.1 (V1.0)

Yes

2.9

Defaulted And Deleted Functions

N2346

4.1

4.4

12.0

3.0

Delegating Constructors

N1986

4.7


11.0 nov'12

11.1

3.0

Explicit conversion operators

N2437

4.5

13.0

11.0 nov'12

12.1

Yes

3.0

Extended friend Declarations

N1791

4.1

4.7

11.0

10.0***

V1R11,11.1

2.9

extern template

N1987

3, 5, 6

3.3

9

6.0

V1R11,11.1

Yes

Yes

Forward declarations for enums

N2764

4.6

11.0

12.1

3.1

Inheriting Constructors

N2540

4.8



Initializer Lists

N2672

4.4

13.0

11.0 nov'12

3.1

Lambda expressions and closures

v0.9: N2550, v1.0: N2658, v1.1: N2927

4.1(v0.9)

4.5(v1.1)

11.0(v0.9)
12.0(v1.0)

10.0(v1.0), 11.0(v1.1)

3.1

Local and Unnamed Types as Template Arguments

N2657

4.5

12.0

10.0

2.9

long long

N1811

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Namespace Association

N2535

4.4


11.1

2.9

New character types

N2249

4.4

2.9

New function declaration syntax for deduced return types

N2541

4.1

4.4

12.1

10.0

12.1

2.9

nullptr

N2431

4.6

12.1*

10.0

2.9

Unicode String Literals

N2442

4.4

11.0*

5.7

Yes

3.0

Raw String Literals

N2442

4.5


11.0 nov'12

Yes

User-defined Literals

N2765

4.7

3.1

Right Angle Brackets

N1757

4.1

4.3

11.0

8.0

12.1

Yes

R-Value References, std::move

v1.0: N2118, v2.0: N2844, v2.1: N2844+, v3.0: N3053

4.1(v1.0)

4.3(v1.0)
4.5(v2.1)
4.6(v3.0)

11.1(v1.0)
12.0(v2.0)

10.0(v2.0), 11.0(v2.1)

12.1(v2.1)

Yes

Yes

static_assert

N1720

4.1

4.3

11.0

10.0

11.1

Yes

2.9

Strongly-typed enums

N2347

4.4

12.0

11.0

12.1

Yes

2.9

Template aliases

N2258

4.7

12.1

3.0

Thread-Local Storage

N2659

4.8 (4.4****)

11.1***

10.0***

5.9***

2.9****

Unrestricted Unions

N2544

4.6


3.0

Built-in Type Traits

N1836

6.16

4.0

4.3

10.0

8.0

Yes

3.0

Variadic Templates

v0.9: N2242, v1.0: N2555

4.1(v0.9)

4.3(v0.9) 4.4(v1.0)

12.1(v0.9)

11.0 nov'12

11.1 (v0.9)

2.9(1.0)

Range-based for-loop

N2930

4.6

13.0

11.0

3.0

override and final

v0.8: N2928, v0.9: N3206, v1.0: N3272

4.7

12.0(v0.8)***

8.0(v0.8)*** 11.0(v1.0)

2.9

Attributes

N2761

4.8

12.1

ref-qualifiers

N2439

4.8.1

2.9

Non-static data member initializers

N2756

4.7

3.0

Dynamic initialization and destruction with concurrency (Magic statics)

N2660

4.3

?

2.9

* — 1) unicode string literals is a feature of the EDG frontend, but it is undocumented at Intel C++ compiler (/Qoption,cpp,"--uliterals" option enables it)



]]>
gprof鈥斺擥NU鎬ц兘鍒嗘瀽宸ュ叿 http://m.shnenglu.com/tianbianlan/archive/2013/04/22/199639.html澶╄竟钃?/dc:creator>澶╄竟钃?/author>Mon, 22 Apr 2013 08:39:00 GMThttp://m.shnenglu.com/tianbianlan/archive/2013/04/22/199639.htmlhttp://m.shnenglu.com/tianbianlan/comments/199639.htmlhttp://m.shnenglu.com/tianbianlan/archive/2013/04/22/199639.html#Feedback0http://m.shnenglu.com/tianbianlan/comments/commentRss/199639.htmlhttp://m.shnenglu.com/tianbianlan/services/trackbacks/199639.html杞澆鑷?/em>http://www.cnblogs.com/feisky/archive/2010/03/09/1681997.html

gprof浠嬬粛

gprof鏄疓NU profiler宸ュ叿銆傚彲浠ユ樉紺虹▼搴忚繍琛岀殑“flat profile”錛屽寘鎷瘡涓嚱鏁扮殑璋冪敤嬈℃暟錛屾瘡涓嚱鏁版秷鑰楃殑澶勭悊鍣ㄦ椂闂淬備篃鍙互鏄劇ず“璋冪敤鍥?#8221;錛屽寘鎷嚱鏁扮殑璋冪敤鍏崇郴錛屾瘡涓嚱鏁拌皟鐢ㄨ姳璐逛簡澶氬皯鏃墮棿銆傝繕鍙互鏄劇ず“娉ㄩ噴鐨勬簮浠g爜”錛屾槸紼嬪簭婧愪唬鐮佺殑涓涓鏈紝鏍囪鏈夌▼搴忎腑姣忚浠g爜鐨勬墽琛屾鏁般?/p>

涓篻prof緙栬瘧紼嬪簭


鍦ㄧ紪璇戞垨閾炬帴婧愮▼搴忕殑鏃跺欏湪緙栬瘧鍣ㄧ殑鍛戒護琛屽弬鏁頒腑鍔犲叆“-pg”閫夐」錛岀紪璇戞椂緙栬瘧鍣ㄤ細鑷姩鍦ㄧ洰鏍囦唬鐮佷腑鎻掑叆鐢ㄤ簬鎬ц兘嫻嬭瘯鐨勪唬鐮佺墖鏂紝榪欎簺浠g爜鍦ㄧ▼搴忓湪榪愯鏃墮噰闆嗗茍璁板綍鍑芥暟鐨勮皟鐢ㄥ叧緋誨拰璋冪敤嬈℃暟錛屼互鍙婇噰闆嗗茍璁板綍鍑芥暟鑷韓鎵ц鏃墮棿鍜屽瓙鍑芥暟鐨勮皟鐢ㄦ椂闂達紝紼嬪簭榪愯緇撴潫鍚庯紝浼氬湪紼嬪簭閫鍑虹殑璺緞涓嬬敓鎴愪竴涓猤mon.out鏂囦歡銆傝繖涓枃浠跺氨鏄褰曞茍淇濆瓨涓嬫潵鐨勭洃鎺ф暟鎹傚彲浠ラ氳繃鍛戒護琛屾柟寮忕殑gprof鎴栧浘褰㈠寲鐨凨prof鏉ヨВ璇昏繖浜涙暟鎹茍瀵圭▼搴忕殑鎬ц兘榪涜鍒嗘瀽銆傚彟澶栵紝濡傛灉鎯蟲煡鐪嬪簱鍑芥暟鐨刾rofiling錛岄渶瑕佸湪緙栬瘧鏄啀鍔犲叆“-lc_p”緙栬瘧鍙傛暟浠f浛“-lc”緙栬瘧鍙傛暟錛岃繖鏍風▼搴忎細閾炬帴libc_p.a搴擄紝鎵嶅彲浠ヤ駭鐢熷簱鍑芥暟鐨刾rofiling淇℃伅銆傚鏋滄兂鎵ц涓琛屼竴琛岀殑profiling錛岃繕闇瑕佸姞鍏?#8220;-g”緙栬瘧鍙傛暟銆?br />渚嬪濡備笅鍛戒護琛岋細gcc -Wall -g -pg -lc_p example.c -o example

Gprof鍩烘湰鐢ㄦ硶錛?/em>

1錛?浣跨敤 -pg 緙栬瘧鍜岄摼鎺ヤ綘鐨勫簲鐢ㄧ▼搴忋?/p>

2錛?鎵ц浣犵殑搴旂敤紼嬪簭浣夸箣鐢熸垚渚沢prof 鍒嗘瀽鐨勬暟鎹?

3錛?浣跨敤gprof 紼嬪簭鍒嗘瀽浣犵殑搴旂敤紼嬪簭鐢熸垚鐨勬暟鎹?

$gprof -b a.out gmon.out      
Flat profile:

Each sample counts as 0.01 seconds.
no time accumulated

  %   cumulative   self              self     total          
time   seconds   seconds    calls  Ts/call  Ts/call  name   
  0.00      0.00     0.00        1     0.00     0.00  function

                        Call graph

granularity: each sample hit covers 2 byte(s) no time propagated

index % time    self  children    called     name
                0.00    0.00       1/1           main [8]
[1]      0.0    0.00    0.00       1         function [1]
-----------------------------------------------

Index by function name

   [1] function

gprof浜х敓鐨勪俊鎭?/h1>


%                        the percentage of the total running time of the
time                     program used by this function.
                           鍑芥暟浣跨敤鏃墮棿鍗犳墍鏈夋椂闂寸殑鐧懼垎姣斻?br />cumulative          a running sum of the number of seconds accounted
seconds             for by this function and those listed above it.
                           鍑芥暟鍜屼笂鍒楀嚱鏁扮瘡璁℃墽琛岀殑鏃墮棿銆?br />self                    the number of seconds accounted for by this
seconds             function alone.  This is the major sort for this
                          listing.
                          鍑芥暟鏈韓鎵鎵ц鐨勬椂闂淬?br />calls                   the number of times this function was invoked, if
                          this function is profiled, else blank.
                          鍑芥暟琚皟鐢ㄧ殑嬈℃暟
self                   the average number of milliseconds spent in this
ms/call               function per call, if this function is profiled,
                         else blank.
                          姣忎竴嬈¤皟鐢ㄨ姳璐瑰湪鍑芥暟鐨勬椂闂磎icroseconds銆?br />total                  the average number of milliseconds spent in this
ms/call               function and its descendents per call, if this
                          function is profiled, else blank.
                          姣忎竴嬈¤皟鐢紝鑺辮垂鍦ㄥ嚱鏁板強鍏惰鐢熷嚱鏁扮殑騫沖潎鏃墮棿microseconds銆?br />name                 the name of the function.  This is the minor sort
                          for this listing. The index shows the location of
                          the function in the gprof listing. If the index is
                          in parenthesis it shows where it would appear in
                          the gprof listing if it were to be printed.
                          鍑芥暟鍚?/p>

鍛戒護鏍煎紡

gprof [鍙墽琛屾枃浠禲 [gmon.out鏂囦歡] [鍏跺畠鍙傛暟]

鏂規嫭鍙蜂腑鐨勫唴瀹瑰彲浠ョ渷鐣ャ傚鏋滅渷鐣ヤ簡“鍙墽琛屾枃浠?#8221;錛実prof浼氬湪褰撳墠鐩綍涓嬫悳绱.out鏂囦歡浣滀負鍙墽琛屾枃浠訛紝鑰屽鏋滅渷鐣ヤ簡gmon.out鏂囦歡錛実prof涔熶細鍦ㄥ綋鍓嶇洰褰曚笅瀵繪壘gmon.out銆傚叾瀹冨弬鏁板彲浠ユ帶鍒秅prof杈撳嚭鍐呭鐨勬牸寮忕瓑淇℃伅銆傛渶甯哥敤鐨勫弬鏁板涓嬶細

l -b 涓嶅啀杈撳嚭緇熻鍥捐〃涓瘡涓瓧孌電殑璇︾粏鎻忚堪銆?

l -p 鍙緭鍑哄嚱鏁扮殑璋冪敤鍥撅紙Call graph鐨勯偅閮ㄥ垎淇℃伅錛夈?

l -q 鍙緭鍑哄嚱鏁扮殑鏃墮棿娑堣楀垪琛ㄣ?

l -e Name 涓嶅啀杈撳嚭鍑芥暟Name 鍙婂叾瀛愬嚱鏁扮殑璋冪敤鍥撅紙闄ら潪瀹冧滑鏈夋湭琚檺鍒剁殑鍏跺畠鐖跺嚱鏁幫級銆傚彲浠ョ粰瀹氬涓?-e 鏍囧織銆備竴涓?-e 鏍囧織鍙兘鎸囧畾涓涓嚱鏁般?

l -E Name 涓嶅啀杈撳嚭鍑芥暟Name 鍙婂叾瀛愬嚱鏁扮殑璋冪敤鍥撅紝姝ゆ爣蹇楃被浼間簬 -e 鏍囧織錛屼絾瀹冨湪鎬繪椂闂村拰鐧懼垎姣旀椂闂寸殑璁$畻涓帓闄や簡鐢卞嚱鏁癗ame 鍙婂叾瀛愬嚱鏁版墍鐢ㄧ殑鏃墮棿銆?

l -f Name 杈撳嚭鍑芥暟Name 鍙婂叾瀛愬嚱鏁扮殑璋冪敤鍥俱傚彲浠ユ寚瀹氬涓?-f 鏍囧織銆備竴涓?-f 鏍囧織鍙兘鎸囧畾涓涓嚱鏁般?

l -F Name 杈撳嚭鍑芥暟Name 鍙婂叾瀛愬嚱鏁扮殑璋冪敤鍥撅紝瀹冪被浼間簬 -f 鏍囧織錛屼絾瀹冨湪鎬繪椂闂村拰鐧懼垎姣旀椂闂磋綆椾腑浠呬嬌鐢ㄦ墍鎵撳嵃鐨勪緥紼嬬殑鏃墮棿銆傚彲浠ユ寚瀹氬涓?-F 鏍囧織銆備竴涓?-F 鏍囧織鍙兘鎸囧畾涓涓嚱鏁般?F 鏍囧織瑕嗙洊 -E 鏍囧織銆?

l -z 鏄劇ず浣跨敤嬈℃暟涓洪浂鐨勪緥紼嬶紙鎸夌収璋冪敤璁℃暟鍜岀瘡縐椂闂磋綆楋級銆?

涓嶈繃,gprof涓嶈兘鏄劇ず瀵硅薄涔嬮棿鐨勭戶鎵垮叧緋?榪欎篃鏄畠鐨勫急鐐?



]]>
銆愯漿銆戞祬鏋愮郴緇熺殑澶у皬绔ā寮?http://m.shnenglu.com/tianbianlan/archive/2012/01/19/164364.html澶╄竟钃?/dc:creator>澶╄竟钃?/author>Thu, 19 Jan 2012 03:39:00 GMThttp://m.shnenglu.com/tianbianlan/archive/2012/01/19/164364.htmlhttp://m.shnenglu.com/tianbianlan/comments/164364.htmlhttp://m.shnenglu.com/tianbianlan/archive/2012/01/19/164364.html#Feedback0http://m.shnenglu.com/tianbianlan/comments/commentRss/164364.htmlhttp://m.shnenglu.com/tianbianlan/services/trackbacks/164364.html

杞澆鏉ユ簮錛?a >http://blog.csdn.net/dragonbooker/article/details/6173321
澶х妯″紡

銆銆鎵璋撶殑澶х妯″紡錛屾槸鎸囨暟鎹殑浣庝綅錛堝氨鏄潈鍊艱緝灝忕殑鍚庨潰閭e嚑浣嶏級淇濆瓨鍦ㄥ唴瀛樼殑楂樺湴鍧涓紝鑰屾暟鎹殑楂樹綅錛屼繚瀛樺湪鍐呭瓨鐨勪綆鍦板潃涓紝榪欐牱鐨勫瓨鍌ㄦā寮忔湁鐐瑰効綾諱技浜庢妸鏁版嵁褰撲綔瀛楃涓查『搴忓鐞嗭細鍦板潃鐢卞皬鍚戝ぇ澧炲姞錛岃屾暟鎹粠楂樹綅寰浣庝綅鏀撅紱

 

灝忕妯″紡

銆銆鎵璋撶殑灝忕妯″紡錛屾槸鎸囨暟鎹殑浣庝綅淇濆瓨鍦ㄥ唴瀛樼殑浣庡湴鍧涓紝鑰屾暟 鎹殑楂樹綅淇濆瓨鍦ㄥ唴瀛樼殑楂樺湴鍧涓紝榪欑瀛樺偍妯″紡灝嗗湴鍧鐨勯珮浣庡拰鏁版嵁浣嶆潈鏈夋晥鍦扮粨鍚堣搗鏉ワ紝楂樺湴鍧閮ㄥ垎鏉冨奸珮錛屼綆鍦板潃閮ㄥ垎鏉冨間綆錛屽拰鎴戜滑鐨勯昏緫鏂規硶涓鑷淬?/span>

 

涓轟粈涔堟湁澶у皬绔ā寮忎箣鍒?/span>

涓轟粈涔堜細鏈夊ぇ灝忕妯″紡涔嬪垎鍛紵榪欐槸鍥犱負鍦ㄨ綆楁満緋葷粺涓紝鎴戜滑鏄互瀛楄妭涓哄崟浣嶇殑錛屾瘡涓湴鍧鍗曞厓閮藉搴旂潃涓涓瓧鑺傦紝涓涓瓧鑺備負 8bit銆備絾鏄湪C璇█涓櫎浜?/span>8bit鐨?/span>char涔嬪錛岃繕鏈?/span>16bit鐨?/span>short鍨嬶紝32bit鐨?/span>long鍨嬶紙瑕佺湅鍏蜂綋鐨勭紪璇戝櫒錛夛紝鍙﹀錛屽浜庝綅鏁板ぇ浜?/span> 8浣嶇殑澶勭悊鍣紝渚嬪16浣嶆垨鑰?/span>32浣嶇殑澶勭悊鍣紝鐢變簬瀵勫瓨鍣ㄥ搴﹀ぇ浜庝竴涓瓧鑺傦紝閭d箞蹇呯劧瀛樺湪鐫涓涓浣曞皢澶氫釜瀛楄妭瀹夋帓鐨勯棶棰樸傚洜姝ゅ氨瀵艱嚧浜嗗ぇ绔瓨鍌ㄦā寮忓拰灝忕瀛樺偍妯″紡銆備緥濡備竴涓?/span>16bit鐨?/span>short鍨?/span>x錛屽湪鍐呭瓨涓殑鍦板潃涓?/span>0x0010錛?/span>x鐨勫間負0x1122錛岄偅涔?/span>0x11涓洪珮瀛楄妭錛?/span>0x22涓轟綆瀛楄妭銆傚浜?/span> 澶х妯″紡錛屽氨灝?/span>0x11鏀懼湪浣庡湴鍧涓紝鍗?/span>0x0010涓紝0x22鏀懼湪楂樺湴鍧涓紝鍗?/span>0x0011涓傚皬绔ā寮忥紝鍒氬ソ鐩稿弽銆傛垜浠父鐢ㄧ殑X86緇撴瀯鏄皬绔ā寮忥紝鑰?/span>KEIL C51鍒欎負澶х妯″紡銆傚緢澶氱殑ARM錛?/span>DSP閮戒負灝忕妯″紡銆傛湁浜?/span>ARM澶勭悊鍣ㄨ繕鍙互鐢辯‖浠舵潵閫夋嫨鏄ぇ绔ā寮忚繕鏄皬绔ā寮忋?/span>

浜屻佷婦渚嬭鏄?/span>

澶у閮界煡閬撳瓧絎?#8216;A’鐨?/span>ASCII鐮佸間負65錛堝崄榪涘埗錛変篃灝辨槸0x41錛岄偅涔堣繖涓煎湪涓嶅悓澶у皬绔ā寮忕殑緋葷粺涓瓨鏀劇殑鏂瑰紡鍒嗗埆涓猴細

澶х妯″紡錛?/span>00 00 00 41 -----楂樹綆妯″紡

灝忕妯″紡錛?/span>41 00 00 00  -----浣庝綆妯″紡

涓夈佷嬌鐢ㄤ唬鐮佸垽鏂ぇ灝忕妯″紡

鍙互閫氳繃澹版槑涓涓仈鍚堬紙union錛夊垽鏂ぇ灝忕妯″紡錛?/span>

 

/**

 * 鏂規硶涓 寰楀埌褰撳墠緋葷粺鐨勫ぇ灝忕灞炴?/span>, 姝ゆ柟娉曡淇濊瘉鍦?/span>32浣嶆満嫻嬭瘯

 */

static union {

       char c[4];

    unsigned long l;

}

 

endian_test = { { 'l', '?', '?', 'b' } }; 銆銆

 

#define ENDIANNESS ((char)endian_test.l)

 

/**

 * 鏂規硶浜?/span>: 寰楀埌褰撳墠緋葷粺鐨勫ぇ灝忕灞炴?/span>

 */

static union {

     short n;

     char c[sizeof(short)];

}un;

 

int getEndian()

{

   un.n = 0x0102;

 

   if ((un.c[0] == 1 && un.c[1] == 2))

   {

     printf("big endian/n");

   }

   else if ((un.c[0] == 2 && un.c[1] == 1))

   {

     printf("little endian/n");

   }

   else

     printf("error!/n");

 

   return 0;

}

 

/**

 * 鏂規硶涓?/span>: 寰楀埌褰撳墠緋葷粺鐨勫ぇ灝忕灞炴?/span>

 */

int getEndian()

{

   int c = 1;                               // big-endian: 00 00 00 01 little-endian: 01 00 00 00

  // int c = 0x02000001;          // big-endian: 02 00 00 01 little-endian: 01 00 00 02

 

   if ((*(char *)&c) == 1)               // 鍙?/span>c鍙橀噺鎵鍦ㄥ湴鍧涓婄殑涓涓瓧鑺傘?/span>

   {

     printf("little endian/n");

   }

   else

     printf("big endian");

 

   return 0;

}



]]>
銆愯漿銆慣CP涓夋鎻℃墜/鍥涙鎸ユ墜璇﹁В http://m.shnenglu.com/tianbianlan/archive/2012/01/11/164020.html澶╄竟钃?/dc:creator>澶╄竟钃?/author>Wed, 11 Jan 2012 15:49:00 GMThttp://m.shnenglu.com/tianbianlan/archive/2012/01/11/164020.htmlhttp://m.shnenglu.com/tianbianlan/comments/164020.htmlhttp://m.shnenglu.com/tianbianlan/archive/2012/01/11/164020.html#Feedback0http://m.shnenglu.com/tianbianlan/comments/commentRss/164020.htmlhttp://m.shnenglu.com/tianbianlan/services/trackbacks/164020.htmlhttp://blog.csdn.net/sfwork/article/details/6876692
1銆佸緩绔嬭繛鎺ュ崗璁紙涓夋鎻℃墜錛?wbr>
錛?錛夊鎴風鍙戦佷竴涓甫SYN鏍囧織鐨凾CP鎶ユ枃鍒版湇鍔″櫒銆傝繖鏄笁嬈℃彙鎵嬭繃紼嬩腑鐨勬姤鏂?銆?br />錛?錛?鏈嶅姟鍣ㄧ鍥炲簲瀹㈡埛绔殑錛岃繖鏄笁嬈℃彙鎵嬩腑鐨勭2涓姤鏂囷紝榪欎釜鎶ユ枃鍚屾椂甯CK鏍囧織鍜孲YN鏍囧織銆傚洜姝ゅ畠琛ㄧず瀵瑰垰鎵嶅鎴風SYN鎶ユ枃鐨勫洖搴旓紱鍚屾椂鍙堟爣蹇桽YN緇欏鎴風錛岃闂鎴風鏄惁鍑嗗濂借繘琛屾暟鎹氳銆?br />錛?錛?瀹㈡埛蹇呴』鍐嶆鍥炲簲鏈嶅姟孌典竴涓狝CK鎶ユ枃錛岃繖鏄姤鏂囨3銆?br />2銆佽繛鎺ョ粓姝㈠崗璁紙鍥涙鎸ユ墜錛?wbr>
銆 銆鐢變簬TCP榪炴帴鏄叏鍙屽伐鐨勶紝鍥犳姣忎釜鏂瑰悜閮藉繀欏誨崟鐙繘琛屽叧闂傝繖鍘熷垯鏄綋涓鏂瑰畬鎴愬畠鐨勬暟鎹彂閫佷換鍔″悗灝辮兘鍙戦佷竴涓狥IN鏉ョ粓姝㈣繖涓柟鍚戠殑榪炴帴銆傛敹鍒頒竴涓?FIN鍙剰鍛崇潃榪欎竴鏂瑰悜涓婃病鏈夋暟鎹祦鍔紝涓涓猅CP榪炴帴鍦ㄦ敹鍒頒竴涓狥IN鍚庝粛鑳藉彂閫佹暟鎹傞鍏堣繘琛屽叧闂殑涓鏂瑰皢鎵ц涓誨姩鍏抽棴錛岃屽彟涓鏂規墽琛岃鍔ㄥ叧闂?br />銆錛?錛?TCP瀹㈡埛绔彂閫佷竴涓狥IN錛岀敤鏉ュ叧闂鎴峰埌鏈嶅姟鍣ㄧ殑鏁版嵁浼犻侊紙鎶ユ枃孌?錛夈?br />銆錛?錛?鏈嶅姟鍣ㄦ敹鍒拌繖涓狥IN錛屽畠鍙戝洖涓涓狝CK錛岀‘璁ゅ簭鍙蜂負鏀跺埌鐨勫簭鍙峰姞1錛堟姤鏂囨5錛夈傚拰SYN涓鏍鳳紝涓涓狥IN灝嗗崰鐢ㄤ竴涓簭鍙楓?br />銆錛?錛?鏈嶅姟鍣ㄥ叧闂鎴風鐨勮繛鎺ワ紝鍙戦佷竴涓狥IN緇欏鎴風錛堟姤鏂囨6錛夈?br />銆錛?錛?瀹㈡埛孌靛彂鍥濧CK鎶ユ枃紜錛屽茍灝嗙‘璁ゅ簭鍙瘋緗負鏀跺埌搴忓彿鍔?錛堟姤鏂囨7錛夈?br />CLOSED: 榪欎釜娌′粈涔堝ソ璇寸殑浜嗭紝琛ㄧず鍒濆鐘舵併?br />LISTEN: 榪欎釜涔熸槸闈炲父瀹規槗鐞嗚В鐨勪竴涓姸鎬侊紝琛ㄧず鏈嶅姟鍣ㄧ鐨勬煇涓猄OCKET澶勪簬鐩戝惉鐘舵侊紝鍙互鎺ュ彈榪炴帴浜嗐?br />SYN_RCVD: 榪欎釜鐘舵佽〃紺烘帴鍙楀埌浜哠YN鎶ユ枃錛屽湪姝e父鎯呭喌涓嬶紝榪欎釜鐘舵佹槸鏈嶅姟鍣ㄧ鐨凷OCKET鍦ㄥ緩绔婽CP榪炴帴鏃剁殑涓夋鎻℃墜浼氳瘽榪囩▼涓殑涓涓腑闂寸姸鎬侊紝寰堢煭鏆傦紝鍩烘湰涓婄敤netstat浣犳槸寰堥毦鐪嬪埌榪欑鐘舵佺殑錛岄櫎闈炰綘鐗規剰鍐欎簡涓涓鎴風嫻嬭瘯紼嬪簭錛屾晠鎰忓皢涓夋TCP鎻℃墜榪囩▼涓渶鍚庝竴涓狝CK鎶ユ枃涓嶄簣鍙戦併傚洜姝よ繖縐嶇姸鎬佹椂錛屽綋鏀跺埌瀹㈡埛绔殑ACK鎶ユ枃鍚庯紝瀹冧細榪涘叆鍒癊STABLISHED鐘舵併?br />SYN_SENT: 榪欎釜鐘舵佷笌SYN_RCVD閬ユ兂鍛煎簲錛屽綋瀹㈡埛绔疭OCKET鎵цCONNECT榪炴帴鏃訛紝瀹冮鍏堝彂閫丼YN鎶ユ枃錛屽洜姝や篃闅忓嵆瀹冧細榪涘叆鍒頒簡SYN_SENT鐘舵侊紝騫剁瓑寰呮湇鍔$鐨勫彂閫佷笁嬈℃彙鎵嬩腑鐨勭2涓姤鏂囥係YN_SENT鐘舵佽〃紺哄鎴風宸插彂閫丼YN鎶ユ枃銆?br />ESTABLISHED錛氳繖涓鏄撶悊瑙d簡錛岃〃紺鴻繛鎺ュ凡緇忓緩绔嬩簡銆?br />FIN_WAIT_1: 榪欎釜鐘舵佽濂藉ソ瑙i噴涓涓嬶紝鍏跺疄FIN_WAIT_1鍜孎IN_WAIT_2鐘舵佺殑鐪熸鍚箟閮芥槸琛ㄧず絳夊緟瀵規柟鐨凢IN鎶ユ枃銆傝岃繖涓ょ鐘舵佺殑鍖哄埆鏄細FIN_WAIT_1鐘舵佸疄闄呬笂鏄綋SOCKET鍦‥STABLISHED鐘舵佹椂錛屽畠鎯充富鍔ㄥ叧闂繛鎺ワ紝鍚戝鏂瑰彂閫佷簡FIN鎶ユ枃錛屾鏃惰SOCKET鍗寵繘鍏ュ埌FIN_WAIT_1鐘舵併傝屽綋瀵規柟鍥炲簲ACK鎶ユ枃鍚庯紝鍒欒繘鍏ュ埌FIN_WAIT_2鐘舵侊紝褰撶劧鍦ㄥ疄闄呯殑姝e父鎯呭喌涓嬶紝鏃犺瀵規柟浣曠鎯呭喌涓嬶紝閮藉簲璇ラ┈涓婂洖搴擜CK鎶ユ枃錛屾墍浠IN_WAIT_1鐘舵佷竴鑸槸姣旇緝闅捐鍒扮殑錛岃孎IN_WAIT_2鐘舵佽繕鏈夋椂甯稿父鍙互鐢╪etstat鐪嬪埌銆?br />FIN_WAIT_2錛氫笂闈㈠凡緇忚緇嗚В閲婁簡榪欑鐘舵侊紝瀹為檯涓奆IN_WAIT_2鐘舵佷笅鐨凷OCKET錛岃〃紺哄崐榪炴帴錛屼篃鍗蟲湁涓鏂硅姹俢lose榪炴帴錛屼絾鍙﹀榪樺憡璇夊鏂癸紝鎴戞殏鏃惰繕鏈夌偣鏁版嵁闇瑕佷紶閫佺粰浣狅紝紼嶅悗鍐嶅叧闂繛鎺ャ?br />TIME_WAIT: 琛ㄧず鏀跺埌浜嗗鏂圭殑FIN鎶ユ枃錛屽茍鍙戦佸嚭浜咥CK鎶ユ枃錛屽氨絳?MSL鍚庡嵆鍙洖鍒癈LOSED鍙敤鐘舵佷簡銆傚鏋淔IN_WAIT_1鐘舵佷笅錛屾敹鍒頒簡瀵規柟鍚屾椂甯IN鏍囧織鍜孉CK鏍囧織鐨勬姤鏂囨椂錛屽彲浠ョ洿鎺ヨ繘鍏ュ埌TIME_WAIT鐘舵侊紝鑰屾棤欏葷粡榪嘑IN_WAIT_2鐘舵併?br />CLOSING: 榪欑鐘舵佹瘮杈冪壒孌婏紝瀹為檯鎯呭喌涓簲璇ユ槸寰堝皯瑙侊紝灞炰簬涓縐嶆瘮杈冪綍瑙佺殑渚嬪鐘舵併傛甯告儏鍐典笅錛屽綋浣犲彂閫丗IN鎶ユ枃鍚庯紝鎸夌悊鏉ヨ鏄簲璇ュ厛鏀跺埌錛堟垨鍚屾椂鏀跺埌錛夊鏂圭殑ACK鎶ユ枃錛屽啀鏀跺埌瀵規柟鐨凢IN鎶ユ枃銆備絾鏄疌LOSING鐘舵佽〃紺轟綘鍙戦丗IN鎶ユ枃鍚庯紝騫舵病鏈夋敹鍒板鏂圭殑ACK鎶ユ枃錛屽弽鑰屽嵈涔熸敹鍒頒簡瀵規柟鐨凢IN鎶ユ枃銆備粈涔堟儏鍐典笅浼氬嚭鐜版縐嶆儏鍐靛憿錛熷叾瀹炵粏鎯充竴涓嬶紝涔熶笉闅懼緱鍑虹粨璁猴細閭e氨鏄鏋滃弻鏂瑰嚑涔庡湪鍚屾椂close涓涓猄OCKET鐨勮瘽錛岄偅涔堝氨鍑虹幇浜嗗弻鏂瑰悓鏃跺彂閫丗IN鎶ユ枃鐨勬儏鍐碉紝涔熷嵆浼氬嚭鐜癈LOSING鐘舵侊紝琛ㄧず鍙屾柟閮芥鍦ㄥ叧闂璖OCKET榪炴帴銆?br />CLOSE_WAIT: 榪欑鐘舵佺殑鍚箟鍏跺疄鏄〃紺哄湪絳夊緟鍏抽棴銆傛庝箞鐞嗚В鍛紵褰撳鏂筩lose涓涓猄OCKET鍚庡彂閫丗IN鎶ユ枃緇欒嚜宸憋紝浣犵郴緇熸鏃犵枒闂湴浼氬洖搴斾竴涓狝CK鎶ユ枃緇欏鏂癸紝姝ゆ椂鍒欒繘鍏ュ埌CLOSE_WAIT鐘舵併傛帴涓嬫潵鍛紝瀹為檯涓婁綘鐪熸闇瑕佽冭檻鐨勪簨鎯呮槸瀵熺湅浣犳槸鍚﹁繕鏈夋暟鎹彂閫佺粰瀵規柟錛屽鏋滄病鏈夌殑璇濓紝閭d箞浣犱篃灝卞彲浠lose榪欎釜SOCKET錛屽彂閫丗IN鎶ユ枃緇欏鏂癸紝涔熷嵆鍏抽棴榪炴帴銆傛墍浠ヤ綘鍦–LOSE_WAIT鐘舵佷笅錛岄渶瑕佸畬鎴愮殑浜嬫儏鏄瓑寰呬綘鍘誨叧闂繛鎺ャ?br />LAST_ACK: 榪欎釜鐘舵佽繕鏄瘮杈冨鏄撳ソ鐞嗚В鐨勶紝瀹冩槸琚姩鍏抽棴涓鏂瑰湪鍙戦丗IN鎶ユ枃鍚庯紝鏈鍚庣瓑寰呭鏂圭殑ACK鎶ユ枃銆傚綋鏀跺埌ACK鎶ユ枃鍚庯紝涔熷嵆鍙互榪涘叆鍒癈LOSED鍙敤鐘舵佷簡銆?br />鏈鍚庢湁2涓棶棰樼殑鍥炵瓟錛屾垜鑷繁鍒嗘瀽鍚庣殑緇撹錛堜笉涓瀹氫繚璇?00%姝g‘錛?br />1銆?涓轟粈涔堝緩绔嬭繛鎺ュ崗璁槸涓夋鎻℃墜錛岃屽叧闂繛鎺ュ嵈鏄洓嬈℃彙鎵嬪憿錛?br />榪欐槸鍥犱負鏈嶅姟绔殑LISTEN鐘舵佷笅鐨凷OCKET褰撴敹鍒癝YN鎶ユ枃鐨勫緩榪炶姹傚悗錛屽畠鍙互鎶夾CK鍜孲YN錛圓CK璧峰簲絳斾綔鐢紝鑰孲YN璧峰悓姝ヤ綔鐢級鏀懼湪涓涓姤鏂囬噷鏉ュ彂閫併備絾鍏抽棴榪炴帴鏃訛紝褰撴敹鍒板鏂圭殑FIN鎶ユ枃閫氱煡鏃訛紝瀹冧粎浠呰〃紺哄鏂規病鏈夋暟鎹彂閫佺粰浣犱簡錛涗絾鏈繀浣犳墍鏈夌殑鏁版嵁閮藉叏閮ㄥ彂閫佺粰瀵規柟浜嗭紝鎵浠ヤ綘鍙互鏈繀浼氶┈涓婁細鍏抽棴SOCKET,涔熷嵆浣犲彲鑳借繕闇瑕佸彂閫佷竴浜涙暟鎹粰瀵規柟涔嬪悗錛屽啀鍙戦丗IN鎶ユ枃緇欏鏂規潵琛ㄧず浣犲悓鎰忕幇鍦ㄥ彲浠ュ叧闂繛鎺ヤ簡錛屾墍浠ュ畠榪欓噷鐨凙CK鎶ユ枃鍜孎IN鎶ユ枃澶氭暟鎯呭喌涓嬮兘鏄垎寮鍙戦佺殑銆?br />2銆?涓轟粈涔圱IME_WAIT鐘舵佽繕闇瑕佺瓑2MSL鍚庢墠鑳借繑鍥炲埌CLOSED鐘舵侊紵
榪欐槸鍥犱負錛氳櫧鐒跺弻鏂歸兘鍚屾剰鍏抽棴榪炴帴浜嗭紝鑰屼笖鎻℃墜鐨?涓姤鏂囦篃閮藉崗璋冨拰鍙戦佸畬姣曪紝鎸夌悊鍙互鐩存帴鍥炲埌CLOSED鐘舵侊紙灝卞ソ姣斾粠SYN_SEND鐘舵佸埌ESTABLISH鐘舵侀偅鏍鳳級錛涗絾鏄洜涓烘垜浠繀欏昏鍋囨兂緗戠粶鏄笉鍙潬鐨勶紝浣犳棤娉曚繚璇佷綘鏈鍚庡彂閫佺殑ACK鎶ユ枃浼氫竴瀹氳瀵規柟鏀跺埌錛屽洜姝ゅ鏂瑰浜嶭AST_ACK鐘舵佷笅鐨凷OCKET鍙兘浼氬洜涓鴻秴鏃舵湭鏀跺埌ACK鎶ユ枃錛岃岄噸鍙慒IN鎶ユ枃錛屾墍浠ヨ繖涓猅IME_WAIT鐘舵佺殑浣滅敤灝辨槸鐢ㄦ潵閲嶅彂鍙兘涓㈠け鐨凙CK鎶ユ枃銆?img src ="http://m.shnenglu.com/tianbianlan/aggbug/164020.html" width = "1" height = "1" />

]]>
B+鏁扮殑瀹炵幇--浼樼浠g爜http://m.shnenglu.com/tianbianlan/archive/2011/11/08/159814.html澶╄竟钃?/dc:creator>澶╄竟钃?/author>Tue, 08 Nov 2011 04:32:00 GMThttp://m.shnenglu.com/tianbianlan/archive/2011/11/08/159814.htmlhttp://m.shnenglu.com/tianbianlan/comments/159814.htmlhttp://m.shnenglu.com/tianbianlan/archive/2011/11/08/159814.html#Feedback0http://m.shnenglu.com/tianbianlan/comments/commentRss/159814.htmlhttp://m.shnenglu.com/tianbianlan/services/trackbacks/159814.htmlhttp://idlebox.net/2007/stx-btree/


]]>
[杞琞C++ 瀵硅薄鐨勫唴瀛樺竷灞 http://m.shnenglu.com/tianbianlan/archive/2010/04/29/113987.html澶╄竟钃?/dc:creator>澶╄竟钃?/author>Thu, 29 Apr 2010 11:30:00 GMThttp://m.shnenglu.com/tianbianlan/archive/2010/04/29/113987.htmlhttp://m.shnenglu.com/tianbianlan/comments/113987.htmlhttp://m.shnenglu.com/tianbianlan/archive/2010/04/29/113987.html#Feedback0http://m.shnenglu.com/tianbianlan/comments/commentRss/113987.htmlhttp://m.shnenglu.com/tianbianlan/services/trackbacks/113987.html
2008-11-14 浣滆咃細闄堢殦 鏉ユ簮錛歝sdn


鍓嶈█

07騫?2鏈堬紝鎴戝啓浜嗕竴綃囥奀++铏氬嚱鏁拌〃瑙f瀽銆嬬殑鏂囩珷錛屽紩璧蜂簡澶у鐨勫叴瓚c傛湁寰堝鏈嬪弸瀵規垜鐨勬枃绔犵暀浜嗚█錛屾湁榧撳姳鎴戠殑錛屾湁鎵硅瘎鎴戠殑錛岃繕鏈夊緢澶氶棶闂鐨勩傛垜鍦ㄨ繖閲屼竴騫跺澶у鐨勭暀璦琛ㄧず鎰熻阿銆傝繖涔熸槸鎴戜負浠涔堝啀鍐欎竴綃囩畫璦鐨勫師鍥犮傚洜涓猴紝鍦ㄤ笂涓綃囨枃绔犱腑錛屾垜鐢ㄤ簡鐨勭ず渚嬮兘鏄潪甯哥畝鍗曠殑錛屼富瑕佹槸涓轟簡璇存槑涓浜涙満鐞嗕笂鐨勯棶棰橈紝涔熸槸涓轟簡鍥句竴浜涜〃杈句笂鏂逛究鍜岀畝鍗曘備笉鎯籌紝榪欑瘒鏂囩珷鎴愪負浜嗘墦寮C++瀵硅薄妯″瀷鍐呭瓨甯冨眬鐨勪竴涓紩瀛愶紝寮曞彂浜嗗ぇ瀹跺C++瀵硅薄鐨勬洿娣卞眰嬈$殑璁ㄨ銆傚綋鐒訛紝鎴戜箣鍓嶇殑鏂囩珷榪樻湁寰堝鏂歸潰娌℃湁娑夊強錛屼粠鎴戜釜浜烘劅瑙変笅鏉ワ紝鍦ㄨ皥璁鴻櫄鍑芥暟琛ㄩ噷錛岃嚦灝戞湁浠ヤ笅榪欎簺鍐呭娌℃湁娑夊強錛?/p>

1錛夋湁鎴愬憳鍙橀噺鐨勬儏鍐點?/p>

2錛夋湁閲嶅緇ф壙鐨勬儏鍐點?/p>

3錛夋湁铏氭嫙緇ф壙鐨勬儏鍐點?/p>

4錛夋湁閽葷煶鍨嬭櫄鎷熺戶鎵跨殑鎯呭喌銆?/p>

榪欎簺閮芥槸鎴戞湰綃囨枃绔犻渶瑕佸悜澶у璇存槑鐨勪笢瑗褲傛墍浠ワ紝榪欑瘒鏂囩珷灝嗕細鏄奀++铏氬嚱鏁拌〃瑙f瀽銆嬬殑涓涓畫綃囷紝涔熸槸涓綃囬珮綰ц繘闃剁殑鏂囩珷銆傛垜甯屾湜澶у鍦ㄨ榪欑瘒鏂囩珷涔嬪墠瀵笴++鏈変竴瀹氱殑鍩虹鍜屼簡瑙o紝騫惰兘鍏堣鎴戠殑涓婁竴綃囨枃绔犮傚洜涓鴻繖綃囨枃绔犵殑娣卞害鍙兘浼氭瘮杈冩繁錛岃屼笖浼氭瘮杈冩潅涔憋紝鎴戝笇鏈涗綘鍦ㄨ鏈瘒鏂囩珷鏃朵笉浼氭湁澶ц剳鎬濈淮绱婁貢瀵艱嚧澶ц剳姝繪満鐨勬儏鍐點?-)

瀵硅薄鐨勫獎鍝嶅洜绱?/p>

綆鑰岃█涔嬶紝鎴戜滑涓涓被鍙兘浼氭湁濡備笅鐨勫獎鍝嶅洜绱狅細

1錛夋垚鍛樺彉閲?/p>

2錛夎櫄鍑芥暟錛堜駭鐢熻櫄鍑芥暟琛級

3錛夊崟涓緇ф壙錛堝彧緇ф壙浜庝竴涓被錛?/p>

4錛夊閲嶇戶鎵匡紙緇ф壙澶氫釜綾伙級

5錛夐噸澶嶇戶鎵匡紙緇ф壙鐨勫涓埗綾諱腑鍏剁埗綾繪湁鐩稿悓鐨勮秴綾伙級

6錛夎櫄鎷熺戶鎵匡紙浣跨敤virtual鏂瑰紡緇ф壙錛屼負浜嗕繚璇佺戶鎵垮悗鐖剁被鐨勫唴瀛樺竷灞鍙細瀛樺湪涓浠斤級

涓婅堪鐨勪笢瑗塊氬父鏄疌++榪欓棬璇█鍦ㄨ涔夋柟闈㈠瀵硅薄鍐呴儴鐨勫獎鍝嶅洜绱狅紝褰撶劧錛岃繕浼氭湁緙栬瘧鍣ㄧ殑褰卞搷錛堟瘮濡備紭鍖栵級錛岃繕鏈夊瓧鑺傚榻愮殑褰卞搷銆傚湪榪欓噷鎴戜滑閮戒笉璁ㄨ錛屾垜浠彧璁ㄨC++璇█涓婄殑褰卞搷銆?/p>

鏈瘒鏂囩珷鐫閲嶈璁轟笅榪板嚑涓儏鍐典笅鐨凜++瀵硅薄鐨勫唴瀛樺竷灞鎯呭喌銆?/p>

1錛夊崟涓鐨勪竴鑸戶鎵匡紙甯︽垚鍛樺彉閲忋佽櫄鍑芥暟銆佽櫄鍑芥暟瑕嗙洊錛?/p>

2錛夊崟涓鐨勮櫄鎷熺戶鎵匡紙甯︽垚鍛樺彉閲忋佽櫄鍑芥暟銆佽櫄鍑芥暟瑕嗙洊錛?/p>

3錛夊閲嶇戶鎵匡紙甯︽垚鍛樺彉閲忋佽櫄鍑芥暟銆佽櫄鍑芥暟瑕嗙洊錛?/p>

4錛夐噸澶嶅閲嶇戶鎵匡紙甯︽垚鍛樺彉閲忋佽櫄鍑芥暟銆佽櫄鍑芥暟瑕嗙洊錛?/p>

5錛夐捇鐭沖瀷鐨勮櫄鎷熷閲嶇戶鎵匡紙甯︽垚鍛樺彉閲忋佽櫄鍑芥暟銆佽櫄鍑芥暟瑕嗙洊錛?/p>

鎴戜滑鐨勭洰鏍囧氨鏄紝璁╀簨鎯呰秺鏉ヨ秺澶嶆潅銆?/p>

鐭ヨ瘑澶嶄範

鎴戜滑綆鍗曞湴澶嶄範涓涓嬶紝鎴戜滑鍙互閫氳繃瀵硅薄鐨勫湴鍧鏉ュ彇寰楄櫄鍑芥暟琛ㄧ殑鍦板潃錛屽錛?/p>

typedef void(*Fun)(void);

Base b;

Fun pFun = NULL;

cout << "铏氬嚱鏁拌〃鍦板潃錛? << (int*)(&b) << endl;

cout << "铏氬嚱鏁拌〃 鈥?絎竴涓嚱鏁板湴鍧錛? << (int*)*(int*)(&b) << endl;

// Invoke the first virtual function

pFun = (Fun)*((int*)*(int*)(&b));

pFun();

鎴戜滑鍚屾牱鍙互鐢ㄨ繖縐嶆柟寮忔潵鍙栧緱鏁翠釜瀵硅薄瀹炰緥鐨勫唴瀛樺竷灞銆傚洜涓鴻繖浜涗笢瑗垮湪鍐呭瓨涓兘鏄繛緇垎甯冪殑錛屾垜浠彧闇瑕佷嬌鐢ㄩ傚綋鐨勫湴鍧鍋忕Щ閲忥紝鎴戜滑灝卞彲浠ヨ幏寰楁暣涓唴瀛樺璞$殑甯冨眬銆?/p>

鏈瘒鏂囩珷涓殑渚嬬▼鎴栧唴瀛樺竷灞涓昏浣跨敤濡備笅緙栬瘧鍣ㄥ拰緋葷粺錛?/p>

1錛塛indows XP 鍜?VC++ 2003

2錛塁ygwin 鍜?G++ 3.4.4

鍗曚竴鐨勪竴鑸戶鎵?/strong>

涓嬮潰錛屾垜浠亣璁炬湁濡備笅鎵紺虹殑涓涓戶鎵垮叧緋伙細

璇鋒敞鎰忥紝鍦ㄨ繖涓戶鎵垮叧緋諱腑錛岀埗綾伙紝瀛愮被錛屽瓩瀛愮被閮芥湁鑷繁鐨勪竴涓垚鍛樺彉閲忋傝屼簡綾昏鐩栦簡鐖剁被鐨刦()鏂規硶錛屽瓩瀛愮被瑕嗙洊浜嗗瓙綾葷殑g_child()鍙婂叾瓚呯被鐨刦()銆?/p>

鎴戜滑鐨勬簮紼嬪簭濡備笅鎵紺猴細

class Parent {

public:

int iparent;

Parent ():iparent (10) {}

virtual void f() { cout << " Parent::f()" << endl; }

virtual void g() { cout << " Parent::g()" << endl; }

virtual void h() { cout << " Parent::h()" << endl; }

 

};

 

class Child : public Parent {

public:

int ichild;

Child():ichild(100) {}

virtual void f() { cout << "Child::f()" << endl; }

virtual void g_child() { cout << "Child::g_child()" << endl; }

virtual void h_child() { cout << "Child::h_child()" << endl; }

};

 

class GrandChild : public Child{

public:

int igrandchild;

GrandChild():igrandchild(1000) {}

virtual void f() { cout << "GrandChild::f()" << endl; }

virtual void g_child() { cout << "GrandChild::g_child()" << endl; }

virtual void h_grandchild() { cout << "GrandChild::h_grandchild()" << endl; }

};

鎴戜滑浣跨敤浠ヤ笅紼嬪簭浣滀負嫻嬭瘯紼嬪簭錛氾紙涓嬮潰紼嬪簭涓紝鎴戜嬌鐢ㄤ簡涓涓猧nt** pVtab 鏉ヤ綔涓洪亶鍘嗗璞″唴瀛樺竷灞鐨勬寚閽堬紝榪欐牱錛屾垜灝卞彲浠ユ柟渚垮湴鍍忎嬌鐢ㄦ暟緇勪竴鏍鋒潵閬嶅巻鎵鏈夌殑鎴愬憳鍖呮嫭鍏惰櫄鍑芥暟琛ㄤ簡錛屽湪鍚庨潰鐨勭▼搴忎腑錛屾垜涔熸槸鐢ㄨ繖鏍風殑鏂規硶鐨勶紝璇蜂笉蹇呮劅鍒板鎬紝錛?/p>

typedef void(*Fun)(void);

GrandChild gc;

int** pVtab = (int**)&gc;

cout << "[0] GrandChild::_vptr->" << endl;

for (int i=0; (Fun)pVtab[0][i]!=NULL; i++){

pFun = (Fun)pVtab[0][i];

cout << " ["<<i<<"] ";

pFun();

}

cout << "[1] Parent.iparent = " << (int)pVtab[1] << endl;

cout << "[2] Child.ichild = " << (int)pVtab[2] << endl;

cout << "[3] GrandChild.igrandchild = " << (int)pVtab[3] << endl;

鍏惰繍琛岀粨鏋滃涓嬫墍紺猴細錛堝湪VC++ 2003鍜孏++ 3.4.4涓嬶級

[0] GrandChild::_vptr->

    [0] GrandChild::f()

    [1] Parent::g()

    [2] Parent::h()

    [3] GrandChild::g_child()

    [4] Child::h1()

    [5] GrandChild::h_grandchild()

[1] Parent.iparent = 10

[2] Child.ichild = 100

[3] GrandChild.igrandchild = 1000

浣跨敤鍥劇墖琛ㄧず濡備笅錛?/p>

鍙浠ヤ笅鍑犱釜鏂歸潰錛?/p>

1錛夎櫄鍑芥暟琛ㄥ湪鏈鍓嶉潰鐨勪綅緗?/p>

2錛夋垚鍛樺彉閲忔牴鎹叾緇ф壙鍜屽0鏄庨『搴忎緷嬈℃斁鍦ㄥ悗闈€?/p>

3錛夊湪鍗曚竴鐨勭戶鎵夸腑錛岃overwrite鐨勮櫄鍑芥暟鍦ㄨ櫄鍑芥暟琛ㄤ腑寰楀埌浜嗘洿鏂般?/p>

澶氶噸緇ф壙

涓嬮潰錛屽啀璁╂垜浠潵鐪嬬湅澶氶噸緇ф壙涓殑鎯呭喌錛屽亣璁炬湁涓嬮潰榪欐牱涓涓被鐨勭戶鎵垮叧緋匯傛敞鎰忥細瀛愮被鍙猳verwrite浜嗙埗綾葷殑f()鍑芥暟錛岃岃繕鏈変竴涓槸鑷繁鐨勫嚱鏁幫紙鎴戜滑榪欐牱鍋氱殑鐩殑鏄負浜嗙敤g1()浣滀負涓涓爣璁版潵鏍囨槑瀛愮被鐨勮櫄鍑芥暟琛級銆傝屼笖姣忎釜綾諱腑閮芥湁涓涓嚜宸辯殑鎴愬憳鍙橀噺錛?/p>

鎴戜滑鐨勭被緇ф壙鐨勬簮浠g爜濡備笅鎵紺猴細鐖剁被鐨勬垚鍛樺垵濮嬩負10錛?0錛?0錛屽瓙綾葷殑涓?00

class Base1 {

public:

int ibase1;

Base1():ibase1(10) {}

virtual void f() { cout << "Base1::f()" << endl; }

virtual void g() { cout << "Base1::g()" << endl; }

virtual void h() { cout << "Base1::h()" << endl; }

 

};

class Base2 {

public:

int ibase2;

Base2():ibase2(20) {}

virtual void f() { cout << "Base2::f()" << endl; }

virtual void g() { cout << "Base2::g()" << endl; }

virtual void h() { cout << "Base2::h()" << endl; }

};

class Base3 {

public:

int ibase3;

Base3():ibase3(30) {}

virtual void f() { cout << "Base3::f()" << endl; }

virtual void g() { cout << "Base3::g()" << endl; }

virtual void h() { cout << "Base3::h()" << endl; }

};

class Derive : public Base1, public Base2, public Base3 {

public:

int iderive;

Derive():iderive(100) {}

virtual void f() { cout << "Derive::f()" << endl; }

virtual void g1() { cout << "Derive::g1()" << endl; }

};

鎴戜滑閫氳繃涓嬮潰鐨勭▼搴忔潵鏌ョ湅瀛愮被瀹炰緥鐨勫唴瀛樺竷灞錛氫笅闈㈢▼搴忎腑錛屾敞鎰忔垜浣跨敤浜嗕竴涓猻鍙橀噺錛屽叾涓敤鍒頒簡sizof(Base)鏉ユ壘涓嬩竴涓被鐨勫亸縐婚噺銆傦紙鍥犱負鎴戝0鏄庣殑鏄痠nt鎴愬憳錛屾墍浠ユ槸4涓瓧鑺傦紝鎵浠ユ病鏈夊榻愰棶棰樸傚叧浜庡唴瀛樼殑瀵歸綈闂錛屽ぇ瀹跺彲浠ヨ嚜琛岃瘯楠岋紝鎴戝湪榪欓噷灝變笉澶氳浜嗭級

typedef void(*Fun)(void);

Derive d;

int** pVtab = (int**)&d;

cout << "[0] Base1::_vptr->" << endl;

pFun = (Fun)pVtab[0][0];

cout << " [0] ";

pFun();

pFun = (Fun)pVtab[0][1];

cout << " [1] ";pFun();

pFun = (Fun)pVtab[0][2];

cout << " [2] ";pFun();

pFun = (Fun)pVtab[0][3];

cout << " [3] "; pFun();

pFun = (Fun)pVtab[0][4];

cout << " [4] "; cout<<pFun<<endl;

cout << "[1] Base1.ibase1 = " << (int)pVtab[1] << endl;

int s = sizeof(Base1)/4;

cout << "[" << s << "] Base2::_vptr->"<<endl;

pFun = (Fun)pVtab[s][0];

cout << " [0] "; pFun();

Fun = (Fun)pVtab[s][1];

cout << " [1] "; pFun();

pFun = (Fun)pVtab[s][2];

cout << " [2] "; pFun();

pFun = (Fun)pVtab[s][3];

out << " [3] ";

cout<<pFun<<endl;

cout << "["<< s+1 <<"] Base2.ibase2 = " << (int)pVtab[s+1] << endl;

s = s + sizeof(Base2)/4;

cout << "[" << s << "] Base3::_vptr->"<<endl;

pFun = (Fun)pVtab[s][0];

cout << " [0] "; pFun();

 

pFun = (Fun)pVtab[s][1];

cout << " [1] "; pFun();

pFun = (Fun)pVtab[s][2];

cout << " [2] "; pFun();

 

pFun = (Fun)pVtab[s][3];

cout << " [3] ";

cout<<pFun<<endl;

s++;

cout << "["<< s <<"] Base3.ibase3 = " << (int)pVtab[s] << endl;

s++;

cout << "["<< s <<"] Derive.iderive = " << (int)pVtab[s] << endl;

鍏惰繍琛岀粨鏋滃涓嬫墍紺猴細錛堝湪VC++ 2003鍜孏++ 3.4.4涓嬶級

[0] Base1::_vptr->

     [0] Derive::f()

     [1] Base1::g()

     [2] Base1::h()

     [3] Driver::g1()

     [4] 00000000      ç 娉ㄦ剰錛氬湪GCC涓嬶紝榪欓噷鏄?/span>1

[1] Base1.ibase1 = 10

[2] Base2::_vptr->

     [0] Derive::f()

     [1] Base2::g()

     [2] Base2::h()

     [3] 00000000      ç 娉ㄦ剰錛氬湪GCC涓嬶紝榪欓噷鏄?/span>1

[3] Base2.ibase2 = 20

[4] Base3::_vptr->

     [0] Derive::f()

     [1] Base3::g()

     [2] Base3::h()

     [3] 00000000

[5] Base3.ibase3 = 30

[6] Derive.iderive = 100

浣跨敤鍥劇墖琛ㄧず鏄笅闈㈣繖涓牱瀛愶細

鎴戜滑鍙互鐪嬪埌錛?/p>

1錛?姣忎釜鐖剁被閮芥湁鑷繁鐨勮櫄琛ㄣ?/p>

2錛?瀛愮被鐨勬垚鍛樺嚱鏁拌鏀懼埌浜嗙涓涓埗綾葷殑琛ㄤ腑銆?/p>

3錛?鍐呭瓨甯冨眬涓紝鍏剁埗綾誨竷灞渚濇鎸夊0鏄庨『搴忔帓鍒椼?/p>

4錛?姣忎釜鐖剁被鐨勮櫄琛ㄤ腑鐨刦()鍑芥暟閮借overwrite鎴愪簡瀛愮被鐨刦()銆傝繖鏍峰仛灝辨槸涓轟簡瑙e喅涓嶅悓鐨勭埗綾葷被鍨嬬殑鎸囬拡鎸囧悜鍚屼竴涓瓙綾誨疄渚嬶紝鑰岃兘澶熻皟鐢ㄥ埌瀹為檯鐨勫嚱鏁般?/p>

閲嶅緇ф壙

涓嬮潰鎴戜滑鍐嶆潵鐪嬬湅錛屽彂鐢熼噸澶嶇戶鎵跨殑鎯呭喌銆傛墍璋撻噸澶嶇戶鎵匡紝涔熷氨鏄煇涓熀綾昏闂存帴鍦伴噸澶嶇戶鎵夸簡澶氭銆?/p>

涓嬪浘鏄竴涓戶鎵垮浘錛屾垜浠噸杞戒簡鐖剁被鐨刦()鍑芥暟銆?/p>

鍏剁被緇ф壙鐨勬簮浠g爜濡備笅鎵紺恒傚叾涓紝姣忎釜綾婚兘鏈変袱涓彉閲忥紝涓涓槸鏁村艦錛?瀛楄妭錛夛紝涓涓槸瀛楃錛?瀛楄妭錛夛紝鑰屼笖榪樻湁鑷繁鐨勮櫄鍑芥暟錛岃嚜宸眔verwrite鐖剁被鐨勮櫄鍑芥暟銆傚瀛愮被D涓紝f()瑕嗙洊浜嗚秴綾葷殑鍑芥暟錛?f1() 鍜宖2() 瑕嗙洊浜嗗叾鐖剁被鐨勮櫄鍑芥暟錛孌f()涓鴻嚜宸辯殑铏氬嚱鏁般?/p>

class B

{

public:

int ib;

char cb;

public:

B():ib(0),cb('B') {}

virtual void f() { cout << "B::f()" << endl;}

virtual void Bf() { cout << "B::Bf()" << endl;}

};

class B1 : public B

{

public:

int ib1;

char cb1;

public:

B1():ib1(11),cb1('1') {}

virtual void f() { cout << "B1::f()" << endl;}

virtual void f1() { cout << "B1::f1()" << endl;}

virtual void Bf1() { cout << "B1::Bf1()" << endl;}

};

class B2: public B

{

public:

int ib2;

char cb2;

public:

B2():ib2(12),cb2('2') {}

virtual void f() { cout << "B2::f()" << endl;}

virtual void f2() { cout << "B2::f2()" << endl;}

virtual void Bf2() { cout << "B2::Bf2()" << endl;}

};

class D : public B1, public B2

{

public:

int id;

char cd;

public:

D():id(100),cd('D') {}

virtual void f() { cout << "D::f()" << endl;}

virtual void f1() { cout << "D::f1()" << endl;}

virtual void f2() { cout << "D::f2()" << endl;}

virtual void Df() { cout << "D::Df()" << endl;}

};

鎴戜滑鐢ㄦ潵瀛樺彇瀛愮被鍐呭瓨甯冨眬鐨勪唬鐮佸涓嬫墍紺猴細錛堝湪VC++ 2003鍜孏++ 3.4.4涓嬶級

typedef void(*Fun)(void);

int** pVtab = NULL;

Fun pFun = NULL;

D d;

pVtab = (int**)&d;

cout << "[0] D::B1::_vptr->" << endl;

pFun = (Fun)pVtab[0][0];

cout << " [0] "; pFun();

pFun = (Fun)pVtab[0][1];

cout << " [1] "; pFun();

pFun = (Fun)pVtab[0][2];

cout << " [2] "; pFun();

pFun = (Fun)pVtab[0][3];

cout << " [3] "; pFun();

pFun = (Fun)pVtab[0][4];

cout << " [4] "; pFun();

pFun = (Fun)pVtab[0][5];

cout << " [5] 0x" << pFun << endl;

cout << "[1] B::ib = " << (int)pVtab[1] << endl;

cout << "[2] B::cb = " << (char)pVtab[2] << endl;

cout << "[3] B1::ib1 = " << (int)pVtab[3] << endl;

cout << "[4] B1::cb1 = " << (char)pVtab[4] << endl;

cout << "[5] D::B2::_vptr->" << endl;

pFun = (Fun)pVtab[5][0];

cout << " [0] "; pFun();

pFun = (Fun)pVtab[5][1];

cout << " [1] "; pFun();

pFun = (Fun)pVtab[5][2];

cout << " [2] "; pFun();

pFun = (Fun)pVtab[5][3];

cout << " [3] "; pFun();

pFun = (Fun)pVtab[5][4];

cout << " [4] 0x" << pFun << endl;

cout << "[6] B::ib = " << (int)pVtab[6] << endl;

cout << "[7] B::cb = " << (char)pVtab[7] << endl;

cout << "[8] B2::ib2 = " << (int)pVtab[8] << endl;

cout << "[9] B2::cb2 = " << (char)pVtab[9] << endl;

cout << "[10] D::id = " << (int)pVtab[10] << endl;

cout << "[11] D::cd = " << (char)pVtab[11] << endl;

紼嬪簭榪愯緇撴灉濡備笅錛?/p>

GCC 3.4.4

VC++ 2003

[0] D::B1::_vptr->

     [0] D::f()

     [1] B::Bf()

     [2] D::f1()

     [3] B1::Bf1()

     [4] D::f2()

     [5] 0x1

[1] B::ib = 0

[2] B::cb = B

[3] B1::ib1 = 11

[4] B1::cb1 = 1

[5] D::B2::_vptr->

     [0] D::f()

     [1] B::Bf()

     [2] D::f2()

     [3] B2::Bf2()

     [4] 0x0

[6] B::ib = 0

[7] B::cb = B

[8] B2::ib2 = 12

[9] B2::cb2 = 2

[10] D::id = 100

[11] D::cd = D

[0] D::B1::_vptr->

     [0] D::f()

     [1] B::Bf()

     [2] D::f1()

     [3] B1::Bf1()

     [4] D::Df()

     [5] 0x00000000

[1] B::ib = 0

[2] B::cb = B

[3] B1::ib1 = 11

[4] B1::cb1 = 1

[5] D::B2::_vptr->

     [0] D::f()

     [1] B::Bf()

     [2] D::f2()

     [3] B2::Bf2()

     [4] 0x00000000

[6] B::ib = 0

[7] B::cb = B

[8] B2::ib2 = 12

[9] B2::cb2 = 2

[10] D::id = 100

[11] D::cd = D

涓嬮潰鏄浜庡瓙綾誨疄渚嬩腑鐨勮櫄鍑芥暟琛ㄧ殑鍥撅細

鎴戜滑鍙互鐪嬭錛屾渶欏剁鐨勭埗綾籅鍏舵垚鍛樺彉閲忓瓨鍦ㄤ簬B1鍜孊2涓紝騫惰D緇欑戶鎵夸笅鍘諱簡銆傝屽湪D涓紝鍏舵湁B1鍜孊2鐨勫疄渚嬶紝浜庢槸B鐨勬垚鍛樺湪D鐨勫疄渚嬩腑瀛樺湪涓や喚錛屼竴浠芥槸B1緇ф壙鑰屾潵鐨勶紝鍙︿竴浠芥槸B2緇ф壙鑰屾潵鐨勩傛墍浠ワ紝濡傛灉鎴戜滑浣跨敤浠ヤ笅璇彞錛屽垯浼氫駭鐢熶簩涔夋х紪璇戦敊璇細

D d;

d.ib = 0; //浜屼箟鎬ч敊璇?/p>

d.B1::ib = 1; //姝g‘

d.B2::ib = 2; //姝g‘

娉ㄦ剰錛屼笂闈緥紼嬩腑鐨勬渶鍚庝袱鏉¤鍙ュ瓨鍙栫殑鏄袱涓彉閲忋傝櫧鐒舵垜浠秷闄や簡浜屼箟鎬х殑緙栬瘧閿欒錛屼絾B綾誨湪D涓繕鏄湁涓や釜瀹炰緥錛岃繖縐嶇戶鎵塊犳垚浜嗘暟鎹殑閲嶅錛屾垜浠彨榪欑緇ф壙涓洪噸澶嶇戶鎵褲傞噸澶嶇殑鍩虹被鏁版嵁鎴愬憳鍙兘騫朵笉鏄垜浠兂瑕佺殑銆傛墍浠ワ紝C++寮曞叆浜嗚櫄鍩虹被鐨勬蹇點?/p>

閽葷煶鍨嬪閲嶈櫄鎷熺戶鎵?/strong>

铏氭嫙緇ф壙鐨勫嚭鐜板氨鏄負浜嗚В鍐抽噸澶嶇戶鎵夸腑澶氫釜闂存帴鐖剁被鐨勯棶棰樼殑銆傞捇鐭沖瀷鐨勭粨鏋勬槸鍏舵渶緇忓吀鐨勭粨鏋勩備篃鏄垜浠湪榪欓噷瑕佽璁虹殑緇撴瀯錛?/p>

涓婅堪鐨?#8220;閲嶅緇ф壙”鍙渶瑕佹妸B1鍜孊2緇ф壙B鐨勮娉曚腑鍔犱笂virtual 鍏抽敭錛屽氨鎴愪簡铏氭嫙緇ф壙錛屽叾緇ф壙鍥懼涓嬫墍紺猴細

涓婂浘鍜屽墠闈㈢殑“閲嶅緇ф壙”涓殑綾葷殑鍐呴儴鏁版嵁鍜屾帴鍙i兘鏄畬鍏ㄤ竴鏍風殑錛屽彧鏄垜浠噰鐢ㄤ簡铏氭嫙緇ф壙錛氬叾鐪佺暐鍚庣殑婧愮爜濡備笅鎵紺猴細

class B {……};

class B1 : virtual public B{……};

class B2: virtual public B{……};

class D : public B1, public B2{ …… };

鍦ㄦ煡鐪婦涔嬪墠錛屾垜浠厛鐪嬩竴鐪嬪崟涓铏氭嫙緇ф壙鐨勬儏鍐點備笅闈㈡槸涓孌靛湪VC++2003涓嬬殑嫻嬭瘯紼嬪簭錛氾紙鍥犱負VC++鍜孏CC鐨勫唴瀛樿屽眬涓婃湁涓浜涚粏鑺備笂鐨勪笉鍚岋紝鎵浠ヨ繖閲屽彧緇欏嚭VC++鐨勭▼搴忥紝GCC涓嬬殑紼嬪簭澶у鍙互鏍規嵁鎴戠粰鍑虹殑紼嬪簭鑷繁浠跨収鐫鍐欎竴涓幓璇曚竴璇曪級錛?/p>

int** pVtab = NULL;

Fun pFun = NULL;

 

B1 bb1;

pVtab = (int**)&bb1;

cout << "[0] B1::_vptr->" << endl;

pFun = (Fun)pVtab[0][0];

cout << " [0] ";

pFun(); //B1::f1();

cout << " [1] ";

pFun = (Fun)pVtab[0][1];

pFun(); //B1::bf1();

cout << " [2] ";

cout << pVtab[0][2] << endl;

cout << "[1] = 0x";

cout << (int*)*((int*)(&bb1)+1) <<endl; //B1::ib1

cout << "[2] B1::ib1 = ";

cout << (int)*((int*)(&bb1)+2) <<endl; //B1::ib1

cout << "[3] B1::cb1 = ";

cout << (char)*((int*)(&bb1)+3) << endl; //B1::cb1

cout << "[4] = 0x";

cout << (int*)*((int*)(&bb1)+4) << endl; //NULL

cout << "[5] B::_vptr->" << endl;

pFun = (Fun)pVtab[5][0];

cout << " [0] ";

pFun(); //B1::f();

pFun = (Fun)pVtab[5][1];

cout << " [1] ";

pFun(); //B::Bf();

cout << " [2] ";

cout << "0x" << (Fun)pVtab[5][2] << endl;

cout << "[6] B::ib = ";

cout << (int)*((int*)(&bb1)+6) <<endl; //B::ib

cout << "[7] B::cb = ";

鍏惰繍琛岀粨鏋滃涓嬶紙鎴戠粨鍑轟簡GCC鐨勫拰VC++2003鐨勫姣旓級錛?/p>

GCC 3.4.4

VC++ 2003

[0] B1::_vptr ->

    [0] : B1::f()

    [1] : B1::f1()

    [2] : B1::Bf1()

    [3] : 0

[1] B1::ib1 : 11

[2] B1::cb1 : 1

[3] B::_vptr ->

    [0] : B1::f()

    [1] : B::Bf()

    [2] : 0

[4] B::ib : 0

[5] B::cb : B

[6] NULL : 0

[0] B1::_vptr->

     [0] B1::f1()

     [1] B1::Bf1()

     [2] 0

[1] = 0x00454310 ç璇ュ湴鍧鍙栧煎悗鏄?/span>-4

[2] B1::ib1 = 11

[3] B1::cb1 = 1

[4] = 0x00000000

[5] B::_vptr->

     [0] B1::f()

     [1] B::Bf()

     [2] 0x00000000

[6] B::ib = 0

[7] B::cb = B

榪欓噷錛屽ぇ瀹跺彲浠ヨ嚜宸卞姣斾竴涓嬨傚叧浜庣粏鑺備笂錛屾垜浼氬湪鍚庨潰涓騫跺啀璇淬?/p>

涓嬮潰鐨勬祴璇曠▼搴忔槸鐪嬪瓙綾籇鐨勫唴瀛樺竷灞錛屽悓鏍鋒槸VC++ 2003鐨勶紙鍥犱負VC++鍜孏CC鐨勫唴瀛樺竷灞涓婃湁涓浜涚粏鑺備笂鐨勪笉鍚岋紝鑰孷C++鐨勭浉瀵硅娓呮寰堝錛屾墍浠ヨ繖閲屽彧緇欏嚭VC++鐨勭▼搴忥紝GCC涓嬬殑紼嬪簭澶у鍙互鏍規嵁鎴戠粰鍑虹殑紼嬪簭鑷繁浠跨収鐫鍐欎竴涓幓璇曚竴璇曪級錛?/p>

D d;

pVtab = (int**)&d;

cout << "[0] D::B1::_vptr->" << endl;

pFun = (Fun)pVtab[0][0];

cout << " [0] "; pFun(); //D::f1();

pFun = (Fun)pVtab[0][1];

cout << " [1] "; pFun(); //B1::Bf1();

pFun = (Fun)pVtab[0][2];

cout << " [2] "; pFun(); //D::Df();

pFun = (Fun)pVtab[0][3];

cout << " [3] ";

cout << pFun << endl;

//cout << pVtab[4][2] << endl;

cout << "[1] = 0x";

cout << (int*)((&dd)+1) <<endl; //????

cout << "[2] B1::ib1 = ";

cout << *((int*)(&dd)+2) <<endl; //B1::ib1

cout << "[3] B1::cb1 = ";

cout << (char)*((int*)(&dd)+3) << endl; //B1::cb1

//---------------------

cout << "[4] D::B2::_vptr->" << endl;

pFun = (Fun)pVtab[4][0];

cout << " [0] "; pFun(); //D::f2();

pFun = (Fun)pVtab[4][1];

cout << " [1] "; pFun(); //B2::Bf2();

pFun = (Fun)pVtab[4][2];

cout << " [2] ";

cout << pFun << endl;

cout << "[5] = 0x";

cout << *((int*)(&dd)+5) << endl; // ???

cout << "[6] B2::ib2 = ";

cout << (int)*((int*)(&dd)+6) <<endl; //B2::ib2

cout << "[7] B2::cb2 = ";

cout << (char)*((int*)(&dd)+7) << endl; //B2::cb2

cout << "[8] D::id = ";

cout << *((int*)(&dd)+8) << endl; //D::id

cout << "[9] D::cd = ";

cout << (char)*((int*)(&dd)+9) << endl;//D::cd

cout << "[10] = 0x";

cout << (int*)*((int*)(&dd)+10) << endl;

//---------------------

cout << "[11] D::B::_vptr->" << endl;

pFun = (Fun)pVtab[11][0];

cout << " [0] "; pFun(); //D::f();

pFun = (Fun)pVtab[11][1];

cout << " [1] "; pFun(); //B::Bf();

pFun = (Fun)pVtab[11][2];

cout << " [2] ";

cout << pFun << endl;

cout << "[12] B::ib = ";

cout << *((int*)(&dd)+12) << endl; //B::ib

cout << "[13] B::cb = ";

cout << (char)*((int*)(&dd)+13) <<endl;//B::cb

涓嬮潰緇欏嚭榪愯鍚庣殑緇撴灉錛堝垎VC++鍜孏CC涓ら儴浠斤級

GCC 3.4.4

VC++ 2003

[0] B1::_vptr ->

    [0] : D::f()

    [1] : D::f1()

    [2] : B1::Bf1()

    [3] : D::f2()

    [4] : D::Df()

    [5] : 1

[1] B1::ib1 : 11

[2] B1::cb1 : 1

[3] B2::_vptr ->

    [0] : D::f()

    [1] : D::f2()

    [2] : B2::Bf2()

    [3] : 0

[4] B2::ib2 : 12

[5] B2::cb2 : 2

[6] D::id : 100

[7] D::cd : D

[8] B::_vptr ->

    [0] : D::f()

    [1] : B::Bf()

    [2] : 0

[9] B::ib : 0

[10] B::cb : B

[11] NULL : 0

[0] D::B1::_vptr->

     [0] D::f1()

     [1] B1::Bf1()

     [2] D::Df()

     [3] 00000000

[1] = 0x0013FDC4  ç 璇ュ湴鍧鍙栧煎悗鏄?/span>-4

[2] B1::ib1 = 11

[3] B1::cb1 = 1

[4] D::B2::_vptr->

     [0] D::f2()

     [1] B2::Bf2()

     [2] 00000000

[5] = 0x4539260   ç 璇ュ湴鍧鍙栧煎悗鏄?/span>-4

[6] B2::ib2 = 12

[7] B2::cb2 = 2

[8] D::id = 100

[9] D::cd = D

[10]  = 0x00000000

[11] D::B::_vptr->

     [0] D::f()

     [1] B::Bf()

     [2] 00000000

[12] B::ib = 0

[13] B::cb = B

鍏充簬铏氭嫙緇ф壙鐨勮繍琛岀粨鏋滄垜灝變笉鐢誨浘浜嗭紙鍓嶉潰鐨勪綔鍥懼凡緇忚鎴戜駭鐢熶簡寰堜弗閲嶇殑鍘屽︽劅錛屾墍浠ュ氨鍋蜂釜鎳掍簡錛屽ぇ瀹惰璋呬簡錛?/p>

鍦ㄤ笂闈㈢殑杈撳嚭緇撴灉涓紝鎴戠敤涓嶅悓鐨勯鑹插仛浜嗕竴浜涙爣鏄庛傛垜浠彲浠ョ湅鍒板涓嬬殑鍑犵偣錛?/p>

1錛夋棤璁烘槸GCC榪樻槸VC++錛岄櫎浜嗕竴浜涚粏鑺備笂鐨勪笉鍚岋紝鍏跺ぇ浣撲笂鐨勫璞″竷灞鏄竴鏍風殑銆備篃灝辨槸璇達紝鍏堟槸B1錛堥粍鑹詫級錛岀劧鍚庢槸B2錛堢豢鑹詫級錛屾帴鐫鏄疍錛堢伆鑹詫級錛岃孊榪欎釜瓚呯被錛堥潚钃濊壊錛夌殑瀹炰緥閮芥斁鍦ㄦ渶鍚庣殑浣嶇疆銆?/p>

2錛夊叧浜庤櫄鍑芥暟琛紝灝ゅ叾鏄涓涓櫄琛紝GCC鍜孷C++鏈夊緢閲嶅ぇ鐨勪笉涓鏍楓備絾浠旂粏鐪嬩笅鏉ワ紝榪樻槸VC++鐨勮櫄琛ㄦ瘮杈冩竻鏅板拰鏈夐昏緫鎬с?/p>

3錛塚C++鍜孏CC閮芥妸B榪欎釜瓚呯被鏀懼埌浜嗘渶鍚庯紝鑰孷C++鏈変竴涓狽ULL鍒嗛殧絎︽妸B鍜孊1鍜孊2鐨勫竷灞鍒嗗紑銆侴CC鍒欐病鏈夈?/p>

4錛塚C++涓殑鍐呭瓨甯冨眬鏈変袱涓湴鍧鎴戞湁浜涗笉鏄緢鏄庣櫧錛屽湪鍏朵腑鎴戠敤綰㈣壊鏍囧嚭浜嗐傚彇鍏跺唴瀹規槸-4銆傛帴閬撶悊鏉ヨ錛岃繖涓寚閽堝簲璇ユ槸鎸囧悜B綾誨疄渚嬬殑鍐呭瓨鍦板潃錛堣繖涓仛娉曞氨鏄負浜嗕繚璇侀噸澶嶇殑鐖剁被鍙湁涓涓疄渚嬬殑鎶鏈級銆備絾鍙栧煎悗鍗翠笉鏄傝繖鐐規垜鐩墠榪樺茍涓嶅お娓呮錛岃繕鍚戝ぇ瀹惰鏁欍?/p>

5錛塆CC鐨勫唴瀛樺竷灞涓湪B1鍜孊2涓垯娌℃湁鎸囧悜B鐨勬寚閽堛傝繖鐐瑰彲浠ョ悊瑙o紝緙栬瘧鍣ㄥ彲浠ラ氳繃璁$畻B1鍜孊2鐨剆ize鑰屽緱鍑築鐨勫亸縐婚噺銆?/p>

緇撴潫璇?/strong>

C++榪欓棬璇█鏄竴闂ㄦ瘮杈冨鏉傜殑璇█錛屽浜庣▼搴忓憳鏉ヨ錛屾垜浠技涔庢案榪滄懜涓嶆竻妤氳繖闂ㄨ璦鑳岀潃鎴戜滑鍦ㄥ共浜嗕粈涔堛傞渶瑕佺啛鎮夎繖闂ㄨ璦錛屾垜浠氨蹇呴渶瑕佷簡瑙++閲岄潰鐨勯偅浜涗笢瑗匡紝闇瑕佹垜浠幓浜嗚В浠栧悗闈㈢殑鍐呭瓨瀵硅薄銆傝繖鏍鋒垜浠墠鑳界湡姝g殑浜嗚ВC++錛屼粠鑰岃兘澶熸洿濂界殑浣跨敤C++榪欓棬鏈闅劇殑緙栫▼璇█銆?/p>

鍦ㄦ枃绔犳潫涔嬪墠榪樻槸浠嬬粛涓涓嬭嚜宸卞惂銆傛垜浠庝簨杞歡鐮斿彂鏈夊崄涓勾澶翠簡錛岀洰鍓嶆槸杞歡寮鍙戞妧鏈富綆★紝鎶鏈柟闈紝涓繪敾Unix/C/C++錛屾瘮杈冨枩嬈㈢綉緇滀笂鐨勬妧鏈紝姣斿鍒嗗竷寮忚綆楋紝緗戞牸璁$畻錛孭2P錛孉jax絳変竴鍒囧拰浜掕仈緗戠浉鍏崇殑涓滆タ銆傜鐞嗘柟闈㈡瘮杈冩搮闀夸簬鍥㈤槦寤鴻錛屾妧鏈秼鍔垮垎鏋愶紝欏圭洰綆$悊銆傛榪庡ぇ瀹跺拰鎴戜氦嫻侊紝鎴戠殑MSN鍜孍mail鏄細haoel@hotmail.com



]]>
Boost.Regex搴撳涔犵瑪璁?/title><link>http://m.shnenglu.com/tianbianlan/archive/2009/07/24/91015.html</link><dc:creator>澶╄竟钃?/dc:creator><author>澶╄竟钃?/author><pubDate>Fri, 24 Jul 2009 03:48:00 GMT</pubDate><guid>http://m.shnenglu.com/tianbianlan/archive/2009/07/24/91015.html</guid><wfw:comment>http://m.shnenglu.com/tianbianlan/comments/91015.html</wfw:comment><comments>http://m.shnenglu.com/tianbianlan/archive/2009/07/24/91015.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/tianbianlan/comments/commentRss/91015.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/tianbianlan/services/trackbacks/91015.html</trackback:ping><description><![CDATA[     鎽樿:   鍦–++緙栫▼涓紝鏈変竴鐐硅浜烘尯閬楁喚鐨勫氨鏄疌++灝氫笉鏀寔姝e垯琛ㄨ揪寮忥紝榪欒寰堝鐢ㄦ埛涓轟簡緙栧啓鏀寔姝e垯琛ㄨ揪寮忕▼搴忚屼笉寰椾笉鏀懼純C++銆傜劧鑰岋紝Boost.Regex搴撳~琛ヤ簡C++鍦ㄨ繖鏂歸潰鐨勭┖鐧斤紝瀹冧嬌C++寰堝ソ鐨勬敮鎸佸悇縐嶅紩鎿庣殑姝e垯琛ㄨ揪寮忋?       緇撳悎鎴戠殑瀛︿範錛岄愭鍒嗘瀽Boost.Regex搴撱?  &nbs...  <a href='http://m.shnenglu.com/tianbianlan/archive/2009/07/24/91015.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/tianbianlan/aggbug/91015.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/tianbianlan/" target="_blank">澶╄竟钃?/a> 2009-07-24 11:48 <a href="http://m.shnenglu.com/tianbianlan/archive/2009/07/24/91015.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://m.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://by3259.com" target="_blank">欧美激情精品久久久久</a>| <a href="http://80hogo.com" target="_blank">亚洲国产美女</a>| <a href="http://8410555.com" target="_blank">亚洲美女色禁图</a>| <a href="http://gaobb52.com" target="_blank">亚洲国产专区校园欧美</a>| <a href="http://91mase.com" target="_blank">91久久夜色精品国产九色</a>| <a href="http://yahuake.com" target="_blank">日韩视频一区二区</a>| <a href="http://78gde.com" target="_blank">午夜在线精品</a>| <a href="http://97seee.com" target="_blank">欧美日韩一区国产</a>| <a href="http://pgd857.com" target="_blank">伊人久久大香线</a>| <a href="http://www-733999.com" target="_blank">欧美偷拍另类</a>| <a href="http://327099.com" target="_blank">牛牛国产精品</a>| <a href="http://oo853kj.com" target="_blank">欧美成人一区二区在线 </a>| <a href="http://baigoso.com" target="_blank">亚洲激情成人在线</a>| <a href="http://149155.com" target="_blank">狠狠色狠狠色综合日日91app</a>| <a href="http://mascorcg.com" target="_blank">欧美日韩美女一区二区</a>| <a href="http://by1422.com" target="_blank">久久精品99久久香蕉国产色戒 </a>| <a href="http://3344568.com" target="_blank">欧美一区二区日韩</a>| <a href="http://gyzhoucheng.com" target="_blank">中文精品一区二区三区</a>| <a href="http://m72722.com" target="_blank">国产精品久久久久国产精品日日 </a>| <a href="http://5207877.com" target="_blank">国产精品久久久一区麻豆最新章节</a>| <a href="http://xashp.com" target="_blank">亚洲香蕉网站</a>| <a href="http://t3gg.com" target="_blank">久久成人av少妇免费</a>| <a href="http://dgxinshidai.com" target="_blank">亚洲人成毛片在线播放</a>| <a href="http://tfccrk.com" target="_blank">亚洲无毛电影</a>| <a href="http://556626.com" target="_blank">亚洲精品国产精品国产自</a>| <a href="http://xingmaipet.com" target="_blank">免费不卡亚洲欧美</a>| <a href="http://66636by.com" target="_blank">亚洲国产清纯</a>| <a href="http://497988.com" target="_blank">亚洲国产精品一区二区www</a>| <a href="http://llyx888.com" target="_blank">蜜桃av噜噜一区二区三区</a>| <a href="http://sihu1515hh.com" target="_blank">在线看一区二区</a>| <a href="http://jdavmm.com" target="_blank">亚洲国产精品成人va在线观看</a>| <a href="http://8x588.com" target="_blank">欧美a一区二区</a>| <a href="http://xingmaipet.com" target="_blank">日韩视频在线免费观看</a>| <a href="http://qqqtrip.com" target="_blank">一本不卡影院</a>| <a href="http://wwwavzz.com" target="_blank">国产主播一区二区三区四区</a>| <a href="http://491342.com" target="_blank">欧美激情一区二区三区在线视频</a>| <a href="http://188267.com" target="_blank">欧美成人有码</a>| <a href="http://www442222.com" target="_blank">亚洲已满18点击进入久久</a>| <a href="http://baoyu1313.com" target="_blank">亚洲直播在线一区</a>| <a href="http://ahhyez.com" target="_blank">依依成人综合视频</a>| <a href="http://www888x.com" target="_blank">亚洲精品久久久久久久久久久 </a>| <a href="http://bosengame.com" target="_blank">在线播放日韩专区</a>| <a href="http://htzhuanli.com" target="_blank">亚洲国产精品精华液2区45</a>| <a href="http://6666345.com" target="_blank">欧美日韩国产一区二区三区地区 </a>| <a href="http://sh-hxjdkj.com" target="_blank">午夜精品福利电影</a>| <a href="http://caoxiu33.com" target="_blank">欧美一区二区在线播放</a>| <a href="http://youminwang.com" target="_blank">国内久久视频</a>| <a href="http://fangsling.com" target="_blank">欧美高清自拍一区</a>| <a href="http://917729.com" target="_blank">国产精品久久久久久久电影</a>| <a href="http://91pero.com" target="_blank">欧美一级专区</a>| <a href="http://bbww55.com" target="_blank">欧美激情一二区</a>| <a href="http://aass22.com" target="_blank">亚洲图片你懂的</a>| <a href="http://jjy891.com" target="_blank">欧美一区二区在线观看</a>| <a href="http://shwazrbjd.com" target="_blank">亚洲国产福利在线</a>| <a href="http://zzzz91.com" target="_blank">亚洲天堂成人在线视频</a>| <a href="http://huokemima.com" target="_blank">国产精品亚洲片夜色在线</a>| <a href="http://2343ww.com" target="_blank">欧美1区免费</a>| <a href="http://667996.com" target="_blank">欧美日韩精品一区二区天天拍小说</a>| <a href="http://balqueen.com" target="_blank">亚洲欧美国产高清va在线播</a>| <a href="http://seo8138.com" target="_blank">久久成人资源</a>| <a href="http://lampreydb.com" target="_blank">亚洲欧美在线x视频</a>| <a href="http://160160160.com" target="_blank">久久精品在线播放</a>| <a href="http://birhit.com" target="_blank">亚洲欧美日韩精品综合在线观看 </a>| <a href="http://mmmm43.com" target="_blank">黄色成人av</a>| <a href="http://wwwen41.com" target="_blank">日韩亚洲欧美成人</a>| <a href="http://beeperagain.com" target="_blank">一区二区三区在线视频观看</a>| <a href="http://hbshwx.com" target="_blank">av不卡在线看</a>| <a href="http://ae262.com" target="_blank">亚洲国产婷婷</a>| <a href="http://ncyy4.com" target="_blank">欧美一区二区日韩</a>| <a href="http://dv6699.com" target="_blank">亚洲一区二区三区色</a>| <a href="http://023nszz.com" target="_blank">噜噜噜久久亚洲精品国产品小说</a>| <a href="http://www18889.com" target="_blank">羞羞漫画18久久大片</a>| <a href="http://wwwbaoyu66.com" target="_blank">欧美激情久久久久</a>| <a href="http://7a6a.com" target="_blank">欧美高潮视频</a>| <a href="http://sese699.com" target="_blank">韩日成人av</a>| <a href="http://160160160.com" target="_blank">久久精品二区三区</a>| <a href="http://www-65581.com" target="_blank">久久中文久久字幕</a>| <a href="http://44368com.com" target="_blank">新67194成人永久网站</a>| <a href="http://ourskycity.com" target="_blank">女同一区二区</a>| <a href="http://036762.com" target="_blank">可以免费看不卡的av网站</a>| <a href="http://132653.com" target="_blank">国产精品九九久久久久久久</a>| <a href="http://www134rr.com" target="_blank">欧美激情视频一区二区三区不卡</a>| <a href="http://www-kkjj88.com" target="_blank">国产情侣久久</a>| <a href="http://ggg4444.com" target="_blank">中文精品视频</a>| <a href="http://9881600.com" target="_blank">亚洲图片在线</a>| <a href="http://mmmm37.com" target="_blank">欧美日本高清视频</a>| <a href="http://405151.com" target="_blank">亚洲国产日韩美</a>| <a href="http://www780yy.com" target="_blank">亚洲第一综合天堂另类专</a>| <a href="http://hg4958.com" target="_blank">久久精品日韩一区二区三区</a>| <a href="http://www-577511.com" target="_blank">欧美一区二区在线</a>| <a href="http://www77vcd.com" target="_blank">国产精品日韩</a>| <a href="http://www101804.com" target="_blank">99国内精品</a>| <a href="http://y65k.com" target="_blank">亚洲午夜在线视频</a>| <a href="http://jgj230230.com" target="_blank">欧美国产欧美亚洲国产日韩mv天天看完整 </a>| <a href="http://www-24333.com" target="_blank">中文在线不卡视频</a>| <a href="http://7213523.com" target="_blank">亚洲欧美日韩视频二区</a>| <a href="http://739822.com" target="_blank">亚洲免费电影在线观看</a>| <a href="http://missav88.com" target="_blank">亚洲尤物在线</a>| <a href="http://seanzhau.com" target="_blank">99在线精品视频</a>| <a href="http://9kkkb.com" target="_blank">亚洲精品乱码久久久久</a>| <a href="http://dy25777.com" target="_blank">尤物yw午夜国产精品视频</a>| <a href="http://9511331.com" target="_blank">亚洲国产精品999</a>| <a href="http://sh-hxjdkj.com" target="_blank">欧美不卡激情三级在线观看</a>| <a href="http://301110.com" target="_blank">免费不卡欧美自拍视频</a>| <a href="http://679776.com" target="_blank">久久久久久综合</a>| <a href="http://roujizz.com" target="_blank">国产欧美大片</a>| <a href="http://sxhrdyb.com" target="_blank">亚洲一区在线直播</a>| <a href="http://xtgoldsky.com" target="_blank">小嫩嫩精品导航</a>| <a href="http://jav69me.com" target="_blank">国产伦精品一区</a>| <a href="http://heyzo1199.com" target="_blank">午夜精品久久久久影视</a>| <a href="http://jm1688e.com" target="_blank">国产一区二区剧情av在线</a>| <a href="http://961318.com" target="_blank">国产精品成人久久久久</a>| <a href="http://xdlot.com" target="_blank">欧美精品免费看</a>| <a href="http://86311ib.com" target="_blank">欧美日韩国产首页</a>| <a href="http://www-485050.com" target="_blank">亚洲影院免费观看</a>| <a href="http://by71222.com" target="_blank">欧美日韩在线另类</a>| <a href="http://dgxinshidai.com" target="_blank">av成人国产</a>| <a href="http://66gg6.com" target="_blank">久久经典综合</a>| <a href="http://www18bbav.com" target="_blank">久久综合亚州</a>| <a href="http://tonglijinshu.com" target="_blank">亚洲欧洲精品一区二区三区波多野1战4 </a>| <a href="http://7357538.com" target="_blank">欧美国产日韩亚洲一区</a>| <a href="http://submro.com" target="_blank">亚洲国产精品久久久</a>| <a href="http://by99969.com" target="_blank">亚洲精品一区二区三</a>| <a href="http://www-440447.com" target="_blank">欧美久久99</a>| <a href="http://miandoctor.com" target="_blank">亚洲一区二区网站</a>| <a href="http://yashikeji.com" target="_blank">久久免费黄色</a>| <a href="http://xxdd51.com" target="_blank">亚洲精品中文字幕在线</a>| <a href="http://yxtczx.com" target="_blank">国产精品v欧美精品∨日韩</a>| <a href="http://ayxchc.com" target="_blank">亚洲欧美日韩国产综合精品二区</a>| <a href="http://3188m.com" target="_blank">久久先锋影音</a>| <a href="http://bocai01.com" target="_blank">日韩亚洲国产精品</a>| <a href="http://qmynong.com" target="_blank">国产欧美日韩91</a>| <a href="http://anxingou365.com" target="_blank">久久久国产91</a>| <a href="http://tk263.com" target="_blank">欧美激情一区二区三区蜜桃视频</a>| <a href="http://qq5621.com" target="_blank">亚洲人成啪啪网站</a>| <a href="http://jgj230230.com" target="_blank">国产精品久久久久毛片大屁完整版 </a>| <a href="http://www-44442.com" target="_blank">亚洲国产欧美日韩</a>| <a href="http://jx963.com" target="_blank">亚洲国产精品美女</a>| <a href="http://cp3824.com" target="_blank">久久久久综合网</a>| <a href="http://0000zz.com" target="_blank">中文在线资源观看网站视频免费不卡</a>| <a href="http://smiczbb.com" target="_blank">午夜影院日韩</a>| <a href="http://essuee.com" target="_blank">极品尤物久久久av免费看</a>| <a href="http://jxjx11.com" target="_blank">亚洲一级黄色片</a>| <a href="http://77777kkk.com" target="_blank">一本色道久久综合狠狠躁篇怎么玩 </a>| <a href="http://91nbs.com" target="_blank">国产精品久久久久毛片软件</a>| <a href="http://88488848.com" target="_blank">国产香蕉久久精品综合网</a>| <a href="http://cczm4.com" target="_blank">亚洲电影观看</a>| <a href="http://ndr666.com" target="_blank">久久久久久一区</a>| <a href="http://wwdd44.com" target="_blank">免费成人激情视频</a>| <a href="http://85041960.com" target="_blank">亚洲自拍另类</a>| <a href="http://tareandshare.com" target="_blank">亚洲大片一区二区三区</a>| <a href="http://124909.com" target="_blank">久久久av网站</a>| <a href="http://1000kongbao.com" target="_blank">欧美了一区在线观看</a>| <a href="http://613609.com" target="_blank">欧美 日韩 国产一区二区在线视频 </a>| <a href="http://7628x.com" target="_blank">亚洲欧美综合网</a>| <a href="http://erzhuzi.com" target="_blank">亚洲一区二区三区午夜</a>| <a href="http://www92994.com" target="_blank">久久中文字幕导航</a>| <a href="http://889644.com" target="_blank">久久久久久高潮国产精品视</a>| <a href="http://5xxm.com" target="_blank">欧美偷拍一区二区</a>| <a href="http://baostat.com" target="_blank">夜夜爽av福利精品导航 </a>| <a href="http://www-787333.com" target="_blank">一本色道久久综合</a>| <a href="http://neudlac.com" target="_blank">亚洲一区二区欧美</a>| <a href="http://lysyfls.com" target="_blank">亚洲国产影院</a>| <a href="http://aqd1t.com" target="_blank">欧美成人免费在线</a>| <a href="http://ccnn33.com" target="_blank">日韩亚洲欧美在线观看</a>| <a href="http://aabbcc11.com" target="_blank">亚洲一区二区三区久久</a>| <a href="http://qqszdq.com" target="_blank">国产欧美精品一区二区三区介绍</a>| <a href="http://ziwufuren.com" target="_blank">亚洲国产成人在线</a>| <a href="http://a6a3.com" target="_blank">国产一区二区看久久</a>| <a href="http://arielteam.com" target="_blank">久久久久久久久久码影片</a>| <a href="http://486be.com" target="_blank">亚洲高清电影</a>| <a href="http://huohuoglobal.com" target="_blank">欧美小视频在线</a>| <a href="http://www-e2222.com" target="_blank">亚洲午夜在线观看视频在线</a>| <a href="http://wwwavtb2049.com" target="_blank">久久伊人免费视频</a>| <a href="http://7269003.com" target="_blank">亚洲激情一区二区</a>| <a href="http://660507jj.com" target="_blank">欧美日韩亚洲综合在线</a>| <a href="http://91keshi.com" target="_blank">亚洲一级免费视频</a>| <a href="http://www-964664.com" target="_blank">两个人的视频www国产精品</a>| <a href="http://cao3e8c8.com" target="_blank">伊人狠狠色j香婷婷综合</a>| <a href="http://www559955.com" target="_blank">欧美va亚洲va日韩∨a综合色</a>| <a href="http://56667r.com" target="_blank">精品96久久久久久中文字幕无</a>| <a href="http://7redy.com" target="_blank">一区二区三区日韩精品</a>| <a href="http://ibenbio.com" target="_blank">久久精品国产久精国产一老狼</a>| <a href="http://www40255.com" target="_blank">国产欧美日韩91</a>| <a href="http://www-333304.com" target="_blank">免费高清在线一区</a>| <a href="http://avtt0.com" target="_blank">亚洲私拍自拍</a>| <a href="http://www47011.com" target="_blank">免费在线成人av</a>| <a href="http://zyjzz.com" target="_blank">亚洲先锋成人</a>| <a href="http://zzzz80.com" target="_blank">一区二区三区免费网站</a>| <a href="http://www633998.com" target="_blank">免费永久网站黄欧美</a>| <a href="http://www40255.com" target="_blank">免费视频最近日韩</a>| <a href="http://668527.com" target="_blank">日韩视频在线观看</a>| <a href="http://japanjavbibi.com" target="_blank">欧美激情按摩</a>| <a href="http://hbstjsgc.com" target="_blank">欧美日韩成人在线观看</a>| <a href="http://118936.com" target="_blank">免费观看一级特黄欧美大片</a>| <a href="http://9a9u.com" target="_blank">欧美伊人久久久久久午夜久久久久 </a>| <a href="http://543422.com" target="_blank">日韩一区二区免费看</a>| <a href="http://cp3824.com" target="_blank">国产精品久久久久三级</a>| <a href="http://chinasck.com" target="_blank">欧美极品在线播放</a>| <a href="http://456dv.com" target="_blank">久久久女女女女999久久</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>