活着

五月 12th, 2012  |  2 comments  |  56 views

一个月没打起精神去写一篇日志以表示还存在着,打开Windows Live Writer就不知道写些什么。

这个月科研的进展几乎还是在原地打转,进度缓慢,开始怀疑方向,而大多数时候却无心科研,也只好混一周是一周。可是这本该是主业,不该以混作为前进的节奏,只是因为心里太过浮躁,沉不下心,为杂念所扰,目前仍然困惑,不知如何解脱。

想找个实习,以逃避现在的状态,微软的实习两面之后便无后续,其实总结是准备不足以及过于紧张,面试期间甚至连快速排序都没写出来,一些算法的问题回答都比较不好,也难怪被默拒。

后来百度上海给了一次电话面试的机会,似乎也无后续,虽然自认为回答还算可以,但这次不算是统一招实习生,而最近百度在杭州统一招聘实习生,经过三次面试,虽然自我感觉还算不错,但毕竟面试这种事情,是不能强求的,希望有所收获。

回头想,原来这个月来有过这么多面试,而且大多数都是被面挂的,也难怪被安同学耻笑为面瘫。

好吧,这个月就这些,一事无成的感觉吧?估计只有还活着这件事情是确定的。

万有青年

四月 10th, 2012  | 0 comments  |  200 views

周末参加了果壳网的活动,活动内容很简单,请了8个讲者,讲各种自己相关的有趣的东西。

其实若不是实验室被邀请去讲实验室的东西,这种活动我不会想到去参加的,参加后,不禁觉得这样文艺却又geek的活动,的确也是很吸引人的。

仅凭着剩余不多的印象,稍微写点。

阿科讲城市新物种,关于那种会钉在有钱人头上的苍蝇,以及能使人忍不住工作的蘑菇,这些从未被人注意到的带有特异功能的新物种,竟被阿科所发现,于是阿科开始了自己的事业,在阿科不断发现新物种的时候有媒体开始出来辟谣,阿科引以为豪,毕竟,自己的工作被人们所注意到,那也是有着多少的成就感,但是苦于自己的工作无法为大众所接受,他的文章,都发表在“科幻”分类中。

当然最后一名可爱的女生观众问阿科一个问题“你说的这些,都是真的吗?”,才知道,阿科其实只是一名科幻作家。

有位天文爱好者,同时也是天文馆的工作人员,不远万里去黄刀镇看极光,拍摄极光,看到他认为人间最美丽却又转瞬即逝的风景,照片,旅途,以及那些操着不同腔调的地球人。

有个科学松鼠会的成员,讲述这个宇宙所包含的信息量是有限的。

一位浙大的数学系女博士讲关于3D,内容已经没有印象,不过她那句“不指望自己成为一个伟大的人,却立志成为一个好玩的人”不禁引起同感。

美院跨媒体专业的“指纹唱片机”,输入指纹,输出指纹对应的一段音乐,非常赞的想法。

以及郑博讲的我们实验室的各种新奇玩意儿,当然也让大家眼前一亮,大叹神奇,纷纷表示想要一个magic phone。

虾米网创始人之一朱七,现场弹唱自己的歌,略带沙哑的嗓音,却异常好听。

地球上的确还有许多好玩的人,他们做自认为有趣的东西,奇特的想法,真希望看得多了,心里能够默念“原来世界是这么有意思的地方”。

 

犄角旮旯的Java关键字

四月 7th, 2012  |  2 comments  |  47 views

并不是喜欢Java门语言,纯粹是因为用的多了,自然想去多了解一些。

最近看技术的书甚少,偶尔翻开才看了第一部分的《深入理解Java虚拟机——JVM高级特性与最佳实践》看到几个用于修饰类、方法、成员变量的关键字,竟从来没有用到过,不禁好奇去稍微查了一下,主要有3个犄角旮旯的关键字:strictfp、transient、native

strictfp

浮点数计算方法相关的关键词,可用于修饰类、接口和方法,在此关键词内的方法的浮点数计算都是符合IEEE 754标准的,可以保证可移植性。

transient

序列化相关的关键词,用于修饰用来Serializable类属性,这个属性在类序列化的时候不被序列化。如

public class Foo implements Serializable { 

    public transient int a = 0;
    public int b = 0;
}

当改变a和b的值之后序列化,再从序列化文件中读取这个类之后,b的值为序列化之前的值,而a是0。

