锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久夜色精品国产亚洲av,国产成人精品久久二区二区,精品久久久久久综合日本http://www.shnenglu.com/richbirdandy/zh-cnWed, 07 May 2025 13:48:06 GMTWed, 07 May 2025 13:48:06 GMT60redis濡備綍鍒犻櫎榪囨湡鏁版嵁http://www.shnenglu.com/richbirdandy/archive/2011/11/29/161184.html闃夸簩闃夸簩Tue, 29 Nov 2011 11:57:00 GMThttp://www.shnenglu.com/richbirdandy/archive/2011/11/29/161184.htmlhttp://www.shnenglu.com/richbirdandy/comments/161184.htmlhttp://www.shnenglu.com/richbirdandy/archive/2011/11/29/161184.html#Feedback1http://www.shnenglu.com/richbirdandy/comments/commentRss/161184.htmlhttp://www.shnenglu.com/richbirdandy/services/trackbacks/161184.html
闅忕潃nosql椋庢疆鍏磋搗錛?/span>redis浣滀負褰撲腑涓涓鐪肩殑鏄庢槦錛屼篃瓚婃潵瓚婂鐨勮鍏蟲敞鍜屼嬌鐢紝鎴戝湪宸ヤ綔涓篃騫挎硾鐨勭敤鍒頒簡redis鏉ュ厖褰?/span>cache鍜?/span>key-value DB錛屼絾褰撳ぇ瀹跺彂鐜版暟鎹秺鏉ヨ秺澶氭椂錛屼笉紱佹湁浜涙媴蹇冿紝redis鑳芥拺鐨勪綇鍚楋紝铏界劧瀹樻柟宸茬粡鏈夋紓浜殑benchmark錛岃嚜宸變篃鍙互鍋氬仛鍘嬪姏嫻嬭瘯錛屼絾鏄湅鐪嬫簮鐮侊紝涔熸槸紜闂鏈鐩存帴鐨勫姙娉曚箣涓銆傛瘮濡傜洰鍓嶆垜浠紜鐨勪竴涓棶棰樻槸錛?/span>redis鏄浣曞垹闄よ繃鏈熸暟鎹殑錛?/span>

鐢ㄤ竴涓彲浠?/span>"find reference"鐨?/span>IDE,娌跨潃setex(Set the value and expiration of a key)鍛戒護涓紿ョ┒绔燂細

