自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ceph中RADOS原理是什么,具体实现步骤是什么

RADOS的原理是通过分布对象的方式实现数据的存储和管理,具有高可靠性、高扩展性和高性能等特点。RADOS的原理是基于对象的存储,将数据分成大小相同的小块,称为对象。RADOS使用CRUSH算法来分布数据,通过虚拟化存储设备,将数据分布在多个存储节点上,从而实现数据的容错和扩展。综上所述,RADOS通过分布对象的方式实现数据的存储和管理,使用哈希算法和CRUSH算法来分布数据,并使用复制和修复技术来实现数据的冗余备份和容错,从而实现高可靠性、高扩展性和高性能的分布式存储。

2023-07-20 10:16:58 376

原创 ceph第一章

当前,方兴未艾的云计算无疑代表了科技发展的下一波浪潮的到来,而率先基于AWS推出公有云服务并成为公有云事实标准的亚马逊公司无疑一只脚已经踏上了这波浪潮的浪潮之巅。ceph在设计之初被定位为一个纯粹的分布式文件系统但随着虚拟化逐渐成为信息时代的主旋律和以openstack为代表的云计算技术的闪电崛起,社区果断调整重心,开始发展新型分布式块存储服务组件RBD,并使其逐渐成长为openstack等Iaas云计算环境中虚拟机、镜像、云盘等服务不可或缺的默认块存储设备后端。CRUSH是ceph两大核心设计之一。

2023-04-04 11:14:48 99

原创 飞腾性能调优

飞腾性能调优

2022-11-30 17:38:03 831

原创 基金的全面介绍,看这一篇就够了

基金简介

2022-07-30 10:00:00 185

原创 陶朱公商训 道出了管理的本质

陶朱公《商训》能识人。知人善恶,账目不负。能接纳。礼文相待,交关者众。能安业。厌故喜新,商贾大病。能整顿。货物整齐,夺人心目。能敏捷。犹豫不决,终归无成。能讨账。勤谨不怠,取讨自多。能用人。因才器使,任事有赖。能辩论。生财有道,阐发愚蒙。能办货。置货不苛,蚀本便经。能知机。售贮随时,可称名哲。能倡率。躬行以律,亲感自生。能运数。多寡宽紧,酌中而行。《陶朱公经商十八法》生意要勤快,切勿懒惰,懒惰则百事废。接纳要谦和,切勿暴躁,暴躁则交易少。

2022-05-05 22:09:51 429

原创 内存池---c语言实现

内存池是一种为了避免cpu多次申请小块内存而节省cpu资源的技术。内存池预先申请一定数量的、容量相等的内存块。当需要使用内存时,从内存池中分出一部分内存块。内存池可以使得内存的分配效率提高。这里先写一个简单的内存池。...

2021-08-12 11:34:11 250

原创 处理器虚拟化简介

1、处理器虚拟化是VMM(Hypervison)中最核心的部分,因为内存或者I/O的指令本身就是敏感指令,所以内存虚拟化与IO虚拟化都依赖与处理器虚拟化的正确实现。1)、指令模拟VMM运行在最高特权级,可以控制处理器上所有关键资源;而客户机操作系统运行在非最高特权级。所以其敏感指令会陷入到VMM中通过软件的方式进行模拟。从客户机操作系统的角度而言,无论是一条指令是直接执行在物理处理器上,还...

2021-07-28 16:32:12 975

原创 2021-04-01

财富自由三部曲:无财作力,少有斗智,既饶争时,此其大经也

2021-04-01 15:18:37 55

原创 cpu工作原理介绍

1、CPU工作原理:我们要实现的是一个RISC指令集的CPU,并且我们最后要自己为这个CPU设计指令并且编码。首先我们来听个故事,关于CPU的诞生的故事:日本客户希望英特尔帮助他们设计和生产八种专用集成电路芯片,用于实现桌面计算器。英特尔的工程师发现这样做有两个很大的问题。第一,英特尔已经在全力开发三种内存芯片了,没有人力再设计八种新的芯片。第二,用八种芯片实现计算器,将大大超出预算成本。英特...

2019-08-19 23:02:35 2129

原创 进程

进程有时被称为任务,有时又被称为运行的程序。在这里引用一段windows内核书籍抄过来的文字,这是迄今为止最准确的定义:尽管表面上看起来程序和进程非常类似,但本质上它们却是截然不同的。程序是指一个静态的指令序列,而进程则是一个容器,其中包含了当执行一个程序的特定实例时所用到的各种资源。进程就是各种资源的合集,通常一个进程包含下面几种资源。1、私有的线性地址空间:这是进程可以使用的线性地址的...

2019-03-13 14:37:37 249

原创 异常架构

