摘要:
1. 初始化a. 获得IDirect3D9 接口的指针b. 检查设备(显卡)的能力, D3DCAPS9c. 初始化D3DPRESENT_PARAMETERS结构,这个结构是为下一步服务的d. 基于D3DPRESENT_PARAMETERS结构,创建IDirect3DDevice9相关代码:上面代码的执行结果就是生成一个窗口, 得到了一个IDirect3DDevice9。注:这里省略了Windows... 阅读全文
摘要:
1. rep stosdSave the data in eax to memory ES:[EDI] and increase EDI by 4 and decrease ecx by 1.所以就有了一下代码:同理 rep stosw 阅读全文
摘要:
1. 判断某一按键是否按下或者弹起函数 GetAsyncKeyState, 在按键不按下返回为0X0, 即0000 0000 0000 0000 0000 0000 0000 0000在按下时返回0xffff8001 即1111 1111 1111 1111 1000 0000 0000 0001 0x8000 即0000 0000 0000 0000 1000 0000 0000 0000Get... 阅读全文
摘要:
最近在看算法导论, 觉得有些东西可以记录下-》这篇文章只是为了记录。1. 链表的特点链表是一个非常常用的数据结构,其有如下几个基本特点:1. 其内存空间是线性但是非连续的。2. 对于插入和删除有O(1)的时间复杂度3. 不能被索引化4. 查找慢2. 简单的链表实现2.1 链表的内存模型一个典型的双向链表包含一个关键字域,一个前驱,一个后继。其结构源码如下所示:[代码]2.2 链表的创建下面是一个创... 阅读全文
摘要:
在上一篇中,我分析了nginx中的动态数组, 作为对比这里再分析一下SGI STL中的动态数组(vector)。 在开篇之前想借此文大家一个问题,STL在大家的工程中用得多吗?本人现在的公司C++的代码都是用MFC开发的,公司项目也算比较多的,但是在开发过程中用上标准库的真的不太多!?1. vector 源代码分析 STL中的vector也可以认为是对array的包装和升级。 - vector 在... 阅读全文
摘要:
nginx是用c开发的,在C中缺少像C++标准库之类的对数据结构进行包装的东西,所以一切都得自己来。 nginx中自己定义了数组,在ngx_array.h和ngx_array.c文件中。这个数组是可以动态扩展的,俗称“动态数组”(vector抗议了: 你抢了我的名字)。 自己重新定义数组而不用原生数组有如下几个好处: 1. 方便管理。 2. 安全,防止数组越界。 3.容量可... 阅读全文
摘要:
1. 好多废话 在分析完nginx的内存池之后,也想了解一下C++的内存管理,于是就很自然得想到STL。STL是一个重量级的作品,据说当时的出现,完全可以说得上是一个划时代意义的作品。泛型、数据结构和算法的分离、底耦合、高复用… 啊,废话不多说了,再说下去让人感觉像王婆卖瓜了。 啊,还忘了得加上两位STL大师的名字来聊表我的敬意了。泛型大牛Alexander Stepanov和 M... 阅读全文
摘要:
1.为什么需要内存池 为什么需要内存池?a. 在大量的小块内存的申请和释放的时候,能更快地进行内存分配(对比malloc和free)b.减少内存碎片,防止内存泄露。2.内存池的原理 内存池的原理非常简单,用申请一块较大的内存来代替N多的小内存块,当有需要malloc一块比较小的内存是,直接拿这块大的内存中的地址来用即可。 当然,这样处理的缺点也是很明显的,申请一块大的内存必然会导致内存空间的浪费,... 阅读全文
摘要:
1. Graphviz介绍 Graphviz是大名鼎鼎的贝尔实验室的几位牛人开发的一个画图工具。它的理念和一般的“所见即所得”的画图工具不一样,是“所想即所得”。 Graphviz提供了dot语言来编写绘图脚本。什么?!画个图也需要一个语言!!不要急,dot语言是非常简单地,只要看了下面几个列子,就能使用了。2. Graphviz的几个例子 下面的几... 阅读全文
摘要:
1.函数指针的一般原理一个函数只能做两件事情:被调用和返回其地址。函数指针就是利用了返回其地址的特性。一个典型的用法如下。[代码]恩,不过如此。2. 个typedef 结合使用typedef 返回类型(*新类型)(参数)[代码]3.nginx内存池中的ngx_pool_cleanup_tnginx中定义了这样一个清理函数[代码][代码][代码]哇,太经典了,一个结构体中不仅保存着数据,而且保存了这... 阅读全文