- 博客(104)
- 收藏
- 关注

原创 动态规划总结(背包问题的深入理解)
有这样两道题:1. 有一段楼梯有n级台阶,规定每一步只能跨一级或两级,要登上第n级台阶有多少种不同的走法?f[i]=sum{ f [ i - c[j] ] }其中c[j]为题目明确告知的可能性选择(在这里可以认为c[0]=1,c[1]=2),用于内循环(如果规定每一步能跨)i - c[j] 就是状态,它转移到状态i有c[j] 数组元素个数个可能性。即i可由i - c[j] 转移而来
2015-01-29 12:59:44
1418
转载 软件安装/程序编译过程
转自阮一峰博客文章源码要运行,必须先转成二进制的机器码。这是编译器的任务。比如,下面这段源码(假定文件名叫做test.c)。#include stdio.h>int main(void){ fputs("Hello, world!\n", stdout); return 0;}要先用编译器处理一下,才能运行。$ gcc test
2015-07-06 23:20:10
1028
原创 flask源码剖析之上下文全局变量
flask有四个线程级的全局变量,两个是程序上下文变量:current_app和g,两外两个是请求上下文变量:request和session.这四个变量只有从flask.globals中导入才可以使用,即from flask import current_appfrom flask import gfrom flask import requestfro
2015-07-03 13:20:48
4062
原创 web框架之cgi.FieldStorage()与数据提交
POST 一般用来向服务端提交数据,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。 协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的
2015-06-17 22:59:37
11975
原创 Web框架
基础知识datetime strftime函数:@decorator原理分析:所谓返回值就是值函数的执行结果# -*- coding:utf-8 -*-import functoolsdef log(path): def wrapper(func): func.__bbbb__ = path return func #
2015-06-08 15:59:56
1350
原创 day3 - 编写ORM
···@classmethod一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法,而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用。既然@staticmethod和@classmethod都可以直接类名.方法名()来调用,那他们有什么区别呢?从它们的使用上来看,@staticmethod不需要表示自身对象的se
2015-06-03 16:40:31
942
转载 python __name__的含义
python 中__name__ = '__main__' 有句话经典的概括了这段代码的意义:“Make a script both importable and executable”。意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行。下面举例说明。先写一个模块:#module.pydef main(): print "we are in %s"
2015-06-02 15:46:37
1116
原创 MetaClass 与 ORM
···MetaClassMetaClass翻译过来就是元类,什么叫元?元者,源也,根也,本也!所谓元类就是能够创造出其他类的类,即原始类。
2015-06-01 23:16:20
1513
原创 day2 - 编写数据库模块
···关键字参数【**kw本身就是dict类型的参数】,见下图:··· 包装函数(访问限制)属性是函数class Student(object): def __getattr__(self, attr): if attr=='age': return lambda: 25调用:
2015-06-01 23:13:09
818
原创 mysql安装、数据库、ORM
python如何操作数据库(如SQLite、MySQL)?SQLiteSQLite的驱动内置在Python标准库中,所以我们可以直接来操作SQLite数据库。使用Python的DB-API时,只要搞清楚Connection和Cursor对象,打开后一定记得关闭,就可以放心地使用。使用Cursor对象执行insert,update,delete语句时,执行结果由 ro
2015-06-01 21:36:03
954
原创 服务器、Web服务器&Web框架
1. 服务器服务器又称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。服务器的构成包括处理器CPU、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。在网络环境下,根据服务器提供的服务类型不同,分为文件服务器,数
2015-05-29 14:00:15
1265
原创 HTML入门(CSS)
一、标签和属性1. meta标签meta: 标签位于文档的头部,不包含任何内容(只有属性,没有内容)。 标签的属性定义了与HTML文档相关联的名称/值对。 标签没有结束标签。注:1) 标签永远位于 head 元素内部;2)元数据总是以名称/值的形式被成对传递的;3)必需的属性: 属性 值
2015-05-27 20:29:31
1120
原创 WSGI接口
所谓WSGI接口就是用户自定义的函数,以实现生成HTML文档作为HTTP请求的响应Body。用户自定义处理函数:# -*- coding:utf-8 -*-'''用户自主编写的方法,专注于生成HTML文档作为HTTP请求的响应BodyHTTP响应的Body==HTML文档(服务器响应浏览器请求)底层代码(接受HTTP请求、解析HTTP请求、发送HTTP响应)不需要我们自己编写,我
2015-05-26 21:05:33
533
原创 SMTP&POP3编程
一、补充知识Unicode编码转换为 utf-8 编码把Unicode编码的u'xxx'转换为UTF-8编码的'xxx'可用encode('utf-8')方法:>>> u'ABC'.encode('utf-8')'ABC'>>> u'中文'.encode('utf-8')'\xe4\xb8\xad\xe6\x96\x87'二、基础知识电子邮件收发流程:
2015-05-22 15:40:28
2848
原创 TCP&UDP编程
补充知识:字符串的join和split一、TCP每打开(创建)一个Socket就表示“打开了一个网络链接”,而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可。Python的接口是对Unix系统调用与Socket函数的库接口函数的直译,非常易于上手,例如:函数socket()返回一个 socket object 套接字对象,通过作为方法来调用这个对象就可
2015-05-21 19:24:21
731
原创 python GUI编程
参考资料:1.官方文档:docs2.Python GUI编程(Tkinter)在编写python GUI程序前,需要决定使用哪个GUI平台。所谓平台,就是图形组件的一个特定集合,可以通过 GUI工具包(一些python模块)进行访问。 平台是食材,能吃但是我们不能直接吃,而GUI工具包就像炊具,操作炊具,搞定食材,天经地义。常用的 GUI工具包有很多,python自带T
2015-05-21 13:49:09
1084
原创 python PIL
要特别注意我们的操作对象是什么1.import Imagef = Image.open('test.jpg') #获得图像文件print f.format, f.size, f.mode #获得图像文件的信息2.import Imagef = Image.open('test.jpg')print f.format, f.size, f.mode#下面是对图像文
2015-05-21 13:29:23
740
原创 XML和HTML解析
所谓的解析,实质就是在一段XML或HTML代码中提取我们想要的信息,方法是XML或HTML它们都有自己的标识——开始、结束还是数据。利用python提供的解析器可以根据这些标识,利用相应的函数(方法)提取出信息,有点正则表达式的味道!一、XMLPython中使用SAX解析XML非常简洁,SAX 是XML 的简单 API。基于事件的语法分析器将(分析出来的)事件发送给应用程序。这
2015-05-20 23:32:08
1985
转载 itertools
如果只是创建了一个迭代对象(实例),它不会事先把无限个元素生成出来,事实上也不可能在内存中创建无限多个元素。无限序列只有在for迭代时才会无限地迭代下去,例如>>> import itertools>>> natuals = itertools.count(1) #创建迭代对象,但并未生成实际的元素>>> for n in natuals:... print n...
2015-05-20 19:34:16
826
原创 base64
Base64:一种最常见的二进制到字符串的转换(编码)方法首先建立一个由64个字符组成的数组(表),6个二进制位可以正好完全索引这64个字符(0~63)每3个字节的二进制数据对应4个字符,其对应关系由查表所得所以,Base64编码会把3字节的二进制数据编码为4字节的文本数据(字符),这些文本数据可以在邮件、网页直接显示有意思的是,如果要编码的二进制数据字节数不是3的倍数,最后会剩下
2015-05-20 19:22:10
433
原创 python分布式进程模型
分布式进程:Process进程分布到多台机器上Python的multiprocessing模块不但支持多进程,其中managers子模块还支持把多进程分布到多台机器上。可以写一个服务进程作为调度者,将任务分布到其他多个进程中,依靠网络通信进行管理。另外值得注意的是,manager和worker两端创建的实例是相关的,即worker的实例,通过验证码和网络IP地址连接到m
2015-05-20 00:53:11
2911
转载 python进程和线程
一、单进程from multiprocessing import Processimport osdef run_proc(name): print 'the %s process id is %d.' %(name,os.getpid()) if __name__=='__main__': print 'the parent process id is %d.' %os.get
2015-05-18 23:09:07
663
原创 序列化:json.dumps & json.loads
命令行交互模式:文本编辑模式:# -*- coding:utf-8 -*-import jsonclass Student(object): def __init__(self, name, age, score): self.name = name self.age = age self.score = sc
2015-05-18 19:52:42
1295
原创 python单元测试(自动化测试)
python内置的dict有如下功能:d=dict(a=1)print d也能用d['a']访问a的value,我想拓展dict的功能,使其能使用d.a访问a的value代码如下:# -*- coding:utf-8 -*-class Dict(dict): def __init__(self, **kw): super(Dict, self
2015-05-17 23:38:25
1517
原创 super继承和普通父类继承
当存在继承关系的时候,有时候需要在子类中调用父类的方法,此时最简单的方法是把对象调用转换成类调用,需要注意的是这时self参数需要显式传递,例如:class FooParent(object): def bar(self, message): print messageclass FooChild(FooParent): def bar(self, message): FooP
2015-05-17 19:50:52
1948
原创 decorator_python装饰器
注意:解决缩进问题用tab键(不用空格)写出一个@log的decorator,使它既支持:@logdef f(): pass又支持:@log('execute')def f(): pass解析:@log形式,相当于调用:fn = log(fn)@log('arg')形式,相当于调用:fn = log('arg')(fn)使用函数
2015-05-13 22:42:34
733
1
原创 python闭包
# -*- coding:utf-8 -*-def count(): fs = [] for i in range(1, 4): def f(i): return i*i fs.append(f(i)) return fsf1, f2, f3 = count()print f1,f2,f3#测试一下
2015-05-13 16:45:02
405
转载 DFS&模拟—POJ3009-Curling 2.0 if的用法区别
解题逻辑:/*DFS+回溯+剪枝*///Memory Time //188K 329MS #includeusing namespace std;const int inf=11;typedef class{ public: int r,c; //冰壶当前位置 bool status; //status冰壶当前状态:运动true ,静
2015-04-12 16:24:34
538
转载 DFS—POJ3083-Children of the Candy Corn
题目POJ3083大意:给定一个迷宫,S是起点,E是终点,#是墙不可走,.可以走先输出左转优先时,从S到E的步数再输出右转优先时,从S到E的步数最后输出S到E的最短步数 W为宽,列数H为高,行数 解题思路:DFS和BFS的综合题,但是写代码时要注意几方面: 1、 左转、右转优先搜索时必须标记当前位置
2015-04-12 09:54:35
927
原创 CentOS安装
主要是看的这篇 http://www.it165.net/os/html/201309/6191.html参考这篇 http://www.centoscn.com/image-text/setup/2014/0425/2871.htmlcentos7的问题可参考这篇的28楼
2015-04-11 22:09:50
400
原创 DFS—poj2488
先上代码poj2488#include #include #include #include using namespace std;#define maxn 26struct Point{ int x, y;} way[maxn * maxn];bool map[maxn][maxn];int p, q;bool found;int dir[8][2]
2015-04-10 21:21:51
461
原创 BFS—POJ3414-Pots
较原文有两处改动:1)以二维数组代替map,更简洁有效 2)输出操作过程,改进后更容易理解(原文好像也是对的,但是说不通)原文地址POJ3414-Pots#include#include#includeusing namespace std;int v1,v2; //两个瓶子的容量int c; //目标残余水量bool vist[101][101];in
2015-04-09 23:39:25
396
转载 BFS—POJ3126-Prime Path
大致题意:给定两个四位素数a b,要求把a变换到b变换的过程要保证 每次变换出来的数都是一个 四位素数,而且当前这步的变换所得的素数 与 前一步得到的素数 只能有一个位不同,而且每步得到的素数都不能重复。 求从a到b最少需要的变换次数。无法变换则输出Impossible 解题思路:超级水题,40入口的BFS + 素数判定不过剪枝之后就没有40入口了,入口数
2015-04-09 17:06:33
451
转载 中国余数定理
维基百科:一元线性同余方程组问题最早可见于中国南北朝时期(公元5世纪)的数学著作《孙子算经》卷下第二十六题,叫做“物不知数”问题,原文如下: 有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?即,一个整数除以三余二,除以五余三,除以七余二,求这个整数。《孙子算经》中首次提到了同余方程
2015-04-01 23:12:22
13159
1
转载 拓扑排序POJ1094
题目:POJ1094大意:对于N个大写字母,给定它们的一些偏序关系,要求判断出经过多少个偏序关系之后可以确定它们的排序或者存在冲突(有环存在,如A利用拓扑排序即可解决这个问题,但由于题目要求的是经过多少个关系之后就可以确定答案,因此每读入一个关系,就要进行一次拓扑排序。如果某一次拓扑排序之后可以确定它们的唯一排序或者发现冲突存在,则后面的直接略过。如果读入所有关系之后依然无法确定唯
2015-04-01 10:48:37
589
转载 数字hash _ 熟练掌握数组当作链表来用的技能
通过这道题要熟练掌握把数组当作链表来用的技能,这和图的邻接表的数组实现及其应用基于同样的原理。本题题目链接Snowflake Snow Snowflakes每个雪花都有六个分支,用六个整数代表,这六个整数是从任意一个分支开始,朝顺时针或逆时针方向遍历得到的。输入多个雪花,判断是否有形状一致的雪花存在。简单的数字哈希,要注意的是每种雪花可以由多种数字组合表示。
2015-03-29 20:22:34
538
原创 图算法总结
图算法大体无非两种,广度优先搜索和深度优先搜索。BFS的应用包括求最短路径,如Dijkstra算法;求最小生成树,如prim和kruskul算法。它们最大的目标就是求得一颗最小树,或最短路径,或最小生成,总之都是树。树,最大的特征就是无环。广度优先搜索BFS:Dijkstra算法和catch the cow有异曲同工之妙,前者是凡是选过的点(每轮的dist最小的)的dist值就
2015-03-29 10:48:38
501
转载 BFS_catch the cow
实质就是遍历所有可能的点(踩点),点入队,先入先出,形成一棵枝繁叶茂的树,谁先到达目的点,谁就胜利,输出此条路径累计的时间数。所以要记录每一次踩点的累计值step.另外,一定要注意的是,已入队的点千万不要重复入队,因为这毫无意义(会重复进行此点此前的操作)代码如下:解法一:#include #include #include #include #include #d
2015-03-29 00:27:54
481
转载 活动规划问题的应用
问题描述:区间相交实质就是求相交区间的总和。首先明确自己是不可能与自己相交的,即单独一行的各个区间之间是不重叠的。所以在向后查找的时候能够确保程序的正确性。这里采用贪心的思想,先只考虑眼前的(所以要先排序),然后比较不同情况考虑:1:内部相交;2:两两部分相交;3:没有相交;#includeint main( ){ int m; while(~s
2015-03-27 21:54:07
403
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人