自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(184)
  • 资源 (4)
  • 收藏
  • 关注

原创 ceph的 cache tier实现分析

1 基本介绍1.1 设计思想数据的存储可划分为active和inactive两大类,active数据是小部分,会频繁访问,使用更高性能的底层存储介质进行存储;inactive的数据是全集,使用廉价的存储介质存储。这种分冷热的思想与CPU的多级缓存、操作系统的cache、各类软件系统的软件缓存是相通的,但ceph通过软件层面的配合,充分利用不同的硬件介质和软件存储模式,为上层用户提供透明统一...

2019-06-14 13:08:03 3563 1

原创 gossip协议介绍

背景gossip 协议(gossip protocol)又称 epidemic 协议(epidemic protocol),是基于流行病传播方式的节点或者进程之间信息交换的协议,在分布式系统中被广泛使用,比如我们可以使用 gossip 协议来确保网络中所有节点的数据一样。Gossip protocol 最早是在 1987 年发表在 ACM 上的论文 《Epidemic Algorithms...

2019-06-14 12:51:53 2292

原创 Linux文件存储抽象VFS

概念VFS(Virtual Filesystem Switch)称为虚拟文件系统或虚拟文件系统转换,是一个内核软件层,在具体的文件系统之上抽象的一层,用来处理与Posix文件系统相关的所有调用,表现为能够给各种文件系统提供一个通用的接口,使上层的应用程序能够使用通用的接口访问不同文件系统,同时也为不同文件系统的通信提供了媒介。架构VFS在整个Linux系统中的架构视图如下:Linux系统的User...

2018-03-18 23:38:12 2120 1

原创 Ceph的BlueStore总体介绍

整体架构bluestore的诞生是为了解决filestore自身维护一套journal并同时还需要基于系统文件系统的写放大问题,并且filestore本身没有对SSD进行优化,因此bluestore相比于filestore主要做了两方面的核心工作:去掉journal,直接管理裸设备针对SSD进行单独优化bluestore的整体架构如下图所示:通过Allocator实现对裸设备的管理,直接将数据保存...

2018-03-15 19:35:10 10898

原创 Ceph的FileStore代码阅读问题整理

1.bufferlist中的_memcopy_count作用是什么?bufferlist提供了一个rebuild函数,用来将整个buffterptr链表的所有bufferraw都copy到一个新建的bufferptr中,然后清空链表并将新建的这个bufferptr插入到链表中。_memcopy_count成员记录了在进行拷贝过程中每个bufferraw的长度之和。这个值用来在进行内存对齐时需要重新...

2018-03-15 19:05:04 1339

原创 Ceph单机引擎FileStore简介

Ceph作为一个高可用和强一致性的软件定义存储实现,去使用它非常重要的就是了解其内部的IO路径和存储实现。这篇文章主要介绍在IO路径中最底层的ObjectStore的实现之一FileStore。ObjectStoreObjectStore是Ceph OSD中最重要的概念之一,它封装了所有对底层存储的IO操作。从上图中可以看到所有IO请求在Clieng端发出,在Message层统一解析后会被OSD层...

2018-03-15 18:58:43 2942

转载 socks5协议中文版

目录1.介绍2.现有的协议3.基于TCP协议的客户4.请求5.地址6.应答7.基于UDP协议的客户8. 安全性考虑9. 参考书目1.介绍利用网络防火墙可以将组织内部的网络结构从外部网络如INTERNET中有效地隔离,这种方法在许多网络系统中正变得流行起来。这种防火墙系统通常以应用层网关的形式工作在两个网络之间,提供TELNET、FTP、SMT

2017-12-15 00:42:31 1572

原创 Raft协议整理

复制状态机是当前分布式系统中最核心最基础的组件,提供命令在多个节点之间有序复制和执行,当多个节点初始状态一致的时候,保证节点之间状态一致。系统只要多数节点存活就可以正常处理,它允许消息的延迟、丢弃和乱序,但是不允许消息的篡改。Raft将一致性问题分解成了如下三个子问题Leader electionLog replicationSafetyLeader Election三种角色:

2017-12-13 19:44:03 608

原创 磁盘挂载信息:/etc/fstab

磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新挂载。系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘。这样我们只需要将磁盘的挂载信息写入这个文件中我们就不需要每次开机启动之后手动进行挂载了。挂载的限制  1、根目录是必须挂载的,而且一定要先于其他mount po

2017-09-04 19:39:00 1402

