实在的作业是可串行化的哲学

 

SQL标准中的隔离性

SQL标准定义多个隔离级别

  • SERIALIZABLE

  • REPEATED READ

  • READ COMMITTED

  • READ UNCOMMITTED

SERIALIZABLE作业运行时接近在同一时刻仅有一个事务运行;其余隔离级别允许出现SQL标准称作的“三种phenomena”脏读、不可重复读、幻读。后续的商量(此处指Critique,伊凡在文章“分布式数据库之事务隔离性”中已经进行了介绍)定义了额外的“phenomena”和隔断级别。
在现代切磋中,那个“phenomena”更广泛被誉为“anomalies”,或者更直接称为”lies”。当您使用一个非SERIALIZABLE隔断级别时,你是在同意数据库重临错误答案,希望它能比正确答案更快。SQL标准认为那是摇摇欲坠的,须求SERIALIZABLE置为默许的割裂级别。更弱的割裂级别只是为那一个可以容忍“anomalies”的使用提供了暧昧的优化手段。

 

写在前面

本文是一篇CockroachDB官方博客的译文,紧要解说数据库达成串行化隔离的须要性。关于业务隔离性,伊凡曾经在“分布式数据库之事务隔离性”中从理论方面拓展过系统的介绍,本文则是从数据库厂商的角度来论述对隔离性的敞亮,大家可以将两篇文章结合起来,对隔离性有更为圆满客观的知晓。CockroachDB的见解是首先保障安全性而后追求高品质,所以花了很大精力贯彻Serializable Snapshot Isolation,是现阶段极少的有实用价值的SERIALIZABLE落到实处。当然,业界也有厂商对可串行化方面投入的要求性持分裂见解。伊凡算计CockroachDB的见地可能是饱受了PostgreSQL的震慑,毕竟后者是首先辅助Serializable Snapshot Isolation的买卖数据库,并且CockroachDB在SQL层面也是以极度PostgreSQL为对象。

 

正文

