浅析十二/十三大汉图

今天逛了人人,被微软亚洲研究院人人主页上分享的一张Gif戳中了G点,此图如下:

怎么一会12个人一会又是13个人嘛!有点意思

之前我愣是看了半天没找出破绽,于是截了图片仔细研究了一下,终于发现其中的奥妙。

阅读全文 »

[转]数据挖掘领域顶级会议期刊及其分析

原作者不明

以下全文转载自 http://www.chinakdd.com/

Journals

Conferences

阅读全文 »

汉明距离 & 曼哈顿距离

汉明距离 (Hamming distance)

在信息论中,两个等长字符串之间的汉明距离(Hamming distance)是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。 例如:

“你和我” AND “你啊我” 之间的汉明距离为1

“hello world” 和 “hello woood” 之间的汉明距离为2

汉明重量是字符串相对于同样长度的零字符串的汉明距离,也就是说,它是字符串中非零的元素个数:对于

二进制字符串来说,就是 1 的个数,所以 11101 的汉明重量是 4。

曼哈顿距离 / 出租车几何 (Taxicab geometry)

出租车几何或曼哈顿距离或方格线距离是由十九世纪的赫尔曼·闵可夫斯基所创词汇,是种使用在欧几里得几何度量空间的几何学用语,用以标明两个点上在标准座标系上的绝对轴距总和。

Taxicab geometry如图,绿色线条表示的是两点之间的欧氏距离,而其他线条表示的就是传说中的曼哈顿距离。直观的表示就是一辆出租车要从一点出发前往另一点所必须走的最短距离。

示意图,引用图片

Python的中文判断,文件以及时间

接近3个月没用python,很多东西又还回去了。 硬盘被格了,原来的很多东西也都没了。

中文判断:

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
uchar = unicode(char, 'utf8') #普通字符 -> utf8
def is_chinese(uchar):
"""判断一个unicode是否是汉字"""
if uchar >= u'/u4e00' and uchar <= u'/u9fa5':
return True
else:
return False def is_number(uchar):
"""判断一个unicode是否是数字"""
if uchar >= u'/u0030' and uchar <= u'/u0039':
return True
else:
return False def is_alphabet(uchar):
"""判断一个unicode是否是英文字母"""
if (uchar >= u'/u0041' and uchar <= u'/u005a') or (uchar >= u'/u0061' and uchar <=u'/u007a'):
return True
else:
return False
def is_other(uchar):
"""判断是否非汉字,数字和英文字符"""
if not (is_chinese(uchar) or is_number(uchar) or is_alphabet(uchar)):
return True
else:
return False
阅读全文 »

[读书笔记]The Art of Readble Code

一旦开始实际编码,最重要的能力往往不是使用华丽、复杂的技巧去解决问题,而是如何写出可读性高的代码。

记得有个牛人有过如下感慨:

我曾在年轻的时候自以为编码水平了得,以写出复杂的递推加上满屏乱飞的goto语句为荣,以写出别人看不懂的代码为傲。若干年后回首才发现当年真是肤浅脑残,如今终于领悟真谛 —— “只要是个人就可以写出可以让计算机理解的代码,而如何写出能够让人类可以理解的代码才是最难的事”。

初写代码的人多少会有这种感悟,当代码长度超过500行之后,一周过去很容易就搞不清楚自己原来写的代码是做什么用的。自己都看不懂自己的代码更何况他人?

《The Art of Readble Code》就是一本讲述如何写可读性高代码的书。这其实只是一本轻量级的教人如何写出好代码的书,可以算是本小《代码大全》。

现在我就稍微总结如何写出好代码的一些小小技巧,内容并不仅限于此书,还有我个人这些年的一些感悟。

0.总结放在前面

其实我在这篇文章中说的这些东西对于外人来说基本没有什么实际意义。对于编程入门者来说,这篇的内容显得空泛、抽象。就算勉强看懂了回头可能很快也就都忘光了。对于老手而言,我写的这些浅显的东西恐怕也就是嗤之以鼻一笑而过。

其实写出可读性高的代码并没有太多高深、复杂的技巧,而且上文提到的这些技巧也没有必要生拉硬拽中脑中再死记硬背下来,唯一要做的不过就是培养起一个好的意识 —— 要做到让一个刚接触这个项目的人能够毫不费力地看懂这些摆在面前的代码! 一旦脑海中有这个意识,下手时代码的质量自然会有所提高。

阅读全文 »

[设计模式]简单工厂模式(Simply Factory Pattern)

简单工厂模式Simply Factory Pattern
_《HeadFirst设计模式》读书笔记_

我们时常能在初学者写的大几百行甚至几千行的程序代码中看到如下片段的身影:

class AnimalShow
{
    //根据不同的动物名称显示对应的动物
    public void DisplayAnimal(String animalName)
    {
        Animal animal;

        if(animalName == "dog")
        {
            animal = new Dog();
        }
        if (animalName == "cat")
        {
            animal = new Cat();
        }

        animal.Display();
    }
}
阅读全文 »

[实践笔记][C#]的笔记搜集养成

DataTable & XML

DataTable/DataSet和XML文件之间的互操作
有一个DataTable(table),需要写成XML文件:

table.WriteXmlSchema(fileName1);
table.ReadXml(fileName2);

读取时:

table.ReadXmlSchema(fileName1);
table.ReadXml(fileName2);

byte[] & string

byte[] string之间的一种更简单的转换方式,不用像传统的方式一样还要动用到字符编码。

1.byte[] -> string

Convert.ToBase64String(byte[] ...);

2.string -> byte[]

Convert.FromBase64String(string ...);
阅读全文 »

[信息检索IR]01.倒排索引(Inverted Index)

假设要查询文本中是否含有某个单词,第一个蹦入我们脑海中的想法一定就是把这个文本从头到尾通读一次,知道读到这个单词为止。
这就是最简单的一种遍历方式。虽然简单,但是在面对许多文本的时候,效率就会显得相当低下。

假设现在有如下4个文本:

_doc1: the day the night_
_ doc2: the day_
_ doc3: the night_
_ doc4: the midnight_

需要查询究竟是哪篇文章含有单词”midnight”(query:midnight)

I.

这时如果按顺序遍历的话,共需要访问10次(依次读取比对the, day, the, night, the, day, the, night, the, midnight)才能得到查询的结果doc4。
那么除了最基本的按照顺序检索之外,是否还具有别的更有效率的方法呢?

阅读全文 »