深入理解Python中的ThreadLocal变量(下)

上篇我们看到了 ThreadLocal 变量的简单使用,中篇对python中 ThreadLocal 的实现进行了分析,但故事还没有结束。本篇我们一起来看下Werkzeug中ThreadLocal的设计。

Werkzeug 作为一个 WSGI 工具库,由于一些方面的考虑,并没有直接使用python内置的ThreadLocal类,而是自己实现了一系列Local类。包括简单的Local,以及在此基础上实现的LocalStack,LocalManager 和 LocalProxy。接下来我们一起来看看这些类的使用方式,设计的初衷,以及具体的实现技巧。

阅读全文

从零开始搭建论坛(三):Flask框架简单介绍

前面两篇文章中我们已经了解 Web(HTTP)服务器,Web应用程序,Web框架,WSGI这些 Python Web 开发中的概念。我们知道,Web框架通过将不同Web应用程序中的共性部分给抽象出来,提供一系列通用的接口,从而避免开发者做重复性工作,让其将精力放在业务相关的实现。

接下来一起来看一个具体的 Web 框架,这里选择 Flask,因为它是一个年轻充满活力的微框架,有着众多的拥护者,文档齐全,社区活跃度高。我们的论坛项目 就使用了该框架。

阅读全文

C++ 中的未定义行为

现在我们需要一个程序从控制台读入一个 INT 型整数(输入确保是INT),然后输出其绝对值,你可能闭着眼睛就会写出下面的代码:

1
2
3
4
5
6
7
8
#include <iostream>

int main()
{
int n;
std::cin >> n;
std::cout << abs(n) << std::endl;
}

等下,好好思考两分钟,然后写几个测试例子跑一下程序。那么你找出程序存在的问题了吗?好了,欢迎走进未定义行为 (Undefined Behavior) 的世界。

阅读全文