﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-stone2083-随笔分类-misc</title><link>http://www.blogjava.net/stone2083/category/28400.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 23 Sep 2014 20:12:01 GMT</lastBuildDate><pubDate>Tue, 23 Sep 2014 20:12:01 GMT</pubDate><ttl>60</ttl><item><title>RaspCTL V0.1.1 Released</title><link>http://www.blogjava.net/stone2083/archive/2013/01/18/394414.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Fri, 18 Jan 2013 08:59:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2013/01/18/394414.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/394414.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2013/01/18/394414.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/394414.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/394414.html</trackback:ping><description><![CDATA[<span style="color: #222222; font-family: Arial; font-size: 12px; line-height: 18px; ">增加网络视频播放功能:<br />
使用百度视频搜索<br />
支持优酷，迅雷看看，PPS，乐视，CNTV，电影网，风行网视频<br />
</span><br />
<img src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/baidu.png" border="0" alt="" width="300" height="700" /><br /><br />主要功能界面：<br /><img src="http://ww3.sinaimg.cn/large/6bcfb2bejw1e0xtbflfipj.jpg" alt="" /><img src ="http://www.blogjava.net/stone2083/aggbug/394414.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2013-01-18 16:59 <a href="http://www.blogjava.net/stone2083/archive/2013/01/18/394414.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>阿里巴巴B2B招聘高级java开发工程师</title><link>http://www.blogjava.net/stone2083/archive/2011/10/11/360984.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Tue, 11 Oct 2011 09:49:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2011/10/11/360984.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/360984.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2011/10/11/360984.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/360984.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/360984.html</trackback:ping><description><![CDATA[<div><div>我不想列&#8220;精通xxx...熟悉xxx&#8221;，只要求，如果您：</div><div></div><div><strong><br />有2年或以上java实际开发经验 或</strong></div><div><strong>1年以上java实际开发经验但技术能力较强</strong></div><div><br />就能直接联系我:</div><div>1. 直接在此帖留言</div><div>2. Email:stone2083@yahoo.cn</div><div>3. MSN:stone2083@yahoo.cn</div><div></div><div><br />im沟通我们可以谈简历的事情，走内部推荐，1.电面2.来杭面试，流程简单，全程报销路费；</div><div></div><div><br />P.S. 年初，各大公司招聘旺季，阿里巴巴这里呢，我不想说有多好，但也绝对不算差，最实际的，薪酬待遇，各大公司基本保密，但其实业内人士大多心里也有数，秘而不<br />宣；所以，待遇方面不用过多担心，请诸君仔细斟酌，欢迎联系！</div><div></div><div><br />P.S.II 为什么我这招聘帖这么简单呢？其实你懂的，&#8220;精通xxx熟悉xxx&#8221;那只是吓唬小菜的，对&#8220;高级java开发工程师&#8221;而言没有意义，我们需要的只是充分沟通、im沟通+当面沟通。在这个有点糟糕的时代，我们人人都不仅需要money，也需要平台与机遇，更需要个人修为与成长！请给阿里和您自己一个机会，谢谢！</div><div><br /><strong>请管理员手下留情，如果非要删除，请先联系我下。让我能拷贝下这些文字先！谢谢</strong></div></div> <div class="vimiumReset vimiumHUD" style="right: 150px; opacity: 0; display: none; "></div><img src ="http://www.blogjava.net/stone2083/aggbug/360984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2011-10-11 17:49 <a href="http://www.blogjava.net/stone2083/archive/2011/10/11/360984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>科比现身阿里滨江园区</title><link>http://www.blogjava.net/stone2083/archive/2009/09/11/294786.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Fri, 11 Sep 2009 13:03:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2009/09/11/294786.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/294786.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2009/09/11/294786.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/294786.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/294786.html</trackback:ping><description><![CDATA[公园2009年09月11日下午13点30分，科比现身阿里巴巴滨江园区，难得有一次机会，近观科比。<br />
最大的感受：高，黑，精（肉够精）<br />
附上同学拍摄的纪实照片：<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/hpiei859.jpg" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/1wt3c1e1.jpg" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/vt9x9dnx.jpg" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/hny08m81.jpg" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/dz29v1u1.jpg" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/vhhvm8d6.jpg" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/givl4c33.jpg" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/reupq77l.jpg" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/mlgucgk3.jpg" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/au8h6vaa.jpg" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/mcewrwy7.jpg" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/u8qoc63r.jpg" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/rcqru68r.jpg" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/4fxxju94.jpg" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/ocbc2so1.jpg" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/czp4rxeg.jpg" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/qgi7ugn0.jpg" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/xd21r5u0.jpg" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/p1k16xib.jpg" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/9t25ptv0.jpg" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/dpnpks0a.jpg" /><br />

