自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一个简单的客户机服务器程序

// server.cpp : Defines the entry point for the console application.//客户端键入命令 client 192.168....会有服务器的响应/********************************************************************************************

2014-02-14 23:37:07 1273

原创 用欧拉筛法优化斯特尼筛法(质数筛法)

#include #include #include #include using namespace std;const int g_kMaxs = 1000000;bool g_u[g_kMaxs+1];vector g_primer;void Init() { g_primer.clear();/*下面是素数的欧拉筛法:该法优化的原理是保证每个合数仅被它最

2013-12-27 15:20:37 744

原创 条款03:尽可能的使用const

1. //重载operator[]并对不同版本给予不同的返回类型;class TextBlock { public: const char& operator[](std::size_t position) const { return text[position]; } char& operator[](std::size_t positi

2013-12-08 19:11:01 536

原创 把ip地址转换为二进制序列

#include #include #include #include using namespace std;const int SZ = 20;char ip[SZ];deque ip_bin_seq;void ChangeIp2Bin() { ip_bin_seq.clear(); int ip_len = strlen(ip); int

2013-11-30 17:24:25 3230

转载 C++类中的静态成员与静态函数

C++类中的静态成员有一个非常好的功能,那就是无论类定义了多少个对象,这些对象始终都共同使用这一个静态成员例如:  class A{   static int num;A(){num++}     } int A::num=0;  就会有如下效果:  A  a,b,c,d;     cout可以看出,在每个对象中的num成员都只有一个副本。在内存中也是如此,初始化abcd时

2013-11-02 21:59:39 526

原创 c中 case用法

#include #include using namespace std;int main(){ int i = 3; switch (i) { case 3: printf("3\n"); case 4: printf("4\n"); } return 0;} // 输出 34

2013-10-31 23:19:47 1111

原创 两个有序链表合并为一个有序链表

#include #include #include #include using namespace std;struct Node { int val; Node* next; Node() { val = 0; next = NULL; }};Node* MergeList(Node* pfirst, Node* psec

2013-10-27 16:24:04 605

转载 各种与0比较的写法

这是程序员面试的一道常见题,也是个C++基础问题。若只在大学里看过几本基础的编程入门书,看见这道题可能会觉得奇怪,不就是和0比较吗,直接拿出来比就是了,其实非也。下文引自google搜索结果,出处不详,高手可以无视,菜菜留下,记得做好笔记。首先给个提示:题目中要求的是零值比较,而非与0进行比较,在C++里“零值”的范围可就大了,可以是0, 0.0 ,FALSE或者“空指针”。①int型

2013-10-27 15:49:40 2072

原创 自己写的大数相乘

#include #include #include #include #include using namespace std;const int g_kMaxs = 1001;char g_a[g_kMaxs], g_b[g_kMaxs];void StrRes(char* str) {    int len = strlen(str);    int

2013-10-27 15:32:47 496

转载 fork函数

fork返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1目 录1fork()函数 UNIX1.1 头文件:1.2 函数原型:1.3 函数说明:1.4 为什么fork会返回两次?2中文翻译1fork()函数 UNIX

2013-10-23 21:38:07 470

转载 UDP实现可靠数据传输

UDP没有Delievery   Garuantee,也没有顺序保证,所以如果你要求你的数据发送与接收既要高效,又要保证有序,收包确认等,你就需要在UDP协议上构建自己的协议。比如RTCP,RTP协议就是在UPD协议之上专门为H.323协议簇上的IP电话设计的一种介于传输层和应用层之间的协议。下面分别介绍三种使用UDP进行可靠数据传输的协议RUDPRTPUDTR

2013-10-22 22:54:01 985

转载 纯虚函数

纯虚函数是一种特殊的虚函数,它的一般格式如下:class {virtual ()=0;…};在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。纯虚函数可以让类先具有一个操作名称,而没有操作内容,让派生类在继承时再去具体地给出定义。凡是含有纯虚函数的类叫做抽象类。这种类不能声明对象,只是作为基类

2013-10-19 22:22:22 1601

转载 函数重载的机制

