- 博客(35)
- 资源 (22)
- 收藏
- 关注
转载 ceph存储 磁盘IOPS常识
计算磁盘IOPS的三个因素: 1、RAID类型的读写比 不同RAID类型的IOPS计算公式:RAID类型公式RAID5、RAID3Drive IOPS=Read IOPS + 4*Write IOPSRAID6Drive IOPS=Read IOPS + 6*Write IOPS
2015-02-27 18:53:06 5181
转载 C++学习 闭包(closure)
闭包有很多种定义,一种说法是,闭包是带有上下文的函数。说白了,就是有状态的函数。更直接一些,不就是个类吗?换了个名字而已。一个函数, 带上了一个状态, 就变成了闭包了. 什么叫 "带上状态" 呢? 意思是这个闭包有属于自己的变量, 这些个变量的值是创建闭包的时候设置的, 并在调用闭包的时候, 可以访问这些变量.函数是代码, 状态是一组变量 ,将代码和一组变量捆绑 (bind) , 就形成了
2015-02-27 15:39:33 4054
转载 C++学习 std::tr1::shared_ptr使用的一点体会tr1库介绍
Technical Report 1 是一份规范,描述加入C++标准程序的诸多新技能,以新的class templates 和 function templates 形式体现,针对的题目有哈希表,基于引用计数的智能指针,正则表达式等。大多数TR1机能是以Boost的工作为基础的。TR组件位于std::tr1命名空间中。 tr1::shared_ptr 的使用和boost::shared_p
2015-02-27 15:28:20 1081
转载 C++学习 C++中改变setw(n)的对齐方式
setw(int n)只是对直接跟在<<后的输出数据起作用,而在之后的<<需要在之前再一次使用setw;(Sets the number of characters to be used as thefield width for the next insertion operation.) n是在输出时分配了n个字符的输出宽度,然后默认的是在n个字符宽度中右对齐输出,可以使用set
2015-02-27 10:04:41 12548
转载 C++学习 std::tr1::shared_ptr、std::tr1::weak_ptr及std::tr1::enable_shared_from_this
在 c++ 98 里面只有一种智能指针,就是 std::auto_ptr,因为具有唯一所有权的特征,所以限制了它的使用范围,比如你无法在容器中使用它。而我们知道 stl 容器是值语义的,如果不能用智能指针管理的话,只有两种办法来使用。一种是类似这样:std::vector names;names.push_back("cyberscorpio");std::string name(
2015-02-26 16:39:10 872
转载 ceph存储 HASH碰撞
如果两个输入串的hash函数的值一样,则称这两个串是一个碰撞(Collision)。既然是把任意长度的字符串变成固定长度的字符串,所以必有一个输出串对应无穷多个输入串,碰撞是必然存在的。一个优良的hash函数 f 应当满足以下三个条件:(1)对于任意y,寻找x,使得f(x)=y,在计算上是不可行的。(2)给定x1∈A,找x2∈B,,使得f(x1)=f(x2),在计算上是不可能的,这也就
2015-02-26 09:57:53 830
转载 嵌入式 Linux下fcntl函数和flock函数区别说明
flock和fcntl都有锁的功能,但他们还有一点小小的区别:1.flock只能加全局锁,fcntl可以加全局锁也可以加局部锁。2.当一个进程用flock给一个文件加锁时,用另一个进程再给这个文件加锁,它会阻塞或者也可以返回加锁失败(可以自己设置)。3.当一个进程用fcntl给一个文件加锁时,用另一个进程去读或写文件时必须先获取加锁的信息,然后在给这个文件加锁。3.当给一个文件加f
2015-02-25 14:11:25 708
转载 嵌入式 Linux下flock函数用法
表头文件 #include 定义函数 int flock(int fd,int operation); 函数说明 flock()会依参数operation所指定的方式对参数fd所指的文件做各种锁定或解除锁定的动作。此函数只能锁定整个文件,无法锁定文件的某一区域。 参数 operation有下列四种情况: LOCK_SH 建立共享锁定。多个进程可同时对同一个文件作共享
2015-02-25 14:04:32 654
转载 嵌入式 Linux下fcntl函数用法
功能描述:根据文件描述词来操作文件的特性。 文件控制函数 fcntl -- file control头文件: #include ; int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcn
2015-02-25 13:59:34 666
转载 C++学习 __attribute__ ((packed)) 的作用
最近在看我们的代码的时候发现声明类型的时候有 __attribute__ ((packed))的结构体类型声明,如下:[cpp]view plaincopyprint?typedef struct Student { int SID; char SName; }__attribute__((packed)) Sinfo; typed
2015-02-16 16:49:43 4157
转载 C++学习 STL之一:字符串用法详解
字符串是程序设计中最复杂的变成内容之一。STL string类提供了强大的功能,使得许多繁琐的编程内容用简单的语句就可完成。string字符串类减少了C语言编程中三种最常见且最具破坏性的错误:超越数组边界;通过违背初始化或被赋以错误值的指针来访问数组元素;以及在释放了某一数组原先所分配的存储单元后仍保留了“悬挂”指针。 string类的函数主要有: Member funct
2015-02-13 17:09:03 554
转载 C++学习 STL之七:STL各种容器的使用时机详解
C++标准程序库提供了各具特长的不同容器。现在的问题是:该如何选择最佳的容器类别?下表给出了概述。但是其中有些描述可能不一定实际。例如:如果你需呀处理的元素数量很少,可以虎落复杂度,因为线性算法通常对元素本身的处理过程比较快,这种情况下,“显性复杂度搭配快速的元素处理”要比“对数复杂度搭配慢的元素处理”来得划算。 作为对上表的补充,使用时: 1.缺省情况下应该使用v
2015-02-13 17:08:12 594
转载 C++学习 STL之六:map/multimap用法详解
map/multimap 使用map/multimap之前要加入头文件#include,map和multimap将key/value当作元素,进行管理。它们可根据key的排序准则自动将元素排序。multimap允许重复元素,map不允许重复元素。map和multimap内部的数据结构也是平衡二叉树。 map和multimap根据元素的key自动对元素进行排序
2015-02-13 17:07:17 804
转载 C++学习 STL之五:set/multiset用法详解
集合使用set或multiset之前,必须加入头文件Set、multiset都是集合类,差别在与set中不允许有重复元素,multiset中允许有重复元素。sets和multiset内部以平衡二叉树实现1. 常用函数1) 构造函数和析构函数set c:创建空集合,不包含任何元素set c(op):以op为排序准则,产生一个空
2015-02-13 17:06:13 1091
转载 C++学习 STL之四:list用法详解
list容器介绍相对于vector容器的连续线性空间,list是一个双向链表,它有一个重要性质:插入操作和删除操作都不会造成原有的list迭代器失效,每次插入或删除一个元素就配置或释放一个元素空间。也就是说,对于任何位置的元素插入或删除,list永远是常数时间。常用函数(1) 构造函数list c:创建一个空的listlist c1(c2):复制另一个同类型元素的list
2015-02-13 16:56:47 869
转载 C++学习 STL之三:deque用法详解
deque函数:deque容器为一个给定类型的元素进行线性处理,像向量一样,它能够快速地随机访问任一个元素,并且能够高效地插入和删除容器的尾部元素。但它又与vector不同,deque支持高效插入和删除容器的头部元素,因此也叫做双端队列。deque类常用的函数如下。(1) 构造函数deque():创建一个空dequedeque(int nSize):创建一个deque,元素个
2015-02-13 16:55:45 607
转载 C++学习 STL之二:vector容器用法详解
vector类称作向量类,它实现了动态数组,用于元素数量变化的对象数组。像数组一样,vector类也用从0开始的下标表示元素的位置;但和数组不同的是,当vector对象创建后,数组的元素个数会随着vector对象元素个数的增大和缩小而自动变化。 vector类常用的函数如下所示: 1.构造函数vector():创建一个空vectorvector(int nSize)
2015-02-13 16:52:28 549
转载 C++学习 traits技术详解
STL模版库非常强调软件的复用,traits技术是采用的重要手段。traits提取不同类的共性,以便能统一处理。traits技术依靠显示模版特殊化来把代码中因类型不同而发生变化的片段拖出来,用统一的接口来包装。这个接口可以包含一个C++类所能包含的任何东西,如内嵌类型、成员函数、成员变量。作为客户的模版代码,可以通过traits模版类所公开的接口来简洁访问。示例:一直整形数组类
2015-02-13 16:50:07 999
转载 C++学习 标准模板库STL介绍
库是一系列程序组件的集合,他们可以在不同的程序中重复使用。C++语言按照传统的习惯,提供了由各种各样的函数组成的库,用于完成诸如输入/输出、数学计算等功能。1. STL介绍标准模板库STL是当今每个从事C++编程的人需要掌握的技术,所有很有必要总结下本文将介绍STL并探讨它的三个主要概念:容器、迭代器、算法。STL的最大特点就是:数据结构和算法的分离,非面向
2015-02-13 16:47:19 650
转载 C++学习 STL之list之用法小结
/*list: 等同于双向链表,内存空间可以是不连续的,通过指针来进行数据的访问 优: 1)插入/删除效率高 缺: 1)不支持随机存取,查询效率较低*/#include iostream>#include string>#include list>using namespace std;void printList(listint> nList)
2015-02-13 16:46:13 613
转载 C++学习 STL之set使用方法小结
/*set/multiset会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。1) 不能直接改变元素值,因为那样会打乱原本正确的顺序,要改变元素值必须先删除旧元素,则插入新元素2) 不提供直接存取元素的任何操作函数,只能通过迭代器进行间接存取,而且从迭代器角度来看,元素值是常数3) 元素比较动作只能用于型别相同的容器(即元素和排序准则必须相同)s
2015-02-13 16:35:53 526
转载 嵌入式 errno的一些错误定义编辑
以下来主要自2.6.32的内核代码中的/usr/include/asm-generic/errno.h及errno-base.h,输出错误原因定义归纳整理如下: #define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /* No such file or directory */ #de
2015-02-13 15:21:03 788
转载 嵌入式 atomic_t相关操作
所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用了物理学里的物质微粒的概念。 原子操作需要硬件的支持,因此是架构相关的,其API和原子类型的定义都定义在内核源码树的include/asm/atomic.h文件中,它们都使用汇编语言实现,因为C语言并不能实现这样的操作。 原子操作主要用于实
2015-02-13 08:51:14 664
转载 ceph存储 使用异步I/O大大提高应用程序的性能
学习何时以及如何使用 POSIX AIO APILinux® 中最常用的输入/输出(I/O)模型是同步 I/O。在这个模型中,当请求发出之后,应用程序就会阻塞,直到请求满足为止。这是很好的一种解决方案,因为调用应用程序在等待 I/O 请求完成时不需要使用任何中央处理单元(CPU)。但是在某些情况中,I/O 请求可能需要与其他进程产生交叠。可移植操作系统接口(POSIX)异步 I/O(A
2015-02-13 08:42:30 2701
转载 ceph存储 深入浅出异步I/O模型
从上篇文章的介绍我们知道linux内核根据TCP/IP网络模型,给我们隐藏了传输层以下的网络传输细节,我们的网络应用程序只需要针对socket编程即可。这篇我们立足网络数据包的I/O。谈谈linux的一些I/O知识,以及Java的NIO. 1. 基础知识 我们知道Linux的内核将所有外部设备都可以看做一个文件来操作。那么我们对与外部设备的操作都可以看做对文件进行操作。我们对一
2015-02-13 08:40:45 1441
转载 ceph存储 Linux下libaio的一个简单例子
libaio是Linux下的一个异步非阻塞接口,它提供了以异步非阻塞方式来读写文件的方式,读写效率比较高。首先推荐两个介绍Linux I/O模型的页面,写的很好:http://www.ibm.com/developerworks/cn/linux/l-async/http://www.iteye.com/topic/868702对于libaio的读写过程简单说来就是你发出一个读写请
2015-02-13 08:39:34 1449
转载 C++学习 c++作用域运算符用法(全局变量和局部变量)
通常情况下,如果有两个同名变量,一个是全局变量,另一个是局部变量,那么局部变量在其作用域内具有较高的优先权,它将屏蔽全局变量。作用域运算符代码如下:#includeusing namespace std;int num=10;int main(){ int num; num=25; cout return 0;}程序
2015-02-04 12:29:00 1152
转载 嵌入式 read、pread、write、pwrite等等
在Linux和UNIX中有很多的输入输出函数,有时真是让想跟它攀点关系的菜鸟们束手无策。先来看看都有哪些函数,通过解析与总结,看看能不能让大家能这些函数有个理性的认识,哦,原来是这么回事,也就算我没白花这份闲。内核文件I/O->标准库I/O->高级I/O->IPC中1. read()/write();2. pread()/pwrite();3. getc()/putc();4.
2015-02-03 21:11:55 1843
转载 嵌入式 fprintf和fscanf函数
fscanf函数从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。这与fgets有区别,fgets遇到空格不结束。原型:int fscanf(FILE *stream, char *format,[argument...]);返回值:返回实际被转换并赋值的输入项的数目。 %d:读入一个十进制整数。 %i :读入十进制,八进制,十六进制整数,与%d类似
2015-02-03 20:55:44 977
转载 C++学习 std:multimap介绍
multimap 与 map 一样,都是使用红黑树对记录型的元素数据,按元素键值的比较关系,进行快速的插入、删除和检索操作,所不同的是 multimap 允许将具有重复键值的元素插入容器。在 multimap 容器中,元素的键值与元素的映照数据的映照关系,是多对多的,因此,multimap 称为多重映照容器。multimap 与 map 之间的多重特性差异,类似于 multiset 与 set 的
2015-02-03 20:20:44 15689
转载 C++学习 std::map介绍
给出了map的基本用法如插入、查找、删除、遍历等等,同时告诉你如何实现双键map,包括 (1) 只有两个键都匹配才命中目标(2) 两个键中任意一个匹配就命中目标可以扩展到多键(一) 介绍特点:1.map将Key的object和T的Object绑定到一起,因此是一种Pair Associative Container, 表示其value type为 pair。2.
2015-02-03 20:16:13 4379 1
转载 C++学习 std::vector介绍
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。为了可以使用vector,必须在你的头文件中包含下面的代码:#include vector属于std命名域的,因此需要通过命名限
2015-02-03 20:12:53 693
转载 C++学习 std::set作为一个有序集合
摘要:std::set作为标准库的一个关联容器,实现内部元素进行了排序,使用这特性可以对一组元素进行插入排序。std::set最初的设计是完成数学中“集合”的概念,它提供的接口也是如此。本文简单地介绍一下这一个标准库容器。为了使用std::set,我只需要如下:#include//定义一个整型数据的集合std::setint> set;如同所有的STL容器一样,
2015-02-03 20:09:22 16673
转载 C++学习 std:pair与std:make_pair
pair vs make_pair02make_pair constructs a pair object.03templateclassT1, classT2> 04pair make_pair(T1 x, T2 y)05
2015-02-02 19:29:27 2661
原创 ceph存储 centos下添加多个虚拟ip地址的方法(一个网卡)
首先我贴出来我的设置,我以eth2为例:#cat /etc/sysconfig/network-scripts/ifcfg-eth2DEVICE="eth2"BOOTPROTO="static"DHCP_HOSTNAME="inspur"ONBOOT="yes"TYPE="Ethernet"IPADDR=192.168.100.12NETMASK=255.255.2
2015-02-02 15:07:12 1751
tracepoint_lttng使用详解
2015-03-23
多路径multipath配置文档和相关概念
2015-01-07
ceph-fs-rpm-build
2014-12-08
ceph-cognize-docs_zh-v1.3
2014-11-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人