《跳跃大搜查线》&《神探伽利略》

两部都是和J.C有关的日剧,同样都是大红大紫的人气日剧,但是风格完全不同。

先来说说大搜查线吧。

最初看的是movie1《湾岸署史上最恶的3日间》,然后就被乐得不行了。开篇几个J.C坐在车里,等着一个人出现:那个人是罪犯?是嫌疑人?都不是,是警视副总监。。。所以副总监是要被双规了么?非也,只是地区派出所去接副总监去参加高尔夫表演赛。那为什么要再三确认长相呢?因为怕认错人出洋相啊!这倒没什么,后面一条河上发现了一具尸体,然后这边的J.C就开始嘀咕了:这尸体是在河上,河水在流动,所以说,如果过一会如果尸体流到河对岸去了就不是我们的管辖区域了对吧:)那要不等它漂一会?……总之,之前J.C为人民服务的崇高形象(参考目暮警官等人),瞬间就被颠覆了。

大搜查线的主题是揭露J.C中官僚腐败以及不合理的机构设置,总局和地方警署的冲突(大案要案都要总局主管,分局只能负责端茶送水),以及青岛和室井之间不得不说的故事(大雾)。先说说日本的J.C设置吧,搜查一课负责命案大案的破案工作,地方分局负责在警戒线外维护秩序,这点连柯南里都很明显(目暮警官就是搜查一课的警官哦~),我们的主人公青岛就是分局的一个小喽啰,只是因为J.C人手不够所以被录用了。可别小看了主人公,他之前可是一个IT公司的销售冠军,只是因为觉得公司太官僚太腐败了所以quit要当J.C,先是当了个巡警,两年后通过考试当上了正式J.C(录用的原因是J.C人手不够来者不拒……)。结果,这个小人物愣是仗着自己的一腔热血破获了各种奇怪的案件,虽然功劳基本都不归他,而且还一直被要求写检查(因为总是打破常规触犯规矩),不过却收获了妹纸和基友的好评(大雾)。男女主角在片中感情成份不多,即使最终movie也没有kiss没有表白,只是一个拥抱而已……倒是男男主角(!)整天眉来眼去的。作为搜查一课的搜查官(初始状态,后面越来越nb),整天有事没事去湾岸分局逛一圈,弄得人家局长都心惊胆战以为自己犯事了……跟男主角约定:你在下面,我在上面,各自深入(弥天大雾)。放在今天来看,绝对的搅基王道片啊,只是当年大家还都比较单纯罢了……

anyway,大搜查线是一部打工J.C的日常生活的电视剧。虽然也有破案,但是破案完全是次要的,传统的方法,没有精心设计的密室,也没有复杂的犯罪手法,但却是最真实的。片中搞笑部分很多,值得慢慢回味。

——————————————————————————————————————————————————————————————————————————

相比大搜查线,《神探伽利略》就完全不一样了。主角是个副教授(真的只是副教授嘛?那教授不得nb翻天),因为受到成为J.C的大学同学的委托然后辅助破案,然后就上钩了一直被要求协助破案……对找出罪犯没有任何兴趣,只关注手法,因此都是奇怪的案件,比如某人脑袋突然自焚啦,比如月亮从西边升起啦,比如苍老师无外力作用猝死啦(?)。最初看《伽利略》是看了《嫌疑人X的献身》,觉得好奇妙的推理和逻辑啊,于是一发不可收拾,一下看完了全部的TV,包括刚刚完结的TV版第二季。作为物理学副教授,当然要以实验为主啦,所以片中经常出现汤川学副教授为了重现bug(大雾)于是做了很多实验,一次次失败后终于成功的片段,这告诉我们:失败是成功之母,你没那么多经费或者没人报销就不要投身物理学了(大雾)。

虽然主人公有很强的逻辑思维能力(智商),但是情商基本为0,以至于送别自己喜欢的妹子时送的是锗(碳硅锗锡铅),原子排列和钻石一样。至于为什么不送钻石么,是因为之前有个罪犯(也是个高智商的男子)对女主角示好并送了女主硅做成的挂饰。因为犯了大忌(敢抢男主的妹纸,必须死),所以犯了事被抓起来了,而男主觉得至少得送个更高级的,于是送了锗……多么奇怪的逻辑啊,直接送个钻石女主就归你了啊!~不过第二季里面倒是表现了一些他和第一季女主的CP,于是第二季的女主吉高由里子无论怎么卖萌卖肉(你没看错)都吸引不了男主的目光了。悲剧啊~

