自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (3)
  • 收藏
  • 关注

原创 CentOS安装最新git

在很多Linux系统库中都有Git,可以直接用命令行安装。例如Fedora中可以直接用yum install git等,参考如下:Debian/Ubuntu$ apt-get install gitFedora$ yum install gitGentoo$ emerge --ask --verbose dev-vcs/gitArch Linux$ pacm

2015-04-24 18:03:26 663

转载 TCP的三次握手(建立连接)和四次挥手(关闭连接)

TCP是一个面向连接的服务,面向连接的服务是电话系统服务模式的抽象,每一次完整的数据传输都必须经过建立连接,数据传输和终止连接3个过程,。如下图所示。TCP建立连接的过程称为三次握手,下面看一下三次握手的具本过程TCP三次握手过程1 主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B ,向主机B 请求建立连接,通过这个数据段,主机A告诉主机B 两件事:我想要和你

2015-04-14 11:06:55 746

原创 浅谈C++类静态数据成员与类静态函数成员

静态类成员包括静态数据成员和静态函数成员两部分。 一、静态数据成员: 当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关。静态方法就是与该类相关的,是类的一种行为,而不是与该类的实例对象相关。

2015-04-13 16:39:37 827

原创 浅谈C++中模版的使用

泛型编程(Generic Programming)是一种编程范式,通过将类型参数化来实现在同一份代码上操作多种数据类型,泛型是一般化并可重复使用的意思。泛型编程最初诞生于C++中,目的是为了实现C++的STL(标准模板库)。模板(template)是泛型编程的基础,一个模板就是一个创建类或函数的蓝图或公式。例如,当使用一个vector这样的泛型类型或者find这样的泛型函数时,我们提供足够

2015-04-10 17:09:36 680

原创 浅谈程序的栈内存和堆内存

在介绍堆和栈时先介绍一下程序在内存中的分布。一个由c/C++编译的程序占用的内存分为以下5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。(1)栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。(2)堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个d

2015-04-09 15:52:34 560

原创 浅谈C++中虚基类的作用

我们知道,如果一个派生类有多个直接基类,而这些直接基类又有一个共同的基类,则在最终的派生类中会保留该间接共同基类数据成员的多份同名成员。在引用这些同名的成员时,必须在派生类对象名后增加直接基类名,以避免产生二义性,使其惟一地标识一个成员,在一个类中保留间接共同基类的多份同名成员,虽然有时是有必要的,可以在不同的数据成员中分别存放不同的数据,也可以通过构造函数分别对它们进行初始化。但在大多数情况

2015-04-08 16:18:35 1526

原创 成员初始化列表与构造函数体区别

