2011年11月18日
摘要: NP问题简述: 一个NP-完全的问题具有如下性质:它可以在多项式时间内求解,当且仅当所有的其他的NP-完全问题也可以在多项式时间内求解。P是所有可在多项式时间内用确定算法求解的判定问题的集合。NP问题是所有可用多项式时间算法验证其猜测准确性的问题的集合。 令L1和L2是两个问题,如果有一确定的多项式时间算法求解L1,而这个算法使用了一个在多项 式时间内求解L2的确定算法,则称L1约化为L2。如果可满足性约化为一个问题L,则称L问题是NP-难度的。如果L是NP难度的且L(-NP,则称L是 NP-完全的。NP并不是NON-POLYNOMIAL,把NP说成是NON-POLYNOMIAL,是... 阅读全文
posted @ 2011-11-18 15:28 wanghetao 阅读(595) 评论(0) 推荐(0) 编辑
  2011年11月14日
摘要: 今天才发现,C++中结构体不仅能够定义方法,还能有继承关系。如下面代码所示: namespace std{ struct output_iterator_tag{}; struct input_iterator_tag{}; struct forward_iterator_tag :public input_iterator_tag{ }; struct bidirectional_iterator_tag :public forward_iterator_tag{ }; struct random_access_iterator_tag :public bidirectional_itera 阅读全文
posted @ 2011-11-14 17:24 wanghetao 阅读(11303) 评论(0) 推荐(0) 编辑
  2011年11月13日
摘要: 1. STL关联式容器的成员函数lower_bound()和upper_bound():lower_bound(val): 返回容器中第一个值【大于或等于】val的元素的iterator位置。upper_bound(val): 返回容器中第一个值【大于】val的元素的iterator位置。 阅读全文
posted @ 2011-11-13 16:58 wanghetao 阅读(138) 评论(0) 推荐(0) 编辑
  2011年11月11日
摘要: 1. 什么是回调函数 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回 调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。2. 回调函数实现的机制 (1)定义一个回调函数; (2)提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者; (3)当特定的事件或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理。3. 为什么要使用回调函数 因为可以把调用者与被调用者分开。调用者不关心谁是被调用者,... 阅读全文
posted @ 2011-11-11 14:57 wanghetao 阅读(275) 评论(0) 推荐(1) 编辑
  2011年11月10日
摘要: 个人认为写博客(Blogging)是技术总结的最佳方式,甚至可以这样子讲,博客就是积累,从一定角度上讲是酱紫的。可能是受规范约束习惯了,感觉写博客也有一些注意事项,虽然之前写了很多文章,但感觉都不是很规范,现总结写博客应该注意的几点,以随时提醒自己。1. Do not Repeat Documents, link to it 不要重复文档,给出链接就好。重点写自己的心得,体会和总结。对于那些在官方文档中都讲的很清楚的东西就没有必要再进行重复了,给出相应的链接就好了。特别是对于像MSDN这种非常丰富的官方文档,最好不要去重复它的内容,因为你不一定比官方讲的清楚。重点应该放在自己的心得,体会和总结 阅读全文
posted @ 2011-11-10 21:16 wanghetao 阅读(308) 评论(0) 推荐(0) 编辑
  2011年11月7日
摘要: 1.FLEX简介 单词的描述称为模式(Lexical Pattern),模式一般用正规表达式进行精确描述。FLEX通过读取一个有规定格式的文本文件,输出一个如下所示的C语言源程序。 +------------+ +------------+ +----------------+ | 输入文件*.l |------>|flex工具 |------>|输出文件lex.yy.c | +------------+ +------------+ +----------------+ FLEX的输入文件称为LEX源文件,它内含正规表达式和对相应模式处理的C语言代码。LEX源文件的扩展名习... 阅读全文
posted @ 2011-11-07 19:02 wanghetao 阅读(13764) 评论(0) 推荐(3) 编辑
摘要: string 是C++中的字符串。 字符串对象是一种特殊类型的容器,专门设计来操作的字符序列。 不像传统的c-strings,只是在数组中的一个字符序列,我们称之为字符数组,而C + +字符串对象属于一个类,这个类有很多内置的特点,在操作方式,更直观,另外还有很多有用的成员函数。 string 的定义为:typedef basic_string<char> string;成员函数(Member functions) (constructor) 构建字符串对象 (构造函数成员)operator=字符串赋值 (公有成员函数) 以下全为公有成员函数迭代器(Iterator) begin返 阅读全文
posted @ 2011-11-07 16:38 wanghetao 阅读(440) 评论(0) 推荐(0) 编辑
  2011年11月6日
摘要: 该系统调用所需要的参数pt_regs在include/asm-i386/ptrace.h文件中定义:struct pt_regs {long ebx; //可执行文件路径的指针(regs.ebx中long ecx; //命令行参数的指针(regs.ecx中)long edx; //环境变量的指针(regs.edx中)。long esi;long edi;long ebp;long eax;int xds;int xes;long orig_eax;long eip;int xcs;long eflags;long esp;int xss;};该 参数描述了在执行该系统调用时,用户态下的CPU寄 阅读全文
posted @ 2011-11-06 19:29 wanghetao 阅读(11772) 评论(0) 推荐(0) 编辑
摘要: 说是exec系统调用 ,实际上在Linux中,并不存在一个exec()的函数形式,exec指的是一组函数,一共有6个,分别是:#include <unistd.h>extern char **environ;int execl(const char *path, const char *arg, ...);int execlp(const char *file, const char *arg, ...);int execle(const char *path, const char *arg, ..., char *const envp[]);int execv(const ch 阅读全文
posted @ 2011-11-06 11:00 wanghetao 阅读(2097) 评论(0) 推荐(0) 编辑
摘要: int clone(int (*fn)(void *), void *child_stack, int flags, void *arg);这里fn是函数指针,我们知道进程的4要素,这个就是指向程序的指针,就是所谓的“剧本", child_stack明显是为子进程分配系统堆栈空间(在linux下系统堆栈空间是2页面,就是8K的内存,其中在这块内存中,低地址上放入了值,这个值就是进程控制块task_struct的值),flags就是标志用来描述你需要从父进程继承那些资源, arg就是传给子进程的参数)。下面是flags可以取的值标志含义CLONE_PARENT创建的子进程的父进程是调用 阅读全文
posted @ 2011-11-06 10:48 wanghetao 阅读(19994) 评论(0) 推荐(0) 编辑