flask 上下文的实现

2015-12-30
阅读 2 分钟
15.9k
引言 本文主要梳理了flask的current_app, request, session, g的实现原理 源码说明 本文使用flask 0.5 版本 application context 和request context flask有两个context: application context和request context application context request context current_app request g session 这里需要通俗地解释一下application c...

flask route设计思路

2015-12-28
阅读 5 分钟
16.7k
本文主要梳理了flask源码中route的设计思路。首先,从WSGI协议的角度介绍flask route的作用;其次,详细讲解如何借助werkzeug库的Map、Rule实现route;最后,梳理了一次完整的http请求中route的完整流程。

Python Decorator的来龙

2015-09-08
阅读 3 分钟
4.1k
引言 本文主要梳理了Python decorator的实现思路,解释了为什么Python decorator是现在这个样子。 关于代理模式、装饰模式 设计模式中经常提到的代理模式、装饰模式,这两种叫法实际上是说的同一件事,只是侧重点有所不同而已。 这两者都是通过在原有对象的基础上封装一层对象,通过调用封装后的对象而不是原来的对象来...

Nginx 源码分析:从模块到配置(下)

2015-05-20
阅读 4 分钟
7.8k
Nginx通过configure决定哪些模块被安装。所有安装的模块在编译阶段静态生成,其指针被统一放入ngx_modules数组中,供全局使用。

Nginx 源码分析:从模块到配置(上)

2015-05-19
阅读 7 分钟
9.5k
本篇的主要目的在于分析Nginx的配置功能。由于Nginx的配置基本就是对模块的配置,因此,在讨论配置功能之前,需要先分析Nginx的模块功能。

Nginx 源码分析:ngx_hash_t(下)

2015-05-16
阅读 9 分钟
5.9k
上篇回顾了hash表的基础概念,分析了Nginx中hash表的内存模型及逻辑模型,从而引出了其核型数据结构ngx_hash_elt_t和ngx_hash_t,并从设计的角度解释了如何初始化这两个结构体。

Nginx 源码分析:ngx_hash_t(上)

2015-05-15
阅读 4 分钟
7.3k
从查询的角度来看,数组根据索引值的查询速度很快快。 原因在于数组内元素的位置是基于数组起始位置的绝对位置,而且数组的存储空间是连续的,可以根据下标直接操作指针跳转。

Nginx 源码分析:ngx_queue_t

2015-05-14
阅读 3 分钟
4.7k
源文件路径 版本:1.8.0 {代码...} 主要作用分析 ngx_queue_t是Nginx提供的双向链表。 通常意义上的双向链表是长成这个样子的: {代码...} 包含三个要素:节点数据data,指向前一个节点的指针prev及指向后一下节点的指针next。 然后就是老生常谈的对于双向链表的创建、插入、删除等等。我就不详说了,自行google即可。 ...

Nginx 源码分析:ngx_list_t

2015-05-14
阅读 4 分钟
4.3k
在本篇中,我们先来分析Nginx是如何造这个轮子的,然后对比说明,ngx_list_t和list有什么不同,最后再分析Nginx作者Igor Sysoev重复造轮子的原因。

Nginx 源码分析:ngx_array_t

2015-05-13
阅读 4 分钟
4.5k
1)ngx_array_t使用ngx_pool_t内存池来管理内存; 2)ngx_array_t虽然有预设数组大小的概念,但是在数组元素超出预设值大小时,会在ngx_pool_t内存池中发生重分配。

Nginx 源码分析:ngx_pool_t

2015-05-13
阅读 5 分钟
5.6k
源代码路径 版本:1.8.0 {代码...} 主要作用分析 提供了一种机制,帮助进行资源管理(内存、文件)。可以类比C++中的RAII机制。 以内存管理为例,通常是手工进行malloc/free,这种做法的优点是灵活、高效,缺点是容易出错,造成内存泄漏以及各种莫名其妙的BUG。 因此,在C/C++中正确的管理内存一直是最棘手的问题。 C++...

使用Python解析nginx日志文件

2015-05-04
阅读 3 分钟
20.6k
项目的一个需求是解析nginx的日志文件。 简单的整理如下: 日志规则描述 首先要明确自己的Nginx的日志格式,这里采用默认Nginx日志格式: {代码...} 其中一条真实记录样例如下: {代码...} 其中,客户端型号信息用XXXXXXX代替。 项目中已经按照业务规则对Nginx日志文件进行了处理命名规则如下: {代码...} 并且所有的日...

WSGI规范笔记

2015-04-29
阅读 3 分钟
6.9k
WSGI接口包含两方面:server/gateway 及 application/framework。 server调用由application提供的可调用对象。 另外在server和application之间还可能有一种称作middleware的中间件。 可调用对象是指:函数、方法、类或者带有callable方法的实例。

关于Python类属性与实例属性的讨论

2015-04-13
阅读 3 分钟
11.6k
标题名字有点长。 之所以想写这个文章是因为碰巧看到网上一篇关于Pyhon中类属性及实例属性区别的帖子。因为我之前也被这个问题困扰过,今天碰巧看到了这篇帖子,发现帖子的作者只是描述了现象,然后对原因的解释比较含糊,并没有从根本上解释这个问题,所以才想写一下我对这个问题的想法。