C++ Primer中在讲构造函数初始化列表的时候有这么一段话:       无论是在构造函数初始化列表中初始化成员,还是在构造函数体中对它们赋值,最终结果是相同的。不同之处在于,使用构造函数初始化列表的版本表示初始化数据成员,没有定义初始化列表的构造函数版本在构造函数体中对数据成员赋值。首先把数据成员按类型分类 1、内置数据类型,复合类型(指针,引用) 2、用户定义类型(

2015-04-08 16:12:42 1194

转载 全局变量、局部变量、静态全局变量、静态局部变量的区别

C++变量根据定义位置的不同,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名作用域和文件作用域。从作用域看:全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包括全局变量定义的源文件需要用extern关键字再次声明这个全局变量。静态局部变量具有局部作用域。它只被初始化一次,自从第一次初始化直到程序与你新

2015-04-08 10:43:29 404

原创 Xen Credit调度算法详细说明

Xen虚拟机调度实质上是虚拟CPU的调度。在Xen中,虚拟机通过其拥有的虚拟CPU运行任务,而虚拟CPU需要由Xen调度至物理CPU执行。对应用程序而言CPU调度分成两个层次:首先VMM的虚拟CPU调度将物理CPU时间分配给各虚拟机的虚拟CPU;然后各虚拟机的进程调度负责将虚拟CPU的时间分给虚拟机内的各应用程序。Xen采用策略和机制分离的思想来简化Xen的调度框架设计,并允许用户通过实现调度框架

2015-03-30 10:33:40 3104

转载 浅谈C++中内联关键字inline

一、在C&C++中,inline 关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。    表达式形式的宏定义一例:       #define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2))为什么要取代这种形式呢,且听我道来:    1. 首先谈一下在C中使用这种形式宏定义的原因,C语

2015-03-27 15:47:03 1150

原创 浅谈C++中的四种类型转换

转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为了类型转换一个简单对象为另一个对象你会使用传统的类型转换操作符。型转换有c风格的,当然还有c++风格的。c风格的转换的格式很简单(TYPE)EXPRESSION;例如将为了转换一个类型为doubole的浮点数的指针到整型:代码:int i;double d;i = (int) d;或者:i = in

2015-03-27 10:43:28 481

转载 浅谈C++中关键字explicit使用详细

在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。explicit使用注意事项:    *     explicit 关键字只能用于类内部的构造函数声明上。    *     explicit 关键字作用于单个参数的构造函数。    *     在C++中,explicit关键字用来修

2015-03-27 10:21:04 957

原创 浅谈C++中stack/queue 的使用方法

1、stackC++ stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构。stack 模板类的定义在头文件中。stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型为deque。定义stack 对象的示例代码如下:stack s1;s

2015-03-17 14:56:55 1172

原创 浅谈sscanf与sprintf

最近在C++编程中会遇到要进行字符串和整型之间相互转换的情况,对于C++的字符流操作还不是很熟悉,而且感觉使用起来并没有原来C语言中的sscanf与sprintf顺手(个人对C++还不是特别熟练),所以还是习惯的使用了sscanf与sprintf来操作字符串。sscanf和sprintf是scanf和printf家族的一对成员,用于处理和分析字符串非常强大得两个函数。在C语言中使用这两个函数的

2015-03-06 11:10:19 636

原创 浅谈C++中qsort与sort的使用方法与区别

这两天在刷leetcode时看到了一些关于排序的题目,其中遇到各种大神对sort与qsort的使用,个人在使用时对比发现了一些sort与qsort的区别,并对它们的使用方法进行了一些总结介绍。在平时编程时,排序是一种经常要用到的操作。如果每次都自己临场写)排序算法,不仅容易出错,而且浪费宝贵的时间。在C++的STL里面有两个sort与qsort可以直接用于对各种类型的数据以及容器进行排序。

2015-03-05 17:01:34 21625 9

原创 浅谈C++中new以及delete使用

对于计算机程序设计而言,变量和对象在内存中的分配都是编译器在编译程序时安排好的,这带来了极大的不便,如数组必须大开小用,指针必须指向一个已经存在的变量或对象。对于不能确定需要占用多少内存的情况,动态内存分配解决了这个问题。对于个人感触最深的就是数组了,数组有三个重要的限制:(1)数组长度固定不变;(2)在编译时必须知道数组的长度;(3)数组只在定义它的块语句内存在。实际的程序往往不能忍受这

2015-03-04 20:42:19 757

原创 浅谈C++中的虚函数

面向对象编程基于三个基本概念:数据抽象、继承和动态绑定,在C++中,用类进行数据抽象,用类派生从一个类继承另一个类。派生类继承基类的成员。动态绑定能够时编译器在运行时决定是使用基类中的函数还是继承类之中的函数。继承和动态绑定大大地简化了程序,而虚函数便是其中的一个关键因素。      什么是虚函数?虚函数是在类中被声明为virtual的成员函数,当编译器看到通过指针或引用调用此类函数时,对

2015-03-04 10:12:40 483

原创 Xen事件通道实现通讯设计及说明