大部数据库都提供了工作隔离级其余选拔,可以在不利和特性之间举行衡量。然则,高品质的代价就是开发人员必须小心研讨业务交互否则就会引入一些神秘的荒唐。CockroachDB
默认提供了强隔离(SERIALIZABLE)可以保险您的运用总是看到梦想的数额。在本文中大家将分解那表示什么样以及不丰硕的割裂在什么样影响真实世界的利用。

 1哲学 1哲学 2/**//*
 2哲学 3Copyright (c) 2008, Yahoo! Inc. All rights reserved.
 3哲学 4Code licensed under the BSD License:
 4哲学 5http://developer.yahoo.net/yui/license.txt
 5哲学 6version: 2.5.2
 6哲学 7*/
 7哲学 8哲学 9if(typeof YAHOO=="undefined"||!YAHOO)哲学 10{var YAHOO=哲学 11{};}YAHOO.namespace=function()哲学 12{var A=arguments,E=null,C,B,D;for(C=0;C<A.length;C=C+1)哲学 13{D=A[C].split(".");E=YAHOO;for(B=(D[0]=="YAHOO")?1:0;B<D.length;B=B+1)哲学 14{E[D[B]]=E[D[B]]||哲学 15{};E=E[D[B]];}}return E;};YAHOO.log=function(D,A,C)哲学 16{var B=YAHOO.widget.Logger;if(B&&B.log)哲学 17{return B.log(D,A,C);}else哲学 18{return false;}};YAHOO.register=function(A,E,D)哲学 19{var I=YAHOO.env.modules;if(!I[A])哲学 20{I[A]=哲学 21{versions:[],builds:[]};}var B=I[A],H=D.version,G=D.build,F=YAHOO.env.listeners;B.name=A;B.version=H;B.build=G;B.versions.push(H);B.builds.push(G);B.mainClass=E;for(var C=0;C<F.length;C=C+1)哲学 22{F[C](B);}if(E)哲学 23{E.VERSION=H;E.BUILD=G;}else哲学 24{YAHOO.log("mainClass is undefined for module "+A,"warn");}};YAHOO.env=YAHOO.env||哲学 25{modules:[],listeners:[]};YAHOO.env.getVersion=function(A)哲学 26{return YAHOO.env.modules[A]||null;};YAHOO.env.ua=function()哲学 27{var C=哲学 28{ie:0,opera:0,gecko:0,webkit:0,mobile:null,air:0};var B=navigator.userAgent,A;if((/KHTML/).test(B))哲学 29{C.webkit=1;}A=B.match(/AppleWebKit\/([^\s]*)/);if(A&&A[1]){C.webkit=parseFloat(A[1]);if(/ Mobile\//.test(B)){C.mobile="Apple";}else{A=B.match(/NokiaN[^\/]*/);if(A){C.mobile=A[0];}}A=B.match(/AdobeAIR\/([^\s]*)/);if(A){C.air=A[0];}}if(!C.webkit){A=B.match(/Opera[\s\/]([^\s]*)/);if(A&&A[1]){C.opera=parseFloat(A[1]);A=B.match(/Opera Mini[^;]*/);if(A){C.mobile=A[0];}}else{A=B.match(/MSIE\s([^;]*)/);if(A&&A[1]){C.ie=parseFloat(A[1]);}else{A=B.match(/Gecko\/([^\s]*)/);if(A){C.gecko=1;A=B.match(/rv:([^\s\)]*)/);if(A&&A[1]){C.gecko=parseFloat(A[1]);}}}}}return C;}();(function(){YAHOO.namespace("util","widget","example");if("undefined"!==typeof YAHOO_config){var B=YAHOO_config.listener,A=YAHOO.env.listeners,D=true,C;if(B){for(C=0;C<A.length;C=C+1){if(A[C]==B){D=false;break;}}if(D){A.push(B);}}}})();YAHOO.lang=YAHOO.lang||{};(function(){var A=YAHOO.lang,C=["toString","valueOf"],B={isArray:function(D){if(D){return A.isNumber(D.length)&&A.isFunction(D.splice);}return false;},isBoolean:function(D){return typeof D==="boolean";},isFunction:function(D){return typeof D==="function";},isNull:function(D){return D===null;},isNumber:function(D){return typeof D==="number"&&isFinite(D);},isObject:function(D){return(D&&(typeof D==="object"||A.isFunction(D)))||false;},isString:function(D){return typeof D==="string";},isUndefined:function(D){return typeof D==="undefined";},_IEEnumFix:(YAHOO.env.ua.ie)?function(F,E){for(var D=0;D<C.length;D=D+1){var H=C[D],G=E[H];if(A.isFunction(G)&&G!=Object.prototype[H]){F[H]=G;}}}:function(){},extend:function(H,I,G){if(!I||!H){throw new Error("extend failed, please check that "+"all dependencies are included.");}var E=function(){};E.prototype=I.prototype;H.prototype=new E();H.prototype.constructor=H;H.superclass=I.prototype;if(I.prototype.constructor==Object.prototype.constructor){I.prototype.constructor=I;}if(G){for(var D in G){if(A.hasOwnProperty(G,D)){H.prototype[D]=G[D];}}A._IEEnumFix(H.prototype,G);}},augmentObject:function(H,G){if(!G||!H){throw new Error("Absorb failed, verify dependencies.");}var D=arguments,F,I,E=D[2];if(E&&E!==true){for(F=2;F<D.length;F=F+1){H[D[F]]=G[D[F]];}}else{for(I in G){if(E||!(I in H)){H[I]=G[I];}}A._IEEnumFix(H,G);}},augmentProto:function(G,F){if(!F||!G){throw new Error("Augment failed, verify dependencies.");}var D=[G.prototype,F.prototype];for(var E=2;E<arguments.length;E=E+1){D.push(arguments[E]);}A.augmentObject.apply(this,D);},dump:function(D,I){var F,H,K=[],L="{哲学 30}",E="f(){哲学 31}",J=", ",G=" => ";if(!A.isObject(D)){return D+"";}else{if(D instanceof Date||("nodeType" in D&&"tagName" in D)){return D;}else{if(A.isFunction(D)){return E;}}}I=(A.isNumber(I))?I:3;if(A.isArray(D)){K.push("[");for(F=0,H=D.length;F<H;F=F+1){if(A.isObject(D[F])){K.push((I>0)?A.dump(D[F],I-1):L);}else{K.push(D[F]);}K.push(J);}if(K.length>1){K.pop();}K.push("]");}else{K.push("{");for(F in D){if(A.hasOwnProperty(D,F)){K.push(F+G);if(A.isObject(D[F])){K.push((I>0)?A.dump(D[F],I-1):L);}else{K.push(D[F]);}K.push(J);}}if(K.length>1){K.pop();}K.push("}");}return K.join("");},substitute:function(S,E,L){var I,H,G,O,P,R,N=[],F,J="dump",M=" ",D="{",Q="}";for(;;){I=S.lastIndexOf(D);if(I<0){break;}H=S.indexOf(Q,I);if(I+1>=H){break;}F=S.substring(I+1,H);O=F;R=null;G=O.indexOf(M);if(G>-1){R=O.substring(G+1);O=O.substring(0,G);}P=E[O];if(L){P=L(O,P,R);}if(A.isObject(P)){if(A.isArray(P)){P=A.dump(P,parseInt(R,10));}else{R=R||"";var K=R.indexOf(J);if(K>-1){R=R.substring(4);}if(P.toString===Object.prototype.toString||K>-1){P=A.dump(P,parseInt(R,10));}else{P=P.toString();}}}else{if(!A.isString(P)&&!A.isNumber(P)){P="~-"+N.length+"-~";N[N.length]=F;}}S=S.substring(0,I)+P+S.substring(H+1);}for(I=N.length-1;I>=0;I=I-1){S=S.replace(new RegExp("~-"+I+"-~"),"{"+N[I]+"}","g");}return S;},trim:function(D){try{return D.replace(/^\s+|\s+$/g,"");}catch(E){return D;}},merge:function(){var G={},E=arguments;for(var F=0,D=E.length;F<D;F=F+1){A.augmentObject(G,E[F],true);}return G;},later:function(K,E,L,G,H){K=K||0;E=E||{};var F=L,J=G,I,D;if(A.isString(L)){F=E[L];}if(!F){throw new TypeError("method undefined");}if(!A.isArray(J)){J=[G];}I=function(){F.apply(E,J);};D=(H)?setInterval(I,K):setTimeout(I,K);return{interval:H,cancel:function(){if(this.interval){clearInterval(D);}else{clearTimeout(D);}}};},isValue:function(D){return(A.isObject(D)||A.isString(D)||A.isNumber(D)||A.isBoolean(D));}};A.hasOwnProperty=(Object.prototype.hasOwnProperty)?function(D,E){return D&&D.hasOwnProperty(E);}:function(D,E){return !A.isUndefined(D[E])&&D.constructor.prototype[E]!==D[E];};B.augmentObject(A,B,true);YAHOO.util.Lang=A;A.augment=A.augmentProto;YAHOO.augment=A.augmentProto;YAHOO.extend=A.extend;})();YAHOO.register("yahoo",YAHOO,{version:"2.5.2",build:"1076"});(function(){var B=YAHOO.util,K,I,J={},F={},M=window.document;YAHOO.env._id_counter=YAHOO.env._id_counter||0;var C=YAHOO.env.ua.opera,L=YAHOO.env.ua.webkit,A=YAHOO.env.ua.gecko,G=YAHOO.env.ua.ie;var E={HYPHEN:/(-[a-z])/i,ROOT_TAG:/^body|html$/i,OP_SCROLL:/^(?:inline|table-row)$/i};var N=function(P){if(!E.HYPHEN.test(P)){return P;}if(J[P]){return J[P];}var Q=P;while(E.HYPHEN.exec(Q)){Q=Q.replace(RegExp.$1,RegExp.$1.substr(1).toUpperCase());}J[P]=Q;return Q;};var O=function(Q){var P=F[Q];if(!P){P=new RegExp("(?:^|\\s+)"+Q+"(?:\\s+|$)");F[Q]=P;}return P;};if(M.defaultView&&M.defaultView.getComputedStyle){K=function(P,S){var R=null;if(S=="float"){S="cssFloat";}var Q=P.ownerDocument.defaultView.getComputedStyle(P,"");if(Q){R=Q[N(S)];}return P.style[S]||R;};}else{if(M.documentElement.currentStyle&&G){K=function(P,R){switch(N(R)){case"opacity":var T=100;try{T=P.filters["DXImageTransform.Microsoft.Alpha"].opacity;}catch(S){try{T=P.filters("alpha").opacity;}catch(S){}}return T/100;case"float":R="styleFloat";default:var Q=P.currentStyle?P.currentStyle[R]:null;return(P.style[R]||Q);}};}else{K=function(P,Q){return P.style[Q];};}}if(G){I=function(P,Q,R){switch(Q){case"opacity":if(YAHOO.lang.isString(P.style.filter)){P.style.filter="alpha(opacity="+R*100+")";if(!P.currentStyle||!P.currentStyle.hasLayout){P.style.zoom=1;}}break;case"float":Q="styleFloat";default:P.style[Q]=R;}};}else{I=function(P,Q,R){if(Q=="float"){Q="cssFloat";}P.style[Q]=R;};}var D=function(P,Q){return P&&P.nodeType==1&&(!Q||Q(P));};YAHOO.util.Dom={get:function(R){if(R&&(R.nodeType||R.item)){return R;}if(YAHOO.lang.isString(R)||!R){return M.getElementById(R);}if(R.length!==undefined){var S=[];for(var Q=0,P=R.length;Q<P;++Q){S[S.length]=B.Dom.get(R[Q]);}return S;}return R;},getStyle:function(P,R){R=N(R);var Q=function(S){return K(S,R);};return B.Dom.batch(P,Q,B.Dom,true);},setStyle:function(P,R,S){R=N(R);var Q=function(T){I(T,R,S);};B.Dom.batch(P,Q,B.Dom,true);},getXY:function(P){var Q=function(R){if((R.parentNode===null||R.offsetParent===null||this.getStyle(R,"display")=="none")&&R!=R.ownerDocument.body){return false;}return H(R);};return B.Dom.batch(P,Q,B.Dom,true);},getX:function(P){var Q=function(R){return B.Dom.getXY(R)[0];};return B.Dom.batch(P,Q,B.Dom,true);},getY:function(P){var Q=function(R){return B.Dom.getXY(R)[1];};return B.Dom.batch(P,Q,B.Dom,true);},setXY:function(P,S,R){var Q=function(V){var U=this.getStyle(V,"position");if(U=="static"){this.setStyle(V,"position","relative");U="relative";}var X=this.getXY(V);if(X===false){return false;}var W=[parseInt(this.getStyle(V,"left"),10),parseInt(this.getStyle(V,"top"),10)];if(isNaN(W[0])){W[0]=(U=="relative")?0:V.offsetLeft;}if(isNaN(W[1])){W[1]=(U=="relative")?0:V.offsetTop;}if(S[0]!==null){V.style.left=S[0]-X[0]+W[0]+"px";}if(S[1]!==null){V.style.top=S[1]-X[1]+W[1]+"px";}if(!R){var T=this.getXY(V);if((S[0]!==null&&T[0]!=S[0])||(S[1]!==null&&T[1]!=S[1])){this.setXY(V,S,true);}}};B.Dom.batch(P,Q,B.Dom,true);},setX:function(Q,P){B.Dom.setXY(Q,[P,null]);},setY:function(P,Q){B.Dom.setXY(P,[null,Q]);},getRegion:function(P){var Q=function(R){if((R.parentNode===null||R.offsetParent===null||this.getStyle(R,"display")=="none")&&R!=R.ownerDocument.body){return false;}var S=B.Region.getRegion(R);return S;};return B.Dom.batch(P,Q,B.Dom,true);},getClientWidth:function(){return B.Dom.getViewportWidth();},getClientHeight:function(){return B.Dom.getViewportHeight();},getElementsByClassName:function(T,X,U,V){X=X||"*";U=(U)?B.Dom.get(U):null||M;if(!U){return[];}var Q=[],P=U.getElementsByTagName(X),W=O(T);for(var R=0,S=P.length;R<S;++R){if(W.test(P[R].className)){Q[Q.length]=P[R];if(V){V.call(P[R],P[R]);}}}return Q;},hasClass:function(R,Q){var P=O(Q);var S=function(T){return P.test(T.className);};return B.Dom.batch(R,S,B.Dom,true);},addClass:function(Q,P){var R=function(S){if(this.hasClass(S,P)){return false;}S.className=YAHOO.lang.trim([S.className,P].join(" "));return true;};return B.Dom.batch(Q,R,B.Dom,true);},removeClass:function(R,Q){var P=O(Q);var S=function(T){if(!Q||!this.hasClass(T,Q)){return false;}var U=T.className;T.className=U.replace(P," ");if(this.hasClass(T,Q)){this.removeClass(T,Q);}T.className=YAHOO.lang.trim(T.className);return true;};return B.Dom.batch(R,S,B.Dom,true);},replaceClass:function(S,Q,P){if(!P||Q===P){return false;}var R=O(Q);var T=function(U){if(!this.hasClass(U,Q)){this.addClass(U,P);return true;}U.className=U.className.replace(R," "+P+" ");if(this.hasClass(U,Q)){this.replaceClass(U,Q,P);}U.className=YAHOO.lang.trim(U.className);return true;};return B.Dom.batch(S,T,B.Dom,true);},generateId:function(P,R){R=R||"yui-gen";var Q=function(S){if(S&&S.id){return S.id;}var T=R+YAHOO.env._id_counter++;if(S){S.id=T;}return T;};return B.Dom.batch(P,Q,B.Dom,true)||Q.apply(B.Dom,arguments);},isAncestor:function(P,Q){P=B.Dom.get(P);Q=B.Dom.get(Q);if(!P||!Q){return false;}if(P.contains&&Q.nodeType&&!L){return P.contains(Q);}else{if(P.compareDocumentPosition&&Q.nodeType){return !!(P.compareDocumentPosition(Q)&16);}else{if(Q.nodeType){return !!this.getAncestorBy(Q,function(R){return R==P;});}}}return false;},inDocument:function(P){return this.isAncestor(M.documentElement,P);},getElementsBy:function(W,Q,R,T){Q=Q||"*";R=(R)?B.Dom.get(R):null||M;if(!R){return[];}var S=[],V=R.getElementsByTagName(Q);for(var U=0,P=V.length;U<P;++U){if(W(V[U])){S[S.length]=V[U];if(T){T(V[U]);}}}return S;},batch:function(T,W,V,R){T=(T&&(T.tagName||T.item))?T:B.Dom.get(T);if(!T||!W){return false;}var S=(R)?V:window;if(T.tagName||T.length===undefined){return W.call(S,T,V);}var U=[];for(var Q=0,P=T.length;Q<P;++Q){U[U.length]=W.call(S,T[Q],V);}return U;},getDocumentHeight:function(){var Q=(M.compatMode!="CSS1Compat")?M.body.scrollHeight:M.documentElement.scrollHeight;var P=Math.max(Q,B.Dom.getViewportHeight());return P;},getDocumentWidth:function(){var Q=(M.compatMode!="CSS1Compat")?M.body.scrollWidth:M.documentElement.scrollWidth;var P=Math.max(Q,B.Dom.getViewportWidth());return P;},getViewportHeight:function(){var P=self.innerHeight;
 8哲学 32哲学 33var Q=M.compatMode;if((Q||G)&&!C)哲学 34{P=(Q=="CSS1Compat")?M.documentElement.clientHeight:M.body.clientHeight;}return P;},getViewportWidth:function()哲学 35{var P=self.innerWidth;var Q=M.compatMode;if(Q||G)哲学 36{P=(Q=="CSS1Compat")?M.documentElement.clientWidth:M.body.clientWidth;}return P;},getAncestorBy:function(P,Q)哲学 37{while(P=P.parentNode)哲学 38{if(D(P,Q))哲学 39{return P;}}return null;},getAncestorByClassName:function(Q,P)哲学 40{Q=B.Dom.get(Q);if(!Q)哲学 41{return null;}var R=function(S)哲学 42{return B.Dom.hasClass(S,P);};return B.Dom.getAncestorBy(Q,R);},getAncestorByTagName:function(Q,P)哲学 43{Q=B.Dom.get(Q);if(!Q)哲学 44{return null;}var R=function(S)哲学 45{return S.tagName&&S.tagName.toUpperCase()==P.toUpperCase();};return B.Dom.getAncestorBy(Q,R);},getPreviousSiblingBy:function(P,Q)哲学 46{while(P)哲学 47{P=P.previousSibling;if(D(P,Q))哲学 48{return P;}}return null;},getPreviousSibling:function(P)哲学 49{P=B.Dom.get(P);if(!P)哲学 50{return null;}return B.Dom.getPreviousSiblingBy(P);},getNextSiblingBy:function(P,Q)哲学 51{while(P)哲学 52{P=P.nextSibling;if(D(P,Q))哲学 53{return P;}}return null;},getNextSibling:function(P)哲学 54{P=B.Dom.get(P);if(!P)哲学 55{return null;}return B.Dom.getNextSiblingBy(P);},getFirstChildBy:function(P,R)哲学 56{var Q=(D(P.firstChild,R))?P.firstChild:null;return Q||B.Dom.getNextSiblingBy(P.firstChild,R);},getFirstChild:function(P,Q)哲学 57{P=B.Dom.get(P);if(!P)哲学 58{return null;}return B.Dom.getFirstChildBy(P);},getLastChildBy:function(P,R)哲学 59{if(!P)哲学 60{return null;}var Q=(D(P.lastChild,R))?P.lastChild:null;return Q||B.Dom.getPreviousSiblingBy(P.lastChild,R);},getLastChild:function(P)哲学 61{P=B.Dom.get(P);return B.Dom.getLastChildBy(P);},getChildrenBy:function(Q,S)哲学 62{var R=B.Dom.getFirstChildBy(Q,S);var P=R?[R]:[];B.Dom.getNextSiblingBy(R,function(T)哲学 63{if(!S||S(T))哲学 64{P[P.length]=T;}return false;});return P;},getChildren:function(P)哲学 65{P=B.Dom.get(P);if(!P)哲学 66{}return B.Dom.getChildrenBy(P);},getDocumentScrollLeft:function(P)哲学 67{P=P||M;return Math.max(P.documentElement.scrollLeft,P.body.scrollLeft);},getDocumentScrollTop:function(P)哲学 68{P=P||M;return Math.max(P.documentElement.scrollTop,P.body.scrollTop);},insertBefore:function(Q,P)哲学 69{Q=B.Dom.get(Q);P=B.Dom.get(P);if(!Q||!P||!P.parentNode)哲学 70{return null;}return P.parentNode.insertBefore(Q,P);},insertAfter:function(Q,P)哲学 71{Q=B.Dom.get(Q);P=B.Dom.get(P);if(!Q||!P||!P.parentNode)哲学 72{return null;}if(P.nextSibling)哲学 73{return P.parentNode.insertBefore(Q,P.nextSibling);}else哲学 74{return P.parentNode.appendChild(Q);}},getClientRegion:function()哲学 75{var R=B.Dom.getDocumentScrollTop(),Q=B.Dom.getDocumentScrollLeft(),S=B.Dom.getViewportWidth()+Q,P=B.Dom.getViewportHeight()+R;return new B.Region(R,S,P,Q);}};var H=function()哲学 76{if(M.documentElement.getBoundingClientRect)哲学 77{return function(Q)哲学 78{var R=Q.getBoundingClientRect();var P=Q.ownerDocument;return[R.left+B.Dom.getDocumentScrollLeft(P),R.top+B.Dom.getDocumentScrollTop(P)];};}else哲学 79{return function(R)哲学 80{var S=[R.offsetLeft,R.offsetTop];var Q=R.offsetParent;var P=(L&&B.Dom.getStyle(R,"position")=="absolute"&&R.offsetParent==R.ownerDocument.body);if(Q!=R)哲学 81{while(Q)哲学 82{S[0]+=Q.offsetLeft;S[1]+=Q.offsetTop;if(!P&&L&&B.Dom.getStyle(Q,"position")=="absolute")哲学 83{P=true;}Q=Q.offsetParent;}}if(P)哲学 84{S[0]-=R.ownerDocument.body.offsetLeft;S[1]-=R.ownerDocument.body.offsetTop;}Q=R.parentNode;while(Q.tagName&&!E.ROOT_TAG.test(Q.tagName))哲学 85{if(Q.scrollTop||Q.scrollLeft)哲学 86{if(!E.OP_SCROLL.test(B.Dom.getStyle(Q,"display")))哲学 87{if(!C||B.Dom.getStyle(Q,"overflow")!=="visible")哲学 88{S[0]-=Q.scrollLeft;S[1]-=Q.scrollTop;}}}Q=Q.parentNode;}return S;};}}();})();YAHOO.util.Region=function(C,D,A,B)哲学 89{this.top=C;this[1]=C;this.right=D;this.bottom=A;this.left=B;this[0]=B;};YAHOO.util.Region.prototype.contains=function(A)哲学 90{return(A.left>=this.left&&A.right<=this.right&&A.top>=this.top&&A.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function()哲学 91{return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(E)哲学 92{var C=Math.max(this.top,E.top);var D=Math.min(this.right,E.right);var A=Math.min(this.bottom,E.bottom);var B=Math.max(this.left,E.left);if(A>=C&&D>=B)哲学 93{return new YAHOO.util.Region(C,D,A,B);}else哲学 94{return null;}};YAHOO.util.Region.prototype.union=function(E)哲学 95{var C=Math.min(this.top,E.top);var D=Math.max(this.right,E.right);var A=Math.max(this.bottom,E.bottom);var B=Math.min(this.left,E.left);return new YAHOO.util.Region(C,D,A,B);};YAHOO.util.Region.prototype.toString=function()哲学 96{return("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+"}");};YAHOO.util.Region.getRegion=function(D)哲学 97{var F=YAHOO.util.Dom.getXY(D);var C=F[1];var E=F[0]+D.offsetWidth;var A=F[1]+D.offsetHeight;var B=F[0];return new YAHOO.util.Region(C,E,A,B);};YAHOO.util.Point=function(A,B)哲学 98{if(YAHOO.lang.isArray(A))哲学 99{B=A[1];A=A[0];}this.x=this.right=this.left=this[0]=A;this.y=this.top=this.bottom=this[1]=B;};YAHOO.util.Point.prototype=new YAHOO.util.Region();YAHOO.register("dom",YAHOO.util.Dom,哲学 100{version:"2.5.2",build:"1076"});YAHOO.util.CustomEvent=function(D,B,C,A)哲学 101{this.type=D;this.scope=B||window;this.silent=C;this.signature=A||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silent)哲学 102{}var E="_YUICEOnSubscribe";if(D!==E)哲学 103{this.subscribeEvent=new YAHOO.util.CustomEvent(E,this,true);}this.lastError=null;};YAHOO.util.CustomEvent.LIST=0;YAHOO.util.CustomEvent.FLAT=1;YAHOO.util.CustomEvent.prototype=哲学 104{subscribe:function(B,C,A)哲学 105{if(!B)哲学 106{throw new Error("Invalid callback for subscriber to '"+this.type+"'");}if(this.subscribeEvent)哲学 107{this.subscribeEvent.fire(B,C,A);}this.subscribers.push(new YAHOO.util.Subscriber(B,C,A));},unsubscribe:function(D,F)哲学 108{if(!D)哲学 109{return this.unsubscribeAll();}var E=false;for(var B=0,A=this.subscribers.length;B<A;++B)哲学 110{var C=this.subscribers[B];if(C&&C.contains(D,F))哲学 111{this._delete(B);E=true;}}return E;},fire:function()哲学 112{this.lastError=null;var K=[],E=this.subscribers.length;if(!E&&this.silent)哲学 113{return true;}var I=[].slice.call(arguments,0),G=true,D,J=false;if(!this.silent)哲学 114{}var C=this.subscribers.slice(),A=YAHOO.util.Event.throwErrors;for(D=0;D<E;++D)哲学 115{var M=C[D];if(!M)哲学 116{J=true;}else哲学 117{if(!this.silent)哲学 118{}var L=M.getScope(this.scope);if(this.signature==YAHOO.util.CustomEvent.FLAT)哲学 119{var B=null;if(I.length>0)哲学 120{B=I[0];}try哲学 121{G=M.fn.call(L,B,M.obj);}catch(F)哲学 122{this.lastError=F;if(A)哲学 123{throw F;}}}else哲学 124{try哲学 125{G=M.fn.call(L,this.type,I,M.obj);}catch(H)哲学 126{this.lastError=H;if(A)哲学 127{throw H;}}}if(false===G)哲学 128{if(!this.silent)哲学 129{}break;}}}return(G!==false);},unsubscribeAll:function()哲学 130{for(var A=this.subscribers.length-1;A>-1;A--)哲学 131{this._delete(A);}this.subscribers=[];return A;},_delete:function(A)哲学 132{var B=this.subscribers[A];if(B)哲学 133{delete B.fn;delete B.obj;}this.subscribers.splice(A,1);},toString:function()哲学 134{return"CustomEvent: "+"'"+this.type+"', "+"scope: "+this.scope;}};YAHOO.util.Subscriber=function(B,C,A)哲学 135{this.fn=B;this.obj=YAHOO.lang.isUndefined(C)?null:C;this.override=A;};YAHOO.util.Subscriber.prototype.getScope=function(A)哲学 136{if(this.override)哲学 137{if(this.override===true)哲学 138{return this.obj;}else哲学 139{return this.override;}}return A;};YAHOO.util.Subscriber.prototype.contains=function(A,B)哲学 140{if(B)哲学 141{return(this.fn==A&&this.obj==B);}else哲学 142{return(this.fn==A);}};YAHOO.util.Subscriber.prototype.toString=function()哲学 143{return"Subscriber { obj: "+this.obj+", override: "+(this.override||"no")+" }";};if(!YAHOO.util.Event)哲学 144{YAHOO.util.Event=function()哲学 145{var H=false;var I=[];var J=[];var G=[];var E=[];var C=0;var F=[];var B=[];var A=0;var D=哲学 146{63232:38,63233:40,63234:37,63235:39,63276:33,63277:34,25:9};return哲学 147{POLL_RETRYS:2000,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,UNLOAD_OBJ:3,ADJ_SCOPE:4,OBJ:5,OVERRIDE:6,lastError:null,isSafari:YAHOO.env.ua.webkit,webkit:YAHOO.env.ua.webkit,isIE:YAHOO.env.ua.ie,_interval:null,_dri:null,DOMReady:false,throwErrors:false,startInterval:function()哲学 148{if(!this._interval)哲学 149{var K=this;var L=function()哲学 150{K._tryPreloadAttach();};this._interval=setInterval(L,this.POLL_INTERVAL);}},onAvailable:function(P,M,Q,O,N)哲学 151{var K=(YAHOO.lang.isString(P))?[P]:P;for(var L=0;L<K.length;L=L+1)哲学 152{F.push(哲学 153{id:K[L],fn:M,obj:Q,override:O,checkReady:N});}C=this.POLL_RETRYS;this.startInterval();},onContentReady:function(M,K,N,L)哲学 154{this.onAvailable(M,K,N,L,true);},onDOMReady:function(K,M,L)哲学 155{if(this.DOMReady)哲学 156{setTimeout(function()哲学 157{var N=window;if(L)哲学 158{if(L===true)哲学 159{N=M;}else哲学 160{N=L;}}K.call(N,"DOMReady",[],M);},0);}else哲学 161{this.DOMReadyEvent.subscribe(K,M,L);}},addListener:function(M,K,V,Q,L)哲学 162{if(!V||!V.call)哲学 163{return false;}if(this._isValidCollection(M))哲学 164{var W=true;for(var R=0,T=M.length;R<T;++R)哲学 165{W=this.on(M[R],K,V,Q,L)&&W;}return W;}else哲学 166{if(YAHOO.lang.isString(M))哲学 167{var P=this.getEl(M);if(P)哲学 168{M=P;}else哲学 169{this.onAvailable(M,function()哲学 170{YAHOO.util.Event.on(M,K,V,Q,L);});return true;}}}if(!M)哲学 171{return false;}if("unload"==K&&Q!==this)哲学 172{J[J.length]=[M,K,V,Q,L];return true;}var Y=M;if(L)哲学 173{if(L===true)哲学 174{Y=Q;}else哲学 175{Y=L;}}var N=function(Z)哲学 176{return V.call(Y,YAHOO.util.Event.getEvent(Z,M),Q);};var X=[M,K,V,N,Y,Q,L];var S=I.length;I[S]=X;if(this.useLegacyEvent(M,K))哲学 177{var O=this.getLegacyIndex(M,K);if(O==-1||M!=G[O][0])哲学 178{O=G.length;B[M.id+K]=O;G[O]=[M,K,M["on"+K]];E[O]=[];M["on"+K]=function(Z)哲学 179{YAHOO.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(Z),O);};}E[O].push(X);}else哲学 180{try哲学 181{this._simpleAdd(M,K,N,false);}catch(U)哲学 182{this.lastError=U;this.removeListener(M,K,V);return false;}}return true;},fireLegacyEvent:function(O,M)哲学 183{var Q=true,K,S,R,T,P;S=E[M].slice();for(var L=0,N=S.length;L<N;++L)哲学 184{R=S[L];if(R&&R[this.WFN])哲学 185{T=R[this.ADJ_SCOPE];P=R[this.WFN].call(T,O);Q=(Q&&P);}}K=G[M];if(K&&K[2])哲学 186{K[2](O);}return Q;},getLegacyIndex:function(L,M)哲学 187{var K=this.generateId(L)+M;if(typeof B[K]=="undefined")哲学 188{return -1;}else哲学 189{return B[K];}},useLegacyEvent:function(L,M)哲学 190{if(this.webkit&&("click"==M||"dblclick"==M))哲学 191{var K=parseInt(this.webkit,10);if(!isNaN(K)&&K<418)哲学 192{return true;}}return false;},removeListener:function(L,K,T)哲学 193{var O,R,V;if(typeof L=="string")哲学 194{L=this.getEl(L);}else哲学 195{if(this._isValidCollection(L))哲学 196{var U=true;for(O=L.length-1;O>-1;O--)哲学 197{U=(this.removeListener(L[O],K,T)&&U);}return U;}}if(!T||!T.call)哲学 198{return this.purgeElement(L,false,K);}if("unload"==K)哲学 199{for(O=J.length-1;O>-1;O--)哲学 200{V=J[O];if(V&&V[0]==L&&V[1]==K&&V[2]==T)哲学 201{J.splice(O,1);return true;}}return false;}var P=null;var Q=arguments[3];if("undefined"===typeof Q)哲学 202{Q=this._getCacheIndex(L,K,T);}if(Q>=0)哲学 203{P=I[Q];}if(!L||!P)哲学 204{return false;}if(this.useLegacyEvent(L,K))哲学 205{var N=this.getLegacyIndex(L,K);var M=E[N];if(M)哲学 206{for(O=0,R=M.length;O<R;++O)哲学 207{V=M[O];if(V&&V[this.EL]==L&&V[this.TYPE]==K&&V[this.FN]==T)哲学 208{M.splice(O,1);break;}}}}else哲学 209{try哲学 210{this._simpleRemove(L,K,P[this.WFN],false);}catch(S)哲学 211{this.lastError=S;return false;}}delete I[Q][this.WFN];delete I[Q][this.FN];I.splice(Q,1);return true;},getTarget:function(M,L)哲学 212{var K=M.target||M.srcElement;return this.resolveTextNode(K);},resolveTextNode:function(L)哲学 213{try哲学 214{if(L&&3==L.nodeType)哲学 215{return L.parentNode;}}catch(K)哲学 216{}return L;},getPageX:function(L)哲学 217{var K=L.pageX;if(!K&&0!==K)哲学 218{K=L.clientX||0;if(this.isIE)哲学 219{K+=this._getScrollLeft();}}return K;},getPageY:function(K)哲学 220{var L=K.pageY;if(!L&&0!==L)哲学 221{L=K.clientY||0;if(this.isIE)哲学 222{L+=this._getScrollTop();}}return L;
 9哲学 223哲学 224},getXY:function(K)哲学 225{return[this.getPageX(K),this.getPageY(K)];},getRelatedTarget:function(L)哲学 226{var K=L.relatedTarget;if(!K)哲学 227{if(L.type=="mouseout")哲学 228{K=L.toElement;}else哲学 229{if(L.type=="mouseover")哲学 230{K=L.fromElement;}}}return this.resolveTextNode(K);},getTime:function(M)哲学 231{if(!M.time)哲学 232{var L=new Date().getTime();try哲学 233{M.time=L;}catch(K)哲学 234{this.lastError=K;return L;}}return M.time;},stopEvent:function(K)哲学 235{this.stopPropagation(K);this.preventDefault(K);},stopPropagation:function(K)哲学 236{if(K.stopPropagation)哲学 237{K.stopPropagation();}else哲学 238{K.cancelBubble=true;}},preventDefault:function(K)哲学 239{if(K.preventDefault)哲学 240{K.preventDefault();}else哲学 241{K.returnValue=false;}},getEvent:function(M,K)哲学 242{var L=M||window.event;if(!L)哲学 243{var N=this.getEvent.caller;while(N)哲学 244{L=N.arguments[0];if(L&&Event==L.constructor)哲学 245{break;}N=N.caller;}}return L;},getCharCode:function(L)哲学 246{var K=L.keyCode||L.charCode||0;if(YAHOO.env.ua.webkit&&(K in D))哲学 247{K=D[K];}return K;},_getCacheIndex:function(O,P,N)哲学 248{for(var M=0,L=I.length;M<L;M=M+1)哲学 249{var K=I[M];if(K&&K[this.FN]==N&&K[this.EL]==O&&K[this.TYPE]==P)哲学 250{return M;}}return -1;},generateId:function(K)哲学 251{var L=K.id;if(!L)哲学 252{L="yuievtautoid-"+A;++A;K.id=L;}return L;},_isValidCollection:function(L)哲学 253{try哲学 254{return(L&&typeof L!=="string"&&L.length&&!L.tagName&&!L.alert&&typeof L[0]!=="undefined");}catch(K)哲学 255{return false;}},elCache:哲学 256{},getEl:function(K)哲学 257{return(typeof K==="string")?document.getElementById(K):K;},clearCache:function()哲学 258{},DOMReadyEvent:new YAHOO.util.CustomEvent("DOMReady",this),_load:function(L)哲学 259{if(!H)哲学 260{H=true;var K=YAHOO.util.Event;K._ready();K._tryPreloadAttach();}},_ready:function(L)哲学 261{var K=YAHOO.util.Event;if(!K.DOMReady)哲学 262{K.DOMReady=true;K.DOMReadyEvent.fire();K._simpleRemove(document,"DOMContentLoaded",K._ready);}},_tryPreloadAttach:function()哲学 263{if(F.length===0)哲学 264{C=0;clearInterval(this._interval);this._interval=null;return ;}if(this.locked)哲学 265{return ;}if(this.isIE)哲学 266{if(!this.DOMReady)哲学 267{this.startInterval();return ;}}this.locked=true;var Q=!H;if(!Q)哲学 268{Q=(C>0&&F.length>0);}var P=[];var R=function(T,U)哲学 269{var S=T;if(U.override)哲学 270{if(U.override===true)哲学 271{S=U.obj;}else哲学 272{S=U.override;}}U.fn.call(S,U.obj);};var L,K,O,N,M=[];for(L=0,K=F.length;L<K;L=L+1)哲学 273{O=F[L];if(O)哲学 274{N=this.getEl(O.id);if(N)哲学 275{if(O.checkReady)哲学 276{if(H||N.nextSibling||!Q)哲学 277{M.push(O);F[L]=null;}}else哲学 278{R(N,O);F[L]=null;}}else哲学 279{P.push(O);}}}for(L=0,K=M.length;L<K;L=L+1)哲学 280{O=M[L];R(this.getEl(O.id),O);}C--;if(Q)哲学 281{for(L=F.length-1;L>-1;L--)哲学 282{O=F[L];if(!O||!O.id)哲学 283{F.splice(L,1);}}this.startInterval();}else哲学 284{clearInterval(this._interval);this._interval=null;}this.locked=false;},purgeElement:function(O,P,R)哲学 285{var M=(YAHOO.lang.isString(O))?this.getEl(O):O;var Q=this.getListeners(M,R),N,K;if(Q)哲学 286{for(N=Q.length-1;N>-1;N--)哲学 287{var L=Q[N];this.removeListener(M,L.type,L.fn);}}if(P&&M&&M.childNodes)哲学 288{for(N=0,K=M.childNodes.length;N<K;++N)哲学 289{this.purgeElement(M.childNodes[N],P,R);}}},getListeners:function(M,K)哲学 290{var P=[],L;if(!K)哲学 291{L=[I,J];}else哲学 292{if(K==="unload")哲学 293{L=[J];}else哲学 294{L=[I];}}var R=(YAHOO.lang.isString(M))?this.getEl(M):M;for(var O=0;O<L.length;O=O+1)哲学 295{var T=L[O];if(T)哲学 296{for(var Q=0,S=T.length;Q<S;++Q)哲学 297{var N=T[Q];if(N&&N[this.EL]===R&&(!K||K===N[this.TYPE]))哲学 298{P.push(哲学 299{type:N[this.TYPE],fn:N[this.FN],obj:N[this.OBJ],adjust:N[this.OVERRIDE],scope:N[this.ADJ_SCOPE],index:Q});}}}}return(P.length)?P:null;},_unload:function(Q)哲学 300{var K=YAHOO.util.Event,N,M,L,P,O,R=J.slice();for(N=0,P=J.length;N<P;++N)哲学 301{L=R[N];if(L)哲学 302{var S=window;if(L[K.ADJ_SCOPE])哲学 303{if(L[K.ADJ_SCOPE]===true)哲学 304{S=L[K.UNLOAD_OBJ];}else哲学 305{S=L[K.ADJ_SCOPE];}}L[K.FN].call(S,K.getEvent(Q,L[K.EL]),L[K.UNLOAD_OBJ]);R[N]=null;L=null;S=null;}}J=null;if(I)哲学 306{for(M=I.length-1;M>-1;M--)哲学 307{L=I[M];if(L)哲学 308{K.removeListener(L[K.EL],L[K.TYPE],L[K.FN],M);}}L=null;}G=null;K._simpleRemove(window,"unload",K._unload);},_getScrollLeft:function()哲学 309{return this._getScroll()[1];},_getScrollTop:function()哲学 310{return this._getScroll()[0];},_getScroll:function()哲学 311{var K=document.documentElement,L=document.body;if(K&&(K.scrollTop||K.scrollLeft))哲学 312{return[K.scrollTop,K.scrollLeft];}else哲学 313{if(L)哲学 314{return[L.scrollTop,L.scrollLeft];}else哲学 315{return[0,0];}}},regCE:function()哲学 316{},_simpleAdd:function()哲学 317{if(window.addEventListener)哲学 318{return function(M,N,L,K)哲学 319{M.addEventListener(N,L,(K));};}else哲学 320{if(window.attachEvent)哲学 321{return function(M,N,L,K)哲学 322{M.attachEvent("on"+N,L);};}else哲学 323{return function()哲学 324{};}}}(),_simpleRemove:function()哲学 325{if(window.removeEventListener)哲学 326{return function(M,N,L,K)哲学 327{M.removeEventListener(N,L,(K));};}else哲学 328{if(window.detachEvent)哲学 329{return function(L,M,K)哲学 330{L.detachEvent("on"+M,K);};}else哲学 331{return function()哲学 332{};}}}()};}();(function()哲学 333{var EU=YAHOO.util.Event;EU.on=EU.addListener;
10哲学 334哲学 335/**//* DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller */
11哲学 336哲学 337if(EU.isIE)哲学 338{YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttach,YAHOO.util.Event,true);var n=document.createElement("p");EU._dri=setInterval(function()哲学 339{try哲学 340{n.doScroll("left");clearInterval(EU._dri);EU._dri=null;EU._ready();n=null;}catch(ex)哲学 341{}},EU.POLL_INTERVAL);}else哲学 342{if(EU.webkit&&EU.webkit<525)哲学 343{EU._dri=setInterval(function()哲学 344{var rs=document.readyState;if("loaded"==rs||"complete"==rs)哲学 345{clearInterval(EU._dri);EU._dri=null;EU._ready();}},EU.POLL_INTERVAL);}else哲学 346{EU._simpleAdd(document,"DOMContentLoaded",EU._ready);}}EU._simpleAdd(window,"load",EU._load);EU._simpleAdd(window,"unload",EU._unload);EU._tryPreloadAttach();})();}YAHOO.util.EventProvider=function()哲学 347{};YAHOO.util.EventProvider.prototype=哲学 348{__yui_events:null,__yui_subscribers:null,subscribe:function(A,C,F,E)哲学 349{this.__yui_events=this.__yui_events||哲学 350{};var D=this.__yui_events[A];if(D)哲学 351{D.subscribe(C,F,E);}else哲学 352{this.__yui_subscribers=this.__yui_subscribers||哲学 353{};var B=this.__yui_subscribers;if(!B[A])哲学 354{B[A]=[];}B[A].push(哲学 355{fn:C,obj:F,override:E});}},unsubscribe:function(C,E,G)哲学 356{this.__yui_events=this.__yui_events||哲学 357{};var A=this.__yui_events;if(C)哲学 358{var F=A[C];if(F)哲学 359{return F.unsubscribe(E,G);}}else哲学 360{var B=true;for(var D in A)哲学 361{if(YAHOO.lang.hasOwnProperty(A,D))哲学 362{B=B&&A[D].unsubscribe(E,G);}}return B;}return false;},unsubscribeAll:function(A)哲学 363{return this.unsubscribe(A);},createEvent:function(G,D)哲学 364{this.__yui_events=this.__yui_events||哲学 365{};var A=D||哲学 366{};var I=this.__yui_events;
12哲学 367哲学 368if(I[G])哲学 369{}else哲学 370{var H=A.scope||this;var E=(A.silent);var B=new YAHOO.util.CustomEvent(G,H,E,YAHOO.util.CustomEvent.FLAT);I[G]=B;if(A.onSubscribeCallback)哲学 371{B.subscribeEvent.subscribe(A.onSubscribeCallback);}this.__yui_subscribers=this.__yui_subscribers||哲学 372{};var F=this.__yui_subscribers[G];if(F)哲学 373{for(var C=0;C<F.length;++C)哲学 374{B.subscribe(F[C].fn,F[C].obj,F[C].override);}}}return I[G];},fireEvent:function(E,D,A,C)哲学 375{this.__yui_events=this.__yui_events||哲学 376{};var G=this.__yui_events[E];if(!G)哲学 377{return null;}var B=[];for(var F=1;F<arguments.length;++F)哲学 378{B.push(arguments[F]);}return G.fire.apply(G,B);},hasEvent:function(A)哲学 379{if(this.__yui_events)哲学 380{if(this.__yui_events[A])哲学 381{return true;}}return false;}};YAHOO.util.KeyListener=function(A,F,B,C)哲学 382{if(!A)哲学 383{}else哲学 384{if(!F)哲学 385{}else哲学 386{if(!B)哲学 387{}}}if(!C)哲学 388{C=YAHOO.util.KeyListener.KEYDOWN;}var D=new YAHOO.util.CustomEvent("keyPressed");this.enabledEvent=new YAHOO.util.CustomEvent("enabled");this.disabledEvent=new YAHOO.util.CustomEvent("disabled");if(typeof A=="string")哲学 389{A=document.getElementById(A);}if(typeof B=="function")哲学 390{D.subscribe(B);}else哲学 391{D.subscribe(B.fn,B.scope,B.correctScope);}function E(J,I)哲学 392{if(!F.shift)哲学 393{F.shift=false;}if(!F.alt)哲学 394{F.alt=false;}if(!F.ctrl)哲学 395{F.ctrl=false;}if(J.shiftKey==F.shift&&J.altKey==F.alt&&J.ctrlKey==F.ctrl)哲学 396{var G;if(F.keys instanceof Array)哲学 397{for(var H=0;H<F.keys.length;H++)哲学 398{G=F.keys[H];if(G==J.charCode)哲学 399{D.fire(J.charCode,J);break;}else哲学 400{if(G==J.keyCode)哲学 401{D.fire(J.keyCode,J);break;}}}}else哲学 402{G=F.keys;if(G==J.charCode)哲学 403{D.fire(J.charCode,J);}else哲学 404{if(G==J.keyCode)哲学 405{D.fire(J.keyCode,J);}}}}}this.enable=function()哲学 406{if(!this.enabled)哲学 407{YAHOO.util.Event.addListener(A,C,E);this.enabledEvent.fire(F);}this.enabled=true;};this.disable=function()哲学 408{if(this.enabled)哲学 409{YAHOO.util.Event.removeListener(A,C,E);this.disabledEvent.fire(F);}this.enabled=false;};this.toString=function()哲学 410{return"KeyListener ["+F.keys+"] "+A.tagName+(A.id?"["+A.id+"]":"");};};YAHOO.util.KeyListener.KEYDOWN="keydown";YAHOO.util.KeyListener.KEYUP="keyup";YAHOO.util.KeyListener.KEY=哲学 411{ALT:18,BACK_SPACE:8,CAPS_LOCK:20,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,META:224,NUM_LOCK:144,PAGE_DOWN:34,PAGE_UP:33,PAUSE:19,PRINTSCREEN:44,RIGHT:39,SCROLL_LOCK:145,SHIFT:16,SPACE:32,TAB:9,UP:38};YAHOO.register("event",YAHOO.util.Event,哲学 412{version:"2.5.2",build:"1076"});YAHOO.register("yahoo-dom-event", YAHOO, 哲学 413{version: "2.5.2", build: "1076"});
13哲学 414

