摘要:
这个问题一直似是而非的,昨天闲着无事,便细看一下,发现还是挺容易的。总结起来可以分为以下几块:1、空类的内存分布2、带变量的类的内存分布3、带虚函数的类的内存分布4、带虚函数的子类的内存分布5、关于虚析构的描述6、关于纯虚函数为何必须在子类中实现的问题。未完成部分:1、关于虚基类的结构分布。1、空类的内存分布比较简单,一般用一个字节表示,据说是为了标识类而作的特别的安排。如下代码:class A{}则sizeof(A) 为1.2、如果类中包含变量,则类的大小为变量的大小。3、类中一旦带有虚函数,则类的大小增加4个字节,前4个字节(针对32位机器)为虚表的入口地址,此地址指向一个数组,用来存放虚 阅读全文
摘要:
地址:http://vckbase.com/index.php/wv/1072.html,很多年前就看过一次,当时就觉得写的很细致,多年之后,偶然的机会又看到了,记下来些点滴. 阅读全文
摘要:
这儿http://code.google.com/p/nginxsrp/wiki/NginxCodeReview,针对nginx的一些细节进行了讲解,看了受益良多.看到ngx_queue的时候,发现其实是一个简单的双向链表,居然看来看去理不清这个链表是怎么运作的,只好画图,然后发现,原来这个双向列表的prev实际表示的是next,这样一来理解起来就容易多了.以下的代码为转载:下面是一个queue操作的例子#include<stdio.h>#include"ngx_config.h"#include"ngx_conf_file.h"#inclu 阅读全文
摘要:
nginx在windows上采用IOCP的通讯机制,此通讯机制是windows专有的,之前对IOCP有所涉猎,一直未深入研究,刚好借这个机会,弄清IOCP的使用方法. 阅读全文
摘要:
其实应该叫做静态加载各模块,因为此加载的过程实际上是在编译的时候完成的,而非运行时根据配置文件动态加载.假设这样的场景,程序有很多模块,每种模块的配置写在各自的代码中(可能为.cpp,也可能为.h),在调用处只是将其简单申明,然后加载进来,若某一天不需要此模块,只需简单的在调用处屏蔽代码即可.此代码从nginx代码中抽取,为了简单修改了部分代码,以免引入过多的概念. 1 // ngx_module_load_test.cpp : Defines the entry point for the console application. 2 // 3 4 #include "stdafx 阅读全文
摘要:
网上有很多关于内存的学习,此学习的目的是为了能将内存用法化为自己的东西灵活用在别处.总体思路是化整为零.参考其它的文章地址:http://blog.csdn.net/v_july_v/article/details/7040425先依此画张图:内存池的结构比较简单,有几点需特别说明:1)内存池在使用之前需创建,如 pool = ngx_create_pool(1024, NULL);2)在使用内存池的时候均通过p = ngx_palloc(pool, 512);分配内存.3)第一个内存块与后续的内存块的大小有些微的差异,以1024大小的内存池为例,第一个内存块的数据区大小为1024-sizeo 阅读全文
摘要:
今天开发代码的时候发现前人的代码很多的重复,看的极累,因此考虑优化合并,结果发现需要动用到函数参数方能使得逻辑上看起来简单清晰。想到了boost的应用,可以比较简单的实现函数参数的功能。以下为简单的实现代码:// testfunction_param.cpp : Defines the entry point for the console application.// 一个简单的函数参数的应用,即将类函数作为一个入参,由别的函数通过此入参调用此函数。// boost方法比较简单的解决了这个问题。#include "stdafx.h"#include <iostrea 阅读全文
摘要:
在网上看到的,经测试装有wxpython的,版本为2.7.3的python可用。# !usr/bin/env python 2.7.3# coding: utf-8# filename: notepad.pyfrom Tkinter import *from ScrolledText import *import tkMessageBoxfrom tkFileDialog import *import fileinputt1=[]root=Nonedef die(): sys.exit(0)def about(): tkMessageBox.showinfo("Tkeditor&qu 阅读全文
摘要:
在网上找了一堆,也看了很多,发现暂时只有这个符合自己的期望,原地址:http://blog.csdn.net/kbkiss_1/article/details/5786718# !usr/bin/python # coding: utf-8# parsexml.py # 本例子参考自python联机文档,做了适当改动和添加 import xml.parsers.expat # 控制打印缩进 level = 0 # 获取某节点名称及属性值集合 def start_element(name, attrs): global level ... 阅读全文
摘要:
由于考虑到将命令行程序转成UI程序,原先在命令行中直接输出的信息必须输出到特定界面中,考虑到应该有重定向的功能,baidu了一下,比较简单,实现代码如下,可以先重定向到某个变量,再将其重定向系统并打印出来。 # !/usr/bin/env python # coding: utf-8 import sys #定义标准输出对象 class stdoutToStr: ... 阅读全文