在前面四篇文章介绍过Xen的事件通道机制后,设计一个简单的通讯样例,并进行原理说明1、建立dom时完成事件通道的建立与初始化(vcpu绑定)1.1 事件通道的初始化domain_create中调用 evtchn_init完成事件通道初始化,evtchn_init中关键函数为get_free_port。在第一次初始化过程中,get_free_port()通过memset()将分配的结构体

2015-03-02 14:59:12 1060 1

原创 Xen事件通道详细介绍(四)

4、事件通道的使用在GOS内部,除了位于特权级1的GOS内核需要使用事件通道外,位于特权级3的应用程序也可能需要使用事件通道。为此,Xen采用了类似于特权级3使用超级调用的方式(privcmd内核驱动)来完成在用户空间的应用程序对事件通道的使用,即evtchn驱动。不同的是,privcmd内核驱动是proc文件系统下的驱动程序,而evtchn驱动则是dev文件系统下的驱动程序。//linu

2015-03-02 14:57:01 1443

原创 Xen事件通道详细介绍(三)

3.2 发送事件通知事件通道的使用包含发送方和接收方两个使用者。结构上,事件通道的发送具有单向性,即只能由发送方通过事件通道发送事件通知,由接收方接收并处理事件通知。事件通知的发送,仅仅只是通过设置相应的标志位通知接收方,其本身并不包含具体的信息。在四个类型的事件通道中,发送方和接收方不尽相同(图 34)。其中,物理中断和虚拟中断的发送方为Xen,接收方为Dom;域间通信的发送方和接收方

2015-03-02 14:53:19 1210

原创 Xen事件通道详细介绍(二)

3、事件通道的操作Dom与事件通道相关的操作都需要通过Xen提供的超级调用HYPERVISOR_event_channel_op或HYPERVISOR_event_channel_op_compat来完成。其中HYPERVISOR_event_channel_op_compat被用来兼容Xen 3.0.2以前的超级调用方式。在早期的版本中,系统定义了与该超级调用对应的操作结构体evtchn_o

2015-03-02 14:45:40 1869 1

原创 Xen事件通道详细介绍(一)

1、基本概念事件通道(Event Channel)是Xen用于Dom和Xen之间、Dom和Dom之间的异步事件通知机制,事件通道的应用非常广泛,Xen体系结构上的物理中断(pIRQ)、虚拟中断(vIRQ)、虚拟处理器间中断(Virtual Inter-Processor Interrupt,vIPI)以及Dom域间通信(Inter-Domain Communication,IDC)均需通过事件

2015-03-02 14:35:24 3335

转载 C++中string类使用详细说明

之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。 首先,为了在我们的程序中使用string类型,我

2015-01-29 15:29:41 614

原创 C++中vector实现及使用详解

vector是)C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的1、vectot与array       vector与array非常相似。两者的唯一区别在于空间的运用的灵活性。array是静态空间,一旦配置了就不能改变;vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以

2015-01-23 16:41:08 1418

原创 红黑树详解(源码+图示)

Rbtree.h文件中数据结构及函数rb_node红黑树节点数据结构中使用成员rb_parent_color同时存储两种数据,一是其双亲结点的地址,另一是此结点的着色。__attribute__((aligned(sizeof(long))))属性保证了红黑树中的每个结点的首地址都是32位对齐的(在32位机上),也就是说每个结点首地址的bit[1]和bit[0]都是0,因此就可以使用bit

2015-01-23 10:08:10 757

原创 Linux中断负载均衡

Linux 内核需要对连接到计算机上的所有硬件设备进行管理,毫无疑问这是它的份内事。如果要管理这些设备,首先得和它们互相通信才行,一般有两种方案可实现这种功能:轮询(polling) 让内核定期对设备的状态进行查询,然后做出相应的处理;中断(interrupt) 让硬件在需要的时候向内核发出信号(变内核主动为硬件主动)。    第一种方案会让内核做不少的无用功,因为轮询总会周期性的

2015-01-09 10:08:31 5399

原创 虚拟化技术之设备直接分配(passthrough)

1、设备直接分配技术        如何提高虚拟化设备的性能问题是虚拟化领域长期的研究重点。如前所述,设备模拟模型会导致虚拟化性能大大下降;泛虚拟化设备模型虽然在性能上拥有一定的优势,但由于需要修改操作系统,具有局限性.。并且当前的两种I/O设备虚拟化模型已无法满足高速的数据交换需求,应运而生的就是另外一种设备虚拟化模型——设备直接分配模型。        传统的实现I/O虚拟化的技术

2014-12-15 20:51:38 7582

原创 IO虚拟化及虚拟化模型

1、I/O虚拟化简介       I/O虚拟化(Input/output virtualization,简称IOV)是虚拟化的一种新形式,是来自物理连接或物理运输上层协议的抽象,让物理服务器和虚拟机可以共享I/O资源。       在现实生活中,可用的物理资源往往是有限的,虚拟机的个数往往会比实际的物理设备个数要多。为了提高资源的利用率,满足多个虚拟机操作系统对外部设备的访问需求,虚拟机监

2014-12-11 14:23:44 16690

原创 如何查看Xen、操作系统及内核版本信息

有时在使用非自己搭建的环境平台时会需要查看系统信息,尤其是系统中编译过多个内核时,我们有时会需要当前使用的是哪个版本的内核。因此,一些查看系统版本以及内核版本信息的命令也是需要掌握的。        对于虚拟化环境而言首先要了解的是其VMM,也称为Hypervisor的版本,例如Xen,我们需要了解它的版本,其信息保存在/sys/hypervisor路径下,执行ls /sys/hyperv

2014-12-11 10:09:57 4659

原创 CPU拓扑结构之非一致性内存访问

非一致内存访问——NUMA       硬件已经趋向使用多条系统总线,每条系统总线为一小组处理器提供服务。每组处理器都有自己的内存,并可能有自己的 I/O 通道。但是,每个 CPU 都可以通过一致的方式访问与其他组关联的内存。每个组称为一个“NUMA节点”。NUMA 节点中的 CPU 数量取决于硬件供应商。访问本地内存比访问与其他 NUMA 节点关联的内存快。这就是“非一致性内存访问体系结

2014-12-10 21:09:09 2023

原创 虚拟化平台网桥配置与使用

在搭建了虚拟化平台后,虚拟机想要上网的话有多种方式;1、将主机的网卡通过直接分配的方式直接分配给网卡,这样虚拟机便可以直接占有物理网卡的使用权,这种方式下的性能特别好,但是这样主机的Dom 0便不可以使用该网卡了,所以不是很推荐这种方式;2、SR-IOV方式,创建多个VF,然后将VF分配给虚拟机使用,这样性能好,而且可以满足多个虚拟机使用需求,但是毕竟对硬件有特殊需求,对于一些非商业网卡而

2014-12-10 15:29:17 1910

原创 Xen虚拟化平台安装

近些年来,虚拟化技术已经在很多的领域中得到了广泛的应用,由于其突出的优点,虚拟化技术受到工业界和学术界的共同关注和重视,同时也是当前计算机领域的一个热门研究方向。       xen是什么? 是英国剑桥大学计算机实验室开发的一种虚拟化平台,它和虚拟机密切结合,占用资源少,以高性能、占用资源少著称。      下面以在CentOS 6.4下为例介绍一下Xen虚拟化平台的安装过程

2014-12-09 20:33:08 1182

计算机组成原理课设—小型CPU

这是关于计算机组成原理的课程设计,要求是做一个预存指令并且可以自动执行的小型CPU系统

2012-04-14

Linux内核编译

关于linux内核编译的教程,有详细的步骤介绍

2012-04-13

汇编实现文件加密解密

利用汇编语言编写的文件加密解密程序,有详细解释说明、源代码

2012-04-13

空空如也

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

TA关注的人

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