帐前卒专栏

code, software architect, articles and novels.
代码,软件架构,博客和小说

选择生还是选择死?有信仰还是没有信仰?是当政客,当商人还是学者?你可以相信我的话,也可以选择不信。

先知和尼奥的一段经典的对话:“来颗糖吧”“你已经知道我的选择了?”“如果我不知道,我就不叫先知”“如果你知道话,我又如何选择?”“你不是来做选择的,你已经做
了选择,你只是来了解,你为何这样选择。”当我们心中有两三个我们可以达成的目标,却不知道那个是最应该达成的。如何选择?我们有很多路可以走,走哪条才是最理想的,
才是最不会让自己后悔的呢?这也就是古人常说的“取舍”。取是一种能力,舍是一种境界。不过舍无关紧要的东西或许简单。舍弃关系到自己生死存亡的利益呢?舍弃自己心中
最想得到的呢?舍弃自己原本的思想呢?舍弃过去的自己呢?好像又不是那么简单。很多时候我们一下决心做出抉择,往往事后又对自己说:“why?”然后反反复复的折磨自
己。

回到原始的问题:“如何抉择?”首先应该询问下自己是否有原则;然后询问下自己是否有所爱;最后询问下自己是否有所得。尼奥是个悲剧,因为他之前选择成为救世主,那他
之后就别无选择。心理学上说:选择具有一致性。如果你第一次选择对;那么第二次如果选择错,心中会很不爽。这也就是我们常说的原则。如果你想做个好人,就不会选择做地
痞流氓的事情。如果你选择高尚,那就先刻好墓志铭。

当然我所说的:首先应该询问下自己是否有原则;然后询问下自己是否有所爱;最后询问下自己是否有所得。这可能是我自己的顺序,可能不是其他的人的顺序。这样选择取决于
性格。大家可以按着这样做,也可以换种顺序。So which is your choice?

你相信什么?你是相信命运还是相信自己?我们是否已经习惯自己设计的条条框框?我们是救世主,还是这世界根本就没有救世主?我们的世界是真实的,还
是被我们双眼蒙蔽的假象?我们相信奇迹,还是我们就是奇迹本身?是命运造就了自己的现在还是自己的努力才会让生活更加美好?还是自己的命运早已注定自己的 努力?

只要你相信you are the one,那你注定就是。或许这是一种盲目,或许这只是狂热,或许这什么都不是。但是你至少会发现你已经改变了自己。

Do something what you believe, and trust yourself!

想想孔子老庄的思想。其实到头来还是探讨一个问题——我们可以人定胜天,还是这不过是宿命的假象?

One感想

** _ 吴远奎: _ **
首先,谢谢one的原始老大以及共同一起创建发展one编程小组的各元老以及各新成员给了我这样一个环境来发展和巩固自己的知识和见解。在one的日子里面,通过网上
的训练。让我学会独立思考问题,以及通过邮件交流问题,提高自己知识和能力。虽然题目的思想性很高,但是对于大多数人来说还是很值得一练的。尤其是在每次作业提交的时
候,群邮件里面总是有学长指出的缺点,以供我们学习。One小组外出活动很少,但是每次活动大家都很积极。橘子洲头自行车游,充分体现了各位对集体的热爱。同时大家团
结的精神也浮现在我眼前。只有加入了one编程小组你才能真正感触到这种温暖的。
One是成功的预见,希望各位学弟学妹有志探索专研的能够加入进来,一为one增加新鲜血液,使它更具活力。二也是为了创造自我,实现自我的一个选择。在学长的长期监
督与领导下我相信one会一直走得很好!
在此预祝one小组成就更多人才。

