自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 c++模板声明和定义编译过程的分析

c++模板声明和定义编译过程的分析

2015-04-27 16:15:18 972

原创 http协议基础

http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式。HTTP请求http请求由三部分组成,分别是:请求行、消息报头、请求正文。HTTP响应 method(请求方法):GET:请求获取Request-URI所标识的资源POST:在Request-URI所标识

2015-04-26 10:26:58 744

原创 二叉树后序非递归遍历超酷的方法

pre-order traversal is root-left-right, and post order is left-right-root. modify the code for pre-order to make it root-right-left, and then reverse the output so that we can get left-right-root .

2015-03-24 17:58:41 563

转载 C++中虚析构函数的作用

我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明:        有下面的两个类:class ClxBase{public:    ClxBase() {};    virtual ~ClxBase() {};    virtual void DoSomething() { cout  "Do 

2015-03-11 12:41:18 442

转载 C++深浅拷贝浅析

浅拷贝是创建了一个对象用一个现成的对象初始化它的时候只是复制了成员(简单赋值)而没有拷贝分配给成员的资源(如给其指针变量成员分配了动态内存); 深拷贝是当一个对象创建时,如果分配了资源,就需要定义自己的拷贝构造函数,使之不但拷贝成员也拷贝分配给它的资源。   C++中深拷贝和浅拷贝的问题是很值得我们注意的知识点,如果编程中不注意,可能会出现疏忽,导致bug。本文就详细讲讲C

2015-03-09 20:56:41 542

原创 操作系统篇

操作系统是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。 操作系统上运行的计算机程序通常由一个或一组进程组成。因此,本文便从进程开始说起!1. 进程的有哪几种状态,状态转换图,及导致转换的事件

2015-03-09 15:54:19 639

转载 Visual C++内存泄露检测—VLD工具使用说明

一.        VLD工具概述Visual Leak Detector(VLD)是一款用于Visual C++的免费的内存泄露检测工具。他的特点有:可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号; 可以得到泄露内存的完整数据; 可以设置内存泄露报告的级别;并且是开源免费的。 二.        VLD下载http://www.codeproject.

2015-03-08 23:18:21 589

转载 Valgrind简单用法

Valgrind的主要作者Julian Seward刚获得了今年的Google-O'Reilly开源大奖之一──Best Tool Maker。让我们一起来看一下他的作品。Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,它包含一个内核──一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务──调试,分析,或测试等。Valgrind可以检测内存泄漏和内存违例,

2015-03-08 23:15:05 362

转载 Apache与Nginx的优缺点比较

1、nginx相对于apache的优点: 轻量级,同样起web 服务,比apache占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能 高度模块化的设计,编写模块相对简单 社区活跃,各种高性能模块出品迅速啊 apache 相对于nginx 的优点: rewrite ,比ngi

2015-03-08 17:06:44 472

转载 Linux的进程/线程通信方式总结

Linux系统中的进程通信方式主要以下几种:同一主机上的进程通信方式   * UNIX进程间通信方式: 包括管道(PIPE), 有名管道(FIFO), 和信号(Signal)   * System V进程通信方式:包括信号量(Semaphore), 消息队列(Message Queue), 和共享内存(Shared Memory)网络主机间的进程通信方式   * RPC: Re

2015-03-08 16:30:46 463

转载 PYTHON 一些基础面试题目总结

1.       Python是如何进行内存管理的?答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制一、对象的引用计数机制python内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用计数。引用计数增加的情况:1,一个对象分配一个新名称2,将其放入一个容器中(如列表、元组或字典)引用计数减少的情况:1,使

2015-03-06 23:03:42 729

转载 linux操作系统 任务管理器与调度概述

1. 任务调度概述:    任务调度(schedulers)是内核的主要职责,实际上它就是一个法官,决定当前由哪个任务占用CPU,多数实时内核都是基于优先级调度算法的,每个任务根据其重要程度的不同被赋予一定的优先级。基于此算法,CPU总是让处于就绪而且优先级最高的任务优先运行,然而何时高优先级任务能够得到CPU使用权,由内核的类型而定。基于优先级的内核有两种:不可抢占型和抢占型。

2015-03-06 22:45:42 1083

转载 浅谈Linux的内存管理机制

一 物理内存和虚拟内存  我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念。物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物理内存,在linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存

2015-03-06 22:35:38 687

转载 c与c++中struct区别

这里有两种情况下的区别。(1)C的struct与C++的class的区别。(2)C++中的struct和class的区别。      在第一种情况下,struct与class有着非常明显的区别。C是一种过程化的语言,struct只是作为一种复杂数据类型定义,struct中只能定义成员变量,不能定义成员函数(在纯粹的C语言中,struct不能定义成员函数,只能定义变量)。例如下面的C代码

2015-03-06 21:56:33 367

转载 c++中虚函数和纯虚函数的作用与区别

虚函数为了重载和多态的需要,在基类中是有定义的,即便定义是空,所以子类中可以重写也可以不写基类中的此函数!纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数!虚函数引入原因:为了方便使用多态特性,我们常常需要在基类中定义虚函数。class Cman { public: virtual void Eat(){……}; void M

2015-03-06 21:51:43 655

原创 4种常用的linux命令

NetstatNetstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。Active Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address Fo

2015-03-06 20:54:35 538

原创 静态成员和非静态成员

2015-03-04 22:31:39 359

原创 构造函数和析构函数

要想搞明白该问题,需要理解基类构造析构函数、子类构造析构函数和子类成员变量构造析构函数的调用顺序。对于构造函数:基类构造函数 > 子类成员变量构造函数 > 子类构造函数对于析构函数:子类析构函数 > 子类成员变量析构函数 > 基类析构函数可以看出构造函数的调用过程和析构函数的调用过程正好相反。main函数中首先构造变量a,然后是b。在构造b时首先调用b的基类A的构造函数

2015-03-04 22:25:55 602

原创 静态数据成员

static数据成员必须在类体之外进行定义。通常在定义时才进行初始化。但是,当类型为const static时的整形时可以在类体内进行初始化。因此A有正确的地方,但是也有错误的情况,因此不选A。A错误。只有基本类型的静态常量才可以在类内初始化。B错误。静态数据成员可以被类的对象调用。C错误。静态数据成员可以被private之类的修饰作用,被private修饰之后,只有类的友元和成员

2015-03-04 22:19:16 695

原创 虚函数

Base * pb = new Child(1), 首先创建子类对象,初始化为1;func1()不是虚函数,所以pb->func1()执行的是基类的func1函数,i= 10,然后调用func2()函数;这里的func2是虚函数,要往下派生类寻找,找到后执行派生类中的func2(),此时,i = 12;最后执行pb->getValue(),结果为12故选C

2015-03-04 22:18:07 355

原创 关于继承、组合、多态的一道面试题

选D,使用相同函数名但参数个数不同或参数类型不同应该是函数重载,函数覆盖发生在父类与子类之间,其函数名、参数类型、返回值类型必须同父类中的相对应被覆盖的函数严格一致,覆盖函数和被覆盖函数只有函数体不同,当派生类对象调用子类中该同名函数时会自动调用子类中的覆盖版本,而不是父类中的被覆盖函数版本,这种机制就叫做函数覆盖。

2015-03-04 22:15:10 509

原创 C++为什么使用模板类

C++使用模板类的作用:(1)可用来创建动态增长和减小的数据结构 (2)它是类型无关的,因此具有很高的可复用性。 (3)它在编译时而不是运行时检查数据类型,保证了类型安全(4)它是平台无关的,可移植性 (5)可用于基本数据类型

2015-03-04 22:10:32 1572

转载 解释术语:虚拟内存、缺页中断、抖动

虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存 (一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片, 还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。 与没有使用虚拟内存技术的系统相比,使用这种技术的系统使得大型程序的编写变得更容易, 对真正的物理内存(例如RAM)的使用也更有效率。缺页中断一个页(Page)是一个固定容量

2015-03-04 20:41:52 755

转载 进程的基本状态及其转换

进程的基本状态: 1、就绪(Ready)状态 当进程已分配到除CPU以外的所有必要资源后,只要在获得CPU,便可立即执行,进程这时的状态就称为就绪状态。在一个系统中处于就绪状态的进程可能有多个,通常将他们排成一个队列,称为就绪队列。 2、执行状态 进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态;再多处理机系统中,则有多个进程处于

2015-03-04 20:37:54 1139

转载 导致数据库中数据不一致的原因

数据库中有可能会存在不一致的数据。造成数据不一致的原因主要有:数据冗余如果数据库中存在冗余数据,比如两张表中都存储了用户的地址,在用户的地址发生改变时,如果只更新了一张表中的数据,那么这两张表中就有了不一致的数据。并发控制不当比如某个订票系统中,两个用户在同一时间订同一张票,如果并发控制不当,可能会导致一张票被两个用户预订的情

2015-03-04 20:31:43 983

转载 一个fork的面试题

文/陈皓  前两天有人问了个关于 Unix 的 fork ()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下。这个题是这样的:#include #include #include int main (void){ int i; for(i=0; i<2; i++){ fork ();

2015-03-04 20:21:33 328

转载 八大排序算法

概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。   快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随

2015-03-01 17:52:59 445

原创 TCP三次握手和四次挥手图解

2015-03-01 17:48:50 413

转载 python常见的面试题目

最近,整理了一些python常见的面试题目,语言是一种工具,但是多角度的了解工具能帮助我们更好的工作。从很多国内网站以及一些国外论坛翻译过来的,虽然本文标注为"原创",但是仅仅是自己日常整理的材料,文章后面会附上参考来源。第一部分:简易/中等 什么是Python装饰器,如何使用?    你会如何​​设置很多项目,其中每一个使用Py

2015-02-28 17:56:29 1810

转载 Linux面试题汇总答案

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

2015-02-28 17:52:49 750

转载 C++内存管理

1 内存管理1.1 C++内存管理详解1.1.1 内存分配方式1.1.1.1 分配方式简介    在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。  栈,在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内

2015-02-28 11:23:00 724

转载 将“引用”作为函数返回值类型的格式、好处和需要遵守的规则?

格式:类型标识符 &函数名(形参列表及类型说明){ //函数体 }好处:在内存中不产生被返回值的副本;(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的。因为随着该局部变量生存期的结束,相应的引用也会失效,产生runtime error! 注意事项:(1)不能返回局部变量的引用。这条可以参照Effective C++[1]的Item 31。主要原因是局部变量会在函数返回后被

2015-02-28 11:19:20 811

转载 在什么时候需要使用“常引用”?

如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。常引用声明方式:const 类型标识符 &引用名=目标变量名;例1int a ;const int &ra=a;ra=1; //错误a=1; //正确例2string foo( );void bar(string & s);那么下面的表达式将是非法的:b

2015-02-28 11:18:27 911

转载 将“引用”作为函数参数有哪些特点?

(1)传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。(2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;如果传递的是对象,还

2015-02-28 11:17:02 1755

原创 什么是“引用”?申明和使用“引用”要注意哪些问题?

引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数

2015-02-28 11:16:25 667

原创 全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?

生命周期不同:全局变量随主程序创建和创建,随主程序销毁而销毁;局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在;使用方式不同:通过声明后全局变量程序的各个部分都可以用到;局部变量只能在局部使用;分配在栈区。操作系统和编译器通过内存分配的位置来知道的,全局变量分配在全局数据段并且在程序开始运行的时候被加载。局部变量则分配在堆栈里面 。

2015-02-28 11:02:18 1932

原创 基类的析构函数不是虚函数,会带来什么问题?

派生类的析构函数用不上,会造成资源的泄漏。

2015-02-28 11:01:55 2130

原创 结构与联合有和区别?

(1). 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)。 (2). 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。

2015-02-28 11:00:09 1009

转载 子类析构时要调用父类的析构函数吗?

析构函数调用的次序是先派生类的析构后基类的析构,也就是说在基类的的析构调用的时候,派生类的信息已经全部销毁了。定义一个对象时先调用基类的构造函数、然后调用派生类的构造函数;析构的时候恰好相反:先调用派生类的析构函数、然后调用基类的析构函数。

2015-02-28 10:59:08 6669 3

原创 .h头文件中的ifndef/define/endif 的作用?

防止该头文件被重复引用!

2015-02-28 10:52:59 876

空空如也

空空如也

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

TA关注的人

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