10 2013 档案
摘要:转载请注明出处http://www.cnblogs.com/goodhacker/p/3387027.html1.python中类方法、类实例方法、静态方法有何区别?区别:类方法和静态方法都可以被类和类实例调用,类实例方法仅可以被类实例调用类方法的隐含调用参数是类,而类实例方法的隐含调用参数是类的实例,静态方法没有隐含调用参数使用示例:python代码: 1 class A(object): 2 def foo(self,x): 3 #类实例方法 4 print "executing foo(%s,%s)"%(self,x) 5 6 ...
阅读全文
摘要:快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。 总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速排序,快速搞定。 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。该方法的基本思想是...
阅读全文
摘要:希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序在时间效率上比前两种方法有较大提高。以n=10的一个数组49, 38, 65, 97, 26, 13, 27, 49, 55, 4为例 1 第一次 gap = 10 / 2 = 5 2 3 49 ..
阅读全文
摘要:直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。设数组为a[0…n-1]。1.初始时,a[0]自成1个有序区,无序区为a[1..n-1]。令i=12.将a[i]并入当前的有序区a[0…i-1]中形成a[0…i]的有序区间。3.i++并重复第二步直到i==n-1。排序完成。下面给出严格按照定义书写的代码(由小到大排序): 1 void Insertsort1(int a[], int n) 2 { 3 int i, j, k; 4 5 for (i =...
阅读全文
摘要:冒泡排序是非常容易理解和实现,以从小到大排序举例:设数组长度为N。1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。3.N=N-1,如果N不为0就重复前面二步,否则排序完成。按照定义很容易写出代码://冒泡排序1void BubbleSort1(int a[], int n){ int i, j; for (i = 0; i a[j]) Swap(a[j - 1], a[j]);}下面对其进行...
阅读全文
摘要:MySQL清空数据库的操作:truncate table tablename;MySQL赋予用户权限命令的简单格式可概括为:grant权限on数据库对象to用户一、grant普通数据用户,查询、插入、更新、删除数据库中所有表数据的权利。1 grant select on testdb.* to common_user@'%' grant insert on testdb.* to common_user@'%' grant update on testdb.* to common_user@'%' grant delete on testdb.*
阅读全文
摘要:今天参加一个面试,问到几个linux命令,卡壳了,然后就悲剧了,于是回来搜索了一下,整理了一些常用命令。以下转自http://www.php100.com/html/webkaifa/Linux/2009/1106/3485.html系统信息 1 arch 显示机器的处理器架构(1) 2 uname -m 显示机器的处理器架构(2) 3 uname -r 显示正在使用的内核版本 4 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) 5 hdparm -i /dev/hda 罗列一个磁盘的架构特性 6 hdparm -tT /dev/sda 在磁盘上执行...
阅读全文
摘要:注:本面试题来源于网络,转载请注明来自http://www.cnblogs.com/goodhacker/p/3366618.html。1. (1)python下多线程的限制以及多进程中传递参数的方式 python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只能有一个线程使用解释器,跟单cpu跑多个程序一个意思,大家都是轮着用的,这叫“并发”,不是“并行”。 多进程间共享数据,可以使用 multiprocessing.Value 和 multiprocessing.Array (2)python多线程与多进程的区别 在UNIX平台上,...
阅读全文
摘要:先来看一个例子: 1 >>> def foo(*args, **kwargs): 2 print 'args =', args 3 print 'kwargs = ', kwargs 4 print '-----------------------' 5 6 7 >>> if __name__ == '__main__': 8 foo(1, 2, 3, 4) 9 foo(a=1, b=2, c=3)10 foo(1,2,3,4, a=1, b=2, c=3)11 foo('a',
阅读全文
摘要:为什么需要线程池 目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等都具有一个共同点,就是单位时间内必须处理数目巨大的连接请求,但处理时间却相对较短。 传统多线程方案中我们采用的服务器模型则是一旦接受到请求之后,即创建一个新的线程,由该线程执行任务。任务执行完毕后,线程退出,这就是是“即时创建,即时销毁”的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是执行时间较短,而且执行次数极其频繁,那么服务器将处于不停的创建线程,销毁线程的状态。 我们将传统方案中的线程执行过程分为三个过程:T1、T2、T3: T1:线程创建时间 ...
阅读全文
摘要:一、类定义:class : 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性。如果直接使用类名修改其属性,那么将直接影响到已经实例化的对象类的私有属性: __private_attrs 两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs类的方法 在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数私有的类方法 __private_method 两个下划线开头,声明该方法为私有方法,不能在类地外部调用。在类的内部调用...
阅读全文
摘要:最近写一个爬虫系统,需要用到python的日志记录模块,于是便学习了一下。 python的标准库里的日志系统从Python2.3开始支持。只要import logging这个模块即可使用。如果你想开发一个日志系统, 既要把日志输出到控制台, 还要写入日志文件,只要这样使用: 1 import logging 2 3 # 创建一个logger 4 logger = logging.getLogger('mylogger') 5 logger.setLevel(logging.DEBUG) 6 7 # 创建一个handler,用于写入日志文件 8 fh = logging.File
阅读全文
摘要:python BeautifulSoup模块的安装安装包下载地址:http://www.crummy.com/software/BeautifulSoup/#Download 文档:http://www.crummy.com/software/BeautifulSoup/documentation.html 下载后解压, 然后进入目录执行 :python setup.py build python setup.py install引入包要用 import bs4 from bs4 import BeautifulSoup利用BeautifulSoup抓取网页内容 1 # coding=utf-
阅读全文
摘要:本文参考http://zoulc001.iteye.com/blog/1186996广度优先算法介绍 整个的广度优先爬虫过程就是从一系列的种子节点开始,把这些网页中的"子节点"(也就是超链接)提取出来,放入队列中依次进行抓取。被处理过的链接需要放 入一张表(通常称为Visited表)中。每次新处理一个链接之前,需要查看这个链接是否已经存在于Visited表中。如果存在,证明链接已经处理过, 跳过,不做处理,否则进行下一步处理。 初始的URL地址是爬虫系统中提供的种子URL(一般在系统的配置文件中指定)。当解析这些种子URL所表示的网页时,会产生新的URL(比如从页面中的&l
阅读全文
摘要:selenium 支持多个客户端:ruby,Java,python。可以用来对网页进行全面测试,支持真实浏览器测试。firefoxIEchromesafari支持多操作系统:Linuxwindowsmac osx安装:sudo pip install selenium测试:1 #coding=utf-82 from selenium import webdriver3 b = webdriver.Firefox()4 b.get("http://www.baidu.com")5 b.find_element_by_id("kw").send_keys(&
阅读全文