** _ 季志斌: _ **
加入one小组,首先可以肯定的是技术有了一定的提高,学长每周布置的题目,不仅需要有一定的编程能力,更需要对问题的思考能力,每周一题,日积月累,从中肯定会得到
一些编程心得与独立思考能力。其次,加入小组让我感觉到了团队协作能力,因为每组3个人,一道题目是需要一个组讨论完成的,讨论时大家各抒己见,取长补短,合作默契,
达到了小团队作为一个整体的目的。再次,因为one小组中有很多能力超强的学长,在其中让我们感觉到了榜样的力量,从而有了奋进的目标与方向,提高了自己的学习自觉性

作为一个小组,one小组不仅仅只是一个技术小组,更像一个大家庭,大家关系融洽,亲如兄弟姐妹,在学校我们是一个团体,将来工作我们仍然是一个团队,是兄弟姐妹,会
互相学习,互相帮助。
我很荣幸成为了one小组这个大家庭的成员。

** _ 朱俊芳: _ **
进入one小组的时候我还是个对编程一窍不通的人,对自己的编程能力也很没有自信,进来的目的是和小组成员一起学习技术,提高自己的编程能力和沟通能力,顺便从cc学
长那里“偷”些他的成功经验,哈哈。
我觉得我们小组的学习方式很好,定期的给题目,通过小组内部的讨论和分析,每个人进行编程。通过这种方式,促进小组成员的技术能力提高和沟通能力的增强。
很高兴和组内的成员都成了很好的朋友,也给我的大学生活增添了光彩,虽然现在大家几乎都在忙自己的生活,可是我相信我们内心的那份友情永存!

_ ** 龚星:
** _ 我进入one编程小组已经一年了,这一年来,我学到了很多。我个人觉得在one编程小组我的编程能力有所提高,而且在编程过程中的一些不好的习惯也经学长指点有所改善,对于团队而言,我学会了任务的合理分配,懂得了与人合作。

不是每一次的努力都会有收获的
但是
每一次收获都必须努力
这是一个不公平的不可逆转的命题

** _ 罗孟儒:
_ ** 加入程序编程小组是一个意外,但加入后觉得自己成长了很多很多~~
感谢陈超学长,让这个有点自卑的小学妹扩展了视野,慢慢学会去独立;感谢伟健学长,给我们传授考研面试方面的一些技巧;感谢阿咪学长对我们技术方面的指导以及给我提的
一些建议;感谢小俊芳,是你的推荐让我加入了这个组织,让我学到很多很多;感谢曼霞小同学,组织了那么好的活动,让One的气氛更加活跃;感谢王剑哥哥,对我们小组的
每个同学都那么好,本人从你身上看到了豁达以及其他很多很多;感谢洪莲,很喜欢你的文章,喜欢你那温柔的声音;感谢旭博小同学,喜欢你对每件事认真的态度,同时也谢谢
你对我的活动的支持;谢谢张磊,谢谢你对我的一些帮助以及你对小组内每个成员的关心。
感谢斐斐小学妹,和你一起聊天、一起逛街好快乐哦,同时也谢谢你的好吃的;谢谢琪燕学妹,那次和你放风筝好开心好开心,同时你做得活动策划真的很棒很棒哦;谢谢刘璐学
妹,喜欢你甜甜地微笑,从对你的面试中学到我真的受益匪浅哦;谢谢文婷学妹,喜欢你的灵巧可爱,同时也为你的理想所折服,我相信你的理想会实现的,加油加油哈;同时也
感谢龚星学妹,我被你的努力、开朗而感动。
感谢远奎,细心而稳重的小学弟,给我买了n多好吃的,还教我们溜冰、放风筝;感谢开朗快乐的翠先小同学,谢谢你对我这个自行车技术“相当好”的学姐的耐心指导,同时也
感谢你棒棒的溜冰技术,让我们溜冰的时候无后顾之忧;感谢超级无敌可爱的梁可、王洋小学弟,给我们这个小组带来了这么多这么多的乐趣;感谢小季同学,那削苹果的可爱样
给我留下了深刻的印象,还有你和梁可在我们背后搞小动作的事咱可还没忘记哦;凌屿同学,认真而有礼貌的小孩,谢谢你为我们无私得照了那么多照片;同时也感谢咱们的编程
高手王军,谢谢你写的相关技术文章,让我这个学姐大开眼界了。
谢谢One的每一位成员,谢谢你们给我带来一切的一切~~