原创 vim查找与替换

vim提供了:s(substitute)命令进行替换和查找,基本格式如下::{作用范围}s{分隔符}{目标}{分隔符}{替换}{分隔符}{替换标志}作用范围%:全文n,m:第n行到第m行.,$:当前行到最后一行.,+n:当前行到其后n行'<,>':visual模式下选择区域后输入:得到选区分隔符常用为/作为分隔符,可以使用其他字符,但同一命令需要保持一致。替换标志[空]:仅从光标开始替

2017-08-25 21:04:10 473

原创 Erasure Coding

1. 介绍Erasure Code可以认为是RAID的通式,任何RAID都可以转换为特定的erasure code。在传统的RAID中,仅支持少量的磁盘分布,当系统中存在多个分发点和多节点时,RAID将无法满足需求。比如RAID5只支持一个盘失效,即使是RAID6也仅支持两个盘失效,所以支持多个盘失效的算法也就是erasure code是解决这一问题的办法。(Erasure Code作为可有效提升存

2017-08-10 12:56:07 1005

原创 C++版ThreadPool实现

个人基于pthread实现的C++版ThreadPool,代码见github。

2017-07-17 22:54:06 1835

原创 基于python生成器封装的协程类

自从python2.2提供了yield关键字之后,python的生成器的很大一部分用途就是可以用来构建协同程序,能够将函数挂起返回中间值并能从上次离开的地方继续执行。python2.5的时候,这种生成器更加接近完全的协程,因为提供了将值和异常传递回到一个继续执行的函数中,当等待生成器的时候,生成器能返回控制。python提供的生成器设施:yield:能够将自己挂起,并提供一个返回值给等待方sen

2017-03-14 14:32:21 987

原创 协程的概念总结

并发最早的计算机,每次只能执行一个程序,只有当当前执行的程序结束后才能执行其它程序,在此期间,别的程序都得等着。到后来,计算机运行速度提高了,程序员们发现,单任务运行一旦陷入IO阻塞状态,CPU就没事做了,很是浪费资源,于是就想要同一时间执行那么三五个程序,几个程序一块跑,于是就有了并发。原理就是将CPU时间分片,分别用来运行多个程序,可以看成是多个独立的逻辑流,由于能快速切换逻辑流,看起来就像是大

2017-02-24 14:45:43 2310 1

转载 C++11特性维基百科总结

C++11标准发布已有一段时间了, 维基百科上有对C++11新标准的变化和C++11新特性介绍的文章. 我是一名C++程序员,非常想了解一下C++11. 英文版的维基百科看起来非常费劲,而中文版维基百科不是知道是台湾还是香港人翻译的然后由工具转换成简体中文的,有些术语和语言习惯和大陆程序不一样! 我决定结合这两个版本按照我自己的习惯把这篇文章整理到我的博客中.分享给关注我和关注C++11的朋友们.

2017-02-24 11:19:28 1016

原创 模版元编程:C++11中type traits的部分实现

C++11新加入的type_traits头文件提供了模版元编程中常用的type trait基础设施,这些type traits基于编译期间的运算,能够极早提示出程序中的错误。这些type traits的基础就是整形包装器,见之前的博文总结:http://blog.csdn.net/u010487568/article/details/51273920。本文对type traits的部分进行总结和实现

2016-12-26 23:32:26 1786

转载 g++编译选项

介绍代码编译过程分为:预处理,生成.i文件编译,转换成汇编语言, 生成.s文件将汇编代码转换成机器码,生成.o文件链接目标代码,生成可执行程序总体选项-E只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面.gcc -E hello.c > pianoapan.txt gcc -E hello.c | more 1212慢慢

2016-12-19 15:36:58 725

原创 C++11 强类型enum

旧式enum问题容易被隐式转换成int默认情况下enum的每一项都有一个整数对应,可以显式指定或者从前一个自增得到。 旧式enum的类型限制是:禁止不同枚举体之间的赋值 禁止整形向枚举体的隐式转换等但是,当使用enum作为函数参数或者返回值时,如果此时参数类型或者返回值类型为int类型,是都可以隐式转换为int类型的。无法指定底层所使用的数据类型对于enum底层的实现,也就是underlyi

2016-12-14 18:40:36 743

原创 C++11类的新语法和特性

sizeof计算类成员大小sizeof可以直接用于获取Class::member的大小,而不用通过Class的实例获取。class A { public: long long llint = 0;};cout << sizeof(A::llint) << endl;上

2016-11-28 16:50:03 462

原创 C++11新增语法(糖)

新增类型long longC++11标准中新加入了long long类型属性,占用空间不小于long类型。long large = LONG_MAX;long long long_large = LLONG_MAX;long long long_long_large = 1LL << 63;cout<<"test long long:"<<large<<'\t'<<long_large<<'\

2016-11-23 23:51:01 1093

原创 事件循环开发框架eventloop(python版)

基于不同操作系统提供的多路IO通知机制,实现了一个可以针对文件描述符或者同类结构进行事件监听开发的小型框架,基于tornado的IOLoop实现。主要结构如下:LoopImpl类依据不同操作系统,按照epoll的接口实现了统一的loop注册方式:class LoopImpl(object): """ Base class for concrete implementations of eve

2016-11-23 21:11:11 5256

原创 C++11模版新特性

模板友元C++11新标准中,可以声明一个类的模板参数类型为类的友元。template<typename T> class Bar{friend T;protected: int val = 100;};class Foo{public: void print_bar(Bar<Foo> &bar) {std::cout<<"bar:\t"<<bar.val<<std::en

2016-11-22 21:43:28 466

原创 http4cpp - 易用的C++ http开发微框架

根据最近基于C++开发http应用的经历,积累了一个基于libcurl库的微型开发框架,源码见github。

2016-11-15 14:56:11 1164

原创 libcurl库(C++)快速使用

简介libcurl作为是一个多协议的便于客户端使用的URL传输库,基于C语言,提供C语言的API接口,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP这些协议,同时支持使用SSL

2016-10-28 17:44:26 13201

转载 libcurl库返回状态码解释与速查

CURLE_OK(0)支持返回CURLE_UNSUPPORTED_PROTOCOL(1)你的URL传递给libcurl的使用协议,这libcurl的不支持。支持可能是你没有使用一个编译时的选项,它可以是一个拼写错的协议字符串,或者只是一个协议的libcurl没有代码。 CURLE_FAILED_INIT(2)非常早期的初始化代码失败。这可能是内部错误或问题,资源问题,一些基

2016-09-22 16:41:42 4272

原创 自行编写的Makefile文件的结构

对于文件较多的C++项目,目录结构的组织清晰能方便开发,多个文件夹存放了多个源文件和头文件,一般下方式在编译之后都会生成与源文件同目录下的目标文件,个人觉得这种方式不太好,各个目标文件分散不太集中,希望所有目标文件和可执行文件都放在bin目录下,具体目录结构如下:--bin |--a.o |--b.o |--... |--module1 | |--ma1.o | |--m

2016-09-08 21:54:59 504

转载 Makefile撰写教程

1. Makefile 简介Makefile 是和 make 命令一起配合使用的.很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂.Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以用来组织我们平时的一些日常操作. 这个需要大家发挥自己的想象力. 1.1

2016-09-08 21:29:25 398

转载 makefile下的echo颜色控制

echo 颜色echo    -e     enable interpretation of the backslash-escaped characters listed below字背景颜色范围:40----49 40:黑 41:深红 42:绿 43:黄色 44:蓝色 45:紫色 46:深绿 47:白色字颜色:30------

2016-09-03 12:32:34 2036

原创 一个输出内容不同引发的问题

常用的curl、mysql命令行客户端等程序,进行操作后会进行输出,这都是很正常的程序交互,并没有什么问题。但是,在使用他们的过程中,出现了下面这样的问题: curl 下载一个文件的命令后续没有任何其他管道符操作时,会默认讲文件输出到命令行,但是添加管道符进行后续操作时,就会输出下载文件的进度统计信息,文件内容则不会输出首先直接下载,输出全部文件内容:$ curl https://www.ba

2016-08-13 02:03:12 544

原创 多线程抽象编程模型(Python版)

最近需要完成一个多线程下载的工具,对其中的多线程下载进行了一个抽象,可以对所有需要使用到多线程编程的地方统一使用这个模型来进行编写。 主要结构: 1、基于Queue标准库实现了一个类似线程池的工具,用户指定提交任务线程submitter与工作线程worker数目,所有线程分别设置为后台运行,提供等待线程运行完成的接口。 2、所有需要完成的任务抽象成task,提供单独的无参数调用方式,供work

2016-07-31 23:53:31 659

原创 关于linux下时间延迟函数精度问题

Linux内核时钟中断设施linux的时钟中断需要两个全局变量,分别是xtime与jiffies。1、xtime一个timeval结构类型变量,是从cmos电路中取得的时间,一般是从某一历史时刻开始到现在的时间,也就是为了取得我们操作系统上显示的日期。这个就是“实时时钟”,它的精确度是微秒。获取方式是通过sys/time.h头文件里面的gettimeofday函数获取。2、HZLinux核心每隔固定

2016-07-27 10:31:51 8450

原创 python的多线程基础设施

当我们在使用线程时,存在以下基本的多线程编程的概念:lock:多个线程访问临界资源时,为满足线程安全必须保证访问临界资源的代码同一时刻仅有一个线程执行。condition:传递消息的工具。线程中的条件,不满足条件就wait,获得条件就执行。wait():在条件实例中可用的wait()。notify() / notifyAll():在条件实例中可用的notify()通知一个其他等待的线程或其他

2016-07-19 00:02:01 457

原创 线程本地存储

对于多线程程序,所有线程共享全局和静态变量,任何线程使用变量之后都会在其他线程可见,因此对于执行顺序非常重要的场景,需要使用多重方式来进行同步确保线程安全。但是,如果希望每个线程单独拥有一个全局或静态变量,所有线程都可以使用它,但是在每个线程中是单独存储的,那么就需要使用线程本地存储。pthread库的实现经典的pthread线程库提供了对线程本地存储的完全支持,具体需要使用如下三个函数://将需要

2016-07-05 21:13:46 858

原创 Linux修改Shell命令提示符及颜色

1. Linux登录过程中加载配置文件顺序:/etc/profile → /etc/profile.d/*.sh → ~/.bash_profile → ~/.bashrc → [/etc/bashrc]可查看默认的~/.bashrc文件如下:[root@~] cat ~/.bashrc # .bashrc # User specific aliases and func

2016-07-05 15:11:58 619

原创 HTTP协议头——Content-MD5

以下为RFC1864的英文主要部分原文:1. IntroductionDespite all of the mechanisms provided by MIME [1] which attempt to protect data from being damaged in the course of email transport, it is still desirable to have

2016-06-30 19:55:18 11411

原创 HTTP协议全览

http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,成熟的版本是HTTP1.0和1.1,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。 HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协

2016-06-30 17:23:58 4065

原创 C++11的Lambda表达式

随着函数式编程语言的应用,很多语言都提供了 lambda 表达式,如 C#,Python,Java 8。lambda 表达式可以方便地构造匿名函数,如果代码里面存在大量的小函数,而这些函数一般只被调用一次,那么将他们重构成 lambda 表达式。C++11新标准里添加了lambda表达式这个语言特性,有着自己特定的格式和要求。C++11 lambda格式lambda表达式的通用格式如下:[captu

2016-06-23 00:05:07 420

原创 线段树应用

问题描述: Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive. The update(i, val) function modifies nums by updating the element at index i to val.

2016-06-15 23:57:06 707

原创 C++对象的构造

C++中通过用户自定义类建立对象时,需要调用构造函数,这里包含默认构造函数、复制构造函数和自定义构造函数。其中自定义构造函数,按照函数重载机制进行匹配调用,与普通重载函数调用类似。因此,这里讨论的是默认构造函数和复制构造函数,因为这两种构造函数如果用户不显式定义,会在特定情况下被编译器合成出来。编译器合成的规则并不明显,C++标准做的说明只是“在需要的时候合成”。默认构造函数(default con

2016-05-31 23:39:26 1152

原创 C++标准库——random

C++11引入了random头文件,可以更加得到更精确和功能更完善的随机数以及相关领域问题。这个标准库分为两大部分,分别是: - 生成器:定义了用来产生均匀分布的伪随机数的机制,也称为随机数引擎(engine)。 - 分布:以生成器得到的均匀分布的随机数序列转换为某种特定数学概率分布的序列,如均匀分布、正态分布、泊松分布等。生成器random_device这是标准库提供的一个非确定性随机数生成设

2016-05-28 19:31:03 13906 2

Sublime Text 2

最好用的编辑器,功能丰富,插件齐全,安装源码包,给linux系统装上吧~

2014-08-30

HTTP协议中文版

HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。 HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。

2013-12-05

php5重量版手册

详细说明和函数分类,非常适合及时查询,中文版翻译校正,手册有很多实例,而且注明了出处,可以线上交流。

2013-04-28

空空如也

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

TA关注的人

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