猴子吃桃问题

今天在网上看到这个问题,比较有意思,记下。

猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少?

采取逆向思维的方法,从后往前推断。

分析:

第10天:1个
第9天:4个
第8天:10个
……………….
第1天:X个

也就是说,要知道第一天的个数,就得知道第二天的个数,依此类推,就需要从最后一天即第10天开始计算,也就是倒推,看样子用递归算法比较简单。

private int process(int day) {
      if(day == 10) {
           return 1;
       }
       day = (day > 10 || day < 1) ? 10 : day;//这行为可选,只是为了使示例代码更灵活健壮
       return (process(day + 1) + 1) * 2;
}
或者可以更简短:
private int process(int day) {
       return (day == 10)  ? 1 : (process(day + 1) + 1) * 2;//不考虑day > 10 || day < 1的情况
}

看到也有人不用递归,想想也可以,写了另一段代码:
int amount = 1;//最后一天剩余数
for(int day = 10 ; day > 0 ; day–) {
       amount = (day == 10) ? 1 : (amount + 1) * 2;
}
当然也可以更简短:
int amount = 1;//最后一天剩余数
for(int day = 9 ; day > 0 ; day–) {
       amount = (amount + 1) * 2;
}

对JS中的Date对象扩展日期格式的脚本

/** * 格式化时间,如:1997- 7- 7 8: 8: 8   @returns {String} */

 function formatTime() {
      var year=this.getYear();
      var month=this.getMonth()+1;
      var date=this.getDate();
     var hour=this.getHours();
     var minute=this.getMinutes();
     var second=this.getSeconds();
     return year+ “- “+month+ “- “+date+ ” “+hour+ “: “+minute+ “: “+second;
}

/** * 格式化日期,如:1997- 7- 7 */
function formatDate() {
     var year=this.getYear();
     var month=this.getMonth()+1;
     var date=this.getDate();
     return year+ “- “+month+ “- “+date;
}
Date.prototype.formatTime=formatTime; Date.prototype.formatDate=formatDate;

表格自适应jquery脚本