C++的函数重载2010-09-05 21:26 by 吴秦, 17479 阅读, 10 评论,收藏,编辑——每个现象后面都隐藏一个本质,关键在于我们是否去挖掘写在前面:函数重载的重要性不言而明,但是你知道C++中函数重载是如何实现的呢(虽然本文谈的是C++中函数重载的实现,但我想其它语言也是类似的)?这个可以分解为下面两个问题1、声明/定义重载函数时,

2013-10-17 22:26:33 583

转载 c++中不能被申明为虚函数的函数

常见的不不能声明为虚函数的有:普通函数(非成员函数);静态成员函数;内联成员函数;构造函数;友元函数。1.为什么C++不支持普通函数为虚函数?普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思,因此编译器会在编译时邦定函数。多态的运行期行为体现在虚函数上,虚函数通过继承方式来体现出多态作用,顶层函数不属于成员函数,是不能被继承的2.为什

2013-10-17 21:38:40 474

转载 平衡二叉树(AVL)

平衡二叉树的定义 (AVL—— 发明者为Adel'son-Vel'skii 和 Landis) 平衡二叉查找树,又称 AVL树。 它除了具备二叉查找树的基本特征之外,还具有一个非常重要的特点:它 的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值(平衡因子 ) 不超过1。 也就是说AVL树每个节点的平衡因子只可能是-1、0和1(左子树高度减去右子树高度)。 

2013-10-12 15:49:52 599

原创 虚拟地址,逻辑地址,线性地址,物理地址有什么区别

虚拟地址是由程序产生的由段选择符和段内偏移地址组成的地址。这两部分组成的地址并没有直接访问物理内存,而是要通过分段地址的变换处理后才会对应到相应的物理内存地址。逻辑地址指由程序产生的段内偏移地址。有时把逻辑地址当成虚拟地址,两者并没有明确的界限。线性地址是指虚拟地址到物理地址变换的中间层, 是处理器可寻址的内存空间(称为线性地址空间)中的地址。程序代码会产生逻辑地址,或者说段中的偏移地

2013-10-08 21:22:24 3599

原创 栈空间的最大值是多少

在windows下,栈地址是向低地址扩展的数据结构,是一块连续的内存区域。栈顶的地址和栈的最大容量是系统预先规定好的,在windows下,栈的大小是2MB,而申请堆空间的大小一般小于2GB由于内存的读取速度比硬盘快,当程序遇到大规模的频繁存取时,开辟内存空间很有作用。栈的速度快,但是空间小,不灵活。堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储空闲内存地

2013-10-08 20:16:13 10163

原创 内存泄露

堆是动态分配内存的,并且分配使用很大的内存,使用不好会产生内存泄露。频繁的使用malloc和free会产生内碎片(类似磁盘碎片)。所谓内存泄露是指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。一般说内存泄露是指堆内存的泄露,内存泄露其实并非指内存物理上的损失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。内存泄露与许多其他问题有着相似的症

2013-10-08 20:02:41 570

原创 volatile作用