native

用于修饰Java类的方法,表示这个方法是原生的方法,是调用被编译后的库文件的。

class Prompt {
    private native String getLine(String prompt);

    public static void main(String args[]) {

	Prompt p = new Prompt();
	String input = p.getLine("Type a line: ");
	System.out.println("User typed: " + input);

    }
    static {
	System.loadLibrary("MyImpOfPrompt");

    }

}

这些犄角旮旯的关键字目前开发中还没用到,希望以后也不会用到!

参考:

《深入理解Java虚拟机——JVM高级特性与最佳实践》

http://en.wikipedia.org/wiki/Strictfp

http://en.wikibooks.org/wiki/Java_Programming/Keywords/transient

http://journals.ecs.soton.ac.uk/java/tutorial/native1.1/implementing/declare.html

 

从明天起

四月 4th, 2012  | 0 comments  |  59 views

总是把“从明天起”挂在嘴边,因为那是想行动却又懈怠的心理写照,对现状不满的人,却又懒于改变现状的变态心理。

懈怠的状态还是继续,但是很多事等着去做,不该继续拖延了,其实事情还没有变得那么坏,所以

从明天起,做一个认真的人,论文,读书,做科研。总是不认真的做事,的确做不好任何事,看得多,想得少,落得一身半桶水。

从明天起,做一个专心的人,不关心不该关心人和事。总是被一些人搅乱心情,变得一团糟,想不通为何要感到低落,他人的生活毕竟与自己无关,大多数时候,只需要做好自己就可以。

从明天起,做一个正常的人,生活,工作,学习,早睡。每天4点钟的睡觉真是糜烂,大多数时间处于黑暗状态。

从明天起,不写这种日志,总是把负面状态暴露在外面,一定有人在心里默默地骂傻逼了,不过这个时候发这篇日志,似乎比较没有说服力。

 

quick-view-douban Firefox插件

三月 28th, 2012  | 0 comments  |  67 views

看到小强说有把greasemonkey脚本转成Firefox的工具,就找了一下,的确是有的,而且是一个在线工具,叫做script-compiler

地址是:https://arantius.com/misc/greasemonkey/script-compiler.php

只需要把js的源代码复制到source code中就可以直接得到xpi文件,可谓是码农的福音了。

因此quick-douban-view转成了firefox的插件,这样可以不依赖于greasemonkey了。

 

下载地址:https://addons.mozilla.org/en-US/firefox/addon/quickviewdouban/

quick-view-douban脚本

三月 28th, 2012  |  2 comments  |  93 views

看到豆瓣上阿北喊了一句“谁能写一个页面里选择电影名就能显示豆瓣评分和直达链接的浏览器插件啊”,觉得这样的插件有时候的确是会有用处的,觉得实现方法也比较简单,便动手开始写。
因为我一直坚守在firefox的阵营,一直没有随流投奔chrome,但是firefox插件又觉得过于重量级,便觉得使用greasemonkey的脚本更加适合这样的插件。
断断续续大概写了2天,主要问题出在对javascript过分的不熟悉,引用与字符串混淆过几次,greasemonkey的脚本加载也不熟,有时脚本修改之后,发现整个脚本都失效,却找不到原因。
不过还是写完了,代码乱七八糟,基本上本着怎么写得长一点的原则,提交到了userscript.org,需要的同学可以去下载http://userscripts.org/scripts/show/129416
使用方法:
在任意网页上选中文字,会在鼠标的右下角弹出一个图标“豆”
鼠标划过“豆”,弹出tooltip,显示“豆瓣电影”、“豆瓣读书”、“豆瓣音乐”
点击任意一个可以展开看到相关的信息,并附有搜索链接一枚
示意图:
» Read the rest of this entry «

回到ArchLinux

三月 24th, 2012  | 0 comments  |  51 views

