- 博客(62)
- 资源 (12)
- 收藏
- 关注
原创 shell 2>&1
cmd >file 2>&1将命令cmd的stdout重定向到文件file当中,同时把stderr重定向到stdoutBashFAQ/055
2017-06-22 17:07:59
406
原创 Postgresql 递归查询
每个comment记录它的父级的commentclass Comment(db.Model): id = db.Column(db.Integer, primary_key=True) content = db.Column(db.String) parent_id = db.Column(db.Integer)included_parts = db.session.
2017-06-14 22:36:03
597
原创 fluent python读书笔记
第一章 1. the python data model - 介绍了三个magic method __getitem__, __len__(内置的会比自己实现的快,因为CPython有优化,因此len不是一个method),还有collections.namedtuple,跟struct类似,挺好用的,用来保存数据增加可读性,类似一个没有操作的class 2.data str
2017-06-07 21:36:37
655
原创 WebServer和python app之间的联系
WebServer和App的那些事webserver服务器与python app的联系是比较简单的。根据WSGI接口协议,App端只要定义def simple_app(environ, start_response)一个接口两个参数的callable obj就可以了。 在WebServer端则需要:import os, sysdef run_with_cgi(application): en
2017-03-20 21:17:11
876
原创 gunicorn分析 基于 tag0.2
gunicorn 工作原理1.工作模型 gunicorn采用的是master-worker模型,一个master进程,多个worker进程。master进程负责管理worker进程 def spawn_workers(self): workers = set(w.id for w in self.WORKERS.values()) for i i
2017-03-08 22:00:21
643
转载 flask一次request请求过程 基于tag0.7
tag 0.4 没有什么重大改变tag 0.5 最大的变化就是将原本一个flask.py文件按照功能分模块了,不再是揉杂在一个文件里面tag 0.6 新增了signal功能tag 0.7 功能改动大
2017-03-02 21:26:54
472
原创 flask的request_context原理 基于flask v0.1
一来就上代码,问你怕没有_request_ctx_stack = LocalStack()current_app = LocalProxy(lambda: _request_ctx_stack.top.app)request = LocalProxy(lambda: _request_ctx_stack.top.request)session = LocalProxy(lambda: _
2017-02-27 22:32:32
1269
原创 flask一次request请求过程 基于tag0.2和0.3
前言: 在tag为0.2和0.3的版本中,flask的一次request请求过程没有发生太大的改变。增加的内容: 1·tag为0.2版本中 增加模块化的支持,应该就是blueprint的前身。目的也是为了更好的管理大型项目。例如:app = Flask(__name__)app.register_module(admin, url_prefix='/admin
2017-02-26 16:41:43
553
原创 flask一次request请求过程 基于tag0.1
以下是基于flask@0.1(从最简单的开始)前提: flask是一个web app,它是跟wsgi_server交互的。他们之间的关系就不在这里叙述了详情请看 WSGI接口从这里开始: def wsgi_app(self, environ, start_response): """The actual WSG
2017-02-25 19:05:50
853
原创 Connection:Keep-Alive 和 Transfer-Encoding: chunk
问题: 在HTTP早期每个HTTP请求都会打开一个TCP socket连接,传输完数据之后服务端主动断开这个TCP链接。如果HTTP头部有 Connection:Keep-Alive 这个字段,那么客户端和服务器之间用于传输数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接,省去了重新建立TCP连接的消耗。那么问题来了,如果是Keep-Aliv
2016-12-17 21:08:23
1239
转载 nginx root alias
一直没有搞清楚nginx的root路径:location /img/ { alias /var/www/image/;}#若按照上述配置的话,则访问/img/目录里面的文件时,ningx会自动去/var/www/image/目录找文件location /img/ { root /var/www/image;}#若按照这种配置的话,则访问/img/目录下的文件
2016-12-11 18:41:42
294
原创 python if 判断
1·要判断一个变量是否为某种类型的时候,最好用"if a is type",例如:if a is None 或者 if a is list
2016-11-19 15:44:08
690
原创 python实现短网址系统
前言: 在看了这篇文章短 URL 系统是怎么设计的?之后打算自己实现一个出来。这个系统真的很简单,但是里面包含的内容却不少,体现出基本功。嗯,我的第一想法也是文章所说的最烂的方案短URL系统主要解决下面几个问题: 1·长URL怎么对应短URL(基本) 2·短URL怎么还原成长URL(基本) 3·如何提高并发能力(进阶长URL
2016-11-09 22:47:04
3634
原创 flask-tips(01)去掉url末尾的/
后端实现: @mod.before_request def clear_trailing(): from flask import redirect, request rp = request.path print request.query_string if rp != '/' and rp.endswith('/'): rp
2016-11-05 16:39:38
1656
原创 python __getattr__和__getattribute__
在python中实例的属性访问都会经过__getattribute__,如果属性找不到则就会调用__getattr__class A(object): def __init__(self, name): self.name = name def __getattribute__(self, item): try: ret
2016-11-03 23:11:59
553
原创 python项目打包成pip安装&pip install 介绍
先看一个简单的python项目文件目录.├── pip_setup│ ├── __init__.py│ └── ext│ └── __init__.py└── setup.pypip_setup就是所需要打包的python文件。我们关注的是setup.py这个文件,这个是打包的关键from setuptools import setu
2016-10-15 15:07:54
9124
原创 python源码阅读-闭包实现
一、缘由 听了朋友吹Lua的闭包实现,感觉Lua的闭包实现很优雅,之前也在网上看到一些关于python闭包的源码分析,但是好像很复杂的样子没有细细深究。所以现在好好分析一下。二、开始 以这段代码开始(基于Python 3.4.4,CPython):def f(x): def add(value): return x+value r
2016-03-28 00:22:13
938
转载 关于gameloop
gameloop顾名思义就是游戏的主循环了。不过因为机器的不同,为了带来更好的gameplay,需要对GameLoop进行一个深入的探究。第一:最简单的while( true ) { update(); render(); }什么都不需要管,简单了事。但是问题多多。如果还恒定的机器上还好,恒定以一个速率来刷新。但是如果在卡的机器下面,你就gg了。
2016-01-31 16:26:46
2725
转载 关于闭包
我在这里只是稍稍总结闭包(closure)的一下特点,详细的解释还是参考下面的两个链接吧。1·闭包是词法闭包(Lexical Closure)的简称,是由函数和与其相关的引用环境组合而成的实体。ta是一种特殊的数据结构,ta的scope(作用域)也是一种叫做lexical scope,还有一个概念就是free variable2·python中可以这么实现一个闭包:de
2016-01-12 00:10:25
399
原创 python 实现逆波兰式
复习实习数据结构: 实现逆波兰式其实搞懂里面的规则就很简单的了。树的遍历:前序:根左右。中序:左根右。后序:左右根直接上代码import operatoropMap = {'+':operator.add,'-':operator.sub,"/":operator.truediv,"*":operator.mul}proMap = {'(':100,'+':
2015-12-14 22:01:31
3097
转载 python是一门动态语言
Python 3.4.3 通过下面的例子,来说说。import sysdef modu(x,y): return x%yprint(modu(7,4))print(modu("hello %s","world"))第一个输出是3,第二个输出呢?you try try。那么原因到底为何?原因在此
2015-08-15 16:26:04
642
转载 简单实现flask route
import reclass NotFlask():def __init__(self):self.routers = [];@staticmethoddef build_router_re(route):route_regex = re.sub('()',r'(?P\1.+)',route)route_reg_str = "^{}$".format(route
2015-07-19 12:05:36
1666
原创 python描述符Descriptor
Descriptor(描述符)这个概念比较难解释。参考一下的顺序进行阅读和理解定义了__get__,__set__或__delete__方法的类 称为描述符对象1·官方文档 看完并没有个卵用 2·Python描述符(descriptor)解密 结合例子理解3·Python之美[从菜鸟到高手]--玩转描述符和属性 玩转描述符和属性4·python cookbook pytho
2015-06-03 00:30:54
498
原创 python 内存管理简单总结
1·python的垃圾回收机制主要是使用引用计数法,即为,每个生成的对象增加一个计数器,当这个计数器为0的时候进行垃圾回收。2·但是引用计数法不能解决循环引用问题,即为A引用了B,B引用了A,A,B的引用数都为1,但是明显A,B也垃圾,应该回收了*-那么python因为GC模块来解决循环引用问题。方案是:标记-清除法。原理,将所有的对象拷贝一份出来,寸成一个双向链表,然后对每个
2015-05-22 20:07:37
571
原创 python yield send
def cd(n): while n>=0: print("first n:"+str(n)) newn = yield n print("second n:"+str(n)) print("fist newn:"+str(newn)) if newn is not None:
2015-05-18 23:36:39
616
原创 python赋值总结和分片操作
在python中,对于值只有两种,要么可变(list,dict,tuple),要么不可变(int,long,str)。很多时候要理解赋值过程,可以将其看作成一个指针操作。例如:a = 4;#一个名叫a的指针指向一个值为4的地址空间b = [2,3,4,5]#一个名为b的指针指向一个list。那么对于分片操作就很好理解了。 a = [2,3,4];b = a[:]
2015-05-17 21:15:46
1920
原创 Python3.4的Pillow库实现验证码图片
简单来说实现验证码就是一下几个步骤随机几个验证码字符将字符draw到image上添加一下干扰旋转,模糊,锐化imagefrom PIL import Image,ImageDraw, ImageFont, ImageFilterimport random_letter_cases = 'abcdefghjkmnpqrstuvwxy'_upper_cases = _letter_cases
2014-12-16 22:37:25
7837
原创 新浪微博开发之php开发
PS:这个是菜鸟教程因为功能需求的原因,需要使用新浪微博的一些接口,于是看了一下如何开发新浪微博开发。马上进去正题。第一步:http://open.weibo.com/ 在新浪微博·开发平台创建一个应用,因为我的是php应用,所以是网站接入。然后开始接入,之后要填写开发者信息。然后就要验证网站所有权输入网站名称(自己喜欢),网站域名(重点)不能乱填,填你网站
2013-03-31 01:43:44
1477
原创 关于struts2传参的一些看法
以下是我刚接触struts不久(一天不到)之后,对struts2传参数的一些看法,求拍砖,求指导。请先移步到OGNL官方文档解释再看看以下的例子:/show.do?id=1&name=bin" >我是连接struts.xml /next.jsp /index.jsp ShowAction类的show方法:public String s
2012-11-01 17:10:26
3375
转载 java.util.ConcurrentModificationException
工作中碰到个ConcurrentModificationException。代码如下:List list = ...;for(Iterator iter = list.iterator(); iter.hasNext();) { Object obj = iter.next(); ... if(***) { list.remove(obj);
2012-10-28 14:56:31
489
原创 java小基础(1)关于参数传递
题目: Integer integer=new Integer(1); A(integer); System.out.println(integer); String string="nu"; B(stri
2012-10-11 21:44:19
324
原创 拓扑排序
实现的基本方法 拓扑排序方法如下: (1)从有向图中选择一个没有前驱(即入度为0)的顶点并且输出它. (2)从网中删去该顶点,并且删去从该顶点发出的全部有向边. (3)重复上述两步,直到剩余的网中不再存在没有前趋的顶点为止.(如果还有,证明是一个环) 作用: ③一个DAG的拓扑序列通常表示某种方案切实可行。 注意:可以存
2012-09-26 23:32:42
315
转载 逆波兰式
定义: 一个表达式E的后缀形式可以如下定义: (1)如果E是一个变量或常量,则E的后缀式是E本身。 (2)如果E是E1 op E2形式的表达式,这里op是如何二元操作符,则E的后缀式为E1'E2' op,这里E1'和E2'分别为E1和E2的后缀式。 (3)如果E是(E1)形式的表达式,则E1的后缀式就是E的后缀式。 以上那个是来至百度的解释
2012-09-26 19:48:33
512
转载 Struts2中的特殊符号
#:从actioncontext中取值,前面加上#%:%{#username}百分号的作用就是将大括号中的值当成ognl表达式$:用于在struts配置文件中#、%和$符号在OGNL表达式中经常出现,而这三种符号也是开发者不容易掌握和理解的部分。在这里笔者简单介绍它们的相应用途。1.#符号的用途一般有三种。 1)访问非根对象属性,例如示例中的#session.msg表达
2012-08-26 14:39:19
981
原创 mapabc 定位
先说说我的测试机器:nexus s,操作系统:android 4.1。以下的结果都是通过nexus s上测试通过。还是直接上代码package com.myMap;import java.util.ArrayList;import java.util.List;import android.R.drawable;import android.R.integer;
2012-08-11 23:17:55
2287
原创 android ListView添加button(2)
先说说我的测试机器:android 虚拟机,sdk 2.3.3。直接上代码:package com.listViewTest2;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;i
2012-07-30 22:22:37
2642
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人