最奇葩的还数男主角每次灵光一闪时的行动:找一块大的地方写一堆公式,然后作沉思状。至于公式内容么,其实和案件手法没半毛线关系,某一集他自己也说了:我只是默写了某初中数学的一个公式而已。。。所以日本人的初中数学都学了啥呀!

anyway,伽利略的看点是男主很帅(福山雅治大叔~),以及案件手法的物理还原很精彩。娱乐性不及大搜查线,但是吸引程度相当。

——————————————————————————————————————————————————————————————————————————
结论就是:一个月就看了两部日剧这么多集外加这么多剧场版,难怪paper中不了!给我乖乖学术去!

acm mm short rejected

第一次投paper,花了一个星期的时间连写作带实验(之前代码基本写完了)
本来还抱有一丝幻想。
结果,还是华丽丽的reject了。。。
4个review,1个给了reject,2个给了weak reject,1个给了weak accept。
大致的问题都是:1)实验结果曲线不符合常理。2)写作里面一些公式没必要,一些公式有问题或者未声明。3)理论部分创新不大。
唉,果然还是太天真了啊。看来实验还是得弄出个看上去“正常”的曲线啊,否则人家一看实验就觉得reject了……

windows下绑定线程(进程)到指定CPU核心

不知各位程序员在测试代码性能的时候有没有注意过,一个程序指定到单独一个CPU上运行会比不指定CPU运行时快。这中间主要有两个原因:
1)CPU切换时损耗的性能。
2)Intel的自动降频技术和windows的机制冲突:windows有一个功能是平衡负载,可以将一个线程在不同时间分配到不同CPU,从而使得每一个CPU不“过累”。然而,Inter又有一个技术叫做SpeedStep,当一个CPU没有满负荷运行时自动降频从而达到节能减排的目的。这两个功能实际是冲突的:一个程序被分配到多个CPU协同工作->每个CPU都不是满载->每个CPU都会降频->windows发现每个CPU性能都降低了,因此程序执行速度也降低了。

因此,将线程(进程)绑定到指定CPU核心,从而不让windows自作主张帮我们分散任务,从而提高单线程效率是很有必要的。有两种方法实现绑定进程到指定CPU:
1)手工调节:在资源管理器的进程里面,设置相关性,可以设置进程到某个或者某些指定的CPU核心。
手工指定CPU核心
这种方法最简便,同样是最优效率的,因为你可以根据当前CPU的负载情况进行选择。
2)代码自动调节:
参考:http://www.cnblogs.com/kex1n/archive/2011/05/09/2040924.html
具体函数为:
DWORD_PTR SetThreadAffinityMask(HANDLE hThread, DWORD_PTR dwThreadAffinityMask);
其中,第一个参数为线程句柄,第二个参数为一个mask。
如果要知道当前线程的句柄,可以通过函数:GetCurrentThread()得到。否则,在创建多线程的时候,也同样可以得到创建的线程的句柄。
第二个参数为mask,可取值为0~2^31(32位)和0~2^63(64位),每一位代表每一个CPU是否使用。
比如,你要指定进程到第0个CPU上,则mask=0x01
第1个CPU:mask=0x02
第2个CPU:mask=0x04 (注意不是0x03)
第3个CPU:mask=0x08
以此类推。
如果要指定多个CPU:
比如第0、1个:mask=0x03
第1、2个:mask=0x06
以此类推。
如果CPU个数不足,则会进行取模操作。比如一共4个CPU,则mask=0x0010则和0x01一样。
这种方法的好处是多线程时不用每次都手动选择CPU,缺点是万一选到的CPU负载很高,那么程序执行速度就慢了(英雄所见略同所以大家都抢到同一个CPU去了么~~)
效果如下图所示:
指定CPU核心
还有一个实用的函数来获取当前CPU的核心数量:

SYSTEM_INFO info;
GetSystemInfo(&info);
printf("Number of processors: %d.\n", info.dwNumberOfProcessors);

输出的是逻辑核心数量,比如i3处理器就是双核心四线程,输出4。i5处理器是四核心四线程,输出也是4。
这样就可以方便的知道当前系统一共有多少个CPU了,同时也方便了线程数选择。