I/O虚拟化 && SR-IOV

1.介绍

​ 在Guest和Host间添加虚拟化层会引入很大的开销;计算工业界中一直在努力来解决这种开销。
​ 为此,英特尔推出了一系列在英特尔虚拟化技术(intel@ VT )支持下的处理器、芯片组和以太网控制器增强功能。intel@ VT 系列技术可提高虚拟化平台的性能、效率和健壮性。
​ 在此之上 PCI-SIG 制定了一种单根I/O虚拟化规范(SR-IOV) ,SR-IOV 的做法是在 I/O 子系统中开发一种扩展机制,以解决 I/O 设备的共享问题。
figure1

Read More

RPM 使用与 SPEC 文件

1. 概述

RPM全称是 Red Hat Package Manager(Red Hat包管理器)。

RPM的发布基于GPL协议(GNU通用公共授權條款GNU General Public License,简称GNU GPLGPL)。

RPM有五种基本的操作功能(不包括创建软件包):安装、卸载、升级、查询、和验证。关于rpm命令的使用我们可以用以下命令:

1
[root@serverwyq wyq]# rpm --help

​ 通常,供Linux使用的源代码包还提供一个名为 { 软件名称 }.spec 的文件,即spec文件。如果提供spec文件,则该源代码还可以直接编译成RPM包。

Read More

STL list ——part 2

transfer、splice

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//将first到last內的所有元素搬移到position 前,不包括last元素。  
void transfer(iterator position, iterator first, iterator last) {
if (position != last) {

(*(link_type((*last.node).prev))).next = position.node;
(*(link_type((*first.node).prev))).next = last.node;
(*(link_type((*position.node).prev))).next = first.node;

link_type tmp = link_type((*position.node).prev);
(*position.node).prev = (*last.node).prev;
(*last.node).prev = (*first.node).prev;
(*first.node).prev = tmp;
}
}

Read More

最长公共子序列

最长公共子序列(LongestCommonSubsequence)

一个数列S,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则S称为已知序列的最长公共子序列。
最长公共子序列问题可以由动态规划求解

动态规划

动态规划(英语:Dynamic programming,简称DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。
动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。
动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。
通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算量:一旦某个给定子问题的解已经算出,则将其记忆化(en:memoization)存储,以便下次需要同一个子问题解之时直接查表。这种做法在重复子问题的数目关于输入的规模呈指数增长时特别有用。————维基百科

动态规划求解LCS

Read More

C++11

auto

auto是C++程序设计语言的关键字。自C++11以来,auto关键字用于两种情况:声明变量时根据初始化表达式自动推断该变量的类型、声明函数时函数返回值的占位符。C++98标准中auto关键字用于自动变量的声明,但由于使用极少且多余,在C++11中已删除这一用法。–维基百科
auto实际上实在编译时对变量进行了类型推导,似乎auto并不会影响编译速度,因为编译时本来也要右侧推导然后判断与左侧是否匹配。
从汇编看也是如此:
int
auto_int
自定义类型
A
auto_A
auto用于模板简化了模板的操作
auto_template

lambda表达式

它可以用于创建并定义匿名的函数对象形式如下:
[函数对象参数](操作符重载函数参数) ->返回值类型{函数体}(具体参数)
lambda

decltype

decltype的功能与auto相反,从变量得到类型
decltype

右值引用

右值引用(rvalue reference),是C++程序设计语言自C++11标准提出的一类数据类型。用于实现移动语义(move semantic)与完美转发(perfect forwarding)。–维基百科
在资源转移不是调用拷贝等操作而是实现了资源的转移
参考

STL空间配置器

一级空间配置器

当所申请的空间大于128bytes时,stl直接使用一级空间配置器
一级空间配置器其实是对malloc的封装,以及添加了类似new_handler处理内存分配不足的情况
当内存不足时调用oom_malloc尝试回收一些已分配的内存,调用的是__malloc_alloc_oom_handler方法(如果有的话,没有就抛出异常)

Read More