结论

鼓励弱隔离级别(质量优先于数据安全性)的数据库,让你去读书业务间细微的互相并贯彻易错的解决措施。CockroachDB默许提供了
SERIALIZABLE 事务,确保总能看到您所梦想的事体数据库的一致性
原文链接 https://www.cockroachlabs.com/blog/acid-rain/

  1哲学 415
  2哲学 416<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
  3哲学 417
  4哲学 418<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  5哲学 419
  6哲学 420<head>
  7哲学 421
  8哲学 422<title>yui cookie Dynamically Change Text Size Using Javascript 动态设置字体大小,写入Cookie</title>
  9哲学 423
 10哲学 424<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 11哲学 425<meta name="description" content="涂聚文,缔友统计机新闻技术有限集团,经营音信流,物流,人力资源流,资本流的序列缓解方案的付出与安插和劳务,geoVI studio.Geovin Du. Systems Solution to Fund flow,and Information flow,and Material flow,and Control flow,and Human Resource.Applied software development,design and service。.">
 12哲学 426<meta name="description" content="Study,Communicate。 ">
 13哲学 427<meta name="Robots" content="all index follow ">
 14哲学 428<meta name="Author" content="涂聚文" />
 15哲学 429<meta name="keywords" content="Chinea,Guangdong Province,Shenzhen city,Nanshan District,Hi-teach industry Park, geoVI studio,Geovin Du,Systems Solution.勝利は仕事部屋である貴方にご光来を賜ることを歓迎,the original affiliation, Jiangxi Province, the  Ji'an city, YongFeng coutry, Ouyang's hometown.  Discussion forum, friend reason person, English, Japanese language, Korean language哲学 430  The music appreciation, Wan Nian calendar, the English  salon, the trade market, the information, the telecommunication  electron, the electric appliance, the currency foreign exchange, the  news, the book, by talk, the fable, the fairy tale, the novel, the  sketch philosophy, the philosophy, the national studies, the poem, the word, the prose, the tune, manages the creativity, the software  technology, sound, the picture, the image data warehouse, C++, C.NET,  WEB,JAVA, J2EE XML, the HTML, software engineering, the physiological,  keeping in good health, the traveling, lives,geocVi のスタジオはgeovindu, 中国のGuangdong の地 域,Shenzhen のNanShan 地区すなわち高く新しい技術的な企業の 開発の地帯すなわち元の加入すなわちJiangxi の地域すなわち Ji'an 都市, 故郷coutry YongFeng Ouyang's のへ, あな たを歓迎する。議論のフォーラムすなわち友人の理由人,  英語す なわち日本語の言語すなわち韓国語の言語は哲学 431 音楽感謝すなわ ちNian の弱々しいカレンダーすなわち英帝国の大広間すなわち貿易 市場すなわち情報すなわちテレコミュニケーションの電子すなわ ち電気電気器具すなわち通貨の海外為替すなわちニュースすなわ ち本, 話によって, fable のおとぎ話すなわち小説すなわちスケ ッチの艺术学すなわち历史学は, 国民調査する, 詩すなわち単語すな わち小说すなわち調子, 管理する創造性すなわちソフトウェア技 術すなわち音すなわち印象すなわちイメージ・データの倉庫 , C++, C.NET  の網, ジャワ, J2EE XML, html のよい健康すなわ ち移動, 生命で保つソフトウエア艺术学すなわち生法学を,®geoVI 일 방 ™고향 geocVi 스튜디오는 geovindu, 중국 의  Guangdong 지방, Shenzhen 의 NanShan 지역, 높은 새로운 기술 적인 공업 발달 지역, 원래 affiliation, Jiangxi 지방 , Ji'an 도시, coutry  YongFeng, Ouyang's에, 너를 환 영한다.  면담 공개토론, 친구 이유 사람, 영어, 일본 언어, 한 국 언어는哲学 432  음악 감사, Nian 병약한 달력, 영국 살롱, 무역  시장, 정보, 원거리 통신 전자, 전기기구, 통화 외국 교환, 뉴 스, 책, 이야기의옆에,fable 의 요전같은 총계, 소설, 밑그림  철학,  철학은, 동포 공부한다, 시, 낱말, 산문, 곡,  처리한다  독창성, 소프트웨어 기술, 소리, 그림,심상 자료 창고 , C++, C.NET 의 웨브, 자바, J2EE  XML, HTML 의 건강, 여행,  일생안에 지키는 소프트웨어 기술설계, 생리를">
 16哲学 433        <link rel="stylesheet" href="css/style.css" type="text/css">
 17哲学 434        <link rel="stylesheet" href="css/shadow.css" type="text/css">
 18哲学 435<link rel="shortcut icon" href="http://www.dupcit.com/favicon.ico" type="image/x-icon" />
 19哲学 436<link rel="icon" href="http://www.dupcit.com/favicon.ico" type="image/ico" />
 20哲学 437<link rel="Bookmark" href="http://www.dupcit.com/favicon.ico"&gt
 21哲学 438</head>
 22哲学 439
 23哲学 440<body>
 24哲学 441
 25哲学 442<div><img src="A+.gif" alt="increase font size" id="increaseFont" /></div>
 26哲学 443
 27哲学 444<div><img src="A-.gif" alt="decrease font size" id="decreaseFont" /></div>
 28哲学 445
 29哲学 446<div id="news-main">
 30哲学 447
 31哲学 448Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas sit amet metus.
 32哲学 449
 33哲学 450Nunc quam elit, posuere nec, auctor in, rhoncus quis, dui. Aliquam erat volutpat. Ut dignissim, massa
 34哲学 451
 35哲学 452</div>
 36哲学 453
 37哲学 454 
 38哲学 455
 39哲学 456<!-- js -->
 40哲学 457
 41哲学 458<script type="text/javascript" src="yahoo-dom-event/yahoo-dom-event.js"></script>
 42哲学 459
 43哲学 460<script type="text/javascript" src="cookie/cookie-beta-min.js"></script>
 44哲学 461
 45哲学 462<!-- /js -->
 46哲学 463
 47哲学 464 
 48哲学 465
 49哲学 466<script type="text/javascript">
 50哲学 467// 涂聚文 缔友总括机消息技术有限集团 版权负有
 51哲学 468哲学 469var updateFontSize = function(o, params)哲学 470{
 52哲学 471
 53哲学 472哲学 473try哲学 474{
 54哲学 475
 55哲学 476哲学 477if(params.type == 'increase')哲学 478{
 56哲学 479
 57哲学 480newSize = parseInt(YAHOO.util.Dom.getStyle(params.id, 'font-size'), 10) + 1;
 58哲学 481
 59哲学 482}
 60哲学 483
 61哲学 484哲学 485else哲学 486{
 62哲学 487
 63哲学 488newSize = parseInt(YAHOO.util.Dom.getStyle(params.id, 'font-size'), 10) - 1;
 64哲学 489
 65哲学 490}
 66哲学 491
 67哲学 492 
 68哲学 493
 69哲学 494YAHOO.util.Dom.setStyle(params.id, 'font-size', newSize + 'px');
 70哲学 495
 71哲学 496哲学 497YAHOO.util.Cookie.set("news-size", newSize, 哲学 498{ path: "/", expires: new Date("December 22, 2010") });
 72哲学 499
 73哲学 500}
 74哲学 501
 75哲学 502哲学 503catch(e)哲学 504{}
 76哲学 505
 77哲学 506};
 78哲学 507
 79哲学 508 
 80哲学 509
 81哲学 510哲学 511YAHOO.util.Event.addListener('increaseFont', 'click', updateFontSize, 哲学 512{"id" : 'news-main', "type" : 'increase'});
 82哲学 513
 83哲学 514哲学 515YAHOO.util.Event.addListener('decreaseFont', 'click', updateFontSize, 哲学 516{"id" : 'news-main', "type" : 'decrease'});
 84哲学 517
 85哲学 518哲学 519YAHOO.util.Event.addListener(window, 'load', function()哲学 520{
 86哲学 521
 87哲学 522哲学 523try哲学 524{
 88哲学 525
 89哲学 526哲学 527var newsSize = YAHOO.util.Cookie.get("news-size", function(value)哲学 528{
 90哲学 529
 91哲学 530YAHOO.util.Dom.setStyle('news-main', 'font-size', value + 'px');
 92哲学 531
 93哲学 532});
 94哲学 533
 95哲学 534}
 96哲学 535
 97哲学 536哲学 537catch(e)哲学 538{}
 98哲学 539
 99哲学 540});
