??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
]]>
]]>
]]>
]]>
]]>
成功~译安装Hadoop Eclipse插g
本地有和服务器相同版本的Hadoop安装包,q已解压Q本例用hadoop-1.1.2Q?
阅读全文
]]>
]]>
Hadoop是一个能够让用户L架构和用的分布式计^台。用户可以轻村֜在Hadoop上开发和q行处理量数据的应用程?用户可以在不了解分布式底层细节的情况下,开发分布式E序。充分利用集的威力高速运和存储?nbsp; 阅读全文
]]>
]]>
]]>
]]>
]]>
NG(Next Generation of HTTP)的徏议已l提出?nbsp; 阅读全文
]]>
]]>
有关ExtGrid导出Excel的实现方式,|上已经有很多,官方也给Z一个方案,代码不是很完善,不过已经有高人对q个q行了修正。具体实现方式及代码我这里就不再多说了,大家可以参看Q?br />
http://www.dojochina.com/index.php?q=node/1254Q附ӞgridToExcel.js.txt
其基本思想是:客户端根据Grid数据生成Excel格式的XML数据Q然后发送到一个服务端文gQ服务端文g?br />
q设定Content-Type来实现Excel的下载。其?#8220;导出Excel”按钮点击执行的代码如下:
例子中服务端使用的PHPQ这D代码在PHP中可能可以很好的工作Q但是如果到了JSP{环境下Q就出现了问
题,导出数据可能是空?br />
问题出在哪里呢?上面q部分代码中的ajax提交其实q不是真正的ajax提交Q因为ajax提交是在后台执行Q因
此不可能实现下蝲Q可以看到这里有form和isUpload两个参数QExt的ajaxh中如果配|了isUpload:trueQ则?br />
ajax׃是真正的ajaxhQ而是通过创徏一个隐藏的IframeQƈ通过form的target指向q个iframe来提交数据,q?br />
且发送的header里将content-type设ؓ了multipart/formQ在JSP中不能成功导出的原因在q里。这L提交方式
其参数通过request.getParameter是取不到的,当然你可以用上传组件来获取Q但q样代码变得复杂。下?br />
来解册个问题,既然q里的Ajax使用是一个模拟的form提交Q那我们其实可以完全不用。我们直接用form?br />
交不是更省事吗?解决办法如下Q创Z个隐藏formQ其target讄为_blankQ然后在其内部创Z个隐藏域?br />
放xml数据Q然后通过POST方式提交q个form卛_?/p>
实现代码Q?/p>
JSP代码Q?br />
完整代码下蝲Q?a href="/Files/redhatlinux/grid2excel.rar">grid2excel.rar
This isn't exactly a speed tip, but is more about conserving memory by using something called
a "flyweight" to perform simple tasks, which results in higher speed by not clogging up the
browser's memory
大概意思也是Ext.Fly采用flyweight模式使所有fly出来的元素共享内存,可以提高E序执行速度Q减内存占用?br />
q段话激起了我对q个函数的兴,毕竟q段旉一直在搞JS性能优化相关问题Q对“内存”q个字眼
非常敏感。大概看了下Ext源码对get和fly实现的部分,然后在网上查看了一些资料,l于对他们之间的异同?br />
了个比较深入的认识?br />
Ext的官方开发h员给Z如下的解释:
Ext.Element wraps a lot of functionality around DOM element/node, for example functions like hide, show,
all animation stuff, dimensions getting and setting function and a lot more.
Ext.Element keeps reference to DOM element it is wrapped around in dom property. Once you have an Ext.Element
(e.g. you call Ext.get('some-d') it is an instance of Element class and you can work with it as such.
Now, imagine that you need to hide 1000 DOM nodes, you call 1000 times Ext.get('some-one-of-
1000-id').hide() so you create 1000 instances of Element just to call one function: hide.
Ext.fly is one instance of Ext.Element with "replaceable" DOM node it is wrapped around.
If you call 1000 times Ext.fly('some-one-of-1000-id').hide() you 1000 times replace dom property of one instance of Ext.Element.
Result: higher performance, lower memory usage.
You only need to keep in mind that you cannot keep Element returned by Ext.fly for later use as
it's dom will sooner or later gets replaced by another one.
q段话中Q大致的意思如下:
Ext.Element是Ext对Dom元素的一个强有力装Q它?yu)装了很多方便对dom操作的接?q过Element的dom属?br />
引用对应的dom元素)Q因此每创徏一个Element元素都将消耗不的内存(主要是大量的操作接口消?Q因此如
果创多的Element元素必然D内存占用的剧增和pȝ性能的下降?br />
Ext.get和Ext.flyq回的都是一个Element对象Q但是Ext.getq回的是一个独立的ElementQ拥有自q立的操作接口
装Q可以将其返回g存到变量中,以便以后调用操作{,q样为重用带来了方便。但是它的一个很大缺
点就是内存消耗问题,假如调用Ext.get(id)1000ơ,则会在内存中创徏1000个独立ElementQ其内存占用可想?br />
知。但是很多时候我们可能仅仅只是对该dom元素执行一ơ很单的操作Q如隐藏(hide)Q这样如果每ơ都创徏
一个独立Element攑֜内存中,实在是对内存的巨大浪费,因此当我们在只需要执行一ơ操作或者一个很?br />
的操作时Q采用Ext.get显得很不合理。Ext.fly正是Z解决q个问题而出玎ͼ它通过使每ơ创建的Element?br />
享内存中的一套操作接口来辑ֈ节省内存的效果?/p>
下面来看Ext.fly的实C?我简单加了一些注?Q?br />
1var flyFn = function(){};
2flyFn.prototype = El.prototype;
3var _cls = new flyFn(); //Element的所有操作接口放在_cls?nbsp;
4![]()
5// dom is optional
6El.Flyweight = function(dom){
7this.dom = dom;
8}; //仅包含一个dom属性的Object
9![]()
10El.Flyweight.prototype = _cls; //操作接口复制给Element实例对象
11El.Flyweight.prototype.isFlyweight = true; //标志该Element是flyweight对象
12![]()
13El._flyweights = {}; //flyweight对象~存容器
14![]()
15El.fly = function(el, named){
16named = named || '_global';
17el = Ext.getDom(el); //取得dom对象
18if(!el){
19return null;
20}
21if(!El._flyweights[named]){
22El._flyweights[named] = new El.Flyweight(); //仅在W一ơ调用Ext.fly时创Z个Flyweight对象q缓?nbsp;
23}
24El._flyweights[named].dom = el; //flyweight对象的dom属性指向该el
25return El._flyweights[named];
26};
从上面的代码不难看出Q仅在第一ơ调用Ext.fly时创Z个Flyweight对象Q该对象包含了Element的所有操作接口)q将其缓存,
之后的所有fly操作都只是修改该flyweight对象的dom属性,每次flyq回的结果都是共享的同一个flyweight对象?br /> q样每次flyq回的Element相比Ext.get而言Q减了每次创徏Element时对大量的操作接口的创徏。所有fly的对?br /> 都共享一套Element操作接口Q内存占用自然少了很多,而且执行速度也得C提升。在大量的创建操作中?br /> 果会更加明显?/p>
׃fly的操作原理,我们不能fly的返回结果保存在变量中以侉K用,因ؓ每次fly操作都将可能改变该变量的
dom指向。如下面的代码就是不正确的:
1var my_id = Ext.fly('my_id');
2Ext.fly('another_id'); //此时my_id的dom引用已经变ؓanother_id
3my_id.highlight('FF0000',{ //此处的操作将是对 another_id元素的操?nbsp;
4endColor:'0000FF', duration: 3
5});
在以后用中Q一定要合理的利用Ext.get和Ext.flyQ避免滥用Ext.getq个“重量U?#8221;的方法?br />
转自Qhttp://www.ajaxbbs.net/post/extjs/Ext-fly-and-Ext-get.html