** _ 谭文婷: _ **
光阴似箭啊,转眼就加入one编程小组一年了!
当时面试的情景还历历在目,当时激动紧张的心情,蹩脚的回答学姐的问题,感觉这些好像就发生在昨天。
想想在ONE编程的这一年感觉过的很充实很快乐,也学到了很多。我们一起完成题目,在其中加强了团体精神,学会了合作的重要性。在这里也认识了很多优秀的同学,他们都
很认真的在生活,在学习,在实现自己的理想,从他们身上我学到要努力要付出才能有回报,不能虚度光阴,这样将来才不会后悔!
转眼one又要招新了,很期待有新的成员进来,认识新的同学!

** _ 熊琪燕: _ **
One编程小组,以前从没有听说过这个组织,经学长介绍,没有一点技术含量的我带着好奇心和抱着尝试的心态发了邮件紧接着因为我的热情得到了面试通行证,面试的一个小
时我学到了很多东西。然后得到的答案即是,one编程小组是一个民间组织,是一个分享的舞台。在这里不仅可以学到很多技术的东西,还可以尽情的施展自己的才华,这里处
处都有挑战。
在这个团体中,我没有学到很多技术,但是队友们对代码的热爱让我颇有压力,他们的成绩时刻提醒着我要努力向前。
在这个团队中我学到更多的是关于技术以外的东西。记得刚进这个团队时,学长跟我们说要好好利用email,养成天天查看email的习惯。我想没有他这句话,我很少会
只用邮箱,但是现在使用邮箱已经承了我的习惯。
来到这个团队,我有了一个施展自己才华的舞台。在这里,让我感受最深的是,这里没有固定的领导者,只要你想做,你就是!这里是一个自由宽广的空间,你想要怎样发挥都行
,所有的组员都会毫无条件的支持你。你也会毫无条件地得到任何人的帮助,只要是能帮上忙的。

** _ 刘曼霞:
_ ** 进入one group仅仅是一个偶然的机会,模糊地记得是大二上学期,很想学技术,正巧听同学说陈超学长的技术小组招人,一时冲动就发了封简历的邮件,可
能是那时自己还是挺认真的,经过几个礼拜的考察之后,最终被学长录用了,现在想想心里就想偷懒,像我这样的菜鸟也能被选中。
经过一年多的时间,现在回想在one里没有做过很多事情,却是看着自己的一点点的变化,难免有点心酸。刚加入的时候,是一股劲地学习,当时还信誓旦旦地跟学长谈论自己
的梦想,要成长软件学院技术最强的人,可惜没有实现,有一点遗憾。由于有点冲动和幼稚,以前还总是为one里的小事而伤心难过,后来想开了,豁然开朗。不过,在one
里,最大的收获就是认识了很多人,尤其是陈超、李伟健学长,还有07级的学弟学妹,更加深了和06级同学之间的感情,清明的橘子洲头活动,见到了成员的可爱温暖的一面

One让我感受了我们是一个团队,要一起努力,打造One的美好明天!

** _ 喻洪莲: _ **
ONE编程小组的宗旨是share,这意味着,在这个团队中强调最多的是团队合作、信息共享,这也是现在各公司要求员工必须具有的基本素质。
从大一进入ONE以来的这段时间,有很多感悟。
首先,这个团队创造了一种氛围,一种软件人员的氛围,或者说一种编程的氛围。每个周的编程题目巩固了大家的编程能力,虽然没有谁强制你一定要完成,但就是这种氛围,大
家都在学习,大家都在进步,你没有理由偷懒,你也没有理由输给谁,所以你必须去完成。
其次,ONE强调的语言是C和C++,比较注重基础知识,大家平时的练习也以基础习题为主,这对程序不够熟悉的同学来说是件好事,同时