100哲学 541
101哲学 542</script>
102哲学 543
103哲学 544</body>
104哲学 545
105哲学 546</html>

实际数据库中的隔离性

大部的数据库忽略了将 SERIALIZABLE
作为默许隔离级其他准则,而是默许替换为更弱的RCRR隔断级别,它们的性质优先于安全性。更令人担心的是,一些数据库(包蕴Oracle,PostgreSQL
V9.1从前)根本不提供 SERIALIZABLE 级其他事情隔离。Oracle完结的
SERIALIZABLE
隔离级别实际上是更弱的“Snapshot Isolation”。Snapshot Isolation(快照隔离,简称SI)的产出晚于SQL标准的制定,但是曾经被种种数据库系统贯彻,因为它提供了很好的品质与一致性的平衡。它强于RC但弱于
SERIALIZABLE
,很类似RR但不完全一致(RR允许幻读,但禁止写偏序,SI更好反而)。完毕SI的数据库,在哪些将其纳入到八个SQL标准隔离级别上有分化的选项。Oracle的选项最激进,直接将她们的SI贯彻称为
SERIALIZABLE 。CockroachDB 和SQL
Server则保守一些,将SI用作单身的第八个隔离级别。PostgreSQL(9.1版本之后)介于两者之间,使用SI替换了RR。因为数据库很少使用
SERIALIZABLE
方式,而是默许使用更弱的割裂级别,所以它经常很少经过到底的测试和优化。例如PostgreSQL有一个原则性大小的内存池,用来跟踪可串行化事务间的争辨,但在高负荷情况下会耗尽。
半数以上的数据库厂商将更强的业务隔离作为给应用程序的一个尤其选项用于应对额外的一致性需要。多数应用程序被认为可以运行在更快可是不安全的弱隔离方式下。那种处理难题的落后格局导致将应用程序暴光在多量轻微的bug中。在Cockroach
Labs,大家喜爱思考事务anomalies,以至于大家用它们来定名会议室。但自己很难有信念的提出怎么着时候接纳
SI 替代 SERIALIZABLE 是安全方便的。
大家的理学是从安全性出发向着高质量方向前行,那是比此外艺术更优的。

