好好干哈

花了点点时间看了memcached、keepalived、ipvsadm,得出一个结论:

基础扎实了,这些都是工程问题而已。

还是笔记一下吧:

memcached — 数据在一台机器上存不下,就放到多台机器的内存上存储吧。OK,既然内存能够“无限”扩展了,那以后数据库读到的内容就也用memcached缓存起来呗,于是,数据库负载减轻了。

keepalived — 能够提供多层检测手段的heartbeat工具,可以通过ip层、port层、app protocol层来检测一个应用是否alive,并且提供了maintain live host set的支持。

ipvsadm — Linux所支持的IP Forwarding技术,让集群对外体现为一个主机,内部多台主机并发为外来请求服务。即:屏蔽集群,对外提供统一接口。Linux自带命令,配置比较麻烦。

明年此时

明年此时

奶茶

这样的我们算不算幸运
在人生的定局之后
找到另一个自己
这样的我们对不对得起
守住了欲望是否就安了心
感情从此干干净净
same time next year
在相遇时又会飘着春天的雨
same time next year
还是在这里让我们
好好聊聊岁月的痕迹
same time next year
爱你是谁也不会提起的约定
same time next year
一日的温柔 我有364天可回忆
什么都别 做什么都别说
我们不会得到什么
因为从未失去过
没人能证明 我还是相信
想你的时候我就闭上眼睛
谁能说你不在身边
same time next year
一日的温柔 我有364天可回忆

   

向健康生活看齐

    周末终于买了觊觎已久的瑜伽垫,顺便买了更想要的哑铃。

    于是,中午可以躺着午休了。

    于是,每天都可以舒展舒展身子了。每组运动都可以让身体热起来,汗涔涔的,很舒服~

    

    现在买东西总会告诫自己:区分消费和投资,区分消费和投资。。。

见Richard Stallman有感

    今天在科学院教学楼S201见到了传说中的自由软件之父Richard Stallman,其成就卓著无话可说,其思想略显偏激也无需批评,倒是明白了一个事情:

    要想做成点事情,表达能力很重要。一个事情,你要能把他说清楚,很关键。

Stallman讲的内容都是围绕着Freedom展开,口语清晰有节奏,内容表达上观点鲜明、脉络清楚、论证有力,非常值得学习。

另外,那个日本人的口语也很不错诶! 本是准备领略传说中的日本口语的,小失望 =.= 唉,我这思想……

回不了寝室,脑残一下吧

   

钥匙忘在小康那里了,回不了寝室,呆在实验室也无聊,好久没敲点什么了,就随手摆点啥呗。

 

研一下那会儿时间很充足,实验室的活儿也没有完全启动,总体进度很慢。以挣钱补牙为契机重回bd,过上了工作上紧张,饮食上熨帖,生活上无计划的日子。大约从四月到八月吧,我早晚都在实验室,从早到晚都在公司,连带工作餐,每天工作13
小时,其余时间:看肥皂剧,睡觉!其实,这段时间很累很累,每天晚上都能听到实验室的“催人曲”,夜夜飙车北四环,稍微松口气就能睡着。为了迅速积累资
本,周末基本不休息,加班再加班。终于,有累到崩溃的时候,有时候是花上一天放缓脚步,喝茶听歌,有时候是预约上马赛克吃个饭聊聊天。“充实”的背后是大
脑的单一化,技术,继续技术,睡觉,继续睡觉。这种代价之后的收获有二:技术的进步,经济的进一步独立。当然,我马上发现,距离能够补牙的水平十分遥远。
唉!后来,牙没有补成,倒是办成了三四件事:去青岛看海,去燕姿的演唱会,买相机,给家里寄钱。

  bd的第一个项目与压缩有关,比较理论,被我死活折腾了快两个月,最后给出个报告:方法不可行!可耻地失败了。Mr. Yang看到这个结论后终于不在说“你试试看,应该可的”,给了我一个比较工程的项目,预计一个月完工,正好到我准备离开的时候。这个月拼命学习架构,拼命coding,在各位bder的帮助下,基本顺利完工。离开的时候代码部分完工,把测试任务丢给了新来的实习mm。好不容易来了个mm,就要离职了,不幸!在此其间,请了一周的假,有了难忘的烟台青岛之旅。蓬莱的快艇、摸蟹,烟台的水母、海边小屋、中南海,青岛的礁石和海浪,历历在目。从青岛回来之后不久,8.15日,去了燕姿的演唱会,圆了一个念想。

 

