论如在C++中何用正确的姿势边迭代、边删除reverse_iterator

在C++的容器中,我们可以边迭代边删除,如下:
std::list<int>::iterator itr = list.begin();
while(itr != list.end();) {
if(condition)
itr = list.erase(itr);
else ++itr;
}
但是,有时候,我们希望使用reverse_iterator也做这个工作:边迭代、边删除:

这个有有点麻烦了,首先要都用rbegin、rend。。其次[......]

继续阅读

Python抓取框架Scrapy快速入门教程

Scrapy是一个非常好的抓取框架,它不仅提供了一些开箱可用的基础组建,还能够根据自己的需求,进行强大的自定义。本文对基本用法和常见问题做一个记录。

1、安装

Scrapy虽然是python的模块,但是依赖包比较多,所以我推荐使用apt安装:
sudo apt-get install python-scrapy
编译狂人 或者 处女座 可以从Pypi上下载自行编译安装。友情提示下:pip或者ezsetup上的自动依赖是不全的,需要自己再补其他包。

本文所用的版本是当前最新版[......]

继续阅读

Python中函数的参数传递与可变长参数

转载自:Python中函数的参数传递与可变长参数

1.Python中也有像C++一样的默认缺省函数
def foo(text,num=0):
print text,num

foo("asd") #asd 0
foo("def",100) #def 100
定义有默认参数的函数时,这些默认值参数位置必须都在非默认值参数后面。

调用时提供默认值参数值时,使用提供的值,否则使用默认值。

2.Python可以根据参数名传参数
def foo(ip,port)[......]

继续阅读

[转载]用Python的class的 __slots__ 节省9G内存

转载自:用Python的 __slots__ 节省9G内存
我们曾经提到,Oyster.com的Python web服务器怎样利用一个巨大的Python dicts(hash table),缓存大量的静态资源。我们最近在Image类中,用仅仅一行 slots 代码,让每个6G内存占用的服务进程(共4个),省出超过2G来。
这是其中一个服务器在部署代码前后的截图:
bVbDv
physical-memory-usage-history
我们alloc了大约一百万个类似如下class的实例:[......]

继续阅读