自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

转载 IP/TCP协议头部

#ifndef LITTLE_ENDIAN #define LITTLE_ENDIAN (1) //BYTE ORDER #else #error Redefine LITTLE_ORDER #endif //Mac头部,总长度14字节 typedef struct _eth_hdr { unsigned char dstmac[6]; //目标ma

2015-06-30 00:48:22 675

转载 Linux内存管理

物理地址、线性地址(虚拟地址)和逻辑地址;阐述段式管理和页式管理基本概念;Linux操作系统内存管理和虚拟内存概念;为内核开发做一个基础铺垫。内存是linux内核所管理的最重要的资源之一,内存管理子系统是操作系统中最重要的部分之一。对与立志从事内核开发的工程师来说,熟悉linux的内存管理系统非常重要。1、物理地址、线性地址(虚拟地址)和逻辑地址之间的关系物理地址是指出现在cpu外部的地址

2015-06-28 10:35:08 569

转载 基于内存池的空间配置器

一、设计思路 内存池分两部分,一部分是内存池列表,一部分是没有分割的原始连续内存。(1) 内存池列表 内存池由16个列表组成,每个列表维护大小相同的内存块,内存块的大小是8的倍数。最小的内存块是8字节,最大的内存块是128字节。节点结构图如下:------- ------- ------- ------ ----- ------

2015-06-28 09:51:05 376

转载 虚函数表解析

C++ 虚函数表解析 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函

2015-06-25 21:13:02 503

原创 用栈实现单链表的逆转

#include#includeusing namespace std;struct ListNode{ ListNode *next; int data; ListNode(int x): { data=x; next=NULL: }}; ListNode* ReverseList(ListNode* pHead) {

2015-06-25 12:26:40 4600 1

原创 避免内存重叠的memmove()函数

#include #include using namespace std;void* memmove(void *dst, const void *src, size_t count){ // 容错处理 if (dst == NULL || src == NULL){ return NULL; } unsigned char *pdst = (unsigned char *)d

2015-06-25 10:31:33 1181

原创 二路插入排序

#include using namespace std; typedef int SqList[8]; void Binpath_Insertsort(SqList &L,int count) { int length = count - 1; int L1[length] = { 0 }; L1[0] = L[1];//L中的第一

2015-06-23 21:40:17 882

原创 滑动窗口协议

1.概念 滑动窗口协议,也称为回退N步协议(Go-Back-N,GBN)中,允许发送方发送多个分组(当有多个分组可用时)而不需等待确认,但它受限于在流水线 中为未确认的分组数不能超过某个最大允许数N。滑动窗口协议是TCP使用的一种流量控制方法,此协议能够加速数据的传输。 只有在接收窗口向前滑动时(与此同时也发送了确认),发送窗口才有可能向前滑动。 收发两端的窗口按照

2015-06-19 11:10:56 2940

原创 使用句柄和引用计数器避免浅拷贝和浅赋值后内存空间二次释放

深拷贝和浅拷贝各有好处,但是在浅拷贝时往往会出现对指向同一片内存空间的指针变量的多次释放,在字符串类中封装一个引用计数类对象指针(句柄),通过引用计数器使指向同一片内存空间的指针仅被delete一次#include#includeusing namespace std;class String;class String_rep{ friend class String;public:

2015-06-16 12:13:14 1191

转载 C++中代理类和句柄类

指针是 C 与其他语言区别的重要特征之一,在 C++ 中,指针也被广泛运用,我们通过指针实现多态。然而,众所周知,指针的使用必须小心,否则很容易造成内存泄漏 Memory Leak。当我们有几个指针指向同一个对象时有其应该注意,关于何时释放这个对象:(1) 如果释放的太早,那么其它的指针仍然指向这片内存,如果再使用它会造成未定义行为。(2) 如果一直不释放可能会丢失最后一个指向这个对象的指针

2015-06-16 12:07:43 360

转载 迭代器

1. 迭代器(iterator)是一中检查容器内元素并遍历元素的数据类型。(1) 每种容器类型都定义了自己的迭代器类型,如vector:vector::iterator iter;这条语句定义了一个名为iter的变量,它的数据类型是由vector定义的iterator类型。(2) 使用迭代器读取vector中的每一个元素:vector ivec(10,1);for(vector::ite

2015-06-15 19:46:18 633

原创 通过函数使数组中的奇数在偶数的前面

#includevoid change_array(int *p, int len){ if (p == NULL || len == 0) return; int *begin = p; int *end = p + len - 1; while (begin < end) { while ((begin < end) && ((*begin%2)!=0)) begi

2015-06-15 19:05:45 801

转载 Linux面试题汇总答案

Linux面试题汇总答案一.填空题:1. 在Linux系统中,以 文件 方式访问设备 。2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统。3. Linux文件系统中每个文件用 i节点 来标识。4. 全部磁盘块由四个部分组成,分别为引导块 、专用块 、 i节点表块 和数据存储块。5. 链接分为: 硬链接 和 符号链接 。6. 超级块包含了i节点表 和

2015-06-15 15:59:43 1091

原创 几种排序算法比较

#includeint *mp_sort(int *a,int len)//冒泡排序{ if(a== NULL|| len <= 0) return NULL; int i = 1, j = 1; for (i; i < len - 1;++i) for (j = 0; j <len- i; ++j) { int temp; if (a[j]>a[j + 1])

2015-06-15 15:47:21 598

原创 C++注释转化为C语言注释

利用有限状态机实现输入文件中代码不同状态的转换,将结果显示在输出文件中#includeusing namespace std;extern "C" int ConvertComment(FILE *inputfile, FILE *outputfile);int main(){   /*定义输入和输出文件*/ FILE *fpIn = fopen("

2015-06-15 12:39:31 705

转载 Linux中fork函数

一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值

2015-06-15 12:17:44 397

转载 线段树

线段树在一些acm题目中经常见到,这种数据结构主要应用在计算几何和地理信息系统中。下图就为一个线段树:(PS:可能你见过线段树的不同表示方式,但是都大同小异,根据自己的需要来建就行。)1.线段树基本性质和操作线段树是一棵二叉树,记为T(a, b),参数a,b表示区间[a,b],其中b-a称为区间的长度,记为L。线段树T(a,b)也可递归定义为:若L>1 : [a, (a+

2015-06-10 19:30:48 376

转载 strtok和strtok_r的区别

strtok和strtok_r原型:char *strtok(char *s, char *delim);功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。说明:首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。 strtok在s中查找包含在delim中的字符并用NULL('/0')来替换,直到找遍整个字符串。返回值:从s开头

2015-06-10 14:06:01 1162

转载 用递归和非递归方式实现二叉树

用递归和非递归方式实现二叉树的各种操作#include #include #include using namespace std;//二叉树结点的描述 typedef struct BiTNode{ char data; struct BiTNode *lchild, *rchild; //左右孩子 }BiTNode, *BiTree;

2015-06-10 13:33:22 476

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除