硬盘一直空着30G用来装回Linux,毕竟长期活在windows下总没有新鲜感,最近就装回ArchLinux了。
折腾的确是一个漫长的过程,因为配置永远不会令人满意,我指的是GUI,作为一个伪Geek,即使是Linux,也打算把它当作windows用。
相比于以前(大二)第一次装Linux,现在安装和配置顺利多了,不用折腾太久,把系统弄成“可用”,不过不打算写折腾手记这类的东西了,因为我已经忘记了。
总觉得很多东西需要替代品,毕竟是日常用,简单列一堆吧。
桌面
用了gnome3,本来想用Xfce4的,后来发现这么多年了,似乎没有任何改变,相比于gnome3简直弱爆了,gnome自带了类似于unity功能,并且配置字体也可用gnome-tweak-tool这种图形工具,用起来也极为方便,然后可耻地配上微软雅黑,看上去就也非常不错了。
而gnome3界面是用js+css的方式写的,改起来也非常方便,只要修改对应的css文件,许多东西也就能改了。
输入法
输入法一直钟情于fcitx,想起这货以前配置文件都是用中文的,就觉得很酷,找到官方发现作者已经不更新了,新版本的配置已经和以前的不一样,配置文件已经分为了多个,虽然可用fcitx-configtool这种东西配置,也提供了gtk的界面配置工具,但是这些配置工具似乎功能并不强,因此还是需要自己改配置文件这种方式。
而fcitx-sunpinyin之后,这个输入法的功能也就越发强大了。
网络管理
笔记本来说wifi连接是个问题,手动查找可用的wifi,然后用wpa_supplicant连接方法简直不能忍受,以前使用wifi-radar,装完之后发现已经变得极为难用。直接使用NetworkManager就非常方便,启动之后也会在“通知栏”中显示网络连接的applet,用起来简直媲美windows。
wordpress客户端
习惯于用客户端写blog,windows用Live Writer,体验不错,而gnome下的可替代品也非常多,只是功能上参差不齐,试过几个之后还是用了Drivel,用了类似于IM的登陆界面,具备了写blog的基本功能,也就满足了。
terminal
当然不是替代品,如果windows的cmd跟任何一个真正的terminal相比,简直是一坨屎。
我用了Tilda+zsh的组合,zsh强大的可配置性以及功能当然是首选,而tilda是无意中看到的工具,它的按键呼出隐藏的方法觉得用起来非常方便。
远程桌面
实验室有台电脑,因此经常需要远程到实验室电脑,直接用gnome-rdp,不过要建立一个连接,竟然要写3个文件,自动化很差。

其他也就暂时不需要替代品了,至少还没遇到,但是如office之类的估计也还没有太好的解决方案,游戏之类的也就不强求了。
慢慢折腾,最近看书进度又慢下来了,惭愧。

迷茫期

三月 19th, 2012  |  2 comments  |  89 views

按照常理,研究生阶段既要搞点项目,也要搞点科研,如果长期无所事事,也算是虚度人生了。

最近的确有一种一事无成的感觉,暂时无项目可做,组里的项目差不多处于空档期,科研突然找不到方向,觉得找不到能做的事,只好看些论文,找点所谓的灵感,但是灵感从来不光顾。

最近卖了LX5,买了X200,当然是二手,爸妈很难理解我为什么要买二手的电脑,一直劝我买新的,我一再告诉他们二手的成色很好,而且X200已经停产,没有新机了,其实另外一方面是不想往家里再要钱了。

最近天气由不好渐渐转好,出去骑了一次车,带领着实验室的朋友,从龙井上去,到九溪下来,绕过之江,回到玉泉,那天是组会开完后的一天。

自从进入迷茫期,就特别不想开组会,原因是没有实际的工作拿出手,觉得汇报的时候心里发虚,而不好的是组会定周一下午,因此往往开完组会就开始懈怠,直到周末才发现这周工作做的不多,才慌慌忙忙恶补。

组会定在周一是因为研一的新生其他时间都有课,不知道从什么时候开始组里的研一新生都那么热爱上课了,不由得与我们研一时做比较,不由感叹,这些家伙真是好学,翘掉组会去上课,汇报工作也只是汇报课程作业,不过那是他们是事,与我无关。

总是感觉到实验室很乱,与几个同学说过之后,发现竟然有同感,所以并不是我心里乱,有时候觉得自己讨厌别人做的事情,但是那是别人的事情,自己根本没有权力去指责或者制止,也只好做好自己,因此买了个入耳式的耳塞,舒尔SE215,所谓的低端耳塞,不过效果不错,塞住了耳朵,也听不见一切外面的声音。

最近在看书,总想给自己充电,想到写Java这么多年,竟讲不出Java的好处来,只好拿本所谓的深入理解XXX的来恶补一下,因此最近贴点读书笔记,看到的人也算是与大家分享,没看到的人也没有损失。

