自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

chenglinhust的专栏

分布式系统 基础架构 中间件系统 安全领域 容器技术 人工智能

  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

原创 FastDFS分布式文件系统剖析(一)

FastDFS分布式文件系统剖析(一)最近一直在研究FastDFS的架构,作为学习成果的一部分,准备利用接下来的一段时间把一些心得点滴记录下来。我在网上参考了大量的资料,大致分为下面一些:1. fastdfs  架构概述2. 网络模型、libevent框架使用3. tracker 、storage 入口分析4. upload上传机制剖析5. down

2012-09-30 16:48:43 1179 1

原创 Ubuntu10.10配置与安装DHCP服务器

Ubuntu10.10配置与安装DHCP服务器  DHCP基于客户/服务器模式。当DHCP客户端启动时,它会自动与DHCP服务器通信,由DHCP服务器为DHCP客户端供给自动分配IP地址的服务。  安装了DHCP服务软件的服务器称为DHCP服务器,而启用了DHCP功效的客户机称为DHCP客户端,DHCP服务器是以地址租约的方法为DHCP客户端供给服务的,它有以下两种方法

2012-09-29 16:20:13 1276

原创 bloom filter详细讲解以及代码分析

bloom filter详细讲解以及代码分析一. 简介1.什么是bloom filter?     Bloom filter 是由 Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员,这种检测只会对在集合内的数据错判,而不会对不是集合内的数据进行错判,这样每个检测请求返回有“在集合内(可能错误

2012-09-28 08:47:23 1688

原创 KVM内核代码结构

KVM内核代码结构因为KVM的源代码已经包含在了Linux的内核树中,因此我们只需直接从www.kernel.org下载代码即可,内核源码包打开较大,解开后目录结构大概是这个样子:涉及KVM的主要有两个目录,virt和arch/x86/kvm。virt目录虽然看起来层级很高,主要有kernel中非硬件体系架构相关的部分如IOMMU、中断控制等,真正货色较多的,是后者

2012-09-26 17:24:43 2847

原创 编程之美----寻找发帖水王

编程之美----寻找发帖水王题目:Tango是微软亚洲研究院的一个试验项目。研究院的员工和实习生们都很喜欢在Tango上面交流灌水。传说,Tango有一大“水王”,他不但喜欢发贴,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子总数的一半。如果你有一个当前论坛上所有帖子(包括回帖)的列表,其中帖子作者的ID也在表中,你能快速找出这个传说中的Tango水王吗? –《

2012-09-24 21:53:10 8246

原创 使用libvirt管理KVM虚拟机

使用libvirt管理KVM虚拟机一、安装虚拟化管理工具1、yum install virt-manager libvirt libvirt-python python-virtinst1、kmod-kvm : kvm kernel module(s)2、kvm : Kernel-based Virtual Machine3、kvm-qemu-img : Qem

2012-09-24 16:05:32 5114 6

原创 如何通过C语言自动生成MAC地址

如何通过C语言自动生成MAC地址      最近在做虚拟机项目时,需要给创建的每一个虚拟机自动生成一个MAC地址,由于MAC地址为48位,而且格式是以:隔开的,所以下面我写了一个c程序,来自动生成MAC地址。    //   MAC.c#include#include#include#include#define RANDOM(x) (rand()%x)

2012-09-24 14:29:00 5306

原创 c++ new的三种用法

c++ new的三种用法一. 简介new有三种使用方式:plain new,nothrow new和placement new。(1)plain new顾名思义就是普通的new,就是我们惯常使用的new。在C++中是这样定义的:    void* operator new(std::size_t) throw(std::bad_alloc);    void o

2012-09-23 21:01:21 1655

转载 Ubuntu下FastDFS环境的安装搭建

Ubuntu下FastDFS环境的安装搭建一、FastDFS简介FastDFS是一个个人开发的、轻量级的、开源的分布式文件系统,纯C语言编写,其功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题,具有稳定、高效、易用的优点。更多详见:FastDFS主页:http://code.google.com/p/fastdfs

2012-09-23 16:10:10 1864

原创 c++中traits class表示类型信息

c++中traits class表示类型信息隐式接口和编译期多态1.classes和template都支持接口(interfaces)和多态(polymorphism)。2.对于classes而言接口是显式的(explicit),以函数签名为中心。多态则是通过virtual函数发生在运行期。3.对于template参数而言,接口是隐式的(implicit),奠基于有

2012-09-23 09:17:37 1966

原创 RedHat Enterprise下如何配置KVM虚拟机的网络网桥

RedHat Enterprise下如何配置KVM虚拟机的网络网桥一. 网桥的相关创建命令     1. 创建网桥设备:brctl addbr  ,eg:brctl addbr  br02. 向网桥设备添加物理网卡:brctl addif  ,eg:brctl  addif  br0 eth0/eth1(根据需要添加几个网卡)3. 从网桥中删除网卡:brctl

2012-09-22 15:12:01 3234

原创 c++中tr1::bind和tr1::function讲解

c++中tr1::function讲解在C++的TR1中(Technology Report)中包含一个function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类 的非静态成员函数时。可以参考Scott Meyers. >. Item 35.下面具体说明其使用方法。一、指向全局函数或静态成员函数时因为

2012-09-22 09:57:38 2957

原创 程序员面试题精选100题(03)-子数组的最大和

程序员面试题精选100题(03)-子数组的最大和题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。分析:本题最初为2005年浙江大

2012-09-22 00:09:27 918

原创 程序员面试题精选100题(07)-翻转句子中单词的顺序

程序员面试题精选100题(07)-翻转句子中单词的顺序题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。分析:由于编写字符串相关代码能够反映程序员的编程能力和编程习惯,与字符串相关的问题一直是程序员笔试

2012-09-21 19:55:45 1048

原创 Linux下编译链接多个源文件

Linux下编译链接多个源文件add.c 的内容int Add(int a,int b){   int result;   result=a+b;   return  result;} minus.c 的内容 int Minus(int a,int b){  int result;  result=a-b;  return r

2012-09-19 15:08:00 1085

原创 Linux下C编译系统

Linux下C编译系统编译过程概述了解一些编译知识的读者都知道,所谓编译,就是在编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件感谢格式的要求链接生成可执行程序。UNIX环境下的C编译系统所遵循的也是这么一个一般的过程。值得注意的是这个过程并不是有某个单个程序完成的,而是有多

2012-09-19 14:44:58 1577

原创 C运行库简介

C运行库简介任何一个C程序,它的背后都有一套庞大的代码来进行支撑,以使得该程序能够正常运行。这套代码至少包括入口函数,及其所依赖的函数所构成的函数集合。当然,它还理应包括各种标准库函数的实现。这样的一个代码集合称之为运行库(Runtime Library)。而C语言的运行库,即被称为C运行库(CRT)。如果拥有Visual Studio,可以在VC/crt/src里找到

2012-09-12 17:32:10 2310 2

原创 error C2065: '_beginthreadex' : undeclared identifier 的解决办法

error C2065: '_beginthreadex' : undeclared identifier 的解决办法    在VC下编译多线程程序时,经常加入了头文件#include,编译时还是出现error C2065: '_beginthreadex' : undeclared identifier 的问题,原因是VC打开时编译程序时,工程中设置的单线程,所以要更改工程中的设置。

2012-09-12 16:31:13 7007

原创 RHEL 6.1 KVM虚拟机桥接物理机网络

RHEL6.1 KVM虚拟机桥接物理机网络一、KVM默认网络配置1、kvm上网有两种配置:a. NAT,支持主机与虚拟机的互访,也支持虚拟机访问互联网,但不支持外界访问虚拟机。b. bridge(桥接),可以使用虚拟机成为网络中具有独立IP的主机,不但能上网,也能让别人访问虚拟机。 2、虚拟机安装完成时,默认的NAT,网卡为“Realtek RTL8

2012-09-10 21:10:23 12490

原创 C++中两个类互相包含的策略

C++中两个类互相包含的策略一,问题描述        A类包含B类的实例,而B类也包含A类的实例 二,求解策略         1)错误的解法               A文件包含B,而B文件又包含A文件,这样就形成死循环[html] view plaincopy#include "B.

2012-09-10 14:15:53 1332

转载 利用libvirt管理KVM虚拟机

利用libvirt管理KVM虚拟机本文的原始链接:http://blog.chinaunix.net/uid-1838361-id-257238.html说明:这篇笔记为更好的管理虚拟化服务,如果仅仅是测试虚拟化,查看另一篇笔记:http://blog.chinaunix.net/space.php?uid=1838361&do=blog&id=234090

2012-09-09 11:29:27 2464

原创 linux下libxml库的安装及编译

linux下libxml库的安装及编译1. 下载和安装LIBXML2     Libxml2是个C语言的XML程式库,能简单方便的提供对XML文件的各种操作,并且支持XPATH查询,及部分的支持XSLT转换等功能。Libxml2的下载地址是http://xmlsoft.org/,完全版的库是开源的,并且带有例子程式和说明文件。最佳将这个库先下载下来,因为这样能查看其中的文件和例

2012-09-07 10:58:30 7935 1

原创 linux内存映像

linux内存映像内存映像其实就是在内存中创建一个和外存文件完全相同的映像。用户可以将整个文件映射到内存中也可以部分映射到内存。系统会将对内存映像的改动如实的反映到外存文件中。从而实现了通过内存映像对外存文件的操作。 内存映像的特点:1、 可以加快对IO的操作速度。2、 用户可以通过指针对文件进行操作,间接~~~3、 实现了文件数据的共享,将外存文件映射到共享内存中

2012-09-06 17:27:30 1325

原创 如何在C语言中调用shell命令

如何在C语言中调用shell命令     在linux操作系统中,很多shell命令使用起来非常简单,这些shell命令的程序实现已经被底层实现好。有时候需要在程序中调用shell命令,这样可以就不用在控制台上手动输入shell命令了,下面就以三个函数为例来讲解如何在C语言中调用shell命令。1、system(执行shell 命令)相关函数 fork,execve,w

2012-09-06 16:50:46 2879

原创 C语言文件操作之----文件的读写

C语言文件操作之----文件的读写 当文件按指定的工作方式打开以后,就可以执行对文件的读和写。下面按文件的性质分类进行操作。针对文本文件和二进制文件的不同性质,对文本文件来说,可按字符读写或按字符串读写;对二进制文件来说,可进行成块的读写或格式化的读写。1. 读写字符    C提供fgetc和fputc函数对文本文件进行字符的读写,其函数的原型存于stdio.h头文件中,格式为:

2012-09-01 21:24:30 1435

原创 策略模式

策略模式一,概念        策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。二,策略模式的组成   1)抽象策略角色: 策略类,通常由一个接口或者抽象类实现。   2)具体策略角色:包装了相关的算法和行为。   3)环境角色:持有一个策略类的引用,最终给客户

2012-09-01 11:38:43 5660

原创 KVM虚拟机创建功能详细讲解

KVM虚拟机创建功能详细讲解一.KVM虚拟机创建的用户操作对于用户或者管理员来说,虚拟机的创建有着很多的方法,例如:kvm自带命令行工具、使用virsh命令来创建、使用具有图形界面的virt-manager等等。但是它们底层实现的原理都是一样的,而且它们基本上都是通过开源的虚拟化库Libvirt来开发的。下面就讲一讲三种用户可以创建虚拟机的方式。1.1 利用kvm自带命令行工具

2012-09-01 11:11:36 43752 7

转载 简单工厂模式

简单工厂模式一,概念        从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。二,实例

2012-09-01 11:04:42 1332

走向分布式基础学习

是学习分布式的好资料,里面的内容讲解的非常详细,是一个台湾人下载的

2015-03-22

空空如也

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

TA关注的人

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