http://www.cppblog.com/API/archive/2011/12/11/161926.html*-----------------------------------------------------------RB-Tree的插入和删除操作的实现算法红黑树的几个性质:1)每个结点只有红和黑两种颜色2)根结点是黑色的3)空节点是黑色的(红黑树中,根节点的parent以及所有叶节点lchild、rchild都不指向NULL,而是指向一个定义好的空节点)。4)如果一个结点是红色的,那么它的左右两个子结点的颜色是黑色的5)对于每个结点而言,从这个结点到叶子结点的任何路径上的黑色 Read More
posted @ 2013-09-28 16:58 myblogszz Views(353) Comments(0) Diggs(0) Edit
http://www.cppblog.com/API/archive/2013/08/19/202633.html几天前,在CSDN论坛看到这么一则讨论:在宏定义中怎么使用可变参数?(http://expert.csdn.net/Expert/topic/2925/2925165.xml)。楼主希望能定义这样的macro:#define fun1(a, b, ...) fun2(__FILE__, __LINE__, a, b, ...)我猜楼主是想写trace,如果不能使用可变参数的macro,那么就得像MFC那样写一堆TRACE macros:// 取自 MFC 7.1 的 afx.h// Read More
posted @ 2013-09-28 16:47 myblogszz Views(551) Comments(0) Diggs(0) Edit
http://www.cnblogs.com/ccdev/archive/2012/09/06/2673560.htmlC++堆上申请二维数组假设要申请的是double型大小m*n数组有如下方法方法一:优点:申请的空间是连续的缺点:较难理解1double(*d)[n]=newdouble[m][n]方法二:优点:容易理解缺点:申请的空间不能连续且需要多个指针才能管理double*d[m];for(inti=0;i<m;i++)d[i]=newdouble[n]; Read More
posted @ 2013-09-28 14:53 myblogszz Views(413) Comments(0) Diggs(0) Edit
http://www.cnblogs.com/ccdev/archive/2012/09/06/2673618.html算法描述:1、先判断是否有环设置两个指针(fast,slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。(当然,fast先行头到尾部为NULL,则为无环链表)1boolisExitsLoop(list*head)2{3list*slow=head,*fast=head;45while(fast&&fast->next)6{7slow=slow->nex Read More
posted @ 2013-09-28 14:50 myblogszz Views(247) Comments(0) Diggs(0) Edit
http://www.cnblogs.com/ccdev/archive/2012/09/08/2676485.html通过迭代(非递归)及递归将单链表逆序老生常谈的问题了,不过很多地方面试还是很喜欢问这个问题。实际工程中感觉用处不大,需要逆序的存储为什么要选择单链表呢?为什么不用list(inc++)或iterator(inanylanguage)?或者将数据全部推入栈中再依次弹出。说了这么多有点无聊了,参看酷壳的《我为什么反对纯算法面试》。迭代(非递归)算法描述:设置两个临时指针prev和next分别标记当前结点的前驱和后继,将当前结点的next指针指向前驱,然后把前驱指针替换为当前结点, Read More
posted @ 2013-09-28 14:46 myblogszz Views(235) Comments(0) Diggs(0) Edit
http://www.cnblogs.com/ccdev/archive/2012/12/19/2825355.html废话不多说,常用的代码积淀下来。一、懒汉模式:即第一次调用该类实例的时候才产生一个新的该类实例,并在以后仅返回此实例。需要用锁,来保证其线程安全性:原因:多个线程可能进入判断是否已经存在实例的if语句,从而non thread safety.使用double-check来保证thread safety.但是如果处理大量数据时,该锁才成为严重的性能瓶颈。1、静态成员实例的懒汉模式: 1 class Singleton 2 { 3 private: 4 static... Read More
posted @ 2013-09-28 14:30 myblogszz Views(281) Comments(0) Diggs(0) Edit
http://blog.chinaunix.net/uid/24148050.htmlhttp://blog.csdn.net/scottgly/article/details/6568513一、time函数 #includetime_ttime(time_t*calptr);返回距计算机元年的秒数一旦取得这种以秒计的很大的时间值后,通常要调用另一个时间函数将其变换为人们可读的时间和日期#include //calendar time into a broken-down time expressed as UTCstruct tm *gmtime(const time_t *calptr); Read More
posted @ 2013-09-06 16:47 myblogszz Views(760) Comments(0) Diggs(0) Edit
http://blog.chinaunix.net/uid-26423908-id-3127598.htmlhttp://blog.chinaunix.net/uid/26423908.htmlNginx源码分析-内存池Nginx的内存池实现得很精巧,代码也很简洁。总的来说,所有的内存池基本都一个宗旨:申请大块内存,避免“细水长流”。一、创建一个内存池nginx内存池主要有下面两个结构来维护,他们分别维护了内存池的头部和数据部。此处数据部就是供用户分配小块内存的地方。//该结构用来维护内存池的数据块,供用户分配之用。 typedef struct { u_char *last; //当前内存分 Read More
posted @ 2013-07-23 00:43 myblogszz Views(231) Comments(0) Diggs(0) Edit
http://blog.csdn.net/timebomb/article/details/67127701、不愿为朋友的成功鼓掌,却愿为陌生的悲惨捐助。2、不愿为强者的坚持援手,却愿为弱者的妥协流泪。3、不愿为规则的执行所累,却愿为潜规则的适应受罪。4、不愿为共同的利益奋斗,却愿为社会的不幸怒骂。5、不愿为长远的发展谋福,却愿为眼前的小利冒险。忽然间看到这么一段话,仔细一想,确实有几番滋味。一个独立人格的人应该能有基本的是非,基本的原则。 Read More
posted @ 2013-07-19 09:26 myblogszz Views(217) Comments(0) Diggs(0) Edit
和SIP有关的RFC:RFC 2543 SIP: Session Initiation ProtocolRFC 2848 The PINT Service Protocol: Extensions to SIP and SDP for IP Access to Telephone Call ServicesRFC 2976 The SIP INFO MethodRFC 3050 Common Gateway Interface for SIPRFC 3087 Control of Service Context using SIP Request-URI.RFC 3261 SIP: Sessi Read More
posted @ 2013-07-08 22:28 myblogszz Views(707) Comments(4) Diggs(1) Edit