也能够帮助编程高手们掌握基础。其实当你真正要用到一门语言的时候,不会经常用到很多高深的东西,相反用到最多的是基础知识。我佩服

会很多新鲜技术的牛人,但是总的来说,扎实的基础总比好高骛远要强。
再次,在这个团队中,你可以收获很多友谊,大家在讨论技术的同时,也巩固了友谊,很多时候你可以在这个团队中找到一些志同道合的朋友参加各种比赛,这对你的生活学习会
有很大帮助。ONE不是只会编程,ONE也会定期组织很多活动,给大家提供交流学习的机会,而且感觉这个团队里的每个成员都很有才哦!
最后,ONE虽然是一个自发组织的团队,可是这个团队中的每个成员都有很强的责任感,很强的上进心,这是ONE的幸运,也是ONE能够坚持这么久的原因,所以在这里,
我学到的不仅是知识,还有各种能力。
我很感谢ONE编程小组,感谢团队中的每个人,这是一个学习成长的地方。

组长看后感言:谢谢大家,大家成就了现在的ONE。

One Group

![logo](http://p.blog.csdn.net/images/p_blog_csdn_net/cctt_1/EntryImages/20090
506/OneGroup.png)

一、one编程小组组长寄语
如果一个小项目让一个编程高手来做,可能三天就可以搞定。如果同一个项目让一群技术不精,但有凝聚力,有学习能力的团队去开发。或许会用一个月,甚至更长…但从此
之后,团队中所有成员都将成为三天就可以搞定一个小项目的编程高手。这便是团队的力量。团队中应该具备两种元素:一种是freedom,一种是share。在团队中,
大家可以做想做的事;做自己愿意做的事;做能帮助自己和整个团队共同成长的事。在团队中,我们分享快乐,我们共享技术,我们交流思想。我们是一个团队,是一个整体,不
可再分!We are one apple!

二、one编程小组简介
one 小组由陈超创建,成立于2005,初始成员10人。

经过了4年发展,one小组已颇具规模,成就斐然。
第一批成员(10人)2008年毕业:肖于思走进微软,郭军进入oracle,陈超保送进了中科院,李凤麟、武年华清华,杨永强、李伟健、李中华湖大继续深造…

组内累计有张磊+王剑+朱俊芳+王洋+刘璐+崔晓斐 5名成员担任新生班主任,陈超+张磊+喻洪莲+王剑+朱俊芳+王洋+郑翠先+来凌屿等成员为院学生会成员…

组员获奖内容包括国家级/校级奖学金,建模大赛(校二等奖),ACM大赛(校一等奖、三等奖)等
组员曾参加过多个项目,包括:
C语言学习系统
档案管理系统
数据统一备份系统
人脸识别系统
公交车查询系统web版
电子地图系统
Mini数据库开山之作
……

三、one编程小组基本信息及logo
One编程组宗旨:
One team, Open and Share.
One编程组吸纳积极进取并乐于助人的人。组内成员分享知识、技能、和机会。
One编程组现在是一个团队,将来成员分散在各地,依旧是一个团队。
One编程组区别于其他俱乐部的地方在于:非功利性组织,旨在提高组内成员的核心竞争力、培养新人。

One编程组logo
![logo](http://p.blog.csdn.net/images/p_blog_csdn_net/cctt_1/EntryImages/20090
506/OneGroup.png)
解释:one的宗旨是open and share,环绕一圈的这个词就是ONE了
意为:one是一个整体,不管到哪都是一个整体,都信奉open and share的理念。

四、one编程小组发展情况
One 小组由陈超创建,成立于2005,初始成员10人。现有研究生6人,06级7人,07级12人,以及已工作的元老若干。
下面是组内活动成员简介及进入one感言:
Lead:陈超
Lead-a: 李伟健