看书一定是件好事,当然也有人为了不知哪方面的目的,一再告诉别人自己从来不看书,但是能取得牛逼的成就,这种案例我还是不采取,我赞同看书能够系统地认识某一件事物这样的理论。

取消了博客所有的关联,twitter、微博之类的,实际上也是不希望太多人看到,因此也确实会少一些人直到我博客的更新,所以,非常感谢点进来看到我文章的朋友。

也是最近总是有打开live writer写博客的冲动,而大多数时候都不知道如何组织语言表达心情,往往表达出来总是有闷骚矫情酸的感觉,写完了扔在草稿箱里不发布了。

迷茫期的心情总是不会太好,就如同已经很努力地在寻找出口,耗尽体力的时候,发竟发现一直是在原地。

 

Java的引用

三月 17th, 2012  |  4 comments  |  90 views

Java中引用主要有四类,分别是:1)Strong Reference;2)Soft Reference;3)Weak Reference;4)Phantom Reference;主要跟Java的GC有关。

可以从java.lang.ref包里可以看到有几个类:SoftReference、WeakReference、PhantomReference,分别对应后面三种引用。

Strong Reference,就是一般意义上的引用,类似于Object obj = new Object的引用,只要Strong Reference存在,GC就不会回收这个对象。

Soft Reference,被Soft Reference引用的对象,只有当系统将要发生内存溢出一场之前,才会被回收这块内存。

Weak Reference,被Weak Reference引用的对象,能生存到下次垃圾收集之前,可以使用一段代码解释。

private static void checkNull(Object obj)
{
    if (obj == null)
        System.out.println("Dead");
    else
        System.out.println("Alive");
}
public static void main(String[] args) throws Throwable
{
    Object obj = new Object();
    WeakReference<Object> wr = new WeakReference<Object>(obj);
    checkNull(wr.get());
    obj = null;
    checkNull(wr.get());
    System.gc();
    checkNull(wr.get());
}

输出的是:

Alive

Alive

Dead

也就是说只有调用了GC只有,Weak Reference才失效,get不到任何东西,内存才被回收,而在调用GC之前,即使obj=null了,建立Weak Reference的对象还是能get到的。

Phontom Reference,对对象的生存时间产生任何影响,只是希望能在GC回收内存块的时候收到一个系统通知。

 

参考:

《深入理解Java虚拟机——JVM高级特性与最佳实践》

http://weblogs.java.net/blog/2006/05/04/understanding-weak-references

 

JAVA的GC

三月 16th, 2012  | 0 comments  |  36 views

如何判断对象是否可以被GC?

主要有两个算法:1)引用计数法;2)根搜索法;

引用计数法是指对象每被引用1次,对象中的引用计数器加1,引用失效时,计数器减1,直到计数器为0的时候,对象被标记为可回收。

根搜索法是指从GC Roots开始建立一个引用的图,当一个对象到GC Roots的路径不存在时,对象可以标记为可回收,JAVA中使用的是这种方法。

对象GC的过程?

当对象被标记为可回收时,JVM判断判断对象是否有必要执行finalize方法(只有当finalize方法未被执行过的时候才被认为需要执行finalize方法)。

如需要执行finalize方法,把对象加入到F-Queue中,稍后由虚拟机调用其finalize方法,如对象调用完之后仍旧是被标记为可回收,这块对象所占的内存空间就被虚拟机回收了。

内存回收的基本算法?

主要有四个算法:1)标记-清除算法;2)复制算法;3)标记-整理算法;4)分代收集算法。

标记-清除算法,是指直接回收被标记的内存块。会产生许多不连续的内存块碎片。

复制算法,把内存块分为大小相等的两个区,只使用其中1个区,当一块内存块用完时,把每块复制到另外一个区,并且使用的内存块处于连续的空间。

标记-整理算法,是指内存块标记完之后,让所有使用的内存块向一端移动,然后清理掉端界意外的内存。

分代收集算法,是指把JAVA堆根据对象存活周期分为新生代和老生代,根据每个代的特点采用适当的手机算法。

各种垃圾收集器?

主要有:1)Serial;2)ParNew;3)Parallel Scavenge;4)Serial Old;5)Parallel Old;6)CMS(Concurrent Mark Sweep);7)G1(Garbage First);

参考:《深入理解Java虚拟机——JVM高级特性与最佳实践》