- 浏览: 10979 次
- 性别:
- 来自: 北京
最新评论
文章列表
一、单例模式
如果你想保证某个类从始至终最多只能有一个实例,那么单例模式可能会是你首先想到的,使用__new__静态方法可以很简单的解决:
class Singleton(object):
def __new__(cls,*args,**kwargs):
if '_inst' not in vars(cls):
cls._inst = super(Singleton,cls).__new__(cls)
return cls._inst
Python 2.X 里你可能看到的实现代码:
cla ...
最近在学习Python,在网上遇到一哥们问一个关于用Python多线程的问题。具体就是读取一个文件中的IP信息,然利用百度地图open api获取IP所在地的经纬度,最后再将取回的结果分类为“请求成功”和“请求失败”分别存入两个文件中。由于自己也在学,所以也就拿来做了做,并分别用Python3和Java实现。
稍稍分析了一下需求能看的出来里面性能瓶颈有两个:
1、一个是查询百度地图OPEN API;
2、写磁盘文件;
于是想到把这两部分分开处理,自然的想到了生产-消费者模式来实现。
对于IP文件信息格式如下(我的测试文件有4125 ...
我从windows系统里把一个UTF-8的文件传到centos里,用vim打开却发现中文全部都是乱码,随即在网上查了原因,找到解决办法。以下是几点要注意的要点:
<1> 确认文件的编码
file是检测文件类型的命令,用它检测文件类型
OK--文件UTF-8编码。
<2> 确认ssh终端的编码
如果你使用的是SecureCRT,也要注意要把字符编码设置为:UTF-8
<3> 确认服务器用户目录下是否有.vimrc文
vim多行注释/删除注释
- 博客分类:
- vim
按键操作:注释:ctrl+v 进入列编辑模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I,再插入注释符,比如"//",再按Esc,就会全部注释了。删除:先按v,进入visual模式,横向选中列的个数(如"/ /"注释符号,需要选中两列),再按Esc,再按ctrl+v 进入列编辑模式,向下或向上移动光标,选中注释部分,然后按d, 就会删除注释符号。使用替换命令::%s/^/\/\//g来在全部内容的行首添加//号注释:2,50s/^/\/\//g在2~50行首添加//号注释反过来替换既是删除操作。
http://hi.bai ...
python heapq
- 博客分类:
- python
二叉堆的定义
二叉堆是完全二叉树或者是近似完全二叉树。
二叉堆满足二个特性:
1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。
2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。
当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。当父结点的键值总是小于或等于任何一个子节点的键值时为最小堆。下图展示一个最小堆:
由于其它几种堆(二项式堆,斐波纳契堆等)用的较少,一般将二叉堆就简称为堆。
堆的存储
Python 类型和对象
原址:http://wiki.woodpecker.org.cn/moin/PyTypesAndObjects#A.2Bj9lOm2cJTsBOSGEPTkk-
Shalabh Chaturvedi
Copyright © 2005-2009 Shalabh Chaturvedi
All Rights Reserved.
(小明同学译 wjm251 AT gmail.com)
关于本书
解释新式的Python对象(new-style):
五分钟理解元类(Metaclasses)
- 博客分类:
- python
五分钟理解元类(Metaclasses)
真的,它并非巫术。
原文地址:http://blog.csdn.net/gzlaiyonghao/article/details/3048947
“元类的魔幻变化比
Python命名空间的本质
- 博客分类:
- python
Python的命名空间是Python程序猿必须了解的内容,对Python命名空间的学习,将使我们在本质上掌握一些Python中的琐碎的规则。
接下来我将分四部分揭示Python命名空间的本质:一、命名空间的定义;二、命名空间的查找顺序;三、命名空间的生命周期;四、通过locals()和globals() BIF访问命名空间
重点是第四部分,我们将在此部分观察命名空间的内容。
一、命名空间
Python使用叫做命名空间的东西来记录变量的轨迹。命名空间是一个 字典(dictionary) ,它的键就是变量名,它的值就是那些变量的值。
A namespace is a mapping ...
字符串匹配是计算机的基本任务之一。
举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?
许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。
定义:zip([iterable, ...])zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压),看下面的例子就明白了:
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)
[( ...
如果对Hadoop的shuffle机制有所了解的人都知道,map所产生的中间数据在送给reduce进行处理之前是要经过排序的。具体过程实际上是快速排序,堆排序和归并排序的完美结合。
首先,当map函数处理完输入数据之后,会将中间数据存在本机的一个或者几个文件当中,并且针对这些文件内部的记录进行一次快速排序,这里的排序是升序排序。在map任务将所有的中间数据写放本地文件并进行快速排序之后,系统会对这些排好序的文件做一次归并排序,并将排好序的结果输出到一个大的文件当中。这段代码是在MapTask的内部类MapOutputBuffer中实现的,其中归并排 ...