2015年6月17日-总结

来源:互联网 发布:网络系统集成 编辑:程序博客网 时间:2024/05/11 05:25

一、对yuv编码成JPEG和H264有了解,分片的大小为1024B,也就是1KB,每帧yuv应该是480*272*1.5 = 195 840B,也就是191.25KB,还是很大的,将yuv编码成h264文件,有效压缩了每一帧图像的大小,从几十兆可以压缩到几兆。

二、IO复用,select的使用方法和原理epoll和select的区别)。进阶:libevent

三、TCP连接的三次握手和四次挥手;TCP报头的标志位有哪些,(SYN,ACK,FIN,RST,PSH,URG),有什么用;TCP客户/服务器异常,服务器进程终止,服务器主机崩溃或不可达,服务器主机崩溃后重启,服务器关机,会出现什么样的情况。

四、拷贝构造函数和赋值构造函数的区别,使用情况

A a;

A b = a; //调用拷贝构造函数


A a;

A b;

b = a;//调用赋值构造函数

拷贝构造函数直接开辟内存并进行拷贝

赋值构造函数会先判断是否是自身,然后将原来的内存释放掉,再新开辟内存并进行赋值。

五、堆排序的实现

void heapAdjust(vector<int> & A,int i,int n){int child;for(; 2*i+1 < n; i = child){//2*i+1 < n,因为从最后一个非叶节点往上调整大根堆 child = 2*i + 1;if(child < n-1 && A[child] < A[child+1])//比较第i个节点的两个孩子节点的大小++child;//右孩子大与左孩子,则如果替换将替换右孩子if(A[child] > A[i]){A[i] = A[i] ^ A[child];A[child] = A[i] ^ A[child];A[i] = A[i] ^ A[child];} elsebreak;} }void heapSort(vector<int> & A,int n){int i;for(i = n/2-1; i>=0; --i)//n/2 - 1是最后一个非叶节点,构建大根堆 heapAdjust(A,i,n);for(i = n-1; i > 0; --i){A[i] = A[i]^A[0];A[0] = A[i]^A[0];A[i] = A[i]^A[0];heapAdjust(A,0,i);}}

六、strcpy的实现

要像memcpy那样,考虑缓冲区重叠的情况

void * mymemcpy(void * dst,const void * src,size_t count){assert(dst != NULL && src != NULL);void * ret = dst;char * pdst = (char *) dst;char * psrc = (char *) src;if(pdst >= psrc && pdst <= (psrc+count)){pdst = pdst + count - 1;psrc = psrc + count - 1;while(count --){*pdst-- = *psrc--;}} else{while(count --){*pdst++ = *psrc++;}}return ret;}char * mystrcpy(char * dst,const char * src){assert(dst != NULL && src != NULL);char * ret = dst;mymemcpy(dst,src,strlen(src)+1);return ret;}




0 0
原创粉丝点击