八月底,交出了bdtoken门牌工卡。再也不能随便去买便宜的饮料饼干了,再也不能偷咖啡了,更可惜的是没了工卡就不能享受Mr. Pizza85折优惠!好吧,我要回去做研究,哼哼~~~bd的筒子们,以后要是想去bd大厦串门,你们得帮我啊~~~ 离职过程并没有想象中繁琐,各种大厦各种签字即可。

 

实验室的生活很轻松。最开始一段日子,我发现师兄给我提出的需求我都在“早晚都在实验室”那段日子里面完整实现了,直接交给其它模块使用即可。然后就是悠哉悠哉,打打补丁,做做使用答疑。值得一提的是,在bd这段日子,在Mr. Yang的影响教导下,编码水平有了很大提高,特别是在错误处理、代码健壮性这一方面学到了很多。这导致实验室里面,我负责的代码基本上没有什么bug,即使有bug,也能够在错误处理代码的帮助下迅速定位和修复。

 

由于搬家到了科一招,寝室没网,导致经常泡实验室到1112点,继续每夜飙车北四环。晚上回去后一般还要看上两集Friends。生活也没啥新鲜的,就肥皂一下咯。回所后,一个偶然的机会查了一下工资卡,发现那一刻,所有银行卡里面的存款加起来居然过万。首次存款过万,在小农思想的影响下,激动不已,遂高速盘算如何将其花掉,最后,入相机一台,加上十一回家花掉的2k,终于重新过上了穷人的生活。农民,就是农民!唉,无可救药。

 

也许是真的老了,也许是闲得可以了,也许是无牵无挂了,望着那些渐行渐远的双双背影,我想,我该也有个她了吧。这想法该是来得太迟,居然四顾无人。于是,继续脑残,继续写代码,至于周末,要么看书,要么拿着个相机四处瞎拍。脑残的人生必然该有脑残的结局吧,管它呢! 杯具~

《麦兜响当当》结尾

“但是如果,只是如果而已,等我长大了,再遇见麦兜,如果那个麦兜力气还是那么大,那么善良,那么迟钝,那么直上直下,如果我送他的那块橡皮,还那么雪白,一直都没用过,如果真的是这样,奇妙的事就已经发生。”

你,敌得过时间吗?如果能……

你,敌得过失败的打击吗?如果能……

你,敌得过世俗吗?如果能……

嗯,this is full of fun.

秋天了

北京已入秋。

在北航吃喝玩乐一番之后回实验室看书,不觉11点,小憩,醒来时实验室一片漆黑,摸索出手机,将近一点。

下楼,出门,一个哆嗦,冷!

生活和研究