//判断IE版本并设置表格宽度
if ($.browser.msie && ($.browser.version == “6.0″)
         && $(“#myList”).jqGrid(‘getGridParam’,'autowidth’)) {
        $(window).bind(‘resize’, function() {
                     $(“#myList”).jqGrid(‘setGridWidth’,$(window).width()-36);
         });
}

系统中访问电子地图,关于图片加载的问题

今天上班遇到电子地图中的标记物图标加载问题,用户反映难以忍受。

因为每次查询站点数据时,展现在地图上的站点图标不能及时显示出来,而是每次都需要从服务器端抓取最新的图标,虽然图标较小,只有20多KB,但如果每次查询出来几十个甚至上百个站点,而这些站点又是使用的同一个图标,这样从服务器抓图标则也是一件比较浪费时间及网络带宽的事情,那么当站点一个个显示的时候,它的图标就会像冒泡一样一个个蹦出来,这样就出现了一个问题:很有可能某个站点的图标因为网络问题而一直被卡住始终显示不出来了,也就是说,地图上展现出来的站点数据是不完全整的了,那就会可用户带来极大的误导。

最后,发现招商银行网站的网点搜索和mapabc网站上的搜索页面都不存在这种问题,用httpwatch查看发现,它们的网站在第一次查询数据时会从服务器加载图标,而且相同的图标只会加载一次,而我的系统里面相同的图标却要各自加载一次,这样就大大降低了系统的响应及展现速度。另外,这两个网站在第二次搜索时,不会再次加载前面已展现过的图标,而我的系统却不能。

基于这两点,我感觉自己还有许多东西要摸索,人家的系统性能把握得相当好,速度很快,值得深入研究。今天最后,为了解决用户的问题,终于找到了一个临时解决方案,就是在浏览器中设置缓存,这样图标展现的时候就不会断断续续,而是瞬间一闪,几乎同时展现出来了,原理很简单,就是这些被查询出来过的图标被浏览器缓存起来了,下次再用就不需要向服务器发送请求来获取了,大大提高了响应速度。

当然这只是临时解决方案,说不定哪天用户又把浏览器的设置给改了呢?呵,还得继续改,改成那两个网站一样的效果。。。

模式窗口提交表单时竟然弹出新窗口

今天在工作中,发现我的模式窗口在提交表单数据时总是会弹出一个新窗口,我对JS代码检查了好久,甚至对后台的代码都检查过了,依然弄不明白。后来在网上一查,原来这是模式窗口的问题,要解决它有多种方法:

1.在页面的head标签中,添加<base target=”_self”> 阅读更多…

幻想?理想?

某日,突然想像着,何时会有这么一天,不用为生计发愁,不用操心过多的事情,静静地躺在农村冬日阳光下的摇椅上,摇啊摇,享受着暖暖的日光浴,抑或在冬日寒冷的夜晚,烤着暖暖的碳火,捧着一本书,一本好看的小说,或者一本历史传记,或者中国古代文学经典,或者一本儿时读过的课本,或者其他……细细地品尝,寻找那熟悉而又久违的味道。

或者,炎炎夏日,躺在叽叽喳喳的小树林里的藤椅上,抱着一只温顺的小猫,摇着蒲扇,闭着双眼,听着鸟儿欢快的乐章,任凭斑驳树影在我脸上画着它们的符号,而我依然静静地做着我的白日梦。梦醒之后,捧起一杯手边的清茶,啜一口,看着不远处顽皮的大黄狗追赶调戏慌乱领着一群自己孩子东躲西藏的老母鸡。此时,耳边响起了收音机的声音:“……今年我国应届大学毕业生突破8000万,全国一线城市蜗居群体已累积达到5亿,年龄结构为上世纪的80后至目前的50后不等,此外,其他从本世纪初以来的房奴也已达到可歌可泣的3个亿,而且目前他们已经光荣地把房奴的身份转交给了自己的孙子或重孙……”。听到这里,我会心的笑了,重又闭上了双眼,永远地,不再睁开。

学习Mapabc笔记

新来这里工作后不久,就要开始维护开发一个电子地图模块,使用的是Mapabc的ajax flash版本,功能虽然简单,但却因为对这方面的东西完全不了解,所以在工作中经常因为一些小问题而使自己的工作停滞不前。其中有两个问题应该提一下。

刚开始接手电子地图时,我在自己的环境下死活就是看不到初始化的地图界面,打开地图就是一片空白,对我这个初学者来说,一出马就摔跤,真是搞得灰头土脸。虽然最后把问题锁定在了浏览器,甚至把IE都给重装了,问题依然如故,甚至想狠下心把操作系统给重装了。问了几个同事,无法解决,最后听某个同事说,把IE历史缓存信息全部彻底清空了试试看,结果问题就这样解决了,汗!原来自己真是一只大菜鸟!

另一个问题就是最近几天遇到的。在修改JS脚本的时候,在地图上画MMarker标记的功能突然丢失了,标记在地图上显示不出来了。我百思不得其解,我修改的代码根本就没有涉及到画标记的功能啊,不可能对它有影响啊,更何况我压根就没改几行代码,即便最后把修改的代码还原过来,问题也解决不了。后来静下来想了想,是不是eclipse的调试功能引起的,于是取消调试,让tomcat正常启动,问题果然解决,汗!又解决一眼中钉,程序的问题五花八门,以后看来还得多加小心了!

mysql数据库重新安装的问题

在mysql数据库的使用过程中,一个最常见的问题就是,自己想把别人安装过的mysql卸载,然后重新安装,或者想换一个新的版本,但是却发现mysql安装好后,在配置mysql实例时,最后无法启动实例,提示错误如can not start service for mysql error:0 阅读更多…

公交轶事

今晚坐公交回来时一哥们没零钱,拿着五元钱跟我说,把钱给我,我出两人的,我支支吾吾,他说怎么啦,我这钱又不是假的,但我依然绝然地把我的钱(公交收费2元)塞入了投币箱,他只好另寻他人。
只是这哥们不知,我心虚地卷着的钱只有1块5,你的五元投进去后你本就亏了1块,如果又被我坑了五毛,我于心不忍哇,在此跟那位兄弟说声抱歉!同时也对公交部门说声报歉,我不是故意要逃掉这5毛钱的,只是身上刚好只有1块5的零钱了,再说以前我也像这位哥们一样上车没零钱时慷慨过的,而且以后坐公交没零钱了我还会慷慨的,请包涵一下下,真是不好意思!

独立的java客户端调用远程EJB组件

调用远程EJB组件的场景有很多,比如,从tomcat或resin等纯web容器调用EJB;从纯独立的java客户端(比如swing)等访问EJB组件;从web service程序调用EJB组件等。另外由于使用的JAVA EE应用服务器不同,调用的方式也略有差异。

本文以独立java客户端调用EJB组件的为例,简单总结一下。开发环境如下: 阅读更多…

WP SlimStat