void setexCommand(redisClient *c) {
    c
->argv[3= tryObjectEncoding(c->argv[3]);
    setGenericCommand(c,
0,c->argv[1],c->argv[3],c->argv[2]);
}

setGenericCommand鏄竴涓疄鐜?/span>set,setnx,setex鐨勯氱敤鍑芥暟錛屽弬鏁拌緗笉鍚岃屽凡銆?/span>

void setCommand(redisClient *c) {
    c
->argv[2= tryObjectEncoding(c->argv[2]);
    setGenericCommand(c,
0,c->argv[1],c->argv[2],NULL);
}
 
void setnxCommand(redisClient *c) {
    c
->argv[2= tryObjectEncoding(c->argv[2]);
    setGenericCommand(c,
1,c->argv[1],c->argv[2],NULL);
}
 
void setexCommand(redisClient *c) {
    c
->argv[3= tryObjectEncoding(c->argv[3]);
    setGenericCommand(c,
0,c->argv[1],c->argv[3],c->argv[2]);
}

鍐嶇湅setGenericCommand錛?br />

 1 void setGenericCommand(redisClient *c, int nx, robj *key, robj *val, robj *expire) {
 2     long seconds = 0/* initialized to avoid an harmness warning */
 3 
 4     if (expire) {
 5         if (getLongFromObjectOrReply(c, expire, &seconds, NULL) != REDIS_OK)
 6             return;
 7         if (seconds <= 0) {
 8             addReplyError(c,"invalid expire time in SETEX");
 9             return;
10         }
11     }
12 
13     if (lookupKeyWrite(c->db,key) != NULL && nx) {
14         addReply(c,shared.czero);
15         return;
16     }
17     setKey(c->db,key,val);
18     server.dirty++;
19     if (expire) setExpire(c->db,key,time(NULL)+seconds); 
20     addReply(c, nx ? shared.cone : shared.ok);
21 }
22 

13琛屽鐞?/span>"Set the value of a key, only if the key does not exist"鐨勫満鏅紝17琛屾彃鍏ヨ繖涓?/span>key錛?/span>19琛岃緗畠鐨勮秴鏃訛紝娉ㄦ剰鏃墮棿鎴沖凡緇忚璁劇疆鎴愪簡鍒版湡鏃墮棿銆傝繖閲岃鐪嬩竴涓?/span>redisDb(鍗?/span>c->db)鐨勫畾涔夛細

typedef struct redisDb {
    dict 
*dict;                 /* The keyspace for this DB */
    dict 
*expires;              /* Timeout of keys with a timeout set */
    dict 
*blocking_keys;        /* Keys with clients waiting for data (BLPOP) */
    dict 
*io_keys;              /* Keys with clients waiting for VM I/O */
    dict 
*watched_keys;         /* WATCHED keys for MULTI/EXEC CAS */
    
int id;
} redisDb;

浠呭叧娉?/span>dict鍜?/span>expires錛屽垎鍒潵瀛?/span>key-value鍜屽畠鐨勮秴鏃訛紝涔熷氨鏄濡傛灉涓涓?/span>key-value鏄湁瓚呮椂鐨勶紝閭d箞瀹冧細瀛樺湪dict閲岋紝鍚屾椂涔熷瓨鍒?/span>expires閲岋紝綾諱技榪欐牱鐨勫艦寮忥細dict[key]:value,expires[key]:timeout.

褰撶劧key-value娌℃湁瓚呮椂錛?/span>expires閲屽氨涓嶅瓨鍦ㄨ繖涓?/span>key銆?/span>鍓╀笅setKey鍜?/span>setExpire涓や釜鍑芥暟鏃犻潪鏄彃鏁版嵁鍒頒袱涓瓧鍏擱噷錛岃繖閲屼笉鍐嶈榪般?/span>


閭d箞redis鏄浣曞垹闄よ繃鏈?/span>key鐨勫憿銆?/span>

閫氳繃鏌ョ湅dbDelete鐨勮皟鐢ㄨ咃紝棣栧厛娉ㄦ剰鍒拌繖涓涓嚱鏁幫紝鏄敤鏉ュ垹闄よ繃鏈?/span>key鐨勩?/span>

 1 int expireIfNeeded(redisDb *db, robj *key) {
 2     time_t when = getExpire(db,key);
 3 
 4     if (when < 0return 0/* No expire for this key */
 5 
 6     /* Don't expire anything while loading. It will be done later. */
 7     if (server.loading) return 0;
 8 
 9     /* If we are running in the context of a slave, return ASAP:
10      * the slave key expiration is controlled by the master that will
11      * send us synthesized DEL operations for expired keys.
12      *
13      * Still we try to return the right information to the caller, 
14      * that is, 0 if we think the key should be still valid, 1 if
15      * we think the key is expired at this time. */
16     if (server.masterhost != NULL) {
17         return time(NULL) > when;
18     }
19 
20     /* Return when this key has not expired */
21     if (time(NULL) <= when) return 0;
22 
23     /* Delete the key */
24     server.stat_expiredkeys++;
25     propagateExpire(db,key);
26     return dbDelete(db,key);
27 }
28 

ifNeed琛ㄧず鑳藉垹鍒欏垹錛屾墍浠?/span>4琛屾病鏈夎緗秴鏃朵笉鍒狅紝7琛屽湪"loading"鏃朵笉鍒狅紝16琛岄潪涓誨簱涓嶅垹錛?/span>21琛屾湭鍒版湡涓嶅垹銆?/span>25琛屽悓姝ヤ粠搴撳拰鏂囦歡銆?/span>

鍐嶇湅鐪嬪摢浜涘嚱鏁拌皟鐢ㄤ簡expireIfNeeded錛屾湁lookupKeyRead錛?/span>lookupKeyWrite錛?/span>dbRandomKey錛?/span>existsCommand錛?/span>keysCommand銆傞氳繃榪欎簺鍑芥暟鍛藉悕鍙互鐪嬪嚭錛屽彧瑕佽闂簡鏌愪竴涓?/span>key錛岄『甯﹀仛鐨勪簨鎯呭氨鏄皾璇曟煡鐪嬭繃鏈熷茍鍒犻櫎錛岃繖灝變繚璇佷簡鐢ㄦ埛涓嶅彲鑳借闂埌榪囨湡鐨?/span>key銆備絾鏄鏋滄湁澶ч噺鐨?/span>key榪囨湡錛屽茍涓旀病鏈夎璁塊棶鍒幫紝閭d箞灝辨氮璐逛簡璁稿鍐呭瓨銆?/span>Redis鏄浣曞鐞嗚繖涓棶棰樼殑鍛€?/span>


dbDelete鐨勮皟鐢ㄨ呴噷榪樺彂鐜拌繖鏍蜂竴涓嚱鏁幫細

 1 /* Try to expire a few timed out keys. The algorithm used is adaptive and
 2  * will use few CPU cycles if there are few expiring keys, otherwise
 3  * it will get more aggressive to avoid that too much memory is used by
 4  * keys that can be removed from the keyspace. */
 5 void activeExpireCycle(void) {
 6     int j;
 7 
 8     for (j = 0; j < server.dbnum; j++) {
 9         int expired;
10         redisDb *db = server.db+j;
11 
12         /* Continue to expire if at the end of the cycle more than 25%
13          * of the keys were expired. */
14         do {
15             long num = dictSize(db->expires);
16             time_t now = time(NULL);
17 
18             expired = 0;
19             if (num > REDIS_EXPIRELOOKUPS_PER_CRON)
20                 num = REDIS_EXPIRELOOKUPS_PER_CRON;
21             while (num--) {
22                 dictEntry *de;
23                 time_t t;
24 
25                 if ((de = dictGetRandomKey(db->expires)) == NULL) break;
26                 t = (time_t) dictGetEntryVal(de);
27                 if (now > t) {
28                     sds key = dictGetEntryKey(de);
29                     robj *keyobj = createStringObject(key,sdslen(key));
30 
31                     propagateExpire(db,keyobj);
32                     dbDelete(db,keyobj);
33                     decrRefCount(keyobj);
34                     expired++;
35                     server.stat_expiredkeys++;
36                 }
37             }
38         } while (expired > REDIS_EXPIRELOOKUPS_PER_CRON/4);
39     }
40 }
41 

榪欎釜鍑芥暟鐨勬剰鍥懼凡緇忔湁璇存槑錛?/span>鍒犱竴鐐圭偣榪囨湡key錛屽鏋滆繃鏈?/span>key杈冨皯錛岄偅涔熷彧鐢ㄤ竴鐐圭偣cpu銆?/span>25琛岄殢鏈哄彇涓涓?/span>key錛?/span>38琛屽垹key鎴愬姛鐨勬鐜囪緝浣庡氨閫鍑恒傝繖涓嚱鏁拌鏀懼湪涓涓?/span>cron閲岋紝姣忔縐掕璋冪敤涓嬈°傝繖涓畻娉曚繚璇佹瘡嬈′細鍒犻櫎涓瀹氭瘮渚嬬殑key錛屼絾鏄鏋?/span>key鎬婚噺寰堝ぇ錛岃岃繖涓瘮渚嬫帶鍒剁殑澶ぇ錛屽氨闇瑕佹洿澶氭鐨勫驚鐜紝嫻垂cpu錛屾帶鍒剁殑澶皬錛岃繃鏈熺殑key灝變細鍙樺錛屾氮璐瑰唴瀛?#8212;—榪欏氨鏄椂絀烘潈琛′簡銆?/span>

 

鏈鍚庡湪dbDelete鐨勮皟鐢ㄨ呴噷榪樺彂鐜拌繖鏍蜂竴涓嚱鏁幫細

/* This function gets called when 'maxmemory' is set on the config file to limit
 * the max memory used by the server, and we are out of memory.
 * This function will try to, in order:
 *
 * - Free objects from the free list
 * - Try to remove keys with an EXPIRE set
 *
 * It is not possible to free enough memory to reach used-memory < maxmemory
 * the server will start refusing commands that will enlarge even more the
 * memory usage.
 
*/
void freeMemoryIfNeeded(void)

榪欎釜鍑芥暟澶暱灝變笉鍐嶈榪頒簡錛屾敞閲婇儴鍒嗚鏄庡彧鏈夊湪閰嶇疆鏂囦歡涓緗簡鏈澶у唴瀛樻椂鍊欐墠浼氳皟鐢ㄨ繖涓嚱鏁幫紝鑰岃緗繖涓弬鏁扮殑鎰忎箟鏄紝浣犳妸redis褰撳仛涓涓唴瀛?/span>cache鑰屼笉鏄?/span>key-value鏁版嵁搴撱?/span>


浠ヤ笂3縐嶅垹闄よ繃鏈?/span>key鐨勯斿緞錛岀浜岀瀹氭湡鍒犻櫎涓瀹氭瘮渚嬬殑key鏄富瑕佺殑鍒犻櫎閫斿緞錛岀涓縐?#8220;璇繪椂鍒犻櫎”淇濊瘉榪囨湡key涓嶄細琚闂埌錛岀涓夌鏄竴涓綋鍐呭瓨瓚呭嚭璁懼畾鏃剁殑鏆村姏鎵嬫銆傜敱姝や篃鑳界湅鍑?/span>redis璁捐鐨勫閥濡欎箣澶勶紝



闃夸簩 2011-11-29 19:57 鍙戣〃璇勮
]]>
Poco::TCPServer妗嗘灦瑙f瀽http://www.shnenglu.com/richbirdandy/archive/2010/09/10/123994.html闃夸簩闃夸簩Thu, 09 Sep 2010 17:05:00 GMThttp://www.shnenglu.com/richbirdandy/archive/2010/09/10/123994.htmlhttp://www.shnenglu.com/richbirdandy/comments/123994.htmlhttp://www.shnenglu.com/richbirdandy/archive/2010/09/10/123994.html#Feedback13http://www.shnenglu.com/richbirdandy/comments/commentRss/123994.htmlhttp://www.shnenglu.com/richbirdandy/services/trackbacks/123994.html闃呰鍏ㄦ枃

闃夸簩 2010-09-10 01:05 鍙戣〃璇勮
]]>
浠庢搗閲忔暟鎹腑鎵懼嚭涓綅鏁?/title><link>http://www.shnenglu.com/richbirdandy/archive/2008/09/09/61426.html</link><dc:creator>闃夸簩</dc:creator><author>闃夸簩</author><pubDate>Tue, 09 Sep 2008 14:49:00 GMT</pubDate><guid>http://www.shnenglu.com/richbirdandy/archive/2008/09/09/61426.html</guid><wfw:comment>http://www.shnenglu.com/richbirdandy/comments/61426.html</wfw:comment><comments>http://www.shnenglu.com/richbirdandy/archive/2008/09/09/61426.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/richbirdandy/comments/commentRss/61426.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/richbirdandy/services/trackbacks/61426.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: 瀹嬩綋">棰樼洰鍜屽熀鏈濊礬閮芥潵婧愮綉涓婏紝鏈漢鍔犱互鏁寸悊銆?/p> <p style="FONT-SIZE: 10pt; FONT-FAMILY: 瀹嬩綋">棰樼洰錛氬湪涓涓枃浠朵腑鏈?10G 涓暣鏁幫紝涔卞簭鎺掑垪錛岃姹傛壘鍑轟腑浣嶆暟銆傚唴瀛橀檺鍒朵負 2G銆傚彧鍐欏嚭鎬濊礬鍗沖彲錛堝唴瀛橀檺鍒朵負 2G鐨勬剰鎬濆氨鏄紝鍙互浣跨敤2G鐨勭┖闂存潵榪愯紼嬪簭錛岃屼笉鑰冭檻榪欏彴鏈哄櫒涓婄殑鍏朵粬杞歡鐨勫崰鐢ㄥ唴瀛橈級銆?/p> <p style="FONT-SIZE: 10pt; FONT-FAMILY: 瀹嬩綋">鍏充簬涓綅鏁幫細鏁版嵁鎺掑簭鍚庯紝浣嶇疆鍦ㄦ渶涓棿鐨勬暟鍊箋傚嵆灝嗘暟鎹垎鎴愪袱閮ㄥ垎錛屼竴閮ㄥ垎澶т簬璇ユ暟鍊鹼紝涓閮ㄥ垎灝忎簬璇ユ暟鍊箋備腑浣嶆暟鐨勪綅緗細褰撴牱鏈暟涓哄鏁版椂錛屼腑浣嶆暟=(N+1)/2 ; 褰撴牱鏈暟涓哄伓鏁版椂錛屼腑浣嶆暟涓篘/2涓?+N/2鐨勫潎鍊鹼紙閭d箞10G涓暟鐨勪腑浣嶆暟錛屽氨絎?G澶х殑鏁頒笌絎?G+1澶х殑鏁扮殑鍧囧間簡錛夈?/p> <p style="FONT-SIZE: 10pt; FONT-FAMILY: 瀹嬩綋">鍒嗘瀽錛氭槑鏄炬槸涓閬撳伐紼嬫у緢寮虹殑棰樼洰錛屽拰涓鑸殑鏌ユ壘涓綅鏁扮殑棰樼洰鏈夊嚑鐐逛笉鍚屻?br>1. 鍘熸暟鎹笉鑳借榪涘唴瀛橈紝涓嶇劧鍙互鐢ㄥ揩閫熼夋嫨錛屽鏋滄暟鐨勮寖鍥村悎閫傜殑璇濊繕鍙互鑰冭檻妗舵帓搴忔垨鑰呰鏁版帓搴忥紝浣嗚繖閲屽亣璁炬槸32浣嶆暣鏁幫紝浠嶆湁4G縐嶅彇鍊鹼紝闇瑕佷竴涓?6G澶у皬鐨勬暟緇勬潵璁℃暟銆?/p> <p style="FONT-SIZE: 10pt; FONT-FAMILY: 瀹嬩綋">2. 鑻ョ湅鎴愪粠N涓暟涓壘鍑虹K澶х殑鏁幫紝濡傛灉K涓暟鍙互璇昏繘鍐呭瓨錛屽彲浠ュ埄鐢ㄦ渶灝忔垨鏈澶у爢錛屼絾榪欓噷K=N/2,鏈?G涓暟錛屼粛鐒朵笉鑳借榪涘唴瀛樸?/p> <p style="FONT-SIZE: 10pt; FONT-FAMILY: 瀹嬩綋">3. 鎺ヤ笂錛屽浜嶯涓暟鍜孠涓暟閮戒笉鑳戒竴嬈¤榪涘唴瀛樼殑鎯呭喌錛屻婄紪紼嬩箣緹庛嬮噷緇欏嚭涓涓柟妗堬細璁緆<K,涓攌涓暟鍙互瀹屽叏璇昏繘鍐呭瓨錛岄偅涔堝厛鏋勫緩k涓暟鐨勫爢錛屽厛鎵懼嚭絎?鍒発澶х殑鏁幫紝鍐嶆壂鎻忎竴閬嶆暟緇勬壘鍑虹k+1鍒?k鐨勬暟錛屽啀鎵弿鐩村埌鎵懼嚭絎琄涓暟銆傝櫧鐒舵瘡嬈℃椂闂村ぇ綰︽槸nlog(k)錛屼絾闇瑕佹壂鎻廲eil(K/k)嬈★紝榪欓噷瑕佹壂鎻?嬈°?/p> <p style="FONT-SIZE: 10pt; FONT-FAMILY: 瀹嬩綋">瑙f硶錛氶鍏堝亣璁炬槸32浣嶆棤絎﹀彿鏁存暟銆?br>1. 璇諱竴閬?0G涓暣鏁幫紝鎶婃暣鏁版槧灝勫埌256M涓尯孌典腑錛岀敤涓涓?4浣嶆棤絎﹀彿鏁存暟緇欐瘡涓浉搴斿尯孌佃鏁般?br>璇存槑錛氭暣鏁拌寖鍥存槸0 - 2^32 - 1錛屼竴鍏辨湁4G縐嶅彇鍊鹼紝鏄犲皠鍒?56M涓尯孌碉紝鍒欐瘡涓尯孌墊湁16錛?G/256M = 16錛夌鍊鹼紝姣?6涓肩畻涓孌碉紝 0锝?5鏄1孌碉紝16锝?1鏄2孌碉紝……2^32-16 锝?^32-1鏄256M孌點備竴涓?4浣嶆棤絎﹀彿鏁存暟鏈澶у兼槸0锝?G-1錛岃繖閲屽厛涓嶈冭檻婧㈠嚭鐨勬儏鍐點傛誨叡鍗犵敤鍐呭瓨256M×8B=2GB銆?/p> <p style="FONT-SIZE: 10pt; FONT-FAMILY: 瀹嬩綋">2. 浠庡墠鍒板悗瀵規瘡涓孌電殑璁℃暟绱姞錛屽綋绱姞鐨勫拰瓚呰繃5G鏃跺仠姝紝鎵懼嚭榪欎釜鍖烘錛堝嵆绱姞鍋滄鏃惰揪鍒扮殑鍖烘錛屼篃鏄腑浣嶆暟鎵鍦ㄧ殑鍖烘錛夌殑鏁板艱寖鍥達紝璁句負[a錛宎+15]錛屽悓鏃惰褰曠瘡鍔犲埌鍓嶄竴涓尯孌電殑鎬繪暟錛岃涓簃銆傜劧鍚庯紝閲婃斁闄よ繖涓尯孌靛崰鐢ㄧ殑鍐呭瓨銆?/p> <p style="FONT-SIZE: 10pt; FONT-FAMILY: 瀹嬩綋">3. 鍐嶈涓閬?0G涓暣鏁幫紝鎶婂湪[a錛宎+15]鍐呯殑姣忎釜鍊艱鏁幫紝鍗蟲湁16涓鏁般?/p> <p style="FONT-SIZE: 10pt; FONT-FAMILY: 瀹嬩綋">4. 瀵規柊鐨勮鏁頒緷嬈$瘡鍔狅紝姣忔鐨勫拰璁句負n錛屽綋m+n鐨勫艱秴榪?G鏃跺仠姝紝姝ゆ椂鐨勮繖涓鏁版墍瀵瑰簲鐨勬暟灝辨槸涓綅鏁般?/p> <p style="FONT-SIZE: 10pt; FONT-FAMILY: 瀹嬩綋">鎬葷粨錛?br>1.浠ヤ笂鏂規硶鍙璇諱袱閬嶆暣鏁幫紝瀵規瘡涓暣鏁頒篃鍙槸甯告暟鏃墮棿鐨勬搷浣滐紝鎬諱綋鏉ヨ鏄嚎鎬ф椂闂淬?/p> <p style="FONT-SIZE: 10pt; FONT-FAMILY: 瀹嬩綋">2. 鑰冭檻鍏朵粬鎯呭喌銆?br>鑻ユ槸鏈夌鍙風殑鏁存暟錛屽彧闇鏀瑰彉鏄犲皠鍗沖彲銆傝嫢鏄?4涓烘暣鏁幫紝鍒欏鍔犳瘡涓尯孌電殑鑼冨洿錛岄偅涔堝湪絎簩嬈¤鏁版椂錛岃鑰冭檻鏇村鐨勮鏁般傝嫢榪囨煇涓鏁版孩鍑猴紝閭d箞鍙瀹氭墍鍦ㄧ殑鍖烘鎴栦唬琛ㄦ暣鏁頒負鎵姹傦紝榪欓噷鍙渶鍋氬ソ鐩稿簲鐨勫鐞嗐傚櫌錛屽繕浜嗚繕瑕佹壘絎?G+1澶х殑鏁頒簡錛岀浉淇℃湁浜嗕互涓婄殑鎴愭灉錛屾壘鍒拌繖涓暟涔熶笉闅句簡鍚с?/p> <p style="FONT-SIZE: 10pt; FONT-FAMILY: 瀹嬩綋">3. 鏃剁┖鏉冭 銆?br>鑺辮垂256涓尯孌典篃璁稿彧鏄伆濂介厤鍚?GB鐨勫唴瀛橈紙鍏跺疄涔熶笉鏄紝鍛靛懙錛夈傚彲浠ュ澶у尯孌佃寖鍥達紝鍑忓皯鍖烘鏁扮洰錛岃妭鐪佷竴浜涘唴瀛橈紝铏界劧澧炲姞絎簩閮ㄥ垎鐨勫鍗曚釜鏁板肩殑璁℃暟錛屼絾絎竴閮ㄥ垎瀵規瘡涓尯孌電殑璁℃暟鍔犲揩浜嗭紙鎬諱綋鏀瑰彉錛燂紵寰呮祴錛夈?/p> <p style="FONT-SIZE: 10pt; FONT-FAMILY: 瀹嬩綋">4. 鏄犲皠鏃跺敖閲忕敤浣嶆搷浣滐紝鐢變簬姣忎釜鍖烘鐨勮搗鐐歸兘鏄?鐨勬暣鏁板箓錛屾槧灝勮搗鏉ヤ篃寰堟柟渚褲?br></p> <img src ="http://www.shnenglu.com/richbirdandy/aggbug/61426.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/richbirdandy/" target="_blank">闃夸簩</a> 2008-09-09 22:49 <a href="http://www.shnenglu.com/richbirdandy/archive/2008/09/09/61426.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍩轟簬boost::multi_array鐨勭煩闃電浉涔?/title><link>http://www.shnenglu.com/richbirdandy/archive/2008/09/09/61408.html</link><dc:creator>闃夸簩</dc:creator><author>闃夸簩</author><pubDate>Tue, 09 Sep 2008 12:21:00 GMT</pubDate><guid>http://www.shnenglu.com/richbirdandy/archive/2008/09/09/61408.html</guid><wfw:comment>http://www.shnenglu.com/richbirdandy/comments/61408.html</wfw:comment><comments>http://www.shnenglu.com/richbirdandy/archive/2008/09/09/61408.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/richbirdandy/comments/commentRss/61408.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/richbirdandy/services/trackbacks/61408.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 12pt">鍗氬絎竴綃囷紝榪樻湜澶у澶氬鎸囩偣銆?br><br>鐪嬩簡鍗婂ぉ鐨刡oost::multi_array鏂囨。錛屾墠鍙戠幇鍙互鐢╯hape()[]榪欎釜鐨勪笢瑗匡紝鏉ュ彇鏌愪竴緇寸殑闀垮害 <br><br>鑰屽叧浜庤鍥鵑儴鍒嗭紝灝忓紵鐪嬬殑涓鐭ュ崐瑙o紝 <br>姣斿錛屾庝箞鏍鋒妸涓涓?×4鐨勭煩闃靛垎鎴?涓?×2鐨勭煩闃靛憿 <br>铏界劧鍙互鐢ㄥ埆鐨勯斿緞瑙e喅錛屼絾榪樻槸鎯崇湅涓媘ulti_array鐨勮鍥炬搷浣?<br><br>鏈潵瑕佸疄鐜頒笅Strassen綆楁硶鐨勶紝 <br>涓嬮潰鏄櫘閫氱殑鐭╅樀涔樻硶銆?br><br> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">boost/multi_array.hpp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000"> std;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>typedef boost::multi_array</span><span style="COLOR: #000000"><</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> matrix; <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>matrix matrix_multiply(matrix</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> a,matrix</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> b)<br><img id=Codehighlighter1_164_498_Open_Image onclick="this.style.display='none'; Codehighlighter1_164_498_Open_Text.style.display='none'; Codehighlighter1_164_498_Closed_Image.style.display='inline'; Codehighlighter1_164_498_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_164_498_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_164_498_Closed_Text.style.display='none'; Codehighlighter1_164_498_Open_Image.style.display='inline'; Codehighlighter1_164_498_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_164_498_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_164_498_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    matrix::index row</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">a.shape()[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">];<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    matrix::index col</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">b.shape()[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    matrix c(boost::extents[row][col]);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (matrix::index i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">a.shape()[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]; </span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">i)<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (matrix::index j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; j</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">b.shape()[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]; </span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">j)<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (matrix::index k</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; k</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">a.shape()[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]; </span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">k)<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>                c[i][j]</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">a[i][k]</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">b[k][j];<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> c;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> print(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> matrix</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> m)<br><img id=Codehighlighter1_529_686_Open_Image onclick="this.style.display='none'; Codehighlighter1_529_686_Open_Text.style.display='none'; Codehighlighter1_529_686_Closed_Image.style.display='inline'; Codehighlighter1_529_686_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_529_686_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_529_686_Closed_Text.style.display='none'; Codehighlighter1_529_686_Open_Image.style.display='inline'; Codehighlighter1_529_686_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_529_686_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_529_686_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (matrix::index i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">m.shape()[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]; cout</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">endl,</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">i)<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (matrix::index j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; j</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">m.shape()[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]; </span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">j)<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>                cout</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">m[i][j]</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;    <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_700_1226_Open_Image onclick="this.style.display='none'; Codehighlighter1_700_1226_Open_Text.style.display='none'; Codehighlighter1_700_1226_Closed_Image.style.display='inline'; Codehighlighter1_700_1226_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_700_1226_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_700_1226_Closed_Text.style.display='none'; Codehighlighter1_700_1226_Open_Image.style.display='inline'; Codehighlighter1_700_1226_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> main() </span><span id=Codehighlighter1_700_1226_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_700_1226_Open_Text><span style="COLOR: #000000">{   <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img id=Codehighlighter1_725_774_Open_Image onclick="this.style.display='none'; Codehighlighter1_725_774_Open_Text.style.display='none'; Codehighlighter1_725_774_Closed_Image.style.display='inline'; Codehighlighter1_725_774_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_725_774_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_725_774_Closed_Text.style.display='none'; Codehighlighter1_725_774_Open_Image.style.display='inline'; Codehighlighter1_725_774_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> values[] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span id=Codehighlighter1_725_774_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_725_774_Open_Text><span style="COLOR: #000000">{   <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,   <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">    <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>    }</span></span><span style="COLOR: #000000">;   <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> values_size </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">;   <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    matrix A(boost::extents[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">]);  <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    matrix B(boost::extents[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">]); <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    A.assign(values,values </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> values_size);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    B.assign(values,values </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> values_size);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        cout</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">matrix A</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">endl;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        print(A);   <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    cout</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">endl;cout</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">endl;cout</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">matrix B</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">endl;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        print(B);   <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    cout</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">endl;cout</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">endl;cout</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">matrix C</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">endl;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    print(matrix_multiply(A,B));<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    cout</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">endl;  <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"> </span></div> </span> <img src ="http://www.shnenglu.com/richbirdandy/aggbug/61408.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/richbirdandy/" target="_blank">闃夸簩</a> 2008-09-09 20:21 <a href="http://www.shnenglu.com/richbirdandy/archive/2008/09/09/61408.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.jsbcly.cn" target="_blank">亚洲欧美日韩久久精品</a>| <a href="http://www.wuhujob.com.cn" target="_blank">久久精品99久久香蕉国产色戒</a>| <a href="http://www.cn0317.cn" target="_blank">久久精品国产影库免费看</a>| <a href="http://www.hhlou.com.cn" target="_blank">国产毛片久久久久久国产毛片</a>| <a href="http://www.sixyin.cn" target="_blank">久久本道综合久久伊人</a>| <a href="http://www.r97n59.cn" target="_blank">久久久久久久97</a>| <a href="http://www.1985328.cn" target="_blank">中文字幕成人精品久久不卡 </a>| <a href="http://www.weipengdq.cn" target="_blank">久久精品国产99久久丝袜</a>| <a href="http://www.guhm.cn" target="_blank">香蕉久久影院</a>| <a href="http://www.centralworld.cn" target="_blank">久久久91精品国产一区二区三区</a>| <a href="http://www.hoolhooy.cn" target="_blank">成人精品一区二区久久</a>| <a href="http://www.tril.cn" target="_blank">久久久无码人妻精品无码</a>| <a href="http://www.easecorp.com.cn" target="_blank">久久国产精品免费一区二区三区</a>| <a href="http://www.k6399.cn" target="_blank">欧美丰满熟妇BBB久久久</a>| <a href="http://www.zawin.cn" target="_blank">成人精品一区二区久久久</a>| <a href="http://www.818jk.cn" target="_blank">久久人人爽爽爽人久久久</a>| <a href="http://www.010law.cn" target="_blank">久久久久一本毛久久久</a>| <a href="http://www.dlucai.cn" target="_blank">精品久久久久久久</a>| <a href="http://www.ea52.cn" target="_blank">久久精品国产99久久久古代</a>| <a href="http://www.sj-gd.cn" target="_blank">国内精品久久久久久久涩爱</a>| <a href="http://www.950aw.cn" target="_blank">AV色综合久久天堂AV色综合在</a>| <a href="http://www.usgold.cn" target="_blank">一本大道久久东京热无码AV</a>| <a href="http://www.huadamachine.com.cn" target="_blank">久久96国产精品久久久</a>| <a href="http://www.sme369.cn" target="_blank">久久亚洲AV成人无码国产</a>| <a href="http://www.iomg.com.cn" target="_blank">亚洲伊人久久成综合人影院 </a>| <a href="http://www.cynh.net.cn" target="_blank">久久久久久久波多野结衣高潮 </a>| <a href="http://www.ljvs.cn" target="_blank">久久久无码人妻精品无码</a>| <a href="http://www.xorfbrt.cn" target="_blank">久久无码人妻精品一区二区三区</a>| <a href="http://www.yinxingcun.com.cn" target="_blank">99久久超碰中文字幕伊人</a>| <a href="http://www.lwtjf.cn" target="_blank">午夜天堂精品久久久久</a>| <a href="http://www.jjcxxx.cn" target="_blank">偷窥少妇久久久久久久久</a>| <a href="http://www.yundizhijia.cn" target="_blank">免费一级做a爰片久久毛片潮</a>| <a href="http://www.gdgzwz.cn" target="_blank">a级毛片无码兔费真人久久</a>| <a href="http://www.y5xx.cn" target="_blank">久久综合丁香激情久久</a>| <a href="http://www.wthangjia.cn" target="_blank">久久精品嫩草影院</a>| <a href="http://www.facpw.cn" target="_blank">99久久99久久精品国产</a>| <a href="http://www.net901.cn" target="_blank">伊人久久精品线影院</a>| <a href="http://www.esld.cn" target="_blank">国产精品久久一区二区三区</a>| <a href="http://www.bqb2.cn" target="_blank">久久成人国产精品二三区</a>| <a href="http://www.ghfsp.cn" target="_blank">久久电影网一区</a>| <a href="http://www.huacai0019.cn" 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>