mattkang

他掀开被单,整了整胸前的红领巾,开始了这段编程旅程

社区帖子anti-spam综述

搞了anti-spam之后,发现原来杀毒软件的原理也是类似的,浏览器的AdBlock插件原理也是类似的. 目的 垃圾是不可能根绝的,就跟犯罪不可能根绝一样.所以anti-spam的目的,就是提高攻击成本,降低防御成本.攻击者的目的无非就是牟利,当他们成本太高的时候,就会降低攻击力度. ...

2014-11-27 00:07:29

阅读数:3014

评论数:2

飘逸的python - 使用dis模块进行代码层次的性能剖析

dis — Disassembler for Python bytecode,即把python代码反汇编为字节码指令. 使用超级简单:python -m dis xxx.py 当我在网上看到while 1比while True快的时候,我感到很困惑,为何会有这种区别呢? 于是使用dis来深入. ...

2014-11-25 12:22:41

阅读数:5598

评论数:2

飘逸的python - 使用图像匹配SIFT算法进行LOGO检测

先上效果图.

2014-11-24 18:11:42

阅读数:10685

评论数:1

飘逸的python - 实现trie树

trie,又称前缀树或字典树. 它利用字符串的公共前缀来节约存储空间. 定义 Trie树中每个单词都是通过character by character方法进行存储,相同前缀单词共享前缀节点. 可以看到,每条路径组成一个单词.上面这颗树存了to/tea/ted/ten/inn这些词. ...

2014-11-24 15:56:21

阅读数:9008

评论数:1

飘逸的python - 作用域与lookup策略

首先了解什么是命名空间,命名空间是一个”命名->对象“的映射,在python中用dict实现的。 而作用域,是指能直接访问到的命名空间。 当我们访问一个变量时,会按LEGB的顺序来lookup: L->Local. 即局部变量,比如定义在def或lambda中的变...

2014-11-23 00:55:09

阅读数:4308

评论数:0

飘逸的python - 为什么修改全局的dict变量不用global关键字

比如下面这段代码 s = 'foo' d = {'a':1} def f(): s = 'bar' d['b'] = 2 f() print s print d 为什么修改字典d的值不用global关键字先声明呢? 这是因为, 在s = 'bar'这句中,...

2014-11-23 00:10:45

阅读数:4708

评论数:0

飘逸的python - 大数据TopK问题的quick select解法

TopK问题,即寻找最大的K个数,这个问题非常常见,比如从1千万搜索记录中找出最热门的10个关键词. 方法一: 先排序,然后截取前k个数. 时间复杂度:O(n*logn)+O(k)=O(n*logn)。 方法二: 最小堆. 维护容量为k的最小堆.根据最小堆性质,堆顶一定是最小的...

2014-11-21 18:17:08

阅读数:5492

评论数:4

飘逸的python - and_or大法

George Boole神奇的将逻辑变成了代数,使之可以演算,因此,被叫做布尔代数.而and和or是布尔代数其中的2个符号. 首先,我们要明确一个东西,Python和很多语言一样,都是返回两个被操作对象中的一个,而非它们的布尔表达式 True 或 False. 比如 >>False...

2014-11-20 17:05:18

阅读数:2229

评论数:0

飘逸的python - 八皇后问题简洁解法

思路: 使用DFS.用一维数组表达坐标,其中下标为行,元素为列.A[i]=j表示将第i行的皇后放在j列上.一行一行依次遍历(从上往下),决定放在哪列(从左往右),这样就不用判断行冲突,只需要判断列冲突和主斜线副斜线冲突.(行-列)标识主斜线, (行+列)标识副斜线. 下面上代码. ...

2014-11-20 10:34:24

阅读数:5372

评论数:2

当python邂逅vim

先上效果图: 前言: 在这个年纪爱上vim,不是因为它漂亮,只是那天阳光很好,我用它敲坏了键盘. ------一位不愿意透露姓名的人士 第一次接触vim,是在上linux操作系统的课上,当时的想法是,"这东西怎么这么难用,要输入个东西都不知道怎么输入". 但...

2014-11-18 18:11:29

阅读数:3644

评论数:0

什么是string interning(字符串驻留)以及python中字符串的intern机制

In computer science, string interning is a method of storing only one copy of each distinct string value, which must be immutable. Interning stri...

2014-11-16 11:34:23

阅读数:3916

评论数:1

试试pypy

pypy是一个python的解释器和JIT编译器。可以在不修改任何代码的情况下大幅提升python代码的性能。 使用超级简单,在官网下载编译好的二进制包进行安装,然后然后运行代码的时候指定这个解释器就行了。 我们来试试下面这段代码。 import time t1 = time.time() ...

2014-11-16 09:46:56

阅读数:2738

评论数:0

飘逸的python - 字符串的KMP匹配算法

首先我们来看一下字符串的朴素匹配. 可以想象成把文本串s固定住,模式串p从s最左边开始对齐,如果对齐的部分完全一样,则匹配成功,失败则将模式串p整体往右移1位,继续检查对齐部分,如此反复. #朴素匹配 def naive_match(s, p): m = len(s); n = len...

2014-11-10 11:20:27

阅读数:6507

评论数:5

飘逸的python - yield简明教程

发现还有很多人对yield不理解,云里雾里,于是试着用文字表述. 只要函数含有yield语句,它就返回一个生成器.所以我们与其把其看成函数定义,不如看作是生成器定义.函数用return返回,而生成器用yield返回. 接下来是yield的行为. 比如 def html(): y...

2014-11-07 10:56:34

阅读数:3705

评论数:0

飘逸的python - 不使用关键字,求和1+2+…+n

根据题意,我们不能用到if/else/for/while等关键字. --------------思考中------------ 思路: 1.用递归实现循环 2.递归的终止条件不用if怎么判断呢?  答案是字典,其中用not not n来把数字n转成bool. 上代...

2014-11-03 15:38:44

阅读数:3608

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