2019-06-14 19:22
⁄ 工业·编程
⁄ 共 11831字
许多SQL数据库引擎(除SQLite之外的各种SQL数据库引擎)使用静态、严格的数据类型。对于静态类型,一个值的数据类型由它的容器,即存储这个值的列来决定。SQLite则使用更加通用的动态类型系统。在SQLite中,一个值的数据类型被关联到这个值本身,而不是它的容器。SQLite的动态类型系统向后兼容一般静态类型系统的数据库引擎。在某种意义上,工作在静态类型数据库上的SQL声明也同样能工作在SQLite上。但是SQLite动态类型还允许做一...
SQLite3阅读全文
2019-06-13 18:12
⁄ 工业·编程
⁄ 共 19741字
SQLite3是SQLite一个全新的版本,它虽然是在SQLite2的代码基础之上开发的,但是使用了和之前的版本不兼容的数据库格式和API。SQLite3是为了满足以下的需求而开发的:支持UTF-16编码、用户自定义的文本比较方法、可以对BLOBs字段建立索引。SQLite 3.X版的和SQLite 2.X版的API非常相似,但是有一些重要的改变需要注意。3.X版的API增加到超过185个,所有API接口函数和数据结构的前缀都由"sqlite_"改...
SQLite3阅读全文
2019-06-12 17:10
⁄ 工业·编程
⁄ 共 10303字
SQLite是遵守ACID的轻型数据库引擎,它包含在一个相对较小的C库中。它是D.RichardHipp创建的公有领域项目。不像常见的客户端/服务器结构范例,SQLite引擎不是一个与程序通信的独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用。这在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。其简单的设计...
SQLite3阅读全文
2019-06-11 16:01
⁄ 工业·编程
⁄ 共 10904字
先从全局的角度把握SQLite内核各个模块的设计和功能。SQLite采用了层次化、模块化的设计,而这些使得它的可扩展性和可移植性非常强。而且SQLite的架构与通用DBMS的结构差别不是很大,所以它对于理解通用DBMS具有重要意义。SQLite的内核总的来说分为三个部分,虚拟机(Virtual Machine)、Back-end(后端)和compiler(编译器)。
1、虚拟机(Virtual Machine)
VDBE是SQLite的核心,它的上层模块和下层模块本质上都是为它服务的。它的...
SQLite3阅读全文
2019-06-10 15:25
⁄ 工业·编程
⁄ 共 6032字
1.通过官方的SQLite架构文档,理清大体的系统层次:Architecture of SQLite
2.阅读SQLite Documentation中Technical/Design Documentation章节(根据所在层次阅读代码,对应章节描述进行理解。)
应用层角度,从API(List Of SQLite Functions)角度切入,掌握API文档中所有参数的使用。
3.下载源码包sqlite-src-*.zip,在其src目录下包含了所有源码文件。注意若要编译SQLite库则下载单一文件版本sqlite-amalgamation-*.zip。
架...
SQLite3, 源码阅读全文
2019-06-09 14:33
⁄ 工业·编程
⁄ 共 1191字
这两天尝试将一个用C++实现的项目改用C语言实现。
原本估计工作量并不大,因为在不少人看来,C++只是加了语法糖的C语言而已。
这次尝试并没有重写一点点与业务功能相关的代码,仅仅只是想把原本用C++实现的项目,稍加改写通过C的编译器。实际证明,如果不加这块语法糖,有些实现工作要苦得多。将用c写出来的代码交给C++编译器,要改动的地方有一些,但是真的很少,但将用C++写出来的代码交给C编译器,要改动的地方就不是一点点...
c++, 思考阅读全文
2019-06-08 14:38
⁄ 工业·编程
⁄ 共 1212字
为什么Linux在全世界范围内得到了广泛的应用,而比Linux出现得更早的Minix没有像Linux一样流行呢?
回过头看,本来unix已经在高校中流行开来,但是unix的所有者认为这种不给钱就拿来用的作法是一种侵犯版权的行为,禁止了对unix的自由研究(或者说无偿使用)。Tanenbaum教授感到没有一个实际的操作系统可以做为教学的实例,于是自已动手,和他的学生一道开发出来一个与unix兼容的微型操作系统Minix。
事后看来,Minix系统有两个...
linux, MINIX, 思考阅读全文
2019-06-07 20:03
⁄ 工业·编程
⁄ 共 3110字
说一说C++里的allocator。我们知道,C++ STL里定义了很多的容器(containers),每一个容器的第二个模板参数都是allocator类型。比方说在VC10里,vector类的模板声明为:
template<class _Ty, class _Ax = allocator<_Ty> >
class vector
但是,基本上很少有人会自定义一个allocator。一来,默认的allocator已经够用了;二来,确实不知道该怎么用。一般来说,我们没有必要重新定义一个allocator。自...
内存池阅读全文
2019-06-06 17:41
⁄ 工业·编程
⁄ 共 12589字
Overview
main() –> startup() –> accept_request() –> execute_cgi()
Main senario:
Establish a web server step
建立连接– accept connection from client
Accept request – 读取一条HTTP报文
Handle request – 解释报文,采取行动
访问资源 – 访问报文中指定的资源
构建报文 – 创建带有正确HTTP首部的报文
发送响应 – give the response to client
记录事务处理过程 – record the step into log <– No such i...
tinyhttpd, 开源, 服务器阅读全文
2019-06-05 17:27
⁄ 工业·编程
⁄ 共 1993字
tinyhttpd 是一个不到 500 行的超轻量型 Http Server,用来学习非常不错,可以帮助我们真正理解服务器程序的本质。
看完所有源码,真的感觉有很大收获,无论是 unix 的编程,还是 GET/POST 的 Web 处理流程,都清晰了不少。废话不说,开始我们的 Server 探索之旅。
项目主页:http://sourceforge.net/projects/tinyhttpd/
主要函数:
void accept_request(int);
void bad_request(int);
void cat(int, FILE *);
void cannot_execu...
HTTP协议, tinyhttpd, 服务器阅读全文