编译器优化的时候可能会出现问题,如当遇到多线程编程时,变量的值可能因为别的线程而改变了,而该寄存器的值不会相应改变,从而造成应用程序读取的值和实际变量值不一致。例如,在本次线程内,当读取一个变量时,为提高存取速度,编译器优化时有时会先把变量读取到一个寄存器中;当以后再取变量时,就直接从寄存器中取值;当变量值在本线程里改变时,同时会把变量的新值复制到该寄存器中,以便保持一致。(s所以该关键字主要

2013-10-08 19:43:45 689

原创 静态链接与动态链接的区别

静态链接是指要把调用的函数或者过程直接链接到可执行文件中,成为可执行文件的一部分。换句话说,函数和过程的代码就在程序的exe文件中,该文件包含了运行时所需的全部代码。静态链接的缺点是当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,这样就了浪费了内存资源。动态链接是相对于静态链接而言的,动态链接所调用的函数代码并没有拷贝到应用程序的可执行文件中去,而是仅仅在其中

2013-10-07 21:54:54 621

原创 分段和分页的区别是什么

页是信息的物理单位,分页是为了实现离散的分配方式,以消减内存的外零头,提高内存利用率;或者说分页仅仅是由于系统管理的需要,而不是用户的需要。段是信息的逻辑单位,它含有一组意义相对完整的信息。分段的目的是为了能更好的满足用户的需要。业的大小固定且由系统确定,把逻辑地址划分为业号和业内地址两部分,是由机器硬件实现的,因而一个系统只能有一种大小的页面。段的长度却不固定,决定于用户所编写的程序,通

2013-10-07 21:34:41 1830

原创 内存管理有哪几种方式

常见的内存管理方式有块式管理,业式管理, 段式管理, 段业式管理。最长用的是段业式管理。(1) 块式管理:把主存分为一块一块的,当所需的程序片段不再主存时就分配一块主存空间,把程序load入主存,就算所需的程序片段只有几个字节也只能把这一块都分给他,造成很大的浪费,但易于管理。(2) 业式管理:把主存分为一页一页的,每一页的空间要比一块小很多,显然这种分法的空间利用率要比块式管理高很多

2013-10-07 21:22:12 7606 1

原创 线程同步有哪些机制

现在流行的进程线程同步互斥的控制机制,其实是由最原始,最基本的4中方法实现的:1.临界区:通过多线程的互串行访问公共资源或一段代码,速度快,适合控制数据访问。2.互斥量:为协调共同对一个共享资源的单独访问而设计。只有拥有互斥对象的线程才有权限去访问系统的公共资源,因为互斥对象只有一个,所以能够保证资源不会同时被多个线程访问。3.信号量:为控制一个具有有限数量的用户资源而设计。它

2013-10-07 20:55:22 2184 1

原创 内存分配的形式有哪些

一个c/c++编译的程序所占用的系统内存一般分为以下几个部分的内容:(1)  由符号起始的区块(BlockStartedBySymbol BSS)段:BSS段通常是指用来存放程序中未初始化的全局数据和静态数据的一块内存区域。(2) 数据段(data segment):数据段通常是指用来存放程序中已经初始化的全局变量的一块内存区域,数据段也属于静态内存分配。(3) 代码段:用来存放程

2013-10-07 15:53:42 660

原创 const的作用

常类型也称为const类型,是指使用类型修饰符const说明的类型。const是c和c++中常见的关键字在c语言中:它主要用于定义变量为常量类型以及修饰函数参数与返回值,而在C++中还可以修饰函数的定义const的作用定义const常量,具有不可变性。例如:const int MAX = 100;int Array[MAX];(2) 进行类型检查,使编译器对处理内容有更多的

2013-10-07 14:51:16 554

原创 进程和线程区别

进程:是具有一定独立功能的程序关于某个数据集合上的一次运行活动,他是系统进行资源分配和调度的一个独立单位。例:用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种内存,I/O设备等。然后改进程就被放入到进程的就绪队列,一旦该进程获得CPU就会运行起来。线程:是进程的一个实体,是CPU调度和分配的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源

2013-10-06 20:48:13 525

原创 TCP和UDP的区别有哪些

TCP和UDP的区别有哪些传输层协议主要有TCP与UDP。UDP:提供无连接的通信,不能保证数据包被发送到目的地址,典型的即时传输少量数据的应用程序使用UDPTCP:面向连接的。可靠地。基于字节流的通信协议,它为传输大量数据或为需要接受数据许可的应用程序提供定向可靠地通信,TCP连接就像打电话,用户拨特定的号码,对方在线并拿起电话,然后双方进行通话,通话完毕之后再挂断。

2013-10-06 20:04:02 738

原创 static(静态)变量的作用

1.在函数体中静态变量有记忆功能,在这一函数被调用过程中其值维持不变。2.在模块内,它的作用域范围是有限制的,如果一个变量被申明为静态的,那么该变量可以被模块内所有函数访问,但不能被模块内其他函数访问。3.内部函数应该在当前源文件中说明和定义,对于可以在当前源文件以外使用的函数,应该在一个头文件中说明,使用这些函数的源文件应该包含该头文件。4.在C++中,在类内的数据成员的声明前加上关

2013-10-06 19:10:20 2793

原创 区间重合判断-编程之美2.19

/**思路:先合并区间, 然后二分判断给定区间是否在合并后的某个区间内。**/ #include #include #include #include #include #include using namespace std;struct Region {    int start;    int end;    Region() {}

2013-10-05 22:42:52 512

空空如也

空空如也

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

TA关注的人

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