O6级:

王剑(5班)
擅长技术:C/C++、数据库设计与开发
个人爱好:吉他,摄影
感言:One让我分享到很多难得的资源,希望One成为一支精英团队!

刘曼霞(6班)
擅长技术:C++
个人爱好:运动,看书,上网。
感言:感谢one小组给我来自各个年级优秀的同学交流的机会!

喻洪莲(4班)
擅长技术:C/C++
个人爱好:阅读,听歌,打羽毛球、乒乓球
感言:希望继续坚持ONE的理念–share;在这个团队中收获知识,收获友谊!

张磊(3班、暂忙后补)
擅长技术:C#

苟旭博(3班)
擅长技术:C、C++
个人爱好:音乐,足球,旅游
感言:注重命名习惯

罗孟儒(6班)
擅长技术:C/C++
个人爱好:逛街,跳操,唱歌,听歌…
感言:以快乐的心态去面对一切

朱俊芳(6班)
擅长技术:C++,C#
个人爱好:看英语电影,爬山,旅游
感言::进入one,我很感激这个机会!

07级:

来凌屿(1班)
擅长技术:C/C++
个人爱好:篮球,摄影
感言:在ONE里不仅认识了很多牛人,了解了专业领域很多前沿的动态,更重要的是感受到了一个团队的力量。

崔晓斐(4班)
擅长技术:C/C++
个人爱好:体育运动,尤其是打排球、乒乓球,羽毛球;听歌;看书;逛街等
感言:One是一个大家庭,是我们大家用真诚,友谊构建起的一方净土,我们期待你能够在这里学会学习,更学会生活。

熊琪燕(4班)
擅长技术:暂无
个人爱好:看书、打排球、徒步旅行
感言:这是一个大舞台,只要你想就可以!

季志斌(5班)
擅长技术:C
个人爱好:听歌,唱歌,桌球,足球
感言:作为one小组中一员感到荣幸,在这个团体中获得知识,学会合作,得到友情。

梁可(5班)
擅长技术:C/C++
个人爱好:听歌,看电影,打羽毛球,游戏
感言:很高兴加入这个团队!!!

刘璐(5班)
擅长技术:C/C++
个人爱好:看电影,聊天,爱运动
感言:大家共同进步,共同更好发展,一起开心

王洋(5班)
擅长技术:C/C++、linux
个人爱好:阅读,听歌,慢跑
感言:在one的一年里,我不仅收获了编程的技巧还收获了珍贵的友谊.以后我会坚持分享的理念,将forever one的精神传承到底,将优秀的习惯传承到底

郑翠先(5班)
擅长技术:C++
个人爱好:篮球,旅游,看电影,滑旱冰,逛酒吧
感言:ONE给了我很多,很感谢,我也会SHARE我所有的,GET我想要的!

龚星(6班)
擅长技术:C/C++
个人爱好:听歌,打羽毛球,桌球,溜冰,K歌,漂流
感言:希望继续坚持ONE的理念–share;在这个团队中收获知识,提高技术,增强编码能力,收获友谊!

谭文婷(6班)
擅长技术:C/C++
个人爱好:听歌,打羽毛球,逛街,交朋友
感言:只能用两个字,很多!!!!

王军(6班)
感言:!

吴远奎(6班)
擅长技术: C++
个人爱好:听歌,看书,运动
感言:One是成功的预见,希望各位学弟学妹有志探索专研的能够加入进来,一为one增加新鲜血液,使它更据活力。二也是为了创造自我,实现自我的一个选择。我相信o
ne会一直走得很好!

五、one编程小组最新动态之橘洲游活动

one小组活动开始了~~