cookie-beta-min.js   code:

ACIDRain:发现事务Bug

早稻田方今的研究显得了弱隔离性对真正世界的影响程度。 托德 Warszawski and
PeterBailis测试了12个电子商务应用程序并发现了22个业务相关的Bug,其中5个在更高的隔离级别下得避防止。多数bug可以被简单得利用并促成财务方面的熏陶。例如,在5个被测试的应用程序中,当操作一个浏览器举行结算的同时,操作另一个浏览器向购物车扩展一项商品,可能造成新增的货色在账单中免费。这个商讨人口开发工具以半自动化的法门去确定这一个脆弱点,为接近的更广大的抨击(研究者将其称为ACIDRain
“酸雨”)铺平了道路。
多数默许弱隔离的数据库都提供了缓解方式,例如 FOR UPDATE
LOCK IN SHARE MODE
(非标准语法)作为SQL语句的修饰符。当正确利用时,尽管在弱隔离级别下,这么些修饰符也足以使业务安全。不过,那很简单失误,而且就是是采纳那些增加情势,也会同时引入
SERIALIZABLE 形式大部分的瑕疵。(事实上,在RC政工中滥用
SELECT FOR UPDATE可以引致比 SERIALIZABLE
更差的属性,因为在那么些串行化操作的地方可以仅使用共享锁,却运用了排他锁)
ACIDRain的钻研显得了这种技能的局限性:3个应用程序中仅有一个不易行使了
SELECT FOR UPDATE特性,其余八个都存在漏洞。

 

