Tao's blog

Learn something everyday.

Memory check and memory error in c++

C++中的内存检测工具valgrind 可以使用 valgrind工具集来进行c++/c程序的内存相关错误检查和程序运行的profile,进而帮助诊断程序中的错误或者程序调优。 valgrind 中的memcheck工具的用法举例: 假设有一段程序leak.cpp 代码如下 #include <cstdlib> void leak(){ ...

Flask开发之Flask-Login 用户登录管理

使用Flask-Login的几个基本步骤 定义安全的用户模型 不要直接在数据库中保存用户的密码,应该存储他们的哈希值。werkzeug.security 模块中的 generate_password_hash, check_password_hash函数来进行哈希值产生和验证。 密码应该是只写的, 只有写入和验证两个选项。 from flask_login import U...

python json dump 输出中文

在写爬虫时,使用python自带的json模块将网页中需要的信息输出保存到json文件中,发现json文件中的中文 格式全是类似于”\u5176\u5b83”的形式。可见该模块将输出的中文进行了 编码,将utf-8码直接变成了 ascii字符的形式。所以这些字符无法直接阅读。 要直接输出中文需要使用 json.dump()函数的 ensure_ascii=False选项。同时需要采用 co...

Flask开发之Memcached

介绍和基本使用 Memcached是一个分布式缓存系统,可以提高动态网站的访问速率,因为服务器将经常访问的页面或者需要从数据库中提取的在第一次访问时计算好,然后以键值对的形式放到内存之中。之后服务器端根据用户的请求,判断所需的数据是否已经在内存中,如果在直接从内存中将数据返回。避免了再次计算,提升了服务器的响应速度。 在Flask中使用缓存可以直接使用 Wekzeug自带的缓存类,使用...

Flask 开发之 session

HTTP无状态,cookie, session 无状态 由于HTTP协议本身是无状态的,也就是说服务器只接受客户端的HTTP request,然后返回一个HTTP response。 这种无状态有好处也有坏处,好处就是简化了服务器端的功能,就是接受客户端请求然后返回一个响应。在web开始的时候,由于只需要返回静态类型的网页,所以这种设计是能够满足要求的。 但是随着web的发展,这种无状态的...

Flask 开发之 Extensions

介绍 Flask是一个微框架,微的意思是什么呢?就是没有多余的代码,你可以使用简单的代码完成简单应用。完全可以不需要SQL数据层的网站也是可以的。 但是这并不意味着Flask的功能太弱小,Flask开发的一个好处是你完全可以使用自己想使用的任何插件或者模块完成你自己的任务。Flask只提供了一个 在Werkzeug和 Jinja2之间的一个连接。 关于Flask的插件,都可以在这个网站下载...

Flask 开发之Model:Flask-SQLAlchemy

介绍 SQLAlchemy 是一个 Python语言的ORM包,它支持多种数据库,比如 MySQL和 SQLite。而 Flask-SQLAlchemy是一个用于 Flask框架的ORM插件,它依赖于 SQLAlchemy。使用Flask开发框架可以自己直接 SQLAlchemy,也可以使用Flask-SQLAlchemy插件。 一般来讲后者更加方便。所以这里只介绍Flask-SQLAlc...

Django 开发之 Model:后台数据库切换配置

从SQLite切换到 MySQL Django可以使用 SQLite, MySQL等作为后台的数据库,新建一个project默认的配置如下: #使用了SQLite作为数据库 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'...

深入理解计算机系统-第十二章-并发编程

本章以一个简单的echo服务器来阐释并发编程的概念。 1.基于进程的并发编程 基本概念是在父进程中接受客户端连接请求,并创建一个子进程为每一个客户端提供服务。 基本的步骤如下: 服务器接收客户端的连接请求。 服务器派生一个子进程为客户端服务。 服务器接收下一个客户端的请求。 其中至关重要的是服务器每创建一个子进程时,子进程要释放不需要自己使用的资源。而父进程也要释放特定的资...

深入理解计算机系统-读书笔记(第七章)-链接-part2

UNIX系统中处理目标文件的工具

上一篇博客介绍了链接的基本概念, 本篇主要记录一下unix系统中用于处理目标文件的一些工具。 UNIX系统的有很多处理目标文件的工具,尤其是binutils工具包很有帮助。 这些工具包括: ar:创建静态库,插入、删除、列出和提取成员 strings: 列出一个目标文件中所有可打印的字符串 strip: 从目标文件中删除符号表信息 nm: 列出一个目标文件的符号表中定...