one小组首次外出游玩。清明时节,我们骑脚踏车去橘洲踏青。活动前期,我们策划周到,分工合作。在橘子洲,我们解说各景区、领略大自然的美好、感受毛泽东的“问苍蛮
大地,谁主沉浮”的豪迈气概~~期间,我们还安排了各种活动,如打牌、放风筝、野餐等。最有意思的还属跳绳和杀人游戏……

此次活动给组员们提供了充分交流的平台,不仅促进了组员之间的感情,而且让one更有凝聚力。

我们的车

![我们的车](http://p.blog.csdn.net/images/p_blog_csdn_net/cctt_1/EntryImages/20090
506/1.JPG)
合照,来一个~~头儿不在…

![合影](http://p.blog.csdn.net/images/p_blog_csdn_net/cctt_1/EntryImages/2009050
6/2.JPG)
两个淘气的小孩

![淘气](http://p.blog.csdn.net/images/p_blog_csdn_net/cctt_1/EntryImages/2009050
6/3.JPG)
杀人游戏ing……

![游戏](http://p.blog.csdn.net/images/p_blog_csdn_net/cctt_1/EntryImages/2009050
6/4.JPG)
抓拍,腾空而起

![腾空](http://p.blog.csdn.net/images/p_blog_csdn_net/cctt_1/EntryImages/2009050
6/5.jpg)

六、one编程小组最新动态之08级招新活动

One Group
One 小组由陈超创建,成立于2005,初始成员10人。

One的宗旨是:
One team, Open and Share.
One编程组吸纳积极进取并乐于助人的人。组内成员分享知识、技能、和机会。
One编程组现在是一个团队,将来成员分散在各地,依旧是一个团队。
One编程组区别于其他俱乐部的地方在于:非功利性组织,旨在提高组内成员的核心竞争力、培养新人。

这是一个温暖的大家庭
这是一个有活力的团体
这是一个展现自我的舞台
……
这里有走进微软、oracle、金山、知名企业的牛人
这里有保送中科院、清华、湖大的高手
这里有丰富的学习、编程经验和你分享
open and share
one 期待你的加入!

招新计划:
招新人数:8人
简历要求: 需要介绍自己目前的编程水平、个人性格
简历提交邮箱: [email protected]
截止日期:2009年5月10日

从普通文件中例如txt中读到的中文是使用gbk编码的。但是我始终不知道decode(‘gbk’)之后是什么编码。但是那种应该是某个unicode编码.

