Python is a dynamic object-oriented programming language that can be used for many kinds of software development. It offers strong support for integration with other languages and tools, comes with extensive standard libraries, and can be learned in a few days. offers 提出 integration 綜合 extensive 寬廣 standard libraries 標準庫 Many Python programmers report substantial productivity gains and feel the language encourages the development of higher quality, more maintainable code. report 宣告 substantial 實質 productivity 生產力
直接 運行 div_show_drag.rar
http://www.aygfsteel.com/Files/Good-Game/div_Show_drag.rar html test
< html > < head > < script? type ="text/javascript" ?src ="showDivUtil.js" ></ script > </ head > < body > < input? type ="button" ?id ="_in" ?value ="google-baidu" ?onclick ="test();" /> < div? id ='_div'? /> < script? language ="javascript" > /* api說明 ????ShowDiv(?源element?,?是否使用現有?div?) ????????源element,是否使用現有?div?都可為null?; */ var ?ediv? = ? new ?ShowDiv('_in', null ); function ?test(){ ???? if (? ! ?ediv.isShow?){ ???????? // tdiv[X,Y,H,W]準備展現div set-> tdiv.X = ..? ? , ??????? // tsubEle[X,Y,H,W] ??????? // 源ele大小位置??,tscreen[ screenH , screenW ]屏幕長寬 ????????ediv.setLocation? = ? function (tdiv,tsubEle,tscreen){ ???????????? /* ??居中展現 ?????????????tdiv.W?=200?; ?????????????tdiv.H?=?300?; ?????????????tdiv.X?=?tscreen.screenW/2-tdiv.W/2?; ?????????????tdiv.Y?=?tscreen.screenH/2-tdiv.H/2?; ???????????? */ ?????????????/* ??根據?tsubEle?位置?左顯示 ????????????tdiv.X?=?tsubEle.X+tsubEle.W?; ????????????tdiv.Y?=?tsubEle.Y?; ????????????? */ ??????????????/* ??根據?tsubEle?大小??左長條?顯示? ?????????????tdiv.X?=?tsubEle.X+tsubEle.W?; ?????????????tdiv.Y?=?tsubEle.Y?; ????????????? */ ???????????? ???????? ??????????????/* ??根據?tsubEle?大小??下長條?顯示 ?????????????tdiv.X?=?tsubEle.X+tsubEle.W?; ?????????????tdiv.Y?=?tsubEle.Y?; ?????????????tdiv.H?=?200?; ?????????????tdiv.W?=?tsubEle.W?; ????????????? */ ???????????? ????????????/* ?? ..?等等?自己嘗試吧 */ ????????????tdiv.innerHTML?= ? " <li>google</li><li>baidu</li> " ?; ???????????? // 可以參考? ????????????Drag.init(tdiv); ????????}???? ????????ediv.setStyle('background - color:#F4F4F4;'); ????????ediv.show(); ????} else { ????????ediv.close(); ???????? // ediv.delete(); ????} } </ script > </ body > </ html > showDivUtil.js
/* * Skynet *? 2008-9-15 00:56 *?? liukaiyi@gmail.com */function ?ShowDiv(subEle,ediv){ ???? // public? ???? this .style??; ???? this .isShow? = ? false ?; ???? // private? ???? this ._div??; ???? this ._subEle??; ???? this ._subEle??; ???????? if (? typeof ?ediv? == ? " undefined " ? || ?ediv? == ? null )? ???????????? this ._div = document.createElement( " div " ); ???????? else ? if (? typeof ?ediv? == ? " string " )? ???????????? this ._div = document.getElementById(ediv);???? ???????? else ? if (?? / object / .test( typeof ?ediv)?) ???????????? this ._div = ?ediv?; ???????? ???????? if (? typeof ?subEle? == ? " string " )? ???????????? this ._subEle = document.getElementById(subEle);???? ???????? else ? if (?? / object / .test( typeof ?subEle)?) ???????????? this ._subEle = ?subEle?; } ???? // 外置方法?x?,?y?,w?,?h?,?div ????ShowDiv.prototype.setLocation? = ? new ?Function()?; ???? // 設置?div?樣式 ????ShowDiv.prototype.setStyle = function (styleStrOrObj){ ???????? this .style = this ._div.style?; ???????? if (? typeof ?styleStrOrObj? == ? " string " ){ ???????????? var ?strs? = ?styleStrOrObj.split( / ; / )?; ???????????? for ( var ?i = 0 ;i < strs.length;i ++ ){ ???????????????? var ?key? = ?strs[i].split( / : / )[ 0 ]; ???????????????? var ?value? = ?strs[i].split( / : / )[ 1 ]; ???????????????? var ?_s? = ?key.indexOf( " - " )?; ???????????????? if (?_s > 0 )? ????????????????????key = key.substring( 0 ,_s) + key.substring(_s + 1 ,_s + 2 ).toLocaleUpperCase() + key.substring(_s + 2 ,key.length); ???????????????? if (?key != null && key != '' && key != '?'?){ ????????????????????eval(?' this ._div.style.' + key + ' = " '+value+' " '?); ????????????????} ????????????} ????????} else ? if (?? / object / .test( typeof ?styleStrOrObj)?)?{ ???????????? this ._div.style? = ?styleStrOrObj?; ????????} ???????? if ( this ._div.style.position == null ? || ? this ._div.style.position == "" ) ???????????? this ._div.style.position = " absolute " ; ????} ???? ????ShowDiv.prototype.show = function (){ ???????? if (? typeof ? this ._subEle? != ? " undefined " ? || ? this ._subEle? != ? null ){ ???????????? this ._subEle.Y? = ?getElementPos( this ._subEle).y; ???????????? this ._subEle.X? = ?getElementPos( this ._subEle).x?; ???????????? this ._subEle.W? = ? this ._subEle.offsetWidth?; ???????????? this ._subEle.H? = ? this ._subEle.offsetHeight?; ????????} ???????? // this._div.Y?=?sset ???????? // this._div.X?=?sset ???????? this ._div.W? = ?parseInt(? this ._div.style.width?); ???????? this ._div.H? = ?parseInt(? this ._div.style.height?); ???????? ???????? this .setLocation( this ._div, this ._subEle,{screenW:document.body.clientWidth,screenH:document.body.clientHeight}); ???????? this ._div.style.left? = ? this ._div.X??; ???????? this ._div.style.top? = ? this ._div.Y?; ???????? ???????? if (? this ._div.W? && ? this ._div.H?){ ???????????? this ._div.style.width? = ? this ._div.W?; ???????????? this ._div.style.height? = ? this ._div.H?; ????????} ????????document.body.appendChild( this ._div); ???????? this .isShow? = ? true ?; ????} ????ShowDiv.prototype.close = function (){ ????????document.body.removeChild( this ._div);? ???????? this .isShow? = ? false ?; ????} ?????ShowDiv.prototype. delete = function (){ ????????document.body.removeChild( this ._div);? ???????? this ._div? = ? null ?; ???????? this .isShow? = ? false ?; ????} ?//得到 Element 位置 // ?說明:用?Javascript?獲取指定頁面元素的位置 //?整理:http://www.codebit.cn //?來源:YUI?DOM function ?getElementPos(el)?{ ???? var ?ua? = ?navigator.userAgent.toLowerCase(); ???? var ?isOpera? = ?(ua.indexOf('opera')? != ? - 1 ); ???? var ?isIE? = ?(ua.indexOf('msie')? != ? - 1 ? && ? ! isOpera);? // ?not?opera?spoof ???? if (el.parentNode? === ? null ? || ?el.style.display? == ?'none'){ ???????? return ? false ; ????} ???? var ?parent? = ? null ; ???? var ?pos? = ?[]; ???? var ?box; ???? if (el.getBoundingClientRect){ ???? // ?IE? ????????box? = ?el.getBoundingClientRect(); ???????? var ?scrollTop? = ?Math.max(document.documentElement.scrollTop,?document.body.scrollTop); ???????? var ?scrollLeft? = ?Math.max(document.documentElement.scrollLeft,?document.body.scrollLeft); ???????? return ?{x:box.left? + ?scrollLeft,?y:box.top? + ?scrollTop}; ????} else ? if (document.getBoxObjectFor){ ????? // ?gecko ????????box? = ?document.getBoxObjectFor(el); ???????? var ?borderLeft? = ?(el.style.borderLeftWidth) ? parseInt(el.style.borderLeftWidth): 0 ; ???????? var ?borderTop? = ?(el.style.borderTopWidth) ? parseInt(el.style.borderTopWidth): 0 ; ????????pos? = ?[box.x? - ?borderLeft,?box.y? - ?borderTop]; ????} else ?{ ????? // ?safari?&?opera ????????pos? = ?[el.offsetLeft,?el.offsetTop]; ????????parent? = ?el.offsetParent; ???????? if ?(parent? != ?el)?{ ???????????? while ?(parent)?{ ????????????????pos[ 0 ]? += ?parent.offsetLeft; ????????????????pos[ 1 ]? += ?parent.offsetTop; ????????????????parent? = ?parent.offsetParent; ????????????} ????????} ????????? if ?(ua.indexOf('opera')? != ? - 1 || ?(?ua.indexOf('safari')? != ? - 1 ? && ?el.style.position? == ?'absolute'?)){ ????????????pos[ 0 ]? -= ?document.body.offsetLeft; ????????????pos[ 1 ]? -= ?document.body.offsetTop; ????????} ????} ? ???? if ?(el.parentNode)?{?parent? = ?el.parentNode;?} ???? else ?{?parent? = ? null ;?} ? ? ???? // ?account?for?any?scrolled?ancestors ????? while ?(parent? && ?parent.tagName? != ?'BODY'? && ?parent.tagName? != ?'HTML'){????? ????????pos[ 0 ]? -= ?parent.scrollLeft; ????????pos[ 1 ]? -= ?parent.scrollTop; ???????? if ?(parent.parentNode)?{?parent? = ?parent.parentNode;?} ???????? else ?{?parent? = ? null ;?} ????} ???? return ?{x:pos[ 0 ],?y:pos[ 1 ]}; }?
上面加上我的注解(希望能對大家理解有幫助):
/** ************************************************ ?*?dom-drag.js ?*?09.25.2001 ?*?www.youngpup.net ?*?Script?featured?on?Dynamic?Drive?( http://www.dynamicdrive.com )?12.08.2005 ?************************************************** ?*?10.28.2001?-?fixed?minor?bug?where?events ?*?sometimes?fired?off?the?handle,?not?the?root. ???*????注解:??Skynet ?*????email?:?liukaiyi@gmail.com ?*????????blog?:?www.aygfsteel.com/Good-Game ?************************************************* */ var?Drag?= ?{ ????obj?:? null , ???? ???? /* ?api?說明:? ????*?????方法調用可以參考: http://www.dynamicdrive.com/dynamicindex11/domdrag/ ????*?????????o?拖拽?Handle? ????*????????oRoot?被拖拽?element??(可選,?默認不填?o為被拖拽對象??type=object) ????*????????minX,?maxX,?minY,?maxY?限制拖拽范圍?(可選,默認不填為全屏?type=int?) ????*?????????bSwapHorzRef,?bSwapVertRef?判斷是否允許?橫,縱向拖拽(可選,默認不填無限制?type=boolean?) ????*?????fXMapper(x),?fYMapper(y)??為外置函數?拖拽效果體現前調用?(x,y)?為當前element位置(可選?type=Function) ????*/ ????init?:?function(o,?oRoot,?minX,?maxX,?minY,?maxY,?bSwapHorzRef,?bSwapVertRef,?fXMapper,?fYMapper) ????{ ????????/* ?拖拽事件?掛載??(本js?主線?生命周期?描述) ????????*????1.?預定?o.onmousedown事件觸發運行??Drag.start。 ????????*????2.?觸發?element->?onmousedown->Drag.start ????????*????????2.1????先得到?element?當前"改變初"位置,記入到?o.lastMouseX?;o.lastMouseY,掛載Drag.obj,Darp.root?為當前?element。 ????????*????????2.2?????預定?document.onmousemove????=?Drag.drag;?document.onmouseup?=?Drag.end。 ????????*????3.??觸發?document.onmousemove?運行?Drag.drag->?拖拽效果體現。 ????????*????4.??觸發?document.onmouseup?運行?Drag.end->?掛載?document.onmousemove;document.onmouseup;Drag.obj取消。 ???????? */ ????????o.onmousedown?= ?Drag.start; ???????? ???????? // 是否能?橫,縱向拖拽 ????????o.hmode???????????? = ?bSwapHorzRef? ? ? false ?:? true ?; ????????o.vmode???????????? = ?bSwapVertRef? ? ? false ?:? true ?; ???????? // 掛載?o.root? ????????o.root? = ?oRoot? && ?oRoot? != ? null ? ? ?oRoot?:?o?; ???????? ???????? if ?(o.hmode?? && ?isNaN(parseInt(o.root.style.left??)))?o.root.style.left??? = ? " 0px " ; ???????? if ?(o.vmode?? && ?isNaN(parseInt(o.root.style.top???)))?o.root.style.top???? = ? " 0px " ; ???????? if ?( ! o.hmode? && ?isNaN(parseInt(o.root.style.right?)))?o.root.style.right?? = ? " 0px " ; ???????? if ?( ! o.vmode? && ?isNaN(parseInt(o.root.style.bottom)))?o.root.style.bottom? = ? " 0px " ; ???????? ???????? // ?限定?移動范圍 ????????o.minX???? = ?typeof?minX? != ? ' undefined ' ? ? ?minX?:? null ; ????????o.minY???? = ?typeof?minY? != ? ' undefined ' ? ? ?minY?:? null ; ????????o.maxX???? = ?typeof?maxX? != ? ' undefined ' ? ? ?maxX?:? null ; ????????o.maxY???? = ?typeof?maxY? != ? ' undefined ' ? ? ?maxY?:? null ; ????????o.xMapper? = ?fXMapper? ? ?fXMapper?:? null ; ????????o.yMapper? = ?fYMapper? ? ?fYMapper?:? null ; ???????? ???????? /* 自定義拖拽-事件添加(相當于我們在java中的?抽象類?中未實現的方法??比如: ????????*????obj.onDrag?=?function(x,?y)?{ ?????????*????????scrolldiv.style.top=y?*?(-1)?+"px"; ????????*????} ???????? */ ????????o.root.onDragStart????= ? new ?Function(); ????????o.root.onDragEnd???? = ? new ?Function(); ????????o.root.onDrag???????? = ? new ?Function(); ????}, ???? // 由?function?init?>>?o.onmousedown????=?Drag.start; ????start?:?function(e) ????{ ???????? // 得到被拖拽?element ????????var?o? = ?Drag.obj? = ? this ; ????????e? = ?Drag.fixE(e); ???????? ???????? // element?移動初位置? ????????var?y? = ?parseInt(o.vmode? ? ?o.root.style.top??:?o.root.style.bottom); ????????var?x? = ?parseInt(o.hmode? ? ?o.root.style.left?:?o.root.style.right?); ???????? // 可能的外置函數調用 ????????o.root.onDragStart(x,?y); ???????? // event?初位置?記入 ????????o.lastMouseX???? = ?e.clientX; ????????o.lastMouseY???? = ?e.clientY; ???????? ???????? if ?(o.hmode)?{ ???????????? if ?(o.minX? != ? null )????o.minMouseX???? = ?e.clientX? - ?x? + ?o.minX; ???????????? if ?(o.maxX? != ? null )????o.maxMouseX???? = ?o.minMouseX? + ?o.maxX? - ?o.minX; ????????}? else ?{ ???????????? if ?(o.minX? != ? null )?o.maxMouseX? = ? - o.minX? + ?e.clientX? + ?x; ???????????? if ?(o.maxX? != ? null )?o.minMouseX? = ? - o.maxX? + ?e.clientX? + ?x; ????????} ???????? if ?(o.vmode)?{ ???????????? if ?(o.minY? != ? null )????o.minMouseY???? = ?e.clientY? - ?y? + ?o.minY; ???????????? if ?(o.maxY? != ? null )????o.maxMouseY???? = ?o.minMouseY? + ?o.maxY? - ?o.minY; ????????}? else ?{ ???????????? if ?(o.minY? != ? null )?o.maxMouseY? = ? - o.minY? + ?e.clientY? + ?y; ???????????? if ?(o.maxY? != ? null )?o.minMouseY? = ? - o.maxY? + ?e.clientY? + ?y; ????????} ???????? ???????? /* >>>>>>>>>>>比較關鍵的掛載<<<<<<<<<<<<<< ????????*???? ????????*????使用?document.onmousemove?事件?而不使用?element的,是應為當拖動太快,可能會脫離element. ???????? */ ????????document.onmousemove????= ?Drag.drag; ????????document.onmouseup???????? = ?Drag.end; ???????? return ? false ; ????}, ???? // 由?function?start>>?document.onmousemove????=?Drag.drag; ????drag?:?function(e) ????{ ????????e? = ?Drag.fixE(e); ????????var?o? = ?Drag.obj; ????????var?ey???? = ?e.clientY; ????????var?ex???? = ?e.clientX; ???????? // 得到?element?當前位置(vmode,hmode判斷是否可以橫縱向拖拽) ????????var?y? = ?parseInt(o.vmode? ? ?o.root.style.top??:?o.root.style.bottom); ????????var?x? = ?parseInt(o.hmode? ? ?o.root.style.left?:?o.root.style.right?); ????????var?nx,?ny; ???????? ???????? if ?(o.minX? != ? null )?ex? = ?o.hmode? ? ?Math.max(ex,?o.minMouseX)?:?Math.min(ex,?o.maxMouseX); ???????? if ?(o.maxX? != ? null )?ex? = ?o.hmode? ? ?Math.min(ex,?o.maxMouseX)?:?Math.max(ex,?o.minMouseX); ???????? if ?(o.minY? != ? null )?ey? = ?o.vmode? ? ?Math.max(ey,?o.minMouseY)?:?Math.min(ey,?o.maxMouseY); ???????? if ?(o.maxY? != ? null )?ey? = ?o.vmode? ? ?Math.min(ey,?o.maxMouseY)?:?Math.max(ey,?o.minMouseY); ???????? ???????? // 本js中?最主要的地方:? ???????? // 得到?鼠標移動?向量?drap(x,y)?=?fun_drap:event(x,y)?-?fun_start:event(x,y) ???????? // 并于?得到拖拽效果:??element(x,y)?+?drap(x,y)? ????????nx? = ?x? + ?((ex? - ?o.lastMouseX)? * ?(o.hmode? ? ? 1 ?:? - 1 )); ????????ny? = ?y? + ?((ey? - ?o.lastMouseY)? * ?(o.vmode? ? ? 1 ?:? - 1 )); ???????? if ?(o.xMapper)????????nx? = ?o.xMapper(y) ???????? else ? if ?(o.yMapper)????ny? = ?o.yMapper(x) ???????? ???????? // 效果體現 ????????Drag.obj.root.style[o.hmode? ? ? " left " ?:? " right " ]? = ?nx? + ? " px " ; ????????Drag.obj.root.style[o.vmode? ? ? " top " ?:? " bottom " ]? = ?ny? + ? " px " ; ????????Drag.obj.lastMouseX???? = ?ex; ????????Drag.obj.lastMouseY???? = ?ey; ???????? // 調用外置函數 ????????Drag.obj.root.onDrag(nx,?ny); ???????? return ? false ; ????}, ???? ???? // 由?function?start>>?document.onmouseup????????=?Drag.end; ????end?:?function() ????{ ????????document.onmousemove? = ? null ; ????????document.onmouseup??? = ? null ; ????????Drag.obj.root.onDragEnd(????parseInt(Drag.obj.root.style[Drag.obj.hmode? ? ? " left " ?:? " right " ]),? ????????????????????????????????????parseInt(Drag.obj.root.style[Drag.obj.vmode? ? ? " top " ?:? " bottom " ])); ????????Drag.obj? = ? null ; ????}, ???? ???? // 跨?瀏覽器?得到?event ????fixE?:?function(e) ????{ ???????? if ?(typeof?e? == ? ' undefined ' )?e? = ?window.event; ???????? if ?(typeof?e.layerX? == ? ' undefined ' )?e.layerX? = ?e.offsetX; ???????? if ?(typeof?e.layerY? == ? ' undefined ' )?e.layerY? = ?e.offsetY; ???????? return ?e; ????} };
參考:
http://neil-jh.javaeye.com/blog/199345
效果:
google
name20 name21 name22 name23 name24 name25 name26 name27 name28 name29 test1 test2 test3 test3 <% @?page?language = " java " ?contentType = " text/html;?charset=UTF-8 " ????pageEncoding= " UTF-8 " %> <% @taglib?uri = " /struts-tags " ?prefix = " s " %> <% @taglib?uri = " http://java.sun.com/jstl/core_rt " ?prefix = " c " %> <! DOCTYPE?html?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"?"http://www.w3.org/TR/html4/loose.dtd" > < html > < head > ??< meta? http-equiv ="Content-Type" ?content ="text/html;?charset=UTF-8" > < title > Insert?title?here </ title > </ head > < body > < li > ????<!-- ?類中靜態變量?? --> ????< s:property? value ="%{@action.SsdAction@GOOD}" /> ?????? ????<!-- ?調用?方法? --> ??????< s:set? name ="num" ?value ="20" ? /> ????< s:set? name ="listData" ?value ="%{?ssdMethod.getBeans(#num)??}" ? /> ???? ????<!-- ?和?jstl?配合使用? --> ????< select > ????????< c:forEach? var ="btmp" ?items ="${listData}" > ????????????< option? value ="${btmp.id}?}" > ${btmp.name} </ option > ????????</ c:forEach > ????</ select > ???? ????<!-- ?調用枚舉類? ????????public?enum?Type?{ ????????????//id?value?:?gget?sset? ????????????g1(1,"test1"), ????????????g2(2,"test2"), ????????????g3(3,"test3"); ???????????? . ???? --> ????< s:select? list ="%{?@myEnum.Type@values()?}" ?listKey ="id" ?listValue ="value" ? /> ????<!-- ?循環遍歷?添加邏輯?..{?#this.id>2?}? --> ????< s:select? list ="%{?@myEnum.Type@values().{?#this.id>2?}?}" ?listKey ="id" ?listValue ="value" ? /> </ li > </ body > </ html >
haptic 觸覺? ?? --of or relating to the sensation of touch. ?? --關于???????????? 觸動???????????????????????? 感覺。 ?????????????????? haptics is the science of applying tactile sensation to humen interaction with computers . 字面翻譯:? 觸覺論?? 是? 一種? 科學 ? ? ?? 申請 ? ? ? ? ?? ???? 觸覺?????????????????? 與? 人類?????? 互動??????????? 和?????? 電腦 ??????????????? : 觸覺論 是將人類的接觸感覺應用與計算機連接的一門科學。 ?????? A haptic device is one that involves physical contact between the computer and the user . 》》一個觸覺設備??????????? 是一個???????? 涉及????? 物理 ?????? 連接?????? 在?????????????????? 電腦????? ? ?? ??? 和??? 人 》》一個觸覺設備包含 計算機和用戶之間的物理連接 ???? usually through an input/output device,such as a joystick or?? data gloves ,that senses the body,s movements. 》》通常???? 通過???????? 一個 輸入/輸出? 設備 ? , 比如 ? ? 一個 操縱桿 或??? 數據手套 , 這些設備? ?? 感覺?? 身體的移動 。
主頁:http://code.google.com/apis/protocolbuffers/docs/overview.html
testProto.proto
package?foo.bar; option?java_package? = ? " com.proto " ; message?Person?{ ??required?string?name? = ? 1 ; ??required?int32?id? = ? 2 ; ??optional?string?email? = ? 3 ; ??enum?PhoneType?{ ????MOBILE? = ? 0 ; ????HOME? = ? 1 ; ????WORK? = ? 2 ; ??} ??message?PhoneNumber?{ ????required?string?number? = ? 1 ; ????optional?PhoneType?type? = ? 2 ?[ default ? = ?HOME]; ??} ??repeated?PhoneNumber?phone? = ? 4 ; }
運行命令
'/home/kaiyi/proto/bin/protoc'? --java_out=src testProto.proto?
使用(? 本類可用,builder 可改,開用但 list 刪除要使用比較郁悶的方法刪除!)
package ?unit; import ?java.util.ArrayList; import ?java.util.Arrays; import ?java.util.Collections; import ?java.util.List; import ?com.google.protobuf.InvalidProtocolBufferException; import ?com.proto.TestProto; import ?com.proto.TestProto.Person; import ?com.proto.TestProto.Person.PhoneNumber; public ? class ?Main?{ ???? public ? static ? void ?main(String[]?args)? throws ?InvalidProtocolBufferException?{ ???????? // 空創建 ????????Person.Builder?builder? = ?Person.newBuilder(); ????????builder.setName( " liukaiyi " ); ????????builder.setId( 1 ); ???????? ????????builder.setEmail( " email " ); ???????? ????????PhoneNumber.Builder?pBuilder1? = ?PhoneNumber.newBuilder(); ????????pBuilder1.setNumber( " 1 " ); ????????pBuilder1.setType(TestProto.Person.PhoneType.MOBILE); ???????? ???????? ????????PhoneNumber.Builder?pBuilder2? = ?PhoneNumber.newBuilder(); ????????pBuilder2.setNumber( " 2 " ); ????????pBuilder2.setType(TestProto.Person.PhoneType.HOME); ???????? ???????? ???????? ????????builder.addPhone(pBuilder1); ????????builder.addPhone(pBuilder2); ??????? //此處為存儲到數據庫 或 傳輸! byte []?data? = ?builder.build().toByteArray()?; ???????? for ( byte ?tb?:?data?) ????????????System.out.print(?( char )tb?); ???????? ???????? ???????? // 組建 ????????Person?person? = ?Person.parseFrom(data); ????????Person.Builder?builder2? = ?Person.newBuilder(person); ????????builder2.setEmail( " test " ); ???????? ????????PhoneNumber.Builder?pBuilder3? = ?PhoneNumber.newBuilder(); ????????pBuilder3.setNumber( " 3 " ); ????????pBuilder3.setType(TestProto.Person.PhoneType.HOME); ????????builder2.addPhone(pBuilder3); ??????? //這 我最不明白的地方 , list 這 只能 使用 這種方法才可以刪除 list ???? ??? ??? List list = new ArrayList(builder2.getPhoneList()); ??? ??? List<PhoneNumber> ltmp =? builder2.getPhoneList() ; ??? ??? for (int i=0;i<list.size();i++ ){ ??? ??? ??? if(ltmp.get(i).getNumber().equals("2")) ??? ??? ??? ??? list.remove( ltmp.get(i) ) ; ??? ??? } ??? ??? builder2.clearPhone().addAllPhone(list); ??????? builder2.clearEmail(); ????????System.out.println(list.size()); ????????System.out.println(); ????????byte []?data2? = ?builder2.build().toByteArray()?; ???????? for ( byte ?tb?:?data2?) ????????????System.out.print(?( char )tb?); ???????? ???????? ???????? ???????? ????} }
<?
xml?version="1.0"?encoding="utf8"?
?>
<%
@?page?language
=
"
java
"
?contentType
=
"
text/html;?charset=utf8
"
?pageEncoding
=
"
utf8
"
%>
<%
@taglib?uri
=
"
/WEB-INF/struts-tags.tld
"
?prefix
=
"
s
"
%>
<%
@taglib?uri
=
"
/WEB-INF/ljw.tld
"
?prefix
=
"
ljw
"
%>
????
<%
@page?import
=
"
com.ljw.bean.CorrectionWrong
"
%>
<%
@page?import
=
"
com.ljw.bean.CorrectionWrong.State
"
%>
<%
@page?import
=
"
com.opensymphony.xwork2.util.ValueStack
"
%>
<
html?
xmlns
="http://www.w3.org/1999/xhtml"
>
<
head
>
<
meta?
http-equiv
="Content-Type"
?content
="text/html;?charset=utf8"
?
/>
<
title
>
Insert?title?here
</
title
>
<
script?
type
="text/javascript"
?src
="../js/prototype.js"
></
script
>
<
script?
type
="text/javascript"
?src
="../js/jsMsg.jsp"
></
script
>
<
script?
type
="text/javascript"
?src
="../js/comm.js"
></
script
>
<
SCRIPT?
language
=JavaScript?
src
="../js/supertable/dialog.js"
?type
=Text/JavaScript
></
SCRIPT
>
</
head
>
<
body
>
<
div?
id
="communityDiv"
>
<
s:set?
name
=""
></
s:set
>
<
s:iterator?
id
="d"
?value
="%{pageList.objectList}"
>
????用戶名字:
<
s:property?
value
="#d.userInfo.userName"
/><
br
>
????url:
<
s:property?
value
="#d.url"
/><
br
>
????狀態:
<
s:property?
value
="#d.ecwState.value"
/><
br
>
????糾錯:
<
s:property?
value
="#d.cwArticle"
/></
br
>
????編輯輸入:
<
textarea?
rows
="10"
?cols
="50"
?id
='<s:property?
value
="#d.id"
/>
'?>
<
s:property?
value
="#d.boardmasterDesc"
/></
textarea
>
????
<
input?
type
="button"
?onclick
="getUpdate('<s:property?value="
#d.id"
/>
')"/>
<
hr
/>
</
s:iterator
>
<
br
/>
<
ljw:pages?
value
="%{pageList.pages}"
?javaScript
="loadCommunityListUrl"
/>
</
div
>
</
body
>
<
script?
type
="text/javascript"
>
function
?loadCommunityListUrl(url)?{ ?????$('communityDiv').innerHTML?
=
?pageLoadingCenter; ??????
var
?urls?
=
?getActionName(url); ??????
var
?pars?
=
?getActionPars(url); ??????
var
?myAjax?
=
?
new
?Ajax.Updater(
"
communityDiv
"
,?urls,?{method:?'post',?parameters:?pars}); ????}
var
?request?
=
?
false
;
try
?{ ??request?
=
?
new
?XMLHttpRequest(); }?
catch
?(trymicrosoft)?{ ??
try
?{ ????request?
=
?
new
?ActiveXObject(
"
Msxml2.XMLHTTP
"
); ??}?
catch
?(othermicrosoft)?{ ????
try
?{ ??????request?
=
?
new
?ActiveXObject(
"
Microsoft.XMLHTTP
"
); ????}?
catch
?(failed)?{ ??????request?
=
?
false
; ????}?? ??} }
if
?(
!
request) ??alert(
"
Error?initializing?XMLHttpRequest!
"
); ??
var
?_robj?
=
?
null
?;
function
?getUpdate(ki)?{??_robj?
=
?document.getElementById(ki)?; ??
var
?urls?
=
'cwmain.
do
'; ??
var
?pars?
=
?'c
=
ajaxUpdateByBoardMaster
&
cwId
=
'
+
ki
+
'
&
boardMasterDesc
=
'
+
_robj.value?; ??request.open(
"
POST
"
,?urls,?
true
); ??request.setRequestHeader(
"
Cache-Control
"
,
"
no-cache
"
); ??request.setRequestHeader(
"
content-type
"
,
"
application/x-www-form-urlencoded
"
); ??request.send(pars); ??request.onreadystatechange?
=
?updatePage;
}
function
?updatePage()?{ ????
if
?(request.readyState?
==
?
4
)?{ ????????
if
?(request.status?
==
?
200
?
||
?request.status
==
0
?)?{ ????????????alert(request.responseText); ????????????eval('
var
?ajaxData?
=
'
+
request.responseText); ????????????
if
(?ajaxData.isUpdate?){ ?????????????????alert(?'更新成功!'?); ????????????}
else
{ ????????????????alert(?'更新不成功!'?); ????????????} ????????}? ????} }
</
script
>
</
html
>
<
html
>
??
<
head
><
title
>
拖動效果函數演示?by?Longbill.cn
</
title
>
??
<
style
>
?? div??
{
?? ????position?
:
?absolute
;
?? ????background-color?
:
?#c3d9ff
;
?? ????margin?
:
?0px
;
?? ????padding?
:
?5px
;
?? ????border?
:
?0px
;
?? ????width?
:
?100px
;
?? ????height
:
100px
;
??
}
??
</
style
>
</
head
>
??
<
body
>
?? ???? ????
<
script
>
??
function
?drag(o,s)?? {?? ????
if
?(
typeof
?o?
==
?
"
string
"
)?o?
=
?document.getElementById(o);?? ????o.orig_x?
=
?parseInt(o.style.left)?
-
?document.body.scrollLeft;?? ????o.orig_y?
=
?parseInt(o.style.top)?
-
?document.body.scrollTop;?? ????o.orig_index?
=
?o.style.zIndex;?? ?????????? ????o.onmousedown?
=
?
function
(a)?? ????{?? ????????
this
.style.cursor?
=
?
"
move
"
;?? ????????
this
.style.zIndex?
=
?
10000
;?? ????????
var
?d
=
document;?? ????????
if
(
!
a)a
=
window.event;?? ????????
var
?x?
=
?a.clientX
+
d.body.scrollLeft
-
o.offsetLeft;?? ????????
var
?y?
=
?a.clientY
+
d.body.scrollTop
-
o.offsetTop;?? ????????
//
author:?www.longbill.cn??
????????d.ondragstart?
=
?
"
return?false;
"
?? ????????d.onselectstart?
=
?
"
return?false;
"
?? ????????d.onselect?
=
?
"
document.selection.empty();
"
?? ?????????????????? ????????
if
(o.setCapture)?? ????????????o.setCapture();?? ????????
else
?
if
(window.captureEvents)?? ????????????window.captureEvents(Event.MOUSEMOVE
|
Event.MOUSEUP);?? ????????d.onmousemove?
=
?
function
(a)?? ????????{?? ????????????
if
(
!
a)a
=
window.event;?? ????????????o.style.left?
=
?a.clientX
+
document.body.scrollLeft
-
x;?? ????????????o.style.top?
=
?a.clientY
+
document.body.scrollTop
-
y;?? ????????????o.orig_x?
=
?parseInt(o.style.left)?
-
?document.body.scrollLeft;?? ????????????o.orig_y?
=
?parseInt(o.style.top)?
-
?document.body.scrollTop;?? ????????}?? ????????d.onmouseup?
=
?
function
()?? ????????{?? ????????????
if
(o.releaseCapture)?? ????????????????o.releaseCapture();?? ????????????
else
?
if
(window.captureEvents)?? ????????????????window.captureEvents(Event.MOUSEMOVE
|
Event.MOUSEUP);?? ????????????d.onmousemove?
=
?
null
;?? ????????????d.onmouseup?
=
?
null
;?? ????????????d.ondragstart?
=
?
null
;?? ????????????d.onselectstart?
=
?
null
;?? ????????????d.onselect?
=
?
null
;?? ????????????o.style.cursor?
=
?
"
normal
"
;?? ????????????o.style.zIndex?
=
?o.orig_index;?? ????????}?? ????}?? ?????? ????
if
?(s)?? ????{?? ????????
var
?orig_scroll?
=
?window.onscroll
?
window.onscroll:
function
?(){};?? ????????window.onscroll?
=
?
function
?()?? ????????{?? ????????????orig_scroll();?? ????????????o.style.left?
=
?o.orig_x?
+
?document.body.scrollLeft;?? ????????????o.style.top?
=
?o.orig_y?
+
?document.body.scrollTop;?? ????????}?? ????}?? }??
</
script
>
??
<
div?
id
="div1"
?style
="left:10px;top:10px;"
>
div1:我可以被拖動
</
div
>
??
<
div?
id
="div2"
?style
="left:120px;top:10px;background-color?:?#f3d9ff"
>
div2:來拖我呀
</
div
>
??
<
div?
id
="div3"
?style
="left:230px;top:10px;background-color?:?#c3ffff"
>
div3:我隨便你拖
</
div
>
??
<
div?
id
="div4"
?style
="left:10px;top:120px;background-color?:?#c3d944"
>
div4:我可以隨窗口滑動,把我拖到最下面,然后滾動網頁看看
</
div
>
??
<
div?
id
="div5"
?style
="left:120px;top:120px;background-color?:?#f3d944"
>
作者:?Longbill
<
a?
href
=http://www.longbill.cn?
target
=_blank
>
www.longbill.cn
</
a
>
??
</
div
>
??
<
div?
id
="div6"
?style
="left:230px;top:120px;background-color?:?#e3f944;width:200px;"
>
參數說明: ?? drag(obj?[,scroll]); ?? obj:對象的id或對象本身; ?? scroll(可選):對象是否隨窗口拖動而滑動,默認為否 ?? 鼠標右鍵查看源代碼??
</
div
>
??
<
script
>
?? drag(
"
div1
"
);?? drag(
"
div2
"
);?? drag(
"
div3
"
);?? drag(
"
div4
"
,
1
);?? drag(
"
div5
"
,
1
);?? drag(
"
div6
"
,
1
);??
</
script
>
??
</
body
>
?
demo 下載: http://www.aygfsteel.com/Files/Good-Game/div_.rar
運行 div.html
html:
< html > < head > < script? type ="text/javascript" ?src ="prototype.js" ></ script > < script? type ="text/javascript" ?src ="drag.js" ></ script > < META? http-equiv =Content-Type? content ="text/html;?charset=utf8" > </ head > < body > < a ???? onclick ="getDrag(event, ?????????????????????'ajax.html?id=5', ?????????????????????'position:absolute;display:none;left:50;??top:10;??z-index:1000;??padding:0px;??background-color:#FFFFCC;??color:#201000;??font-size:12px;??border:5px???solid???#284860;', ??????????????????????'background-color:#CCFFCC;')" > 測試使用(請點擊) </ a > </ body > </ html >
js.
// ?參考?:?http://hi.baidu.com/foxlively/blog/item/0ce341b3f0c050a2d8335af8.html //?使用?:?prototype.js? //使用方法? var ?_div1? = ? null ; var ?_style2? = ? null ; function ?getDrag(event,?url,divId,?style1,?style2)?{ ???? ???? if ?(style2) ????????_style2? = ?style2; ???? else ????????_style2?= ? "" ; ???? ???? if (divId == null ) ????????_div1? = ?document.createElement( " div " ); ???? else ????????_div1?= ?document.getElementById(divId); ???? ????_div1.style.position? = ?'absolute'; ????_div1.style.display? = ?'none'; ???? if ?(_div1.style.border? == ? null ? || ?_div1.style.border? == ?'') ????????_div1.style.border? = ?'1px?solid?# 284860 '; ???? if ?(style1) ????????_div1.setAttribute('style',?style1); ????actionAjax(url); ????document.body.appendChild(_div1); ????showByEvent(event,?_div1); } function ?getActionName(url)?{ ???? var ?question? = ?url.indexOf( " ? " ); ???? if ?(question? > ? 0 )?{ ???????? return ?url.substring( 0 ,?question); ????} ???? else ?{ ???????? return ?url; ????} } function ?getActionPars(url)?{ ???? var ?question? = ?url.indexOf( " ? " ); ???? if ?(question? > ? 0 )?{ ???????? return ?url.substring(question + 1 ,?url.length); ????} ???? else ?{ ???????? var ?d? = ? new ?Date(); ???????? var ?t? = ?d.getTime(); ???????? return ? " timestamp= " + t; ????} } function ?actionAjax(url)?{ ???? var ?urls? = ?getActionName(url); ???? var ?pars? = ?getActionPars(url); ???? var ?myAjax? = ? new ?Ajax.Updater(_div1,?urls,?{ ????????method?:'post', ????????parameters?:pars, ????????onComplete?:_action ????}); } function ?_action(req)?{ ???? var ?varhtml? = ? " <div?id=\ " _drag_div\ " ?style=\ "" ????????????+?_style2 ????????????+?" \ " ?align=\ " right\ " ><br/><a?href=\ " javascript:;\ " ?onclick=\ " this .parentNode.parentNode.style.display = 'none'; this .parentNode.parentNode.innerHTML = null ;\ " >[關閉]</a></div> " ????????????+ ?req.responseText ???????????? + " <div?id=\ " _drag_div\ " ?style=\ "" ????????????+?_style2 ????????????+?" \ " ?align=\ " left\ " ><br/><a?href=\ " javascript:;\ " ?onclick=\ " this .parentNode.parentNode.style.display = 'none'; this .parentNode.parentNode.innerHTML = null ;\ " >[關閉]</a></div> " ????????????; ????// varhtml?=??varhtml.replace(/form[?]+action=["'](.*)["']/gi,?"form?action=\"javascript:actionAjax('$1');\"?")??; ?????????????????????????????? ????_div1.innerHTML? = ?varhtml; ???? var ?drag? = ? new ?Drag(); ???? // ?drag.build(div1);//拖動本身 ????drag.build(_div1,?_div1.firstChild); // ?通過一個對象拖動另一個對象 ???? // drag.build(_div1,?_div1.lastChild);//?通過一個對象拖動另一個對象 } function ?showByEvent(event,?useDiv)?{ ????useDiv.style.display? = ? "" ; ????useDiv.style.left? = ?mouseX(event); ????useDiv.style.top? = ?mouseY(event); } function ?mouseX(ev)?{ ???? if (?ev? == ? null ?)ev? = ?event? || ?window.event?; ???? if (ev.clientX){ ???????? return ?ev.clientX? + ?document.body.scrollLeft? - ?document.body.clientLeft; ????} else ? if (ev.pageX){ ???????? return ?ev.pageX; ????} } function ?mouseY(ev)?{ ???? if (?ev? == ? null ?)ev? = ?event? || ?window.event?; ???? if (ev.clientY){ ???????? return ?ev.clientY? + ?document.body.scrollTop? - ?document.body.clientTop?; ????} else ? if (ev.pageX){ ???????? return ?ev.pageY; ????} } function ?Drag()?{ } Drag.prototype.baseX? = ? 0 ; Drag.prototype.baseY? = ? 0 ; Drag.prototype.lastX? = ? 0 ; Drag.prototype.lastY? = ? 0 ; Drag.prototype.nowX? = ? 0 ; Drag.prototype.nowY? = ? 0 ; Drag.prototype.obD? = ? null ; Drag.prototype.obM? = ? null ; Drag.prototype.build? = ? function (_obD,?_obM)?{ ???? if ?(_obM)?{ ????????Drag.prototype.obM? = ?_obM; ????}? else ?{ ????????Drag.prototype.obM? = ?_obD; ????} ????Drag.prototype.obD? = ?_obD; ????Drag.prototype.obM.onmousedown? = ? function (event)?{ ????????Drag.prototype.lastX? = ?mouseX(event); ????????Drag.prototype.lastY? = ?mouseY(event); ????????Drag.prototype.baseX? = ?Drag.prototype.obD.style.left; ????????Drag.prototype.baseY? = ?Drag.prototype.obD.style.top; ???????? this .onmousemove? = ? function (event)?{ ????????????Drag.prototype.nowX? = ?mouseX(event); ????????????Drag.prototype.nowY? = ?mouseY(event); ????????????Drag.prototype.obD.style.left? = ?(parseFloat(Drag.prototype.baseX) ???????????????????? + ?Drag.prototype.nowX? - ?Drag.prototype.lastX) ???????????????????? + ? " px " ; ????????????Drag.prototype.obD.style.top? = ?(parseFloat(Drag.prototype.baseY) ???????????????????? + ?Drag.prototype.nowY? - ?Drag.prototype.lastY) ???????????????????? + ? " px " ; ????????} ????} ????Drag.prototype.obM.onmouseup? = ? function (event)?{ ???????? // ?obD.onmouseup?=?null; ????????Drag.prototype.obD.onmousemove? = ? null ; ????????Drag.prototype.obM.onmousemove? = ? null ; ????} ????Drag.prototype.obM.onmouseout? = ? function ()?{ ???????? // ?obM.onmouseup?=?null ????????Drag.prototype.obM.onmousemove? = ? null ; ????????Drag.prototype.obD.onmousemove? = ? null ; ????} }
參考:
http://www.programbbs.com/bbs/view25-12320-1.htm 但上面的 一些sql語句 ,有查詢時間問題,在此我已于改正了并希望和大家分享。
---------自我感覺 第四題 很不錯!-----------------------------------------------------------------------------------
第一題 (只要重復的都要?輸出 )
----------------------------------------------------------------------
create ? table ?c?(id? int ?); insert ? into ?c? values ?( 1 ),( 2 ),( 3 ),( 4 ),( 3 ),( 5 ),( 6 ),( 1 ); 結果: ???? select ?id? from ?c? group ? by ?id? having ? count (id) > 1 ?;
附加(查詢重復最多的倒排)
select ?bid, count (bid)? as ?cu? from ?tb? group ? by ?bid? having ? count (bid) > 1 ?? order ? by ?cu?? desc ----------------------------------------------------------------------
第二題(報表查詢橫向輸出)
查詢后的結果:
Create table d(id int,name varchar(50));
insert into d values(1,'gly');
insert into d values(2,'ptgly');
insert into d values(3,'ybgly');
insert into d values(4,'ptgly');
insert into d values(5,'ybgly');
+---+-----+------+
|gly|ptgly|ybgly | ????
|---+-----+------+-
|1? |2??? |2???? |
+---+-----+------+
-----------------------------------------------------------------------
select ? ???? sum ( case ? when ?name = ' gly ' ? then ? 1 ? else ? 0 ? end ?)? as ?gly??, ???? sum ( case ? when ?name = ' ptgly ' ? then ? 1 ? else ? 0 ? end ?)? as ?ptgly??, ???? sum ( case ? when ?name = ' ybgly ' ? then ? 1 ? else ? 0 ? end ?)? as ?ybgly?? from ?d?;
第三題
可以根據上面 2,4 可以得出 。
下面我們詳細說下 4題。
-----------------------------------------------------------------------
第四題(復雜組合查詢!)
create table table_a (No int, No2 int,num double,itime date);
insert into table_a values
???? (1234,567890,33.5,'2004-12-21'),
???? (1234,598701,44.8,'2004-11-21'),
???? (1234,598701,45.2,'2004-10-01'),
???? (1234,567890,66.5,'2004-9-21'),
???? (3456,789065,22.5,'2004-10-01'),
???? (3456,789065,77.5,'2004-10-27'),
???? (3456,678901,48.5,'2004-12-21');
按月統計銷售表中貨物的銷售量數
查詢結果如下:
? No, No2 ,?? 九月, 十月,十一月,十二月
1234,567890, 66.5 , 0 , 0? ,? 33.5
1234,598701,? 0?? , 45.2, 44.8, 0
3456,789065, 0? , 100, 0? , 0
3456,678901, 0 ,??? 0,??? 0? ,? 48.5
-----------------------------------------------------------------------
//當然也可以 使用mysql 時間函數 在軟件編輯時 你可以輸入 String[] 并根據數據動態拼寫 sql( case部分!! ) //這個 例子很好 哦!報表可以一句sql 得出! select ?NO,NO2, ???? sum ( case ?? when ?itime? like ? ' 2004-%9% ' ? then ?num? else ? 0 ? end )? as ?9M, ???? sum ( case ?? when ?itime? like ? ' 2004-10% ' ? then ?num? else ? 0 ? end )? as ?10M, ???? sum ( case ?? when ?itime? like ? ' 2004-11% ' ? then ?num? else ? 0 ? end )? as ?11M, ???? sum ( case ?? when ?itime? like ? ' 2004-12% ' ? then ?num? else ? 0 ? end )? as ?12M from ?table_a? group ? by ?no,no2? order ? by ?no,no2?;
--------------------------------------------------------------
第五題
代碼,名稱
1???? a
2???? b
11??? c
(代碼11表示為1的下級)
我要通過一條句子,得出如下結果:
代碼,名稱,有無下級
1???? a???? 有
2???? b???? 無
11??? c???? 無
Create table TabTest(t_Code varchar(10),t_Name varchar(10));
insert into TabTest values('1','a');
insert into TabTest values('2','b');
insert into TabTest values('11','c');
--------------------------------------------------------------
select ?tt1.t_Code,tt1.t_name,(? ????? case ? ????????????? when ? exists ?( select ? 1 ? from ?tabtest?tt2? ??????????????????????????????????????? where ?tt2.t_code? like ?CONCAT(tt1.t_code, ' % ' )? and ? ??????????????????????????????????????? tt2.t_code? <> ?tt1.t_code?)?? then ? ' you ' ? ????????????? else ? ' wu ' ??????end ?)? as ?you_wu from ?tabtest??tt1?;