Google Wave 邀请11枚
新入手12枚Google Wave邀请,请你在文章后留言,我会给前11名留言者发送邀请。
Update 1:前9楼都发过了,请大家稍安勿躁。我没有想到大家的热情会这么高,原来说的是有11枚,有两枚送给以前在Yahoo Meme上承诺过的朋友了。10~12楼的同学请等一下,我再有邀请一定会发给你们。也请能帮我一起邀请大家的同学帮个忙。:)
Flickr插件测试
测试可用,下载地址:Flickr Upload
Java中线程同步的简单用法
应用场景:应用程序需要新建若干线程进行事务处理,这些线程处理完毕后,应用程序会进行一些后续的操作。
解决办法:使用Object.wait(),Object.notify()方法。Object.wait()方法会阻断当前线程的执行,直到其他线程调用Object.notify()。
于是可以很快的写出一个示例程序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">void</span> main(String[] args) { final Object syncObj = <span class="kwrd">new</span> Object(); Thread thread = <span class="kwrd">new</span> Thread() { <span class="kwrd">public</span> <span class="kwrd">void</span> run() { <span class="kwrd">try</span> { Thread.sleep(3000); synchronized(syncObj) { syncObj.notify(); } } <span class="kwrd">catch</span> (InterruptedException e) { e.printStackTrace(); } } }; thread.start(); synchronized(syncObj) { <span class="kwrd">try</span> { syncObj.wait(); } <span class="kwrd">catch</span> (InterruptedException e) { e.printStackTrace(); } } System.<span class="kwrd">out</span>.println(<span class="str">"Exit"</span>); } |
调用wait和notify方法前,一定要用synchronized(syncObj),否则会抛出IllegalMonitorStateException。
有空再写写Concurrence Util里的工具类,简化上面的操作。
略记几事
“2009年10月24号,我跟实验室一行23人,一起来到了位于北京房山区的十渡风景区……”,因为今年研二了,所以是我们组织的秋游。真正去忙这件事情,才觉得这真是一件麻烦的事情,要去想有什么地方可以去,有什么可以玩的,行程怎么安排。我似乎上个星期不想太被这样的“沙子”占掉生活里的一部分时间的,于是直接找了旅行社,跟他们要了行程,把行程安排发给大家,然后让大家投票,最终确定了去十渡,有山有水农家饭,应该是不错的。不过后来发现一个问题,投票的人与最后报名的人是两个谁都没有覆盖谁的集合,所以最后的投票结果还是让一部分人不太满意。
当天的安排,时间有点紧,路途比较远,大约用了2个小时的车程才到。进入景区之前,是一个很长很长的铁索桥,摇摇晃晃的有点恐怖,我最后是跑过去的,我发现这样是最省力,最没有恐怖感的一种过法。接着是划了一个小时的竹筏,除了水域太小之外,似乎还好。如果是夏天,我想应该会更好玩些,可以玩玩水,年纪再大,都不会讨厌玩水的吧。中午的农家饭让我以后对农家饭实在是不敢有太多的期望了,菜名听起来都很诱人,但是吃上去就那么回事。下午是去孤山寨玩,印象最深的就是山上的柿子树,好像还记得我小时候也爬过柿子树,但是好像没有偷过柿子。山上的柿子树比我儿时记忆里的那颗要高很多,叶子已经落光,只剩下满树的柿子。不知道是不是自己在北京类似这种石山、峡谷、红叶枯木的景点去的多了,偶尔也会觉得同质化相当严重,就连许多景点的名称也都是雷同的,“一线天”我就分别在京东大峡谷、凤凰岭、孤山寨玩过。下午回程的时间同样是相当的长,两个多小时,路上还遇到了下班的高峰期,在四环上车走得比人走得快不到哪去。
不过后来看看回来拍的照片,笑得还是很开心的。
今天看了研一的小师弟们的游记,看得直想笑,有说饭菜丰盛的,有说饭菜少的,我真想征求他们的同意,把这些游记都发表出来。
PS,最近看了一点《The Big Bang Theory》。
==end==
在Live Writer中编辑WordPress博客
今天试了一下,在Live Writer中添加了AgilePHP.net,发现Windows Live Writer不但支持WordPress的博客,而且还支持的相当好。其实WordPress的后台也挺好用的,只是现在实验室的网速真的是慢的吓死人,才想到了这个办法。你需要在后台把xml-rpc选项打开。在Live Writer里添加新的帐户就可以了。现在发日志方便了,同步两边的日志也方便了。
==end==
Portable Firefox中安装Flash插件
最近,由于一些众所周知的原因,我在使用Portable Firefox,但是最新的版本并没有提供Flash插件,在线安装也是以失败告终。最后发现了解决的办法,将C:WindowsSystem32MacromedFlash中的flashplayer.xpt和NPSWF32拷贝到Portable Firefox中的AppFirefoxplugins文件夹下即可。
==end==
RANGE in HTTP
ranges-specifier = byte-ranges-specifier
byte-ranges-specifier = bytes-unit “=” byte-range-set
byte-range-set = 1#( byte-range-spec | suffix-byte-range-spec )
byte-range-spec = first-byte-pos “-” [last-byte-pos]
first-byte-pos = 1*DIGIT
last-byte-pos = 1*DIGIT
今天写了个工具类,用来多线程下载文件,用到了HTTP协议里的RANGE头,以上是RANGE的定义。记个NOTE,RANGE的范围是从0开始,到CONTENT-LENGTH-1结束。过段时间总结一下自己写程度下载文件时需要注意以及可以优化的方面。
近期评论