在网上找了很久一个简单的doxygen教程,这个是最简单的,让你看完之后马上就能写doxygen格式的代码doxygen是一种从源代码生成文档的工具,支持多种语言。当然,源代码中需按一定的格式写注释,这些注释的格式也能帮助我们养成很好的注释习惯,可以尝试一下。使用doxygen生成文档的方法很简单: $ doxygen -g –s $ doxygen 只需两个简单命令就可以了。 下面简单说明一下: 1、在工程目录下输入doxygen –s –g doxyconfig,其中doxyconfig为生成配置的文件名称,可任意指定,如果不指定,默认生成的配置文件为Doxyfile。man手册中没有详. Read More
最近面试的许多公司都询问关于多线程的问题,但是问的深度一般不会很难,仅仅问相关的同步问题以及对应的API函数,下面是windows下几个常用的同步方法,对于应付帮助或者一般的开发都非常有用目录一 临界区二 互斥体三 事件四 信号量五 附录一 临界区临界区的使用在线程同步中应该算是比较简单,说它简单还是说它同后面讲到的其它方法相比更容易理解。举个简单的例子:比如说有一个全局变量(公共资源)两个线程都会对它进行写操作和读操作,如果我们在这里不加以控制,会产生意想不到的结果。假设线程A正在把全局变量加1然后打印在屏幕上,但是这时切换到线程B,线程B又把全局变量加1然后又切换到线程A,这时候线程A打印 Read More
1、基本结构先来学习一下nginx内存池的几个主要数据结构:[见:./src/core/ngx_palloc.h/.c] ngx_pool_data_t(内存池数据块结构) 1: typedef struct { 2: u_char *last; 3:... Read More
题目:两个字符串,一个是普通字符串,另一个含有*和?通配符,*代表零个到多个任意字符,?代表一个任意字符,通配符可能多次出现。写一个算法,比较两个字符串是否相等。发现许多公司笔试面试都有这道题目,于是自己搜了一下,从redis源码util.c源文件中可以找到这么一个函数,实际上glib中也有类似的实现int stringmatch(const char *pattern, const char *string, int nocase) { return stringmatchlen(pattern,strlen(pattern),string,strlen(string),nocase)}st Read More
#include #include using namespace std;5只猴子摘了一堆桃子,约好第二天早上来分。第一只猴子来得早,它将桃子平分成成5堆,多出1个,它把多出的一个吃了,把属于自己的一堆拿走了,将剩下的还混成一堆,其他猴子来了也正好按一样的方法处理。编程求出原来最少有多少个桃子。(用递归函数。void GetTotal(int & bs,int & tp);int main(int argc, char *argv[]){ int last = 1; int temp = 1; GetTotal(last,temp); cout << " Read More
声明,本文所有11道算法题目,覆盖了基本上所有常见的二叉树问题,全都用C#实现,并测试通过,代码下载:BinNode.zip目录:1.二叉树三种周游(traversal)方式:2.怎样从顶部开始逐层打印二叉树结点数据3.如何判断一棵二叉树是否是平衡二叉树4.设计一个算法,找出二叉树上任意两个节点的最近共同父结点,复杂度如果是O(n2)则不得分。5.如何不用递归实现二叉树的前序/后序/中序遍历?6.在二叉树中找出和为某一值的所有路径7.怎样编写一个程序,把一个有序整数数组放到二叉树中?8.判断整数序列是不是二叉搜索树的后序遍历结果9.求二叉树的镜像10.一棵排序二叉树(即二叉搜索树BST),令 Read More
声明,本文所有9道算法题目,覆盖了基本上所有常见的栈/队列问题,全都用C#实现,并测试通过,代码下载:StackAndQueue.zip目录:1.设计含min函数的栈,要求min、push和pop的时间复杂度都是o(1)。2.设计含min函数的栈的另解3.用两个栈实现队列4.用两个队列实现栈5.栈的push、pop序列是否一致6.递归反转一个栈,要求不得重新申请一个同样的栈,空间复杂度o(1)7.给栈排个序8..如何用一个数组实现两个栈9..如何用一个数组实现三个栈1.设计含min函数的栈,要求min、push和pop的时间复杂度都是o(1)。 算法思想:需要设计一个辅助栈,用来存储当前栈中. Read More
声明,本文所有13道算法题目,覆盖了基本上所有常见的单链表问题,全都用C#实现,并测试通过,代码下载:TestLink.zip1.单链表反转2.找出单链表的倒数第4个元素3.找出单链表的中间元素4.删除无头单链表的一个节点5.两个不交叉的有序链表的合并6.有个二级单链表,其中每个元素都含有一个指向一个单链表的指针。写程序把这个二级链表称一级单链表。7.单链表交换任意两个元素(不包括表头)8.判断单链表是否有环?如何找到环的“起始”点?如何知道环的长度?9.判断两个单链表是否相交10.两个单链表相交,计算相交点11.用链表模拟大整数加法运算12.单链表排序13.删除单链表中重复的元素首先写一个单 Read More
单链表递归逆序实现代码:#include using namespace std;struct node { int data; node*next;} /* optional variable list */;node* reverse(node * head){ if(head==NULL || head->next==NULL) return head; node* tail= head->next; node* newHead= reverse(head->next); tail->next=head; head->next=NU... Read More