我不知道有没有好的处理方式。但是中文分词要先分句。结果我使用string.maketrans()或者是re.sub()…都没有起到将七七八八的符号转换为空
格的效果。最后发现可能是由于编码的问题。然后使用了笨方法来做分句,一个一个字符读,读到对应的就分句。另外注意这里如果是gbk编码一定要decode('gbk
'),而且不能编码成utf-8,也不能使用过去的gbk活着gb2312编码。否则你分出来的句子就会有乱码的问题。这个问题,我一直不明白为啥米。下面是:

def Cut(cutlist,lines): l = [] line = [] for i in lines: if
FindTok(cutlist,i): l.append(“”.join(line)) l.append(i) line = [] else:
line.append(i) return l

然后以行读文件,在切分行为句。上面返回的结果中含有标点符号。标点符号单独存。并且可能结果中包含空格。

cutlist = “[。,,!……!《》<>/”‘::?/?、/|“”‘’;]{}(){}【】(){}():?!。,;、~——+%%`:“”"’‘/n/r
".decode(‘gbk’) for lines in file(inputfilename): l =
Cut(list(cutlist),list(lines.decode(‘gbk’))) for line in l: if line.strip() <>
“”:#这里可能包含空格 li = line.strip().split() for sentence in li: print
“se:”,sentence

大家要copy代码的时候注意格式。反正不管怎么说,总算把中文分句搞定了。大家可以根据自己的需要减少或者增加cutlist

l = [1,2,3,4]

g = l

g[-1] = 3

上面这个方法是引用复制,因为g和l是同一个东东,输出结果是 g=[1,2,3,3]  l =[1,2,3,3]

如果想复制所有的生成一个新的list,那么使用下面的方法

g = [data for data in l]

这样就全部的值都copy 过来

现在你再g[-1] = 5,g和l 的值肯定不一样。

但是如果l=[1,[1,2]] 在使用同样的方法 g = [data for data in l],然后g[1][-1].append(3)

你会发现l中的值和g中的值还是一样的。原因还是由于copy了引用,而没有copy真正的值。

所以要解决的话,使用笨的方法是:

g = []

g.append(l[0])

g.append([data for data in l[1]])

更好的方式是使用list中的extend,

例如

a = [1,2]

b = []

b.extend(a)

a = []

print(b)

可以看到b还是有a原来的值。

今天,听一个老师对学生讲:研究生培养的就是研究问题的能力。一是要发现问题,二是要解决问题…

我听后想:他说的是废话。

后一想:我刚才想的也是废话。

A很希望有一天自己可以拥有全世界第一台电脑ENIAC,后来某种机缘满足了他。他用n辆卡车载着ENIAC回了家,却发现自己的家才有100平米大。而ENIAC有
五六百平米大。A苦于如何处理ENIAC。或许他自己不惜重金又买了一个大型的实验室来放置ENIAC,他又苦于自己不懂如何操作这鬼东西。或者他是一个超级fans
,为了自己喜爱的不顾一切。或许他也会懂得如何操作这ENIAC,然后以后的每天就会一天到晚拨弄那数千个开关,插拔那数万个晶体管,还要防止它受潮,也要喷蟑螂药防
止bug。

B自己家里有台破电脑。他只能每天用那电脑翻纸牌,无聊的时候可以用它上网去翻纸牌。B非常希望有一天更加强大的计算机可以帮他处理其他的事情,因为他觉得翻纸牌没有
啥意思。于是某天心血来潮,他买了台超级并行计算机。这台计算机速度和深深深深…蓝(不是口吃)一样快。可是一年过去了…他发现自己还是在翻纸牌,更无聊的时候
上网去翻纸牌。B陷入沉思:到底是过去的电脑和现在的电脑比到底有啥区别?最后的用途还都是翻纸牌。那为何要买这台超级计算机呢?

我们总是贪图得到更好的东西,寄希望于未来。等到某个更加美好的一天。总没有想过啥东西是适合自己的,啥东西即使自己想要也不适合,啥东西即使得到了也可能丢弃。我们
总是说:这个东西看起来不错,我喜欢,我想要。可是得到后却发现和原来的东西比也好不到那里去,或者还有些副作用。

有人说人有三苦:

一苦是你从不曾拥有你期待的东西;
二苦是你拥有了,却发现你不喜欢它;
三苦是你拥有时不知道它的宝贵,失去了才后悔莫及;

其实就是自己的自由意志得不到实现或者自由意志实现之后,却发现自己是错的。

如果你还在想要和适合的东西之间徘徊不前,那就随便选一个吧,总有一天你会发现自己是选对了还是选错了。或者我们的问题在于如何将想要的东西变成适合自己的东西,或者
如何把适合的东西变成自己想要的东西。这种认知失调总会给很多人带来安慰。

但是还有很多种情况,如果有很多东西是你想要的,那么你想得到哪一个?如果很多东西是适合你的,你又如何选择?就像诚信那篇文章,七个包袱你会扔掉哪一个?我想把渔夫
扔下去,假如我会开船的话。或者我想能不能把每个包袱都减少一点重量。

很多年前,我就一直在考虑如何做抉择,并且如何让自己做出的抉择是对的。后来我发现,从来就没有什么抉择是对还是错。只要你认为你是对的,那你就必须同开始的观念保持
一致,然后坚信自己是对的。所以这个世界就多了很多固执的人,很多种族仇恨,战争,分歧就这样爆发。这是必然。有时让自己好过一点,就要让别人受尽痛苦。有时想让别人
好过点,就要自己受些委屈。大概和谐就是这样。

有天,有小同学问我是读研还是工作。我没有回答。有天,小同学问我是读研好还是读博好。我还是没有回答。有天,小同学问我是去这家公司工作好还是去那家公司工作好。我
依旧没有回答。

说了半天废话,请置若罔闻。

KMeans最主要是思想是

1.播撒K个标识点,K是你要分成几类。

2.网络中所有点对这K个点计算距离,并归入最近的一个标识点中。这样就得到K个类

3.重新计算这K个类的中心距离。

4.是否要更新K个类的中心距离,是否迭代次数为0,如果要更新标识点的位置,并且迭代次数不为0,更新标识点,并跳转回2.

下面是为FPT
写的KMeans算法。这个FPT分裂时只要分成两类,所以就是K=2.单纯的KMeans没有像我写的这样复杂。我这里的距离是计算的两个位数组中的差异位数。

// only divide two parts void KMeans2(FPN * current,FPN * &left, FPN * &right,
const Record& record) { // prepare int k = 2; int count = current->count+1;
KMeansNode<N,order,KHash> nodes = new KMeansNode<N,order,KHash>[count]; int
classLabel = new int[count]; int* totalDistance = new int[count];
memset(totalDistance,0,countsizeof(int));
memset(classLabel,-1,count
sizeof(int)); for(int i = 0; i < current->count;
i++) { nodes[i].Set(current->bfilters[i],current->paths[i],current->branches[i
],current->support[i]); } nodes[count - 1].Set(record,NULL); // train
BloomFilter* centers = new BloomFilter[k]; int* cdistance = new int[k];
// the distance between the center and each node
memset(cdistance,0,k*sizeof(int)); for(int i =0 ; i < k; i++) {
centers[i].Set(rand()%(int)pow(2.0,(double)N-1)); } for(int x = 0; x < 500;
x++) { // iterator for(int i = 0; i < count; i++) { // for each node to
compute the distance with centers int min = N+1; for(int j = 0; j < k; j++) {
int distance = BloomFilter::Distance(nodes[i].record.bfilter,centers[j]);
if(distance < min) { min = distance; classLabel[i] = j; } } } // recompute the
centers // compute the distance between each node in the same class label
for(int i = 0; i < count; i++) { totalDistance[i] = 0; for(int j=0; j < count;
j++) { if(i != j && classLabel[i] == classLabel[j]) { // the same class but
not itself totalDistance[i] +=
BloomFilter::Distance(nodes[i].record.bfilter,nodes[j].record.bfilter); } }
} // compute the distances between the center and each node for(int i = 0; i <
count; i++) { cdistance[classLabel[i]]+=BloomFilter::Distance(centers[class
Label[i]],nodes[i].record.bfilter); } int flag = false; for(int i = 0; i <
count; i++) { if(cdistance[classLabel[i]] > totalDistance[i]) {
centers[i].Set(nodes[i].record.bfilter); flag = true; cdistance[classLabel[i]]
= totalDistance[i]; } } // no update the center then break the loop if(!flag)
{ break; } } right = new FPN(); left = new FPN(); for(int i = 0; i < count;
i++) { if(classLabel[i] == 0) { // insert left
left->Insert(nodes[i].record,nodes[i].branch); } else { // insert right
right->Insert(nodes[i].record,nodes[i].branch); } } delete current; delete []
nodes; delete [] centers; delete [] totalDistance; delete [] classLabel;
delete [] cdistance; }

http://www.tangyuhan.org/
下载地址: [ http://www.tangyuhan.org/wp-content/plugins/download-
monitor/download.php?id=1 ](http://www.tangyuhan.org/wp-content/plugins
/download-monitor/download.php?id=1)

![封面](http://p.blog.csdn.net/images/p_blog_csdn_net/cctt_1/EntryImages/2009042
2/cover.jpg)

0%