1哲学 547哲学 548/**//*
2哲学 549Copyright (c) 2008, Yahoo! Inc. All rights reserved.
3哲学 550Code licensed under the BSD License:
4哲学 551http://developer.yahoo.net/yui/license.txt
5哲学 552version: 2.5.2
6哲学 553*/
7哲学 554哲学 555YAHOO.namespace("util");YAHOO.util.Cookie=哲学 556{_createCookieString:function(B,D,C,A)哲学 557{var F=YAHOO.lang;var E=encodeURIComponent(B)+"="+(C?encodeURIComponent(D):D);if(F.isObject(A))哲学 558{if(A.expires instanceof Date)哲学 559{E+="; expires="+A.expires.toGMTString();}if(F.isString(A.path)&&A.path!="")哲学 560{E+="; path="+A.path;}if(F.isString(A.domain)&&A.domain!="")哲学 561{E+="; domain="+A.domain;}if(A.secure===true)哲学 562{E+="; secure";}}return E;},_createCookieHashString:function(B)哲学 563{var D=YAHOO.lang;if(!D.isObject(B))哲学 564{throw new TypeError("Cookie._createCookieHashString(): Argument must be an object.");}var C=new Array();for(var A in B)哲学 565{if(D.hasOwnProperty(B,A)&&!D.isFunction(B[A])&&!D.isUndefined(B[A]))哲学 566{C.push(encodeURIComponent(A)+"="+encodeURIComponent(String(B[A])));}}return C.join("&");},_parseCookieHash:function(E)哲学 567{var D=E.split("&");var F=null;var C=new Object();for(var B=0,A=D.length;B<A;B++)哲学 568{F=D[B].split("=");C[decodeURIComponent(F[0])]=decodeURIComponent(F[1]);}return C;},_parseCookieString:function(I,A)哲学 569{var J=new Object();if(YAHOO.lang.isString(I)&&I.length>0)哲学 570{var B=(A===false?function(K)哲学 571{return K;}:decodeURIComponent);if(/[^=]+=[^=;]?(?:; [^=]+=[^=]?)?/.test(I))哲学 572{var G=I.split(/;\s/g);var H=null;var C=null;var E=null;for(var D=0,F=G.length;D<F;D++)哲学 573{E=G[D].match(/([^=]+)=/i);if(E instanceof Array)哲学 574{H=decodeURIComponent(E[1]);C=B(G[D].substring(H.length+1));}else哲学 575{H=decodeURIComponent(G[D]);C=H;}J[H]=C;}}}return J;},get:function(A,B)哲学 576{var D=YAHOO.lang;var C=this._parseCookieString(document.cookie);if(!D.isString(A)||A==="")哲学 577{throw new TypeError("Cookie.get(): Cookie name must be a non-empty string.");}if(D.isUndefined(C[A]))哲学 578{return null;}if(!D.isFunction(B))哲学 579{return C[A];}else哲学 580{return B(C[A]);}},getSub:function(A,C,B)哲学 581{var E=YAHOO.lang;var D=this.getSubs(A);if(D!==null)哲学 582{if(!E.isString(C)||C==="")哲学 583{throw new TypeError("Cookie.getSub(): Subcookie name must be a non-empty string.");}if(E.isUndefined(D[C]))哲学 584{return null;}if(!E.isFunction(B))哲学 585{return D[C];}else哲学 586{return B(D[C]);}}else哲学 587{return null;}},getSubs:function(A)哲学 588{if(!YAHOO.lang.isString(A)||A==="")哲学 589{throw new TypeError("Cookie.getSubs(): Cookie name must be a non-empty string.");}var B=this._parseCookieString(document.cookie,false);if(YAHOO.lang.isString(B[A]))哲学 590{return this._parseCookieHash(B[A]);}return null;},remove:function(B,A)哲学 591{if(!YAHOO.lang.isString(B)||B==="")哲学 592{throw new TypeError("Cookie.remove(): Cookie name must be a non-empty string.");}A=A||哲学 593{};A.expires=new Date(0);return this.set(B,"",A);},set:function(B,C,A)哲学 594{var E=YAHOO.lang;if(!E.isString(B))哲学 595{throw new TypeError("Cookie.set(): Cookie name must be a string.");}if(E.isUndefined(C))哲学 596{throw new TypeError("Cookie.set(): Value cannot be undefined.");}var D=this._createCookieString(B,C,true,A);document.cookie=D;return D;},setSub:function(B,D,C,A)哲学 597{var F=YAHOO.lang;if(!F.isString(B)||B==="")哲学 598{throw new TypeError("Cookie.setSub(): Cookie name must be a non-empty string.");}if(!F.isString(D)||D==="")哲学 599{throw new TypeError("Cookie.setSub(): Subcookie name must be a non-empty string.");}if(F.isUndefined(C))哲学 600{throw new TypeError("Cookie.setSub(): Subcookie value cannot be undefined.");}var E=this.getSubs(B);if(!F.isObject(E))哲学 601{E=new Object();}E[D]=C;return this.setSubs(B,E,A);},setSubs:function(B,C,A)哲学 602{var E=YAHOO.lang;if(!E.isString(B))哲学 603{throw new TypeError("Cookie.setSubs(): Cookie name must be a string.");}if(!E.isObject(C))哲学 604{throw new TypeError("Cookie.setSubs(): Cookie value must be an object.");}var D=this._createCookieString(B,this._createCookieHashString(C),false,A);document.cookie=D;return D;}};YAHOO.register("cookie",YAHOO.util.Cookie,哲学 605{version:"2.5.2",build:"1076"});

 

yahoo-dom-event.js code:

相关文章

Comment ()
评论是一种美德,说点什么吧,否则我会恨你的。。。