<img src ="http://www.blogjava.net/stone2083/aggbug/294786.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2009-09-11 21:03 <a href="http://www.blogjava.net/stone2083/archive/2009/09/11/294786.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最近加班统计</title><link>http://www.blogjava.net/stone2083/archive/2009/04/15/265816.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Wed, 15 Apr 2009 10:54:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2009/04/15/265816.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/265816.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2009/04/15/265816.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/265816.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/265816.html</trackback:ping><description><![CDATA[最近是进入公司来，遇到的第三次疯狂加班时期，记录如下：<br />
04/09 -- 凌晨1点;<br />
04/10 -- 通宵;<br />
04/11 -- 晚上23点;<br />
04/12 -- 凌晨12点;<br />
04/13 -- 晚上22点;<br />
04/14 -- 晚上23点;<br />
04/15 -- 凌晨3点;<br />
04/16 -- 晚上22点；<br />
04/17 -- 凌晨3点；<br />
04/18 -- 通宵到第二天12点；<br />
<br />
没有参与项目前期设计工作,导致一些接口设计存在问题,项目上线后,疯狂暴露问题.<br />
结果俺成了救火队员:<br />
分析错误(救火之前还不清楚接口逻辑,通过分析错误日志,慢慢了解一些逻辑和实现)<br />
做数据订正;<br />
重新设计新接口实现;<br />
晚上还要留下来监控任务执行情况--光靠SA监控已经不够了;<br />
<br />
上一次连续通宵加班,是由于和美国Verisign合作,做域名项目,由于有时差,只能晚上干活,到也也心甘情愿;<br />
而这次连续加班,完全是被不切实际的"Dead Line"项目整死的.<br />
<br />
忍不住抱怨下 :(<br />
<img src ="http://www.blogjava.net/stone2083/aggbug/265816.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2009-04-15 18:54 <a href="http://www.blogjava.net/stone2083/archive/2009/04/15/265816.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>由数据订正想到的</title><link>http://www.blogjava.net/stone2083/archive/2008/05/31/204937.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Sat, 31 May 2008 13:24:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2008/05/31/204937.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/204937.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2008/05/31/204937.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/204937.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/204937.html</trackback:ping><description><![CDATA[逐渐地，发觉数据订正成为了我工作的一部分；<br />
逐渐地，发觉一天有四个小时的时间在数据订正上的日子越来越多；<br />
逐渐地，发觉一天仅仅只有两个小时投入到编码的日子也频繁起来;<br />
逐渐地，发觉我面向的客户也不仅仅是PD，测试部门，客服、销售、销售支持也成为了我的服务对象。<br />
<br />
我不是做技术支持的，但是客服、销售、销售支持的咨询以及提交数据订正的申请打扰却影响到了<br />
我正常的工作，只能利用晚上加班的时候，去完成一天的编码工作。<br />
为什么会有那么多数据订正发生？<br />
<br />
合理的数据订正，一般发生于下面的两种可能：<br />
1）系统程序存在bug，那么毫无疑问，只能作bug fix工作，然后集中进行一次数据订正操作；<br />
2）业务部门，由于不小心，操作失误等原因，产生错误数据。这种情形发生的比较少，一般由这种原因导致的错误数据，<br />
我这边收到销售支持提交的数据订正申请，都会马上协助完成订正工作。<br />
<br />
但是，现在越来越多的项目，开发时间严重被压缩，在项目过程中，<br />
1）业务逻辑本身就考虑不周全，没有考虑和牵连系统的关系，导致需求逻辑就存在问题；<br />
2）为了减少开发人日，把本来该交给系统实现的需求，却考虑人工来完成，增加了人为误操作的发生概率；<br />
3）为了减少开发成本，对接口行为不做逻辑验证处理，而接口错误参数，往往增加了系统错误数据的产生；<br />
4）开发时间紧急，开发人员在不熟悉原有系统的基础上，就进行新功能的开发；过于过程式的开发；<br />
系统、代码设计的时间过少；不敢做重够，等等，导致代码可读性很差，维护性不强，易出bug。<br />
。。。。。。<br />
<br />
由这些原因而造成的bug，形成的错误数据，我厌恶为其做数据订正：<br />
不在源头做控制，一旦出了问题，才考虑到手工数据订正来暂时性的解决问题，这绝对不是一个好的项目团队的做法。<br />
<br />
我们一直在宣称要做百年的企业，但是我们目前的系统，又能维持几年呢？<br />
<br />
<img src ="http://www.blogjava.net/stone2083/aggbug/204937.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2008-05-31 21:24 <a href="http://www.blogjava.net/stone2083/archive/2008/05/31/204937.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第二届网侠大会随感</title><link>http://www.blogjava.net/stone2083/archive/2008/05/24/202615.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Sat, 24 May 2008 10:37:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2008/05/24/202615.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/202615.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2008/05/24/202615.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/202615.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/202615.html</trackback:ping><description><![CDATA[今天参加了<a href="http://info.china.alibaba.com/html/wx/index.html">第二届阿里巴巴网络侠客行大会</a>。<br />
由于最近加班比较多，早上贪睡不起，错过了侠客行上午场的会议，据说林斌—谷歌中国工程院副院长在讲话中介绍了google的一些技术，没听颇为可惜。<br />
<br />
下午场的会议，我选择是&#8220;<span style="color: #2000ff;">分会场三 开放服务框架/Open Service framework</span>&#8221;<br />
<br />
<span style="color: #2000ff;">
第一场会议是林昊—淘宝网平台架构师带来的OSGI分享。</span>
<br />
OSGI确实是一个很好的概念，很好的实现了模块动态化管理。试想一下，以后软件的功能可以像硬件一样，动态化插拔，那是多爽的一件事情。<br />
Eclipse3版本，就是base on osgi的一个成功案例，用过eclipse开发的同学，一定对eclipse的plugin管理机制很心动，可以动态增加，删除插件。Eeclipse本身只提供了一个平台，功能都可以通过插件的方式增加。并且可以按照开发者的需求，增加插件。<br />
据说jdk7版本，就会在语言级别上支持osgi，这则消息也是振奋人心。----目前jdk只有class（类），package（包）的概念，却没有module（模块）的概念，所谓模块化开发，仅仅是人工分割package的方式来实现。<br />
概念是好，但是针对目前以有的功能，如何不伤筋动骨的完成base on osgi或者run on osgi，仍然是一个很大的一个问题。这也是很多企业对osgi仅仅停留在观望态度上的一个原因。<br />
<br />
<span style="color: #2000ff;">
第二场会议是黄柳青—普元首席科学家、CTO分享的SCA--感觉他老人家英语说得比中文还好。</span>
<br />
之前，我对SCA没有任何的了解，甚至连概念都没有听过。正好趁此分享机会，对SCA做个概念性的了解。<br />
SCA（Service Component Architecture）<br />
这玩意，究其本质，其实是对代码层面做了可视化组件的封装。他的概念是，把每个逻辑都看成是一个Component（组件/构件），然后根据不同的业务需要，去配置不同的Component，以及component之间的业务流。<br />
其实，这个概念是很好的，尤其结合他天生的搭档OSGI，可以使得所有的开发者眼前一亮。<br />
试想一下，以后有个系统（Base on OSGI），业务流程中，其中有个业务需求发生了变化，那么只需要开发者开发一个新的component，并且把原先的component动态uninstall，并且把新的component动态install，系统可以在运行期，就完成需求的变动。多爽。<br />
概念是好，但是是否能流行，还需要时间的考验。<br />
<br />
第三场会议是 袁红岗—金蝶中间件首席架构师 介绍
OperaMask，只是自己做这块内容没有兴趣，就换了会场，去了分<span style="color: #2000ff;">会场一 开放平台/Open Platform</span>。<br />
<span style="color: #2000ff;"><br />
第三场会议赵进—/阿里软件首席架构师 介绍
Alisoft SAAS Platform<br />
</span>这小子年纪轻轻就当上了阿里软件的首席架构师，只有26岁，对他充满了敬意。努力向他学习。<br />
<br />
这场分享，感觉只是很肤浅的介绍了阿里软件saas的平台。过程中更多的是讲了saas的概念和阿里软件saas的一些模式，没有涉及到技术细节层面的内容，比较失望。<br />
SAAS的概念近年来逐渐流行起来。如何构建SAAS平台系统，是我最关注的点。比如：<br />
如何发布开放API接口，<br />
如何管理开放API接口，<br />
如何对开放API进行测试，<br />
如何确保开放API接口的安全性，<br />
API接口采用什么技术调用，SAAS Platform是否统一规范对API的调用，采用什么方式传输数据，等等。<br />
这些细节，都没有在这次分享中涉及到，太失望了。<br />
<br />
整体来说，这次网络侠客行，还是让自己增长了不少见识，学到了不少技术。<br />
希望阿里巴巴在接下去的几届中，能越办越好，更希望在技术交流会上，能出现更多国内技术的分享，期待国内软件业的发展 ：）<br />
<img src ="http://www.blogjava.net/stone2083/aggbug/202615.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2008-05-24 18:37 <a href="http://www.blogjava.net/stone2083/archive/2008/05/24/202615.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>firefox优化参数</title><link>http://www.blogjava.net/stone2083/archive/2008/03/23/188022.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Sun, 23 Mar 2008 05:57:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2008/03/23/188022.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/188022.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2008/03/23/188022.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/188022.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/188022.html</trackback:ping><description><![CDATA[firefox是我首选的浏览器，但是启动速度实在不敢恭维。<br />
<br />
从网上找了一些文章，修改了几个参数。<br />
<br />
前提：地址栏输入 about:config 进入参数配置页面<br />
<br />
首选项名称：config.trim_on_minimize，<br />
类型：布尔<br />
键值：true&nbsp; <br />
作用：最小化时释放内存<br />
备注：据说只在windows下有效（怪不得，我在linux下确实感觉没什么效果）<br />
<br />
首选项名称：browser.sessionhistory.max_total_viewers<br />
类型：整数 <br />
键值：0&nbsp; （当然，你也可以设置成你需要缓存的页面数）<br />
作用：前进／后退 功能，用于缓存页面数量<br />
<br />
首选项名称：network.http.pipelining<br />
类型：布尔<br />
键值：true<br />
作用：在http连接中，使用pipelining功能。据说能加速浏览速度<br />
<br />
首选项名称：network.http.pipelining.maxrequests<br />
类型：整数<br />
键值：8 （据说上限是8）<br />
作用：是一个实验性功能，加速浏览网站的速度。需要站点的支持。<br />
<br />
首选项名称：nglayout.initialpaint.delay<br />
类型：整数<br />
键值：100 （默认值是250）单位是毫秒<br />
作用：ff收到response后等待n毫秒，进行页面渲染<br />
<br />
首选项名称：network.dns.disableIPv6<br />
类型：布尔<br />
键值：true<br />
作用：禁用ip6功能（好像跟优化没什么关系）<br />
<br />
首选项名称：browser.tabs.loadDivertedInBackground<br />
类型：布尔<br />
键值：true<br />
作用：打开新tab时，停留在当前页面（跟优化没关系，只是符合我的浏览习惯）<br />
<br />
关于这些首选项的意义，具体可以访问：http://kb.mozillazine.org/network.http.pipelining 得到相应参数的意义。<br />
<br />
最后，做个广告，效果还是蛮明显的。推荐使用 ：）<br />
<br />
<img src ="http://www.blogjava.net/stone2083/aggbug/188022.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2008-03-23 13:57 <a href="http://www.blogjava.net/stone2083/archive/2008/03/23/188022.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>资源如何避免多线程下载</title><link>http://www.blogjava.net/stone2083/archive/2008/03/17/186870.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Mon, 17 Mar 2008 13:58:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2008/03/17/186870.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/186870.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2008/03/17/186870.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/186870.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/186870.html</trackback:ping><description><![CDATA[今天在一次会议中，有朋友问我，如何避免资源被迅雷等工具多线程下载？<br />
<br />
确实，一些中小企业站点，尤其是个人站点，由于没有过多资金，服务器承受不了大的压力，站点提供的资源，一旦被迅雷等多线程工具下载，<br />
对服务器的压力还是蛮客观的。<br />
<br />
那么有什么办法避免多线程下载呢？其实最简单的办法，就是服务端根本就不要提供Content-Length值。试想一下，如果多线程下载工具得不到文件总大小值，如何分配去分配每个线程需要下载的量呢？不得已，只能通过单线程下载了。<br />
<br />
以http下载为例，我写了一个提供下载的servlet，由于不返回Content-Length值（只返回了<span style="color: #000000;">ContentType值</span>），这个serlvet返回的流，只能单线程下载。<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Download&nbsp;</span><span style="color: #0000ff;">extends</span><span style="color: #000000;">&nbsp;HttpServlet&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">long</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;serialVersionUID&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">8401962046132204450L</span><span style="color: #000000;">;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;FILE_PATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">/home/jones/tmp/sample.zip</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;service(HttpServletRequest&nbsp;req,&nbsp;HttpServletResponse&nbsp;resp)&nbsp;</span><span style="color: #0000ff;">throws</span><span style="color: #000000;">&nbsp;ServletException,&nbsp;IOException&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resp.setContentType(</span><span style="color: #000000;">"</span><span style="color: #000000;">application/octet-stream</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStream&nbsp;out&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;resp.getOutputStream();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileInputStream&nbsp;in&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileInputStream(FILE_PATH);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;readLength&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;cache&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[</span><span style="color: #000000;">1024</span><span style="color: #000000;">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;((readLength&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;in.read(cache))&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(cache,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;readLength);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in.close();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.flush();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}</span></div>
<br />
同样的道理，只要配置服务器不要返回Content-Length值，那么就可以有效避免多线程下载了。<br />
<br />
<img src ="http://www.blogjava.net/stone2083/aggbug/186870.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2008-03-17 21:58 <a href="http://www.blogjava.net/stone2083/archive/2008/03/17/186870.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>页面端数据cache的一种实现思路</title><link>http://www.blogjava.net/stone2083/archive/2008/03/04/183789.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Tue, 04 Mar 2008 13:30:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2008/03/04/183789.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/183789.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2008/03/04/183789.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/183789.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/183789.html</trackback:ping><description><![CDATA[今天在做项目的时候，遇到这样一个需求，这个需求也比较常见:<br />
在显示的一组list版面，当用户鼠标移动到标题的时候，出现tips提示，里面显示当前栏一些详细信息。<br />
<br />
难点如下：<br />
1）由于list有多个标题（比如20个），不可能在一个request中，把所有的详细信息取出来put到页面上。所以只能通过ajax异步请求的方式取的数据。<br />
2）取详细信息比较耗性能，需要走一次搜索引擎，走一次数据库多表查询进行结果统计。虽然取的过程比较耗服务器性能，但是取的结果集对象是很小的。<br />
3）单条详细信息load次数只跟个别会员有关，比如，只有a会员的list页面需要load 标题A的详细信息，而且当a用户多次将鼠标移到该标题上，会多次load数据。反观站点整体访问中，其他会员几乎不用load 标题A的信息。所以，把这些详细信息放到全局cache中，比如memcached中，命中率也会很低。不值得。（放session就更别提了，session不是用来放这些数据的：比如某个集群环境中，是使用session复制的机制；比如session过期，短时间内－－甚至比较长的时间内，session依旧存在内存中，等等。。。）<br />
<br />
那么如何来解决这个问题呢？<br />
正当想说服需求方放弃这个需求时，出现了一个灵感，可以把数据cache在html页面上。思路如下：<br />
<br />
1、在html页面上放n个input元素：&lt;input id="list1" type="hidden" value="" /&gt;。视为cache对象；<br />
2、首次取详细信息，通过ajax异步访问服务端，将得到的数据存放到相应的input元素中，并且在指定的div上显示详细信息；<br />
3、之后，取同内容的详细信息，只要从相应的input元素中取得即可，并显示在指定的div上。<br />
<br />
通过这样处理，可以避免用户多次向服务端取相同的信息。当然这样处理，不能防止恶意用户的访问，但是能满足80％用户的正常流程，还是值得这么做的。<br />
<br />
总结一下，符合这种cache的应用场景：<br />
1）全局cache命中率低<br />
2）取数据过程耗性能，取得的结果集本身非常小。<br />
3）在某种场景下，需要多次重复取数据<br />
<br />
如果不满足其中一条，那么这种cache思路，将毫无价值。<br />
<br />
文中所描述的，仅仅是一种cache的实现思路，并不是一种技术。<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/stone2083/aggbug/183789.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2008-03-04 21:30 <a href="http://www.blogjava.net/stone2083/archive/2008/03/04/183789.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个蛮有意思的flash游戏</title><link>http://www.blogjava.net/stone2083/archive/2007/12/26/170748.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Wed, 26 Dec 2007 14:43:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2007/12/26/170748.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/170748.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2007/12/26/170748.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/170748.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/170748.html</trackback:ping><description><![CDATA[一个蛮有意思的flash游戏,有兴趣的朋友不妨去玩下.<br />
<a href="http://xyx.duowan.com/vs/jingdian/058/058.swf">小兔奔月(自己想的名字,希望没有侵犯作者的版权)</a><br />
<br />
我的战绩：<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/misc/r.png" /><br />
<img src ="http://www.blogjava.net/stone2083/aggbug/170748.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2007-12-26 22:43 <a href="http://www.blogjava.net/stone2083/archive/2007/12/26/170748.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>