和中断相比,异常最大的不同在于它是在程序的执行过程中同步发生的。例如下面这个程序:voidmain(){inta = 10;a = a/0;}程序运行到a = a/0;一句时必然引起一个除0异常,但不能预料该程序在执行时是否会发生中断。异常根据产生的原因和严重程度可以分为如下三类。(1)错误 :由某种错误情况引起,一般可以被错误处理程序纠正。错误发生时,处理器将控制权转...

2019-03-06 21:53:47 396

原创 中断架构

如果程序总是顺序执行,那么事情将变得非常简单。但事情往往和人们所期望的不太一样,中断和异常会打断顺序执行的程序流,转而进入一条完全不同的执行路径。操作系统的内核为什么那么难懂,很大一部分要归功于它们。下面将介绍现代CPU架构中的中断和异常机制。中断架构从某种意义上说,现代计算机架构是由大量的中断事件驱动的。中断提供给外部硬件设备一种“打断CPU当前执行任务,并响应自身服务”的手段。1、...

2019-03-06 15:46:04 715

原创 x86架构的基本运行环境

从CPU的角度来看,程序不过是一组指令并按编译时生成的顺序执行。执行的过程中会从内存中取值并在寄存器中操作,以得到期望的结果。此外还有一些特殊的寄存器对CPU的状态和行为进行控制。下面介绍一下x86架构的基本运行环境。三种基本模式实际上x86有4种运行模式:实模式、保护模式、SMM模式和虚拟8086模式。除SMM模式外,其他三种模式常见于各种教科书,对理解x86CPU工作极为重要,在此也对...

2019-03-04 15:50:23 2309

原创 x86内存管理机制--分页机制详析

分页机制x86的分页机制是更加粒度化的内存管理机制,与分段机制将内存划分成以基地址和长度描述的多个段进行管理不同,分页机制是用粒度化的单位页来管理线性地址空间和物理地址空间。x86架构下一个典型的页大小是4KB,则一个4GB的虚拟地址空间可以划分成1024x1024个页面。物理地址空间划分同理。x86架构允许大于4KB的页面大小,这里只介绍4KB的页面管理机制。分页机制让现代操作系统中的虚...

2019-03-04 14:04:37 846

原创 X86内存管理机制--分段机制详析

x86架构的内存管理机制以复杂著称,这里面有很多历史原因。下面对x86的分段机制和分页机制进行简单介绍。1、分段机制分段是一种朴素的内存管理机制,它将内存划分成以起始地址base和长度limit描述的块,这些内存块就称为段。段可以与程序最基本的元素联系起来。例如程序可以简单地分为代码段、数据段和栈,段机制中就有对应的代码段、数据段和栈段。分段机制由4个基本部分构成:逻辑地址、段选择寄存...

2019-02-27 11:48:47 1112

原创 x86内存架构介绍

内存架构是硬件架构中最复杂的部分。理解了内存架构,就理解了现代操作系统的大部分内容。地址空间:很多教科书把内存比作一个大数组,地址就是这个数组的索引。地址空间则是个更大的数组,它是所有可用资源的集合,同样地址是这个数组的索引。地址空间可以划分以下两种类型。1、物理地址空间硬件平台可以粗略地划分成3个部分:cpu、内存、和其他硬件设备。其中CPU是平台的主导者,从cpu的角度看,内存和其...

2019-02-22 09:11:09 2461

原创 查找1到1千万之间的素数

#include<stdlib.h>#include<string.h>#include <stdio.h>#include<stdbool.h>int searchprime(int num,int *out){ int pn=0; bool *mask=new bool[num+1]; for(int i=2;...

2018-11-01 19:31:02 786

原创 Proxmox VE 安装教程 5.2版

1、准备好proxmox5.2的iso 、U盘。2、刻录好U盘,设置电脑或者服务器U盘启动3、进入引导界面硬件虚拟化检查:点击OK ,然后 NEXT同意:选择安装的磁盘:如果未选默认安装到检测的磁盘上选择国家:设置密码、邮箱:设置IP地址:自动安装deb包:安装成功:点击重启:登陆:...

2018-09-19 16:54:00 12180

原创 文件描述符

文件描述符是什么?文件描述符是一个非负整数。文件描述符由来:对于内核文件而言,所有打开的文件都由文件描述符引用。当打开一个现存的文件或者创建一个新文件时,内核向进程返回一个文件描述符。当读、写一个文件时,用open或者creat返回的文件描述符标识该文件,将其作为参数传送给read或者write。 ...

2018-08-07 20:58:49 156

原创 linux套接字编程:实现服务器端给客户端发送时间

服务器端代码如下:#include"apue.h"#define SERVER_PORT 8888static int sfd;void init_network(){ int ret; struct sockaddr_in addr; sfd = socket(AF_INET,SOCK_STREAM,0); if(sfd < 0){ perror("so...

2018-08-04 16:00:47 1006

