自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (12)
  • 收藏
  • 关注

原创 shell 2>&1

cmd >file 2>&1 将命令cmd的stdout重定向到文件file当中,同时把stderr重定向到stdout BashFAQ/055

2017-06-22 17:07:59 463

原创 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 661

原创 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 718

原创 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 954

原创 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 715

转载 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 525

原创 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 1364

原创 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 607

原创 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 914

原创 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 1335

转载 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 335

原创 python if 判断

1·要判断一个变量是否为某种类型的时候,最好用"if a is type",例如:if a is None 或者 if a is list

2016-11-19 15:44:08 762

原创 python实现短网址系统

前言:         在看了这篇文章短 URL 系统是怎么设计的?之后打算自己实现一个出来。这个系统真的很简单,但是里面包含的内容却不少,体现出基本功。嗯,我的第一想法也是文章所说的最烂的方案 短URL系统主要解决下面几个问题:      1·长URL怎么对应短URL(基本)     2·短URL怎么还原成长URL(基本)     3·如何提高并发能力(进阶 长URL

2016-11-09 22:47:04 3713

原创 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 1733

原创 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 600

原创 python项目打包成pip安装&pip install 介绍

先看一个简单的python项目文件目录 . ├── pip_setup │   ├── __init__.py │   └── ext │       └── __init__.py └── setup.py pip_setup就是所需要打包的python文件。我们关注的是setup.py这个文件,这个是打包的关键 from setuptools import setu

2016-10-15 15:07:54 9333

原创 记一次Nginx+uWsgi+flask部署配置

flask;nginx;uWsgi

2016-09-10 16:16:19 3657

原创 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 1029

转载 关于gameloop

gameloop顾名思义就是游戏的主循环了。不过因为机器的不同,为了带来更好的gameplay,需要对GameLoop进行一个深入的探究。 第一:最简单的 while( true ) { update(); render(); } 什么都不需要管,简单了事。但是问题多多。如果还恒定的机器上还好,恒定以一个速率来刷新。但是如果在卡的机器下面,你就gg了。

2016-01-31 16:26:46 2912

转载 关于闭包

我在这里只是稍稍总结闭包(closure)的一下特点,详细的解释还是参考下面的两个链接吧。 1·闭包是词法闭包(Lexical Closure)的简称,是由函数和与其相关的引用环境组合而成的实体。ta是一种特殊的数据结构,ta的scope(作用域)也是一种叫做lexical scope,还有一个概念就是free variable 2·python中可以这么实现一个闭包: de

2016-01-12 00:10:25 462

原创 python 实现逆波兰式

复习实习数据结构:       实现逆波兰式其实搞懂里面的规则就很简单的了。 树的遍历:前序:根左右。中序:左根右。后序:左右根 直接上代码 import operator opMap = {'+':operator.add,'-':operator.sub,"/":operator.truediv,"*":operator.mul} proMap = {'(':100,'+':

2015-12-14 22:01:31 3230

转载 python是一门动态语言

Python 3.4.3  通过下面的例子,来说说。 import sys def modu(x,y): return x%y print(modu(7,4)) print(modu("hello %s","world")) 第一个输出是3,第二个输出呢?you try try。 那么原因到底为何?原因在此

2015-08-15 16:26:04 685

转载 简单实现flask route

import re class NotFlask(): def __init__(self): self.routers = []; @staticmethod def build_router_re(route): route_regex = re.sub('()',r'(?P\1.+)',route) route_reg_str = "^{}$".format(route

2015-07-19 12:05:36 1714

原创 python描述符Descriptor

Descriptor(描述符)这个概念比较难解释。参考一下的顺序进行阅读和理解 定义了__get__,__set__或__delete__方法的类 称为描述符对象 1·官方文档 看完并没有个卵用  2·Python描述符(descriptor)解密 结合例子理解 3·Python之美[从菜鸟到高手]--玩转描述符和属性 玩转描述符和属性 4·python cookbook pytho

2015-06-03 00:30:54 592

原创 python小技巧

1·list表头插入元素    a. list.insert(0,obj)    b. list[0:0] = [obj]

2015-05-24 14:53:37 417

原创 python 内存管理简单总结

1·python的垃圾回收机制主要是使用引用计数法,即为,每个生成的对象增加一个计数器,当这个计数器为0的时候进行垃圾回收。 2·但是引用计数法不能解决循环引用问题,即为A引用了B,B引用了A,A,B的引用数都为1,但是明显A,B也垃圾,应该回收了*- 那么python因为GC模块来解决循环引用问题。方案是:标记-清除法。原理,将所有的对象拷贝一份出来,寸成一个双向链表, 然后对每个

2015-05-22 20:07:37 620

原创 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 702

原创 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 1969

原创 Python3.4的Pillow库实现验证码图片

简单来说实现验证码就是一下几个步骤随机几个验证码字符将字符draw到image上添加一下干扰旋转,模糊,锐化image from PIL import Image,ImageDraw, ImageFont, ImageFilter import random _letter_cases = 'abcdefghjkmnpqrstuvwxy' _upper_cases = _letter_cases

2014-12-16 22:37:25 7940

转载 python正则表达式学习笔记01

re模块

2014-10-12 16:11:57 574

原创 Python deque学习笔记01

from collections import deque

2014-10-12 15:31:24 5182

原创 新浪微博开发之php开发

PS:这个是菜鸟教程 因为功能需求的原因,需要使用新浪微博的一些接口,于是看了一下如何开发新浪微博开发。 马上进去正题。 第一步:http://open.weibo.com/            在新浪微博·开发平台创建一个应用,因为我的是php应用,所以是网站接入。然后开始接入,之后要填写开发者信息。然后就要验证网站所有权 输入网站名称(自己喜欢),网站域名(重点)不能乱填,填你网站

2013-03-31 01:43:44 1556

原创 关于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 3438

转载 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 531

原创 java小基础(1)关于参数传递

题目:                Integer integer=new Integer(1);                A(integer);                System.out.println(integer);                               String string="nu";                B(stri

2012-10-11 21:44:19 364

原创 拓扑排序

实现的基本方法   拓扑排序方法如下:   (1)从有向图中选择一个没有前驱(即入度为0)的顶点并且输出它.   (2)从网中删去该顶点,并且删去从该顶点发出的全部有向边.   (3)重复上述两步,直到剩余的网中不再存在没有前趋的顶点为止.(如果还有,证明是一个环)   作用:  ③一个DAG的拓扑序列通常表示某种方案切实可行。     注意: 可以存

2012-09-26 23:32:42 350

转载 逆波兰式

定义:  一个表达式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 562

转载 Struts2中的特殊符号

#:从actioncontext中取值,前面加上# %:%{#username}百分号的作用就是将大括号中的值当成ognl表达式 $:用于在struts配置文件中 #、%和$符号在OGNL表达式中经常出现,而这三种符号也是开发者不容易掌握和理解的部分。在这里笔者简单介绍它们的相应用途。 1.#符号的用途一般有三种。    1)访问非根对象属性,例如示例中的#session.msg表达

2012-08-26 14:39:19 1030

原创 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 2361

原创 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 2730 1

即时通讯服务器设计思路

即时通讯服务器设计思路

2010-10-10

android camera(3)

android camera(3)自动对焦功能

2012-07-21

android camera1

android camera1的demo只有预览功能

2012-07-19

vim+破解方法

将viPlugin2.lic文件拷贝到eclipse根目录下就可以

2012-07-11

Effective_C++中文版

Effective_C++中文版Effective_C++中文版

2011-06-05

android camera(2)

android camera含有照相功能版本

2012-07-21

TestMapABCDemo.zip

一个很不错的mapabc地图使用学习资料

2012-08-11

android camera(4)

android camera zxing

2012-07-23

ListViewTest.rar

android listview 添加button

2012-07-26

listViewTest2.rar

android listview(2).rar

2012-07-30

my Map.rar

myMap.rar地图

2012-08-11

OpenGL nehe 教程

OpenGL nehe 教程所有课程的源代码

2011-10-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除