自然科学方面立论和研究讲严谨重数据,这里要说的是关于非科学方面的立论和研究,比如心理学、哲学、宗教等。
根据大家的经验,关于那些方面的讨论一般很难得到结论,或者得到的结论是:这个问题不能一概而论,不同的人有不同的看法。在现实生活中,遇到了纠结不清的问题,以这种“具体问题具体分析、因人而异”的思路终结掉倒是个非常好的选择,深究的话倒是显得倔强愚蠢了。心理学哲学宗教这些问题本就深不见底,你若都弄清楚了,先贤的智慧岂不都要喝西北风啦?哲学有流派,宗教也有派系,各派之间有异曲同工的内容,也有相互抵触的内容,千百年来,他们之间相互碰撞,分不出个谁是谁非。我相信,创建、发扬这些派别的人都是聪明人,说出来的话也必定是过了脑子的,否则,世界潮流浩浩荡荡,那些不靠谱的总会慢慢消亡。
如果我们也想把自己遇到的事情想到的问题过过脑子,该怎么办呢?大致办法有三:其一是“皈依我佛”,找个山门度了吧。这个看上去省事,其实挺难,这年头认清一个好人家可不是那么容易的事情,人家姓甚名谁,奉何方大神,吃斋还是吃肉,读哪几本书,你都得有了解才行,不然很可能上错了花轿嫁错郎,岂不冤枉?其二是“另立山头”,外面多少个山门我不管,我就喜欢自个儿通过自己的经验慢慢琢磨,想出一套方法来,糊弄不了别人,糊弄自己却是绰绰有余的。这个方法也不容小觑,有这么段故事来说明:《亮剑》中晋西北的铁三角李云龙、孔捷、丁伟解放后在军事院校学习,先是抵制学习,因为教官曾经是他们的手下败将,在学校制造了一个又一个的麻烦,然而真正学习后惊奇地发现原来自己引以为豪的战略战术思想其实在古人的兵法书中都有记录,并更为系统和全面。通过这个故事反过来看就会发现每个人都有当先贤的潜质,你所想的也许就是先贤所想的,甚至,你还是集大成者。“另立山头”也不简单,李云龙他们是打出来的思想,是经过了枪炮洗礼的,现实生活中,若不是经历过一番风雨,见识过大千世界,又何以立言呢?其三是“和稀泥”,本就是个扯不清的问题,没想清楚也死不了人,甭庸人自扰了,睡觉觉去。若非得要个结论,你给我听好了,我只说这一次,别再来给我歪叽:“这个问题因人而异,没有固定答案!”
使用第一种办法的人我猜应该很少,那得挺博学;使用第二种方法的人应该为大多数,人生在世几十载怎么都是见过一些世面的,基本的判断还是有滴;使用第三种方法的人也不在少数,但多为和第二种方法杂交使用:“我其实不是没答案,我有!只是我的答案和你期待的答案非常不同而已。”生活中,稍微聪明些的都会选择做第三种人,他们温和睿智不起无用之争,落得大自在。顶!研究中,想打破砂锅问到底问到底的人,应该绝对杜绝第三种过脑子方法,和稀泥是绕开问题,而不是解决问题,综合运用方法一和方法二比较靠谱。

Linux下如何写可重启的多线程子系统

目标:在内核中加入一个RPC子系统,对内核其他子系统提供三个服务函数:
rpc_init()
do_rpc_service()
rpc_exit()
要求在如下情形下能够正常工作:
while(!should_stop)
{
    rpc_init()
    do_rpc_service()
    rpc_exit()
}

在rpc子系统启动后,会建立很多线程,这些线程可能各自处于不同状态,比如等待信号(sema),等待时间片(schedule()),正在运行等等。如何让我们的线程从这么多状态中听从rpc_exit()的召唤纷纷退出呢?加入do_rpc_service()中有这么一个线程,正在做如下工作:
do{
    schedule();
}while(not_ready);
除非我们能够改变not_ready的状态,使得其为false,否则这个循环不可能终止。这样,这个线程也无法退出,最后导致rpc_exit()语义失败。

为了让线程能够正常终止,有两种方法解决:
1、去改变那些比如not_ready之类的变量值
2、避免编写这样的代码,用轮询的方法取而代之

首先看第一种方法,rpc_exit需要知道系统中到底有多少地方使用了条件变量循环,以逐一改变这些变量状态。同时,还要注意循环之后的代码执行。由于是退出,所以其后很多逻辑都应该不再执行。显然,这个工程有点大…

再看第二种方法,由于采用了轮询,可以在每次轮询中检查程序执行状态变量,一旦为rpc_stopped,则中断执行。如何避免编写上文提到的循环呢?首先,自己不要写这样的代码,其次,不可以调用wait_for_completion, down()之类的函数,取而代之调用down_interruptible()这样的可中断的函数,因为这样的函数能够被信号中断,退出while循环。

后面计划对rpc子系统进行改写,使得其符合条件2.

The Answer is …



2009.8.15,北京工人体育场,The Answer is … Stefanie in Beijing!

 

一首一首熟悉的旋律,挥动着绿色的浪潮,从梦游到我怀念的,从我不难过、我要的幸福到绿光,遇见你是我最美丽的意外!

 

燕姿开场的打扮很雷人,真的很雷人,我说的是真的,请相信我……

第一首歌以《梦游》开场,契合演唱会主题The Answer Is… 随后几首快歌迅速让舞台升温,再然后,什么都不记得了,一切都沉浸入绿色狂热之中,燕姿无极限~~~~~~~

简装燕姿

 

嘉宾也很雷人,用她自己的话来说,就是”不搭噶“

我妹妹很喜欢她的歌,于是给她来了段现场手机转播.

钻石外形的舞台非常之漂亮~~

 

约定好醒来之后
要再次回到未来
陪我梦游

燕姿,下次VIP见~~

 

鹤鹤同学,你真的亏啦~~~~

照片续: