自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

为幸福写歌的博客

GitHub:https://github.com/zhiyongye

  • 博客(150)
  • 收藏
  • 关注

转载 ubuntu中vi编辑器键盘错乱的问题

Ubuntu安装完成后vi编辑器键盘不能正常使用,使用下面方法解决:编辑文件/etc/vim/vimrc.tiny,将“compatible”改成“nocompatible”非兼容模式;并添加一句:set backspace=2

2017-11-27 16:53:21 13174 5

原创 Xen使用Pass-through和SR-IOV

本文介绍了如何在Xen上使用Pass-through和SR-IOV,至于Pass-through和SR-IOV的原理可以查阅其他文章。所谓Pass-through技术是指可以将PCI/PCIe设备直接分配给虚拟机使用,而SR-IOV设备除了有一个物理功能 (Physical Function, PF)之外,还可以许多虚拟功能 (Virtual Function, VF)给虚拟机使用。本文使

2017-11-24 11:16:01 2056

原创 Xen复制虚拟机

因为机房的网络受限制,安装DomU时没有网络,而半虚拟化只能通过URL的方式进行安装,通过http的方式也不行,Ubuntu 14以后就不再提供netboot的镜像了!然后就只能在实验室的电脑上安装好DomU再复制到机房里面去了。当然每次安装创建虚拟机的步骤比较繁琐,通过复制的方式可以简化操作和提高效率。复制虚拟机的方法有很多种,这里介绍的是以映像文件方式保存的虚拟机的复制,只要拷贝虚

2017-11-23 10:31:10 447

原创 在Ubuntu14上为Xen设置桥接网络

Xen安装成功以后,需要对网络进行配置,这里介绍的是使用桥接方式进行网络配置。Ubuntu14配置网桥跟CentOS6稍微有些不同,如果想对CentOS配置网桥请看这里。Bridge(桥)是 Linux 上用来做 TCP/IP 二层协议交换的设备,与现实世界中的交换机功能相似。Bridge 设备实例可以和 Linux 上其他网络设备实例连接,既 attach 一个从设备,类似于在现实世界中的交

2017-11-20 15:08:12 660

原创 Ubuntu 14配置网络

一、配置IP地址通过修改文件/etc/network/interfaces可以设置为DHCP或手动设置静态ip,前面auto eth0是指让网卡开机自动挂载:root@ccrfox141:/home/ye/xen-4.6.3# cat /etc/network/interfaces# This file describes the network interfaces availab

2017-11-20 10:58:31 958

原创 gcc编译error adding symbols错误

编译报错:root@ye:/home/ye/Raccoon# gcc -lxenlight -lxenstore -g a.c store.c read.c -o a/usr/bin/ld: /tmp/ccd7eAsA.o: undefined reference to symbol 'xtl_createlogger_stdiostream'//usr/local/lib/libxenc

2017-11-20 10:30:33 26601

原创 Ubuntu14安装gcc4.4.7

最近要将项目从CentOS 6移植到Ubuntu 14,配置好环境后编译源代码却总是报报“undefined reference to“错误,本来以为是库路径的问题,折腾半天发现是gcc版本不一样导致出错。在Ubuntu 14中的默认的gcc版本是4.8.4root@ccrfox141:/home/test# gcc -vUsing built-in specs.COLLECT

2017-11-20 10:24:32 4399

原创 Ubuntu14源码编译安装Xen4.6

之前一直使用的都是CentOS 6,但现在要把项目的程序移植到机房的机器上运行了,但机房安装的是我不熟悉的Ubuntu,所以没办法只能在Ubuntu上重新安装一次Xen了,这篇文章主要记录了我安装的过程,以便以后需要时查阅。在Ubuntu上源码编译安装Xen其实跟在CentOS上没有很大的区别,就是依赖包可能有所不同,这里CentOS 6源码编译安装Xen4.6可以作为参考。编译一个 Xe

2017-11-16 15:51:26 1114

转载 IO虚拟化及虚拟化模型

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

2017-11-15 16:35:34 1333

原创 Linux中的分段机制

为了能将操作系统移植到不同的平台上,操作系统的设计者必须在硬件相关的代码与硬件无关的代码之间划出界限,Linux是把硬件相关的代码全部放在arch(architecture的缩写)目录下,在这个目录下可以找到Linux最新版本支持的所有平台。Linux作为现代通用操作系统,使用了分页机制(X86叫保护模式,arm叫MMU机制)来对用户态与内核态进行隔离,也对进程与进程之间进行隔离。无奈在X

2017-11-14 15:31:42 1255

原创 LVM逻辑卷管理命令

逻辑卷的概念和理论可以参考另外一篇博客《Linux逻辑卷管理》,这里只介绍逻辑卷管理的命令,以便以后查阅。显示分区信息:[root@localhost /]# fdisk -l显示磁盘使用情况:[root@localhost /]# df -h物理卷(PV):物理硬盘格式化为物理卷(PV):[root@localhost /]# pvcreate /dev/

2017-11-10 11:16:06 417

原创 C语言中的strcat()函数

头文件:#include 函数原型:char *strcat (char *dest,const char *src)函数描述:strcat()会将参数src字符串拷贝到参数dest所指的字符串尾,第一个参数dest要有足够的空间来容纳要拷贝的字符串;返回值:返回dest字符串参数的起始地址;例子:#include #include int main(vo

2017-11-09 15:22:29 23302 1

原创 C语言中的popen()函数

Linux中的popen()函数可以在程序中执行一个shell命令,并返回命令执行的结果。有两种操作模式,分别为读和写。在读模式中,程序中可以读取到命令的输出,其中有一个应用就是获取网络接口的参数。在写模式中,最常用的是创建一个新的文件或开启其他服务等。头文件:#include 函数原型:FILE *popen(const char *command, const char *type

2017-11-08 21:40:41 33478

原创 Linux中的Bonding技术

将多块网卡虚拟成为一块网卡,使其具有相同的ip地址,来实现提升主机的网络吞吐量或者是提高可用性等作用,这种技术被称作BondingLinux下支持七种模式的网卡绑定,这里列出常用的两种:模式0:平衡轮训  使用这种模式来进行多网卡绑定时我们可以提高网络的带宽,其流量是从绑定的多块网卡上平均分配的模式1:主动备份  使用这种模式来进行多网卡绑定时我们可以提高网络的稳定性,这种模式不会

2017-11-04 17:36:39 667

原创 CentOS 6源码编译安装Xen4.6

因为要修改Xen的源码,所以不得不要源码编译安装Xen,这真是体力活啊。其实编译一个 Xen 内核和编译一个普通 Linux 内核没有什么不同,如果发现编译后的内核启动不了,出现 kernel panic 的情况,多半是内核与机器的硬件没有配置好的原因,和 Xen 没有关系。本文使用的环境是:CentOS 6.5 + linux-3.16.49内核 + xen-4.6.3安装前的配置和安装

2017-11-02 21:13:13 1772

原创 Linux中的yum命令与配置

yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。yum 语法

2017-11-01 17:12:10 394

原创 Linux编译内核

编译内核不难,按部就班的来一个上午就能搞定(编译内核的过程要花费很多时间)。本文使用的环境是:CentOS 6.9(linux-4.9.39-29.el6.x86_64),要编译的内核是linux-3.16.49准备内核内核可以到Linux内核官网下载,下载完整内核包(后缀是tar.xz)即可,但这要注意内核版本是否适用于你的开发版本,比如我用最新的linux-4.13.10就安装不成

2017-10-30 15:22:14 457

原创 C语言中mmap()函数的使用

mmap()函数的主要用途有三个:1、将一个普通文件映射到内存中,通常在需要对文件进行频繁读写时使用,这样用内存读写取代I/O读写,以获得较高的性能;2、将特殊文件进行匿名内存映射,可以为关联进程提供共享内存空间;3、为无关联的进程提供共享内存空间,一般也是将一个普通文件映射到内存中。头文件: #include 原型:void *mmap(void *start

2017-10-19 16:24:30 14881

原创 C语言中getopt()和getopt_long()函数的用法

一、命令行参数的使用C程序的主函数有两个参数,其中,第一个参数是整型,可以获得包括程序名字的参数个数,第二个参数是字符数组指针或字符指针的指针,可以按顺序获得命令行上各个字符串参数。其原形是:int main(int argc, char *argv[]);或者是:int main(int argc, char **argv);比如在命令行输入:./test hel

2017-10-18 22:12:49 10266 1

原创 Python中的struct模块

