在信号不好的时候,好像它需要再加一条天线,我坐在电脑前,没有信号连接不上,但当自己站起来或者把手举起来,就有两格信号了。是不是很神奇呀?
现在的信号已经好了很多并且稳定了,写下来让遇到相同情况的网友参考一下。
我去买了一要USB延长线,再把无线网卡接在延长线上,无线宽带就稳定的保持有3格信号了,还真不错,因此非常高兴,就更新一篇日志吧。
在此提醒大家,无线上网卡对USB延长线是有要求的,之前我买了一要比较便宜的USB延长线,银白色的,把上网卡接上,在我的电脑里看,一会检测到上网卡,一会儿又断开,断断续续的,根本无法上网。你可能会以为是那要延长线有问题,但它接上U盘是没有这个问题的,反而很稳定。后来到网上查了一下,发现对于无线上网卡的USB延长线,要先用线粗一点,不要太长,这样才能保证上网卡必须的电流。
所以,即使所在的地方3G信号不好,也可以通过使用延长线来改善的,使用延长线也不一定要把上网卡放得高些,平着放也无所谓的。至少有了这,不用我自己站起来当天线了,呵呵。
本文网址:http://www.kgblog.net/2010/03/6/wireless-network-usb.html
]]>当然,我不想讨论胡歌的演技与搞笑水平,也没这个必要。我只是想了一下那些与穿越时光相关的,知道了最终结果之后,再重新去经历过去的事情后可能发生的事。
因为主角一般都不能是局外人的眼光去观看事情的发展,眼看着形势正向着历史书中记载的那样前进,无法无动于衷,就会试图去作改变,但一般都会失败,这些例子有很多。如《寻秦记》,《神话》,《大话西游》,《我和僵尸有个约会》等等。
我们假设知道了结果的主角不去参与其中的斗争,也不会泄露结果给当局者,那当然不会有影响。这样自己就充当了旁观者的角色,他可以一直观看故事的发展,就是所谓的旁观者清。但当他自己试图作改变的时候,就置身其中,以为自己的加入会影响了故事的结果,但因为自己已经成为了当局者,就会忽略了其它因为自己的加入而带来的矛盾。这些矛盾相互制约,造成了最后结果的一致性。
这样的情节似乎已经很老套了,但我看得还是津津有味,电视剧编剧正好迎合了这种需求。其实编剧者也没有办法,总不能把历史都改变了,那就怎么也说不过去。
最后,想想为什么观众会喜欢这样的不能改变历史的故事呢,就像我这样?我觉得,那是对自己曾经经历过的事的原谅,即使自己曾经不够努力,或者做得不好,也可以这样安慰自己,说世上没有后悔药,即使有后悔药再来经历一次,结果也会是一样,不就像电视剧中的那样吗,那些已成为历史的东西没有人能够改变。
其实这样真的有点道理,即使我们在某个时间的作法真的再来一次,没有按当初那样做,就真的能改变现在的状况吗?我看也未必,量变能引起质变,但这样的量变是需要累积的,就像数学中的求积分那样,只改变一些有限个值成为奇点,积分是不变的。又扯远了。
本文网址:http://www.kgblog.net/2010/01/31/changeless-history.html
]]>用Jython来做大整数乘法相当轻松,不用做任何额外的处理,只需按int的做法去计算就行了。因此我就想,在Java环境里用Jython来做大整数计算会不会比纯用Java的BigInteger来计算还快呢?所以就有了下面的实验。
计算1至n的阶乘的和,这里取n=2000。
这里主要比较Jython和Java的计算性能,就不把初始化Jython解释器的时间计算在内了。
代码:
/*求1至n的阶乘的和 * */ import java.math.BigInteger; import org.python.core.PyObject; import org.python.util.PythonInterpreter;
public class BigMulti { public static PythonInterpreter interp = new PythonInterpreter();
public static void sumOfJava(int n){ BigInteger result = new BigInteger("0"); for( int i=1;i<=n;++i){ BigInteger product = new BigInteger("1"); /*此处代码仅用于测试BigInteger的乘法性能,故不作优化*/ for( int k=1;k<=i;++k){ product = product.multiply( new BigInteger(String.valueOf(k)) ); } result = result.add(product); } System.out.println("Java结果: "+ result.toString() ); }
public static void sumOfJython(int n){ interp.exec("def facto(n):\n return reduce(lambda x,y:x*y,range(1,n+1))"); interp.set("n", n ); interp.exec("b = sum( [ facto(i) for i in range(1,n+1) ] )"); PyObject x = interp.get("b"); //x可能是PyInteger或者是PyLong System.out.println("Jython结果: " + x); }
public static void main(String[] argv){ int n = 2000; long t1 = System.currentTimeMillis(); sumOfJava(n); long t2 = System.currentTimeMillis(); sumOfJython(n); long t3 = System.currentTimeMillis();
System.out.println("Java用时:"+ (t2-t1)); System.out.println("Jython用时:"+ (t3-t2));
} }
|
运行结果(注:要运行以上程序,需要在工程中添加jython的包jython.jar,这个包可以在http://www.jython.org/上找到并下载):
Java结果: 33179340598957383367370343958934763***(省略) Jython结果: 33179340598957383367370343958934763***(省略) Java用时:17734 Jython用时:18750 |
本以为Jython的计算过程会比纯Java的还快点,但是没有。毕竟Jython的代码要被jythonc编译为jython字节码再被java虚拟机执行的,经过这两重虚拟机后即使算法有一点优势都体现不出来了。而且我还怀疑,Jython里的大整数对象是以BigInteger为基础的,如果是那样的话,就不可能超越同样的Java代码的。
本文网址:http://www.kgblog.net/2010/01/11/jython-big-integer.html
]]>其实,我那毕业论文的水平连个优秀毕业论文都评不上,怎么也没想到基于这个二分聚类的半监督学习的想法的论文也可以发表在ICACC上,估计导师对那方向做了深入的研究,搞了半年,终于能拿出手了,怎么说我也算是作者之一,就在此炫耀一下吧。
以下是邮件内容啦。
Dear Xiaolan Liu,Zhifeng Hao,Jingao Liu,Zhiyong Lin
Paper ID 374
Paper Title Fast Semi-supervised Classification Based on Bisecting Clustering
The review process for The on Advanced Co2nd IEEE International Conference mputer
Control (ICACC 2010) has been completed. The conference received more than 1900
submissions from more than 20 countries including Japan, Britain, Egypt, Iran, Malaysia,
Korea, Jordan, Brazil, Thailand, USA, Myanmar, Sri Lanka, Botswana, India by Email
and Electronic Submission System, which were reviewed by international experts, and
about 630 papers have been selected for presentation. Based on the recommendations of
the reviewers and the Technical Program Committee, we are pleased to inform you that
your paper identified above has been accepted for presentation. You are cordially invited
to present the paper at ICACC 2010 to be held on 27 -29, March 2010, Shenyang, China.
Attached, please find the Acceptance of Notification and Review Form.This notification
email serves as our formal
acceptance of your paper as well as an invitation to present your work at ICACC 2010.
Please note that this email will be sent to your co-author(s) (if any), as well.
Finally, I would like to further extend our congratulations to you and we are looking forward
to meeting you in Shenyang!
Best regards,
Prof. Xu Huaiyu
Chairman of ICACC 2010
一开始我们可能会去模拟整个过程,我们会用一个列表来保存现有的数,当然我们不会愚蠢到用个记数器从1累加至M再把那个数去掉,我们会直接把每N%M个数直接去掉:(以下代码用python描述)
def force(n,m):
l = range(1,n+1)
while len(l)>1:
ix = (m-1) % len(l)
p = l[ ix ]
newl = []
dif = 1
while len(newl) != len(l)-1:
newl.append( l[ (ix + dif)%len(l) ] )
dif += 1
l = newl
return l[0]
学了递归之后,我们隐约的感觉到,剔除了第一个人后的子问题似乎跟原问题极度的相似,刚开始的问题的问题解记为f(n,m),剔除了第一个人后的子问题的解为f(n-1,m),我们只要把f(n,m)跟f(n-1,m)的递推关系找出来,就能很轻松的写出一个递归程序了。我们不妨假设m<n-1,刚开始的数列表是这样的:
0,1,2,...,(m-1),m,...,(n-1)
每一轮之后,数就变成了:
m,(m+1),(m+2),...(n-1),0,1...
这个子问题的解为f(n-1,m),不愿为原来的编号就是( f(n-1,m)+m )%n了,也就是:
f(n,m) = (f(n-1,m)+m)%n
因此我们得到了一个递归的解法:
def jesf_rec(n,m):
if (n==1):
return 0
else:
return (jesf_rec(n-1,m)+m)%n
递归的解法很容易看懂,但如果n很大至10^8,那程序很容易会超出最大的递归层数,而程序无法完成,下面就把这种尾递归转为非递归的程序:
def jesf(n,m):
result = 0
for i in range(1,n+1):
result = ( result + m ) % i
return result
这样一层层的慢慢想下来,就很容易理解了,但如果一开始就给了第3种解法,就没那么容易理解了。需要好好琢磨一下才行的。傻瓜可能会继续想,有没有更快的方法呢?通过f(n,m) = (f(n-1,m)+m)%n有没有办法把f(n,m)解出来呢,但由于递推式里对递推变量n做了求模运算,找不到突破口...
]]>随着组织者越来越有经验,我们在第 2、3 期报名的时候,让参会者填上自己的 twitter、blog和兴趣方向,为的就是让大家方便地找到与自己志同道合的朋友,今天推出第一个合集,祝大家找到新朋友。 注:twitter 账号连接到 twitterkr.com,这是一个在墙内也可以访问的 twitter。 以后这个合集每两期汇总公布一次。BOYPT http://apt-blog.net linux/unix, C/C++, python, nginx/lighttpd, network programing, javascript arbow arbow.javaeye.com linux/unix, java laiyonghao blog.laiyonghao.com linux/unix, C/C++, python, AI lidaobing blog.lidaobing.info linux/unix, python, java, network programing blog.syncbus.net linux/unix, php, python, k-v db, nginx/lighttpd, network programing, search hi.baidu.com/acidraincn linux/unix, python, java, apache, nginx/lighttpd, AI caslt hi.baidu.com/aliasmic C# faiinlove http://baicaier.javaeye.com php, java, javascript benky52 http://benky52.cn linux/unix, python, ruby, apache, nginx/lighttpd, network programing, javascript http://blog.csdn.net/lcf123 linux/unix, php, C/C++ qichangxing http://blog.hi0791.com python ruitao http://codepy.net linux/unix, php, C/C++, python http://dengyin2000.javaeye.com linux/unix, python, java, nginx/lighttpd, AI, network programing iwinux http://ether.appspot.com linux/unix, python, AI, network programing, javascript jeff_jie http://fallever.com linux/unix, C/C++, python, k-v db, apache, nginx/lighttpd, network programing, javascript http://hi.baidu.com/elody linux/unix, python http://ipinko.cnblogs.com windows, java, apache, IIS, javascript, C# http://kasicass.blog.163.com http://keeng2008.appspot.com linux/unix, python, java, AI http://leung.cnblogs.com/ linux/unix, windows, python, apache, nginx/lighttpd, IIS, javascript, .net http://mao2.com linux/unix, python, javascript procyber http://procyber.javaeye.com/ kyhpudding http://randomtaste.appspot.com/ linux/unix, php, python, k-v db, nginx/lighttpd, network programing, javascript reniaL http://renial.cublog.cn/ linux/unix, python, java, apache, javascript xmpp http://timyang.net linux/unix, python, java, k-v db, network programing http://twitter.com/jaxiinofea linux/unix, C/C++, python, e-r db, k-v db, apache, nginx/lighttpd, AI, network programing http://user.qzone.qq.com/292293704/ linux/unix, C/C++, python, java, AI, network programing, javascript sparkle_zeng http://weavesky.com linux/unix, python, java, ruby, k-v db, nginx/lighttpd, network programing Vonbo http://web2.0coder.me linux/unix, C/C++, python, apache, nginx/lighttpd, AI, network programing, javascript http://willko.javaeye.com linux/unix, php, python, nginx/lighttpd, javascript tukushui http://www.05wl.com linux/unix, windows, php, java, apache, nginx/lighttpd, IIS, AI, network programing, javascript, SEO billyjr http://www.billyjr.cn/ php, C/C++, ruby, apache, network programing, javascript http://www.cnblogs.com/genson cngump http://www.cngump.com linux/unix, php, python, java tacodcom http://www.codeo4.cn linux/unix, php, python, nginx/lighttpd, android http://www.cppblog.com/life02/ windows, C/C++, directX/openGL, AI http://www.hdwong.com linux/unix, php, apache, nginx/lighttpd http://www.kudelabs.com linux/unix, ruby, apache, javascript mikespook http://www.mikespook.com linux/unix, php, C/C++, python, java, k-v db, apache, nginx/lighttpd, AI, network programing vingel http://www.vingel.com linux/unix, php, python, nginx/lighttpd, javascript zhuzhaoyuan http://www.zhuzhaoyuan.com linux/unix, C/C++, k-v db, nginx/lighttpd, network programing halzhang http://zhg-grj.spaces.live.com C/C++, java, ruby, apache, javascript, RIA zhxing http://zhxing.javaeye.com/ java zoomq http://zoomquiet.org python, nginx/lighttpd, erlang/haskell dengjiuhong tiantiantianlan.com linux/unix, php, java abusoft www.abublog.info linux/unix, python, java, k-v db, apache, nginx/lighttpd, javascript www.cnblogs.com/cxblogs IIS, .net www.hot-snow.cn linux/unix, nginx/lighttpd, network programing, perl www.KeeShop.com linux/unix, php, python, java, apache, nginx/lighttpd, javascript www.kooxo.com linux/unix, php, apache www.linuxboy.cn linux/unix, apache, nginx/lighttpd, other hoorace www.longtask.com python, java, apache yeyupl www.luohuizhu.cn linux/unix, php, python, k-v db, apache, nginx/lighttpd, directX/openGL, AI, network programing, javascript, FLEX qingliangcn www.nd21.com linux/unix, php, C/C++, AI, network programing, javascript, erlang icalcifer www.solesky.com linux/unix, php, apache, javascript xlambda zsuxqm.blog.163.com linux/unix, C/C++, python, e-r db, k-v db, apache, nginx/lighttpd, javascript iijimaai windows, C/C++, python yinhm linux/unix, php, python, ruby, k-v db _linqing windows, php, e-r db, k-v db, IIS, network programing cxxcn 移动应用相关 fzuslide linux/unix, python, nginx/lighttpd, AI, javascript heyfluke linux/unix, windows, C/C++, python, java, k-v db, nginx/lighttpd, directX/openGL, AI, network programing, javascript joshfeng linux/unix, php, C/C++, k-v db, nginx/lighttpd, network programing junlinzhang linux/unix, windows, C/C++ KidStargazer linux/unix, java, apache, nginx/lighttpd, javascript kylexlau linux/unix, python, ruby, nginx/lighttpd leondu linux/unix, python, java, ruby, apache, nginx/lighttpd, javascript lihao677 linux/unix, php, java, javascript littlepxy ruby, QA tech in Web lonsonlo php, C/C++, java noyy linux/unix, python sheep426 linux/unix, windows, php, python, AI, network programing, javascript sosokk windows, php, python, java, IIS Vincent_Xiaojie IIS, javascript, .NET xavier linux/unix, windows, php, apache, nginx/lighttpd, IIS
本文网址:http://www.kgblog.net/2009/11/30/programming-tech-party.html
]]>最近好忙,所以都没时间打理博客了,并且ghs的最后一个ip都壮烈牺牲,搞得没心情啊。
不管怎样,还是发发牢骚吧。
广州的交通实在是不敢恭维,本来就不堪一击的交通状况,正在搞一个叫什么BRT的工程,在公路中间弄一条人行道出来,很是奇怪。记得有一天星期一,天气下雨了,广州交通直接瘫痪,等公交车的人站得到处都是,其实我怀疑这交通瘫痪的原因是天气呢,还是在公交车站等公交的人们呢,或者二者都有吧。我也在挤公交的行列,上了很挤的公交车,大家都在挤,更严重的是每人还有一把湿得正在滴水的伞,场面非常壮观。
坐公交车多了,就会想到些题目,现在出个关于公交车站的题目,有兴趣的读者可以想一下,我也只是想到题目,还没有做出来的。如果读者做出来了,欢迎秀一秀你的方案,估算一下时间复杂度什么的,呵呵。
***********************以下是题目
经过某个公交车站A的班车有L条线,不妨设此车站A都是这些路线的源点,另外还有S个公交站点,L条线分别经过某些站点并在预设好的站点停下,每条路线不会循环。现在A站的公交车太多了,要把A站的分成几个小站,就像岗顶1站,岗顶2站这样,假设现在要将A站分为n个站,其它的S个公交站点不分小站。
但为了乘客方便,要尽量使去某个站的乘客只在一个站里等车。例如,某个乘客现在在A站,他要前往B站,但A站在分为A1,A2,A3,其中A1有2条线程到达B,A2有5条线程到达B,A3有4条线程到达B,这样乘客应该就在A2站等车,其它的2+4条线的站就称为对于B站无用的线路。
现在要求你算出一个case中如何安排A站的公交车在n个小站中分布,能够使无用线路最小,输出这个最小值。无用线路指对于另外的S个公交站点的每一个站的无用线路数的求和。
输入:一行有3个数,L表示公交线路,S表示公交站点,n表示把A站分为的小站数目。接下有L行,每一行表示一条公交经过的站点,这些公交车都是从A站出发的,站点用1,2,...,S表示。
L S n
L行,每一行是公交路线
例如:
5 10 3
1 6 7 2 9
3 5 1 8 6 10 7
1 2 5 4 7 6
5 1 3 6 4
9 7 8 10
输出:如何安排A站的公交车在n个小站中分布,能够使无用线路最小,输出这个最小值。
(题目来源:Keengle's Blog www.kgblog.net或者keeng2008.appspot.com )
]]>在网上很多网站都能找到上面这条语句,然而在很多情况下,查询出了指定页面的内容下,可能还要查询出总记录的条数,因此可能还有写一条语句来查询:
select count(*) from ( select rownumber() over() as rownum, ### from ### where ### ) tempT
但我就遇到了一个情况,在嵌套里面层的sql运行时间比较长,这样查询出指定页面的记录还要查一次count(*)就进行了2次查询,时间长啊。因此我想,如果一次查询就能查询出指定页面和总记录数就好了,也许能省些时间。
最后,经过我的尝试,可以这样解决:
with tempT as (
select rownumber() over() as rownum, ### from ### where ###
) select tempT.* from tempT where rownum > ### and rownum <= ###
or rownum = ( select count(*) from tempT )
也就是在查询的时候,顺便把最后一行都查出来了,最后一行的rownum就是该sql查询结果的总数了。当然,查询结果就有可能比一个页面大小多了一条记录了,要在程序中判断,如果查询结果的记录数大于页面大小,就把最后一条记录删掉就行了。
现在就有3种方法来进行把sql的查询结果分页了:
1)用sql api,标准方法,通用,依赖api
2)用外嵌一层查询加一次count(*)查询
3)用with tempT as多查询一条记录,由程序处理
比较了一下时间,在我使用的一个测试例子里,方法1使用了2014ms,方法2使用了2235ms,方法3使用了2150ms,看来折腾了这么久,也没能节省时间,反而时间更长,不知道能不能省点内存,那样的话还有点安慰。看来,要写出更酷的代码,是要付出代价的,谁叫db2这么难搞呢,边个分页功能都没有。唉,突然觉得,我玩的不是sql。
国庆放了8天假,又是放松的时候了,老王借给我一本书《重构--改善既有代码的设计》,我带了这本书,回家去了。
我现在就是在别人代码的基础上工作的,现在的代码不知出自多少个作者,有好几种风格的代码,所以这本书也正合我的需求。现在假期已接近尾声了,书也看得差不多了,我的意思的就是这本书也可以还给老王了。可能就有朋友会问,这本书你已经看完了?
其实,我有很多书都没看完过,我看书很多都是看了三分之一或者二分之一就晾在那里了,比如《C++ primer》《算法导论》《Java编程思想》《python源码剖析》等等。以《python源码剖析》为例,我曾经一个假期闭关学习此书,但看到二分之一的地方遇到了困难,在前面的内建对象,虚拟机框架都比较好理解,但到了函数机制、类机制以及后面的高级话题就很难理解了,看的时候要经常返工,也就是要返回一章之前重新再看一遍,这样重复数次多了就发现效率太低,干脆暂时放在一边,等过一段时间经验多一些也许能更轻松的理解它的内容。
至于《重构》,我的肤浅理解就是让代码更有利于人来阅读和修改,尽量能做到松耦合、高内聚。其实,像我这些没经验的coder,经常做的动作就是拷贝代码,要做一个与现有功能类似的模块,就是拷一大段代码稍做修改,竟然可以跑起来就很高兴。后来拷得多了就发现可以把通用的代码抽出来共用,面向对象给复用带来了很多容易实现方式与结构。
我发现,很多讲述重构或者设计模式之类的书都多都是来用应付变化的,简单的讲就是如果有变化,你应该只修改一个地方,而其它地方可以一点都不动或者很少改动,就能正常使用。
还是那一句话说得好,没有一个项目经理愿意听到程序员说出这样的话,我们要停下来用三个月来整理现在的代码。重构不应该是一项独立的任务,它应该包含在日常的工作当中,就像算法的运用,没有人要求你每天在想某个算法(搞研究的除外),只需要在平常的工作中各个模块中尽量做到优化,减少局部的复杂度,无论是时间还是空间。
还是一个就是,看很多国外的书都发现,书中会把一些很小的需要注意的东西都写出来,很简单的数学公式都有详细的证明,在稍微有些经验的读者都觉得这是不必要的,国外的书很多都非常厚,也许有点这个因素吧。唉,各人看法不同,细节决定成败啊。
]]>周六跟着大伙到番禺大夫山去烧烤了。我们这伙人虽然不是很多,但却我想象的多了很多,租了3个灶都挤得满满的。
其实我不喜欢吃烧烤的,今天看着别人烤那鸡腿,一边刷点调味油,那油就有一两滴掉到下面的火炭里,然后就有很多的炭灰漂了上来,跟着调味料混在一起,然后烧烤的人继续刷着调味油,再把鸡腿转过来,做着同样的动作。鸡腿就是这样慢慢变黑的。闻起来很香,烧烤的人口水都快掉下来了,我的口水也掉下来了,但我不想继续看着他去吃那美味的鸡腿了,要了一块西瓜,跑到远点坐坐。
也许上面已经写出了我不想吃烧烤的原因了。但我还是报名去参加了烧烤,因为我想出去走走,远离繁噪的城市,到郊外去呼吸一下新鲜的空气。这次我真的走够了。

按我的风格,是不喜欢坐着公园的车到烧烤场的,别人说从公园门口走到烧烤场可能要半个小时,我觉得无所谓呀,就是想走走路,于是跟两个朋友就走路去,后来才发现被骗了,半个小时是不可能走到烧烤场的,除非一直保持百米冲刺的速度,对我来说,要求是高了那么一点点。走了一个多小时的时候,被一小伙同事的包车发现了,跟着上了他们的车,停止了我的走路生活。
当然,烧烤的过程没有什么值得写下来的,正如计划中的那样。但是TJ说了一句很经典的话,使得烧烤的过程中还是有些东西值得记下来。FX拿着一个相机到处照相,当她正在或者正在试图给TJ照相的时候,TJ伸出手来假装挡住了相机,他说“我不习惯穿着衣服拍照的”。然后是一阵爆笑。
这又让我们想起了09年初香港某个敬业的摄影师,是他用自己的行动,把自己当成主角(当然还有很多配角),把摄影这门有前途的职业发扬光大的。
本文网址:http://www.kgblog.net/2009/09/20/take-photos-naked.html
]]>