* Protocol(通信协议) Protocol,是asio在网络编程方面最重要的一个concept。在第一章中的levelX类图中可以看到,所有提供网络相关功能的服务和I/O对象都需要Protocol来确定一些细节。Protocol的约束摘要如下: 1 class protocol 2 { .....
分类:
其他好文 时间:
2014-06-20 23:31:24
阅读次数:
305
一.前 言二.架构浅析三.流程分析 * 常见流程分析之一(Tcp异步连接) * 常见流程分析之二(Tcp异步接受连接) * 常见流程分析之三(Tcp异步读写数据) * 常见流程分析之四(Tcp强制关闭连接) * 常见流程分析之五(Tc...
分类:
其他好文 时间:
2014-06-20 23:30:41
阅读次数:
338
* 架构浅析先来看一下asio的0层的组件图。 (图1.0) io_object是I/O对象的集合,其中包含大家所熟悉的socket、deadline_timer等对象,主要功能是提供接口给用户使用。 services服务是逻辑功...
分类:
其他好文 时间:
2014-06-20 23:29:59
阅读次数:
412
* 前言 源码之前,了无秘密。 ——侯捷 Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社...
分类:
其他好文 时间:
2014-06-20 23:28:10
阅读次数:
540
有人说C++是带类的C;有人说C++是面向对象编程语言;有人说C++是面向过程与面向对象结合的语言。类似的评论网上有很多,虽然正确,却片面,是断章取义之言。 C++是实践的产物,C++并没有为了成为某某类型的语言而设计,而是一切以工程实践为目的,一切以提升语言能力为目的。 1983年C+...
分类:
其他好文 时间:
2014-06-20 23:27:32
阅读次数:
520
* 常见流程分析之一(Tcp异步连接)我们用一个简单的demo分析Tcp异步连接的流程: 1 #include 2 #include 3 4 // 异步连接回调函数 5 void on_connect(boost::system::error_code ec) 6 { 7 if (ec...
分类:
其他好文 时间:
2014-06-20 23:26:52
阅读次数:
522
1.
Python虚拟机会从编译得到的PyCodeObject对象中依次读入每一条字节码指令,
并在当前的上下文环境中执行这条字节码指令。
Python虚拟机实际上是在模拟操作中执行文件的过程
PyCodeObject对象中包含了字节码指令以及程序的所有静态信息,但没有包含
程序运行时的动态信息——执行环境(PyFrameObject)
2.Python源码中的PyFrameObject
typedef struct _frame{
PyObject_VAR_HEAD //"运行时栈"的大小是不确定的...
分类:
编程语言 时间:
2014-06-18 06:33:24
阅读次数:
323
1.字节码指令
LOAD_CONST:从consts表中读取序号为i的元素并压入到运行时栈中
STORE_NAME:改变local名字空间。从符号表names取序号为i的元素作为变量名,
取运行时栈的栈顶元素作为变量值,完成从变量名到变量值的映射关系的创建。
BUILD_MAP:创建一个空的PyDictObject对象,并压入运行时栈
DUP_TOP:将栈顶元素的引用计数增加1,并将它再次压入栈中
ROT_TWO:将栈顶的两个元素进行对调
LOAD_NAME:符号搜索,并将该元素压入运行时栈
Py...
分类:
编程语言 时间:
2014-06-18 00:32:18
阅读次数:
295
1.PyListObject对象 --> 变长可变对象,可看作vector
typedef struct{
PyObject_VAR_HEAD //其中的ob_size表示实际被使用的内存的数量
PyObject **ob_item;//ob_item为指向元素列表的指针,实际上,Python中的list[0]就是ob_item[0]
int allocated;//当前列表中可容纳的元素的总数
}
PyList_Type 对象 --> PyListObject的类型对象
ty...
分类:
编程语言 时间:
2014-06-16 22:48:55
阅读次数:
300
1.PyDictObject对象 --> C++ STL中的map是基于RB-tree的,搜索时间复杂度是O(logN)
PyDictObject采用了hash表,时间复杂度是O(1)
typedef struct{
Py_ssize_t me_hash; //me_key的hash值,避免每次查询都要重新计算一遍hash值
PyObject *me_key;
PyObject *me_value;
}PyDictEntry;
将(key,value)对称为entry,它可以在3种状态...
分类:
编程语言 时间:
2014-06-16 21:22:45
阅读次数:
272