Python是一门非常简洁的语言,对于数据类型的表示,不像其他语言预定义了许多类型(如:在C#中,光整型就定义了8种),它只定义了六种基本类型:字符串,整数,浮点数,元组,列表,字典。通过这六种数据类型,我们可以完成大部分工作。但当Python需要与其他的平台(其他的编程语言)进行交互的时候,必须考虑到将这些数据类型与其他平台或语言之间的类型进行互相转换问题。打个比方:C++写的客户端发送一个in...

2017-10-14 23:34:08 1621 1

原创 Python中的mmap模块

mmap是一种虚拟内存映射文件的方法,即可以将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。普通文件被映射到虚拟地址空间后,程序可以像操作内存一样操作文件,可以提高访问效率,适合处理超大文件一个简单的例子:import mmap# write a simple example filewith open("hel

2017-10-14 11:19:04 5541 1

原创 Python中的optparse模块

简单介绍Python提供了内置模块optparse来处理命令行选项,该模块提供了比getopt模块更强大的处理功能。先看一个简单的例子:from optparse import OptionParser...parser = OptionParser()parser.add_option("-f", "--file", dest="filename",

2017-10-12 21:58:11 1002

原创 线性表的链式表示和实现(单链表)

本文是对严蔚敏老师《数据结构》线性表的链式表示和实现这节的算法用C语言的实现,已成功在Linux上运行。#include #include //函数结果代码#define TRUE 1#define FALSE 0#define OK 0#define ERROR 1#define OVERFLOW -1typedef in

2017-10-12 17:08:34 465

原创 XenMon的使用

It is important to keep in mind that Xen is an enterprise level environment capable of supporting complex virtualization configurations. As with any complex system it would be naive to assume that the

2017-10-10 16:16:22 420

原创 线性表的顺序表示和实现

最近想利用空余时间把严蔚敏老师《数据结构》里面的算法用C语言都敲一遍,不知道能坚持多久,总之要努力。本文是对《数据结构》线性表的顺序表示和实现这节的算法用C语言的实现,已成功在Linux上运行。线性表的顺序表示的结构和算法就去看严蔚敏老师《数据结构》啦,直接贴代码。#include #include #define LIST_INIT_SIZE 100 //线性表存储空

2017-09-26 17:52:22 412

转载 C语言中time函数和localtime获取系统时间和日期

本文转载自:http://blog.csdn.net/qq_22122811/article/details/52741483C语言中time函数和localtime获取系统时间和日期time()函数函数说明:可以通过time()函数来获得计算机系统当前的日历时间(Calendar Time),处理日期时间的函数都是以本函数的返回值为基础进行运算。原型: tim

2017-09-15 17:17:55 1579

转载 C语言中realloc()的用法

本文转载自:http://www.cnblogs.com/duger/archive/2013/08/29/3288974.htmlrealloc 用过很多次了,无非就是将已经存在的一块内存扩大,如;char* p = malloc(1024);char* q = realloc(p,2048);现在的问题是我们应该如何处理指针 p。 刚开始按照我最直观的理解,如果就是直接将

2017-09-11 16:17:53 1883

原创 Linux中对文件描述符的操作

fd_set结构体在Linux中,内核利用文件描述符(File Descriptor)即文件句柄,来访问文件。文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。宏FD_ZERO、FD_SET、FD_CLR、FD_ISSET中“FD”即为

2017-09-11 10:48:18 1159

转载 Linux中的文件描述符

概述文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于UNIX、Linux这样的操作系统。习惯上,标准输入(standard input)的文件描述符是 0,标

2017-09-11 10:07:53 690

原创 C语言的常用函数

本文记录的平时遇到的一些函数,这些函数虽然简单但又容易忘掉,所以整理放到这里,方便以后查阅。atoi()函数:头文件:#include原型:int atoi (const char * str);函数说明:将数字字符串转化为相应的数字,读取到非数字字符时将会停止转换。atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspac

2017-09-08 15:51:13 368

转载 Linux中fstat、stat和lstat的用法与区别

stat系统调用系列包括了fstat、stat和lstat,它们都是用来返回“相关文件状态信息”的,三者的不同之处在于设定源文件的方式不同。struct stat结构体首先隆重介绍的是一个非常重要的”VIP”人物,他是fstat, stat和lstat三者都要用到的一个结构体类型,名字叫做struct stat。可以说,没有这个struct stat的支持,上述三个系统调用将寸步难行。

2017-09-07 10:52:01 17078

原创 Linux中目录proc/net/dev详解

在Linux系统中,系统调用是操作系统提供给应用程序使用操作系统服务的重要接口,但同时也正是通过系统调用机制,操作系统屏蔽了用户直接访问系统内核的可能性。幸运的是Linux提供了LKM机制可以使我们在内核空间工作,在LKM机制中一个重要的组成部分就是proc伪文件系统,它为用户提供了动态操作Linux内核信息的接口,是除系统调用之外另一个重要的Linux内核空间与用户空间交换数据的途径。而pr

2017-09-05 10:32:59 30933

转载 C语言中sscanf()函数的用法

本文转载自: http://blog.csdn.net/sjf0115/article/details/8579935sscanf() 的作用:从一个字符串中读进与指定格式相符的数据.原型: int sscanf (const char *str,const char * format,........);说明: sscanf()会将参数str的字符串根据参数format字符串

2017-09-04 21:59:13 2167

转载 Linux之用户态与内核态

本文转载自:http://www.cnblogs.com/bakari/p/5520860.html一、 Unix/Linux的体系架构如上图所示,从宏观上来看,Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核)。内核从本质上看是一种软件——控制计算机的硬件资源,并提供上层应用程序运行的环境。用户态即上层应用程序的活动空间,应用程序的执行必须依托于内核提供

2017-09-01 22:06:52 720

原创 Linux中fork()函数的使用

进程在执行过程中,可以通过系统调用的方式创建多个新进程。Linux系统提供了两种创建进程的方式:函数fork()用来创建一个新进程,该进程几乎是当前进程的一个完全副本;函数exec()函数用来启动另外的进程以取代当前运行的进程。这里主要介绍如何利用fork()函数创建新的进程以及fork()函数的工作机制。fork在英中有“分叉”的含义,在Linux系统中,这个名字比较形象,因为一个进程在运行

2017-08-31 15:57:34 451

转载 Linux中Makefile的使用

本文转载自陈皓的《跟我一起写 Makefile》。在Linux中,一段C语言程序代码要经过编译、汇编、链接得到可执行文件后才能够运行。对于只有几个程序文件的小型程序而已,仅使用gcc就可以方便地将程序代码编译链接成可执行文件。而一些大型的应用程序通常都有几十甚至上百成千个程序文件组成,为了解决大型应用程序开发中的代码维护问题,Linux提供了一种工程管理工具make。makefile 介绍

2017-08-30 17:15:22 334

原创 CentOS安装内核源代码

本文参考于CentOS官网的《I need the Kernel Source》。1. 或许你不需要整个内核的源代码如果你只是需要编译一个内核的驱动程序(模块),很可能你并不需要安装整个内核源代码。只需要安装 kernel-devel 这个组件即可(然而,假若你需要完整的源代码目录树,请看第二部分)。运行下面的命令即可安装 kernel-devel 组件:[root@host]

2017-08-30 10:29:35 5880

原创 C语言中的memcpy()和memset()函数

memcpy函数原型:void *memcpy(void *dest, const void *src, size_t n);需要的头文件:#include用法:memcpy函数是内存拷贝函数,功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。因为这个函数是直接操作内存的,所以效率会很高。#includeint ma

2017-08-29 11:08:57 1056

原创 C语言中的strdup()和strndup()函数

strdup() 和 strndup() 函数的原型分别为:#include char *strdup(const char *s);char *strndup(const char *s, size_t n);说明:strdup() 函数将参数 s 指向的字符串复制到一个字符串指针上去,这个字符串指针事先可以没被初始化。在复制时,strdup() 会给这个指针分配空间,使用

2017-08-28 17:30:28 12663

原创 Xen中半虚拟化的创建与配置

引言本文介绍了在Xen4.6平台上使用命令行创建半虚拟化Ubuntu的domU客户机过程,使用Xen4.6的dom0运行在CentOS6.9上。本文使用的是Xen安装附带的xl程序(Xen4CentOS版本已经不再支持xm)。如果要使用virt-manager安装,可以参考CentOS官网上的《采用LibVirt/Virt-install及Virt-Manager来管理xen4centos

2017-08-21 23:17:45 826

空空如也

空空如也

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

TA关注的人

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