原创 练习7-1 编写一个程序 实现大写字母转换成小写字母,小写字母转换成大写字母

#include<stdlib.h>#include<ctype.h>#include<stdio.h>char to_lower(char c); int main(){ int c; while((c = getchar()) != EOF) putchar(to_lower(c)); return 0;}...

2018-07-30 09:26:40 17616

原创 C程序设计语言题目:练习8-1

用read、write、open close 系统调用来替代标准库中的功能等价函数,重写cat程序,通过实验比较两个版本的速度。#include<stdlib.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<unistd.h>#inc...

2018-07-27 16:00:02 564

原创 C语言strcat实现

#include#include#includechar *strcat(char *strDest,const char *strSrc ){    char *address=strDest;    assert((strDest!=NULL)&&(strSrc!=NULL));        while(*strDest)    {        st

2016-01-06 17:11:42 329

原创 C++拷贝构造函数的三种情况

#includeusing  namespace std;class Point{    public:        Point(int xx=0,int yy=0){X=xx;Y=yy;}        Point(const Point &p);        int GetX(){return X;}        int GetY(){return Y

2016-01-06 14:11:52 266

原创 字符串反转reverse.c

#includevoid reverse(char s[]){ int c,j,i; for(i=0,j=strlen(s)-1;i {  c=s[i];  s[i]=s[j];  s[j]=c; }}int main(){ char s[]="abcdefg"; printf("s[]=%s\n",s); reverse(s);

2015-10-30 11:32:00 297

原创 二分查找函数

int binsearch(int x,int v[],int n){ int low,high,mid; high=n-1; low=0; while(low {  mid=(low+high)/2;  if(x   high=mid-1;  else if(x>v[mid])    low=mid+1;  else      return m

2015-10-30 11:16:41 253

原创 mystrcat.c

#includechar *stcat(char *s,char *t){ if((s==NULL)||(t==NULL))   perror("error"); char *pt=s; while(*s!='\0') s++; while(*t!='\0') *s++=*t++; *s='\0'; return pt; }void mystrcat

2015-10-30 11:14:26 638

原创 strcat 函数

#includechar *stcat(char *s,char *t){ if((s==NULL)||(t==NULL))   perror("error"); char *pt=s; while(*s!='\0') s++; while(*t!='\0') *s++=*t++; *s='\0'; return pt; }int main()

2015-10-30 11:05:31 516

原创 删除字符串中的某个字符

#includevoid squeeze(char s[],int c){ int i,j; for(i=j=0;s[i]!='\0';i++)  if(s[i]!=c)  s[j++]=s[i]; s[j]='\0'; printf("i=%d\n j=%d\n",i,j);}int main(){ char s[]="abcdefghijk";

2015-10-30 10:33:30 836

原创 腾讯笔试题

已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10#include#includeint rand7(){ return rand()%7+1;}int rand10(){ int a71,a72,a10; do{  a71=rand7()-1;  a72=rand7()-1;  a

2015-09-13 19:49:38 261

原创 linux 实现cat命令

#include#include#include#include#include#includeint main(int argc,char **argv){ int fd; char buf[64]; int ret; fd=open(argv[1],O_RDONLY);  /*以只读的方式打开文件*/ if(fd {  perror("o

2015-09-13 16:39:32 327

原创 linux 系统编程1

在Linux系统中一切皆文件,在Linux系统中一共有7种文件类型:1.普通文件    2.目录文件     3.字符设备文件    4.块设备文件    5.链接文件     6.管道文件     7.套接字文件 打开/创建一个文件       int open(const char *pathname,int flags);       int open(const char

2015-09-13 09:54:30 207

原创 l链表的头插法和尾插法

刚刚写了一个链表的头插法和尾插法函数,测试后发现先用头插法插入10 个数 从1到10 打印链表长为10,尾插法在插入5个数后在打印链表长为5,我一想不对啊,应该是15 才对啊,原来头插法和尾插法各创建了一个链表,头插法的链表在尾插法开始后在内存中丢失。因为我在头插法后没有清除链表所有导致这次错误。把两个代码放出来大家吸取点经验。 void CreateListHead(LinkList *L, i...

2015-09-11 20:37:42 575

原创 简单的用户信息管理

userInfo.h #ifndef USER_INFO_H#define USER_INFO_H#include#include#include#include#include#include#include#include#include#include#include#define NAME_LEN  32#define PAS

2015-09-11 10:43:47 652

linux从零开始编译操作系统

从零开始编译一个操作系统,在本书中详细的介绍了从零开始编译一个操作系统的完整过程和所有的软件包。一起试试吧。

2019-03-19

proxmox中文手册

proxmox中文手册资源,完整的介绍了proxmox功能、系统虚拟化的使用、安装和系统服务等内容。

2019-03-19

unix环境高级编程

unix环境高级编程

2017-04-11

空空如也

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

TA关注的人

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