自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

转载 面试题1

1.C/C++中的static关键字1.C语言中的static关键字的作用(a)static作用于变量:分两种情况:在文件内的全局静态变量,在函数体内的局部静态变量1.static的全局变量:会存入到进程的.data区域,静态全局变量和其他的全局变量的存储地点并没有区别,都是在.data段(已初始化)或者.bss段(未初始化)内,但是它只在定义它的源文件内有效,其他源文件无法访问它2.static...

2018-06-01 23:26:56 291

转载 封装/继承/多态

面向对象的编程语言不止仅仅多了个类,类可以明显感觉到抽象和封装。抽象的是具体的实现,封装的是接口。继承,分为实现继承,接口继承,可视化继承。实现继承就是重新写一个函数去实现。这儿用的是纯虚函数。父辈纯虚,子辈必须重新实现。接口继承是指纯粹继承父辈的老底,也可以去重新实现。这是虚函数。可视化继承则是纯粹的全部自己实现,自己功能自己解决。对应的是非虚函数。继承的时候父子有几种关系,比如B继承A,一种是...

2018-06-01 23:25:56 421

转载 位运算

去年年底写的关于位运算的日志是这个Blog里少数大受欢迎的文章之一,很多人都希望我能不断完善那篇文章。后来我看到了不少其它的资料,学习到了更多关于位运算的知识,有了重新整理位运算技巧的想法。从今天起我就开始写这一系列位运算讲解文章,与其说是原来那篇文章的follow-up,不如说是一个remake。当然首先我还是从最基础的东西说起。什么是位运算?    程序中的所有数在计算机内存中都是以二进制的形...

2018-06-01 23:15:44 3442 1

转载 磁盘I/O

背景计算机硬件性能在过去十年间的发展普遍遵循摩尔定律,通用计算机的CPU主频早已超过3GHz,内存也进入了普及DDR4的时代。然而传统硬盘虽然在存储容量上增长迅速,但是在读写性能上并无明显提升,同时SSD硬盘价格高昂,不能在短时间内完全替代传统硬盘。传统磁盘的I/O读写速度成为了计算机系统性能提高的瓶颈,制约了计算机整体性能的发展。硬盘性能的制约因素是什么?如何根据磁盘I/O特性来进行系统设计?针...

2018-06-01 22:45:39 1241

转载 ZAB

1 ZAB介绍ZAB协议全称就是ZooKeeper Atomic Broadcast protocol,是ZooKeeper用来实现一致性的算法,分成如下4个阶段。先来解释下部分名词electionEpoch:每执行一次leader选举,electionEpoch就会自增,用来标记leader选举的轮次peerEpoch:每次leader选举完成之后,都会选举出一个新的peerEpoch,用来标记...

2018-06-01 22:13:45 5583

转载 Paxos

Paxos是什么Paxos 算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点都执行相同的操作序列,那么他们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致,是分布式计算中的重要问题。Paxos的两个原则安全原则—保证不能做错的事只...

2018-06-01 22:12:23 200

转载 NVM

NVM特性NonVolatile Memory,非易失存储器,具有非易失、按字节存取、存储密度高、低能耗、读写性能接近DRAM,但读写速度不对称,读远快于写,寿命有限(需要像ssd一样考虑磨损均衡)。当电流关掉后,所存储的数据不会消失的计算机存储器。没有数据寻道,这点和ssd比较像。常见NVM: 相变存储器(PCM,phase change memory)  磁阻式存储器(MRAM,Magne...

2018-06-01 22:05:47 1287

转载 RAM/ROM/FLASH

对照上图本文介绍一下RAM,ROM和Flash memoryRAM(Random-access memory)随机存取存储器(random access memory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。 存储单元的内容可按需随意取出或存入,且存取的速度与存储单元...

2018-06-01 21:58:45 457

转载 KMP

KMP算法看懂了觉得特别简单,思路很简单,看不懂之前,查各种资料,看的稀里糊涂,即使网上最简单的解释,依然看的稀里糊涂。 我花了半天时间,争取用最短的篇幅大致搞明白这玩意到底是啥。 这里不扯概念,只讲算法过程和代码理解:KMP算法求解什么类型问题字符串匹配。给你两个字符串,寻找其中一个字符串是否包含另一个字符串,如果包含,返回包含的起始位置。 如下面两个字符串:char *str = "bacba...

2018-06-01 21:34:20 213

转载 stack用法

一、简介       stack是一种容器适配器(STL的容器分为顺序容器和关联容器,容器适配器,是对这两类容器进行包装得到的具有更强的约束力的容器),被设计来用于操作先进后出(FILO)结构的情景,在这种情况下, 元素的插入和删除都只能在容器的尾部进行。       stack通过容器适配器来实现,是一种将特定的容器类作为其最底层的容器的类,它提供了一些特定的成员函数来访问自己的元素,元素只能在...

2018-05-31 23:34:17 6424

转载 map/multimap用法

map与multimap为关联容器,结构如下map底层实现依然是rb_tree 他的data可以改,但是key不能改,因此map仍然具有自动排序的功能我们无法使用迭代器改变元素的key(const key),但是可以改变元素的data.map的key必须独一无二,multimap的key可以重复map的定义函数 template <typename _Key, typename _Tp, ...

2018-05-31 23:31:30 734

转载 set/multiset用法

set与multiset关联容器结构如下set是一种关联容器,key即value,value即key.它是自动排序,排序特点依据keyset的key不能相同.multiset的key相同.关联容器的查找效率要高于顺序容器很多很多.set和multiset不提供用来直接存取元素的任何操作函数,取值需要通过迭代器  一 定义1.set/mulitiset以红黑树为底层结构,因此有元素自动排序的特性,排...

2018-05-31 23:30:33 1050

转载 unordered_set用法

unordered_set与与unordered_map相似,这次主要介绍unordered_setunordered_set它的实现基于hashtable,它的结构图仍然可以用下图表示,这时的空白格不在是单个value,而是set中的key与value的数据包有unordered_set就一定有unordered_multiset.跟set和multiset一样,一个key可以重复一个不可以un...

2018-05-31 23:25:41 60806 1

转载 list用法

List 容器list是C++标准模版库(STL,Standard Template Library)中的部分内容。实际上,list容器就是一个双向链表,可以高效地进行插入删除元素。使用list容器之前必须加上<vector>头文件:#include<list>;list属于std命名域的内容,因此需要通过命名限定:using std::list;也可以直接使用全局的命名空...

2018-05-31 23:22:08 263

转载 deque用法

Deque 容器deque容器是C++标准模版库(STL,Standard Template Library)中的部分内容。deque容器类与vector类似,支持随机访问和快速插入删除,它在容器中某一位置上的操作所花费的是线性时间。与vector不同的是,deque还支持从开始端插入数据:push_front()。使用deque容器之前必须加上<deque>头文件:#include&...

2018-05-31 23:20:30 2585

转载 vector用法

准库vector类型是C++中使用较多的一种类模板,vector类型相当于一种动态的容器,在vector中主要有一些基本的操作,接下来分别从以下的几个方面总结:vector对象的定义和初始化vector对象的基本操作,主要包括添加元素,遍历等1、vector对象的定义和初始化在vector中主要有四种定义和初始化的方法:1.1、定义空的vector定义的方法为:vector<T> v;...

2018-05-31 23:02:14 199

转载 C++字符串操作

选用C++标准程序库中的string类,是因为他和c-string比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联。首先,为了在我们的程序中使用string类型,我们必须包含头文件 。如下: #include //注意这里不是string.h string....

2018-05-22 23:26:51 249

转载 排序算法总结

看了总结图,我这里就总结一下 直接插入排序,冒泡排序,快速排序,堆排序和归并排序,使用C++实现重新画了总结图直接插入排序整个序列分为有序区和无序区,取第一个元素作为初始有序区,然后第二个开始,依次插入到有序区的合适位置,直到排好序刚开始在我那本《数据结构》看到大概这样的实现void InsertSort(int arr[], int len) { int i, j; int te...

2018-05-22 23:16:21 154

转载 查找算法总结

查找成功时的平均查找长度为:(假设每个数据元素的概率相等) ASL = 1/n(1+2+3+…+n) = (n+1)/2 ;当查找不成功时,需要n+1次比较,时间复杂度为O(n);所以, 顺序查找的时间复杂度为O(n ) 。C++实现源码://顺序查找int SequenceSearch(int a[], int value, int n){ int i; for(i=0; i...

2018-05-22 21:41:45 566 1

转载 SSD

1. 什么是SSD      固态硬盘(Solid State Drives),用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也完全与普通硬盘一致。被广泛应用于军事、车载、工控、视频监控、网络监控、网络终端、电力、医疗、航空、导航设备等领域。2. SSD的分类    ...

2018-04-22 13:52:02 699

转载 块存储、文件存储、对象存储

块存储和文件存储是我们比较熟悉的两种主流的存储类型,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device)简称OSD。        首先,我们介绍这两种传统的存储类型。通常来讲,所有磁盘阵列都是基于Block块的模式,而所有的NAS产品都是文件级存储。首先我们先来了解一下,什么...

2018-04-22 13:33:10 553

转载 ext4结构

最近在做磁盘性能优化,需要结合文件系统原理去思考优化方向,因此借此机会进一步加深了对文件系统的认识。在看这篇文章之前,建议先看下前面一篇关于磁盘工作原理的解读。下面简单总结一些要点分享出来:一、文件系统层次分析由上而下主要分为用户层、VFS层、文件系统层、缓存层、块设备层、磁盘驱动层、磁盘物理层用户层:最上面用户层就是我们日常使用的各种程序,需要的接口主要是文件的创建、删除、打开、关闭、写、读等。...

2018-04-22 12:43:21 5094

转载 linux文件系统1

从操作系统的角度详解Linux文件系统层次、文件系统分类、文件系统的存储结构、不同存储介质的区别(RAM、ROM、Flash)、存储节点inode。本文参考:http://blog.chinaunix.net/uid-8698570-id-1763151.htmlhttp://www.iteye.com/topic/816268http://soft.chinabyte.com/os/142/12...

2018-04-22 12:24:56 180

转载 SOSP 2013

SOSP 2013共计30篇论文, 分成9个session. 其每逢奇数年召开, 今年是第24届, 而OSDI在偶数年召开, 去年是第10届. 作为一个有将近50年历史的老牌会议, SOSP一直严格控制论文的数量. 相比于SIGGRAPH动辄上百篇, KDD同时四个分会场, 系统界还是相对保守的. 从这两年的SOSP/OSDI上看, 论文的标题趋向文艺, 内容也更加丰富有趣. 每年会议设置的ses

2017-11-25 14:15:35 2251

转载 计算机分类经典书籍推荐

计算机科学理论Introduction to the Theory of Computation 2ndAutomata, Computability and Complexity: Theory and ApplicationsLanguages and Machines: An Introduction to the Theory of Computer Science

2017-11-25 13:07:40 1175

转载 计算机系统领域顶级会议--OSDI,SOSP

【序言】按照USnews的分类,Computer Science被分为四个大类:AI, Programming Language, Systems, Theory.。毫无疑问,Systems是这四个大类中最要紧也是最大的一个。根据citeseer在2003年5月排出的所有计算机学科会议和期刊的影响因子排名[1],在前十位中的属于Systems的有7个,在前15个中占据了11个。

2017-11-25 13:00:35 20063

转载 nfs 文件句柄

上一篇文章中我们以REMOVE请求为例讲解了NFS请求的处理过程,其中提到了文件句柄的概念,NFS需要根据文件句柄查找一个文件,这篇文章中我们就来聊聊文件句柄。在普通的文件系统中,我们用文件索引节点编号(ino)表示一个文件。ino就是一个数字,ino保存在磁盘中,整个文件系统中任何两个文件的ino都不相同,因此给定一个ino,我们就能找到对应的文件。当使用NFS文件系统时就出现问题了,我们无法通

2017-08-14 16:25:07 2930

转载 nfs write3

NFS文件系统中WRITE操作比READ操作要复杂一些。READ操作中只需要将数据从服务器中读取到客户端的缓存页中就可以了,但是WRITE操作中客户端可能将数据写入到服务器的缓存页中,也可能写入到服务器的磁盘中。如果数据写入到服务器的缓存页中了,客户端还需要在适当的时候发起COMMIT请求将数据写入到服务器的磁盘中。1.WRITE请求的结构RFC1818规定了WRITE请求报文和应答报

2017-08-14 16:12:49 714 2

转载 nfs write2

1.nfs_writepages    nfs_file_write()是NFS系统中的写操作函数,这个函数将用户态缓冲区中的数据写入到内核态缓存页中。如果是同步写操作,则马上调用vfs_fsync()将缓存页中的数据刷新到服务器中。如果不是同步写操作,则客户端定期将缓存页中的数据刷新到服务器中。无论哪种情况,最终都需要调用address_space_operations结构中的write

2017-08-14 16:00:14 656

转载 NFS write过程1

1.nfs_file_writeNFS文件系统中write操作过程和read操作过程类似,区别在于read操作从服务器读取数据到客户端,write操作将数据从客户端写到服务器中。NFS文件系统中write操作的处理函数是nfs_file_write()。[cpp] view plain copy print?ssize_t nfs_f

2017-08-14 15:33:33 1024

转载 tee命令用法

在执行Linux命令时,我们可以把输出重定向到文件中,比如 ls >a.txt,这时我们就不能看到输出了,如果我们既想把输出保存到文件中,又想在屏幕上看到输出内容,就可以使用tee命令了。tee命令读取标准输入,把这些内容同时输出到标准输出和(多个)文件中(read from standard input and write to standard output and files. Copy

2017-08-01 17:44:59 13444 1

转载 linux内核代码风格(中文)

Chinese translated version of Documentation/CodingStyleIf you have any comment or update to the content, please post to LKML directly.However, if you have problem communicating in Englis

2017-07-30 22:30:24 361

转载 SAN、NAS、SCSI、iSCSI等存储基础知识

1      SAN 与 NAS1.1    什么是SAN,什么是NAS1.1.1  SANSAN (Storage Area Network and SAN Protocols)是一种高速网络或子网络,提供在计算机与存储系统之间的数据传输。存储设备是指一张或多张用以存储计算机数据的磁盘设备。一个 SAN 网络由负责网络连接的通信结构、负责组织连接的管理层、存储部件以及计算机系统构成,

2017-07-30 22:21:46 4166

转载 2017年最受开发者欢迎的10个Linux发行版

1.Arch LinuxArch Linux在安装过程中提供了强大的可定制选择,支持你下载和安装自己所需的程序包。虽然这个选择对新手来说没有多大的帮助,但是它确实能够帮助那些使用Arch构建系统和存储库的用户安装尽可能少的程序,减少了对编码产生干扰的可能。这意味着,你可以为系统安装一个像i3这样的裸机窗口管理器,当你使用所选的文本编辑器时,系统会得到更加快速的响应。另外,如

2017-07-29 18:50:09 51083 1

转载 Linux内核发布模式与开发组织模式

Linux内核社区经历20多年的发展,逐渐形成了一套完善的开发模式。作为想要加入社区进行开发的人来说,当然必须熟悉下这套模式啦,其中最重要的两点是:内核发布模式内核开发组织模式本文将对第一点进行讲述, 第二点在下一篇中讲述。(没耐心看完整篇文章的的朋友,直接看本文总结)内核发布模式追溯Linux内核版本号发展沿革,可知其经历了三个阶段,这分别为v1.0以前时

2017-07-29 18:43:46 654

转载 iSCSI/NAS/SAN

谈到iSCSI,我能想到的就是存储分为NAS和SAN,NAS与SAN都是在DAS的基础上发展起来的,是新型数据存储模式中的两个主要发展方向。网络存储技术(Network Storage Technologies) 网络存储技术是基于数据存储的一种通用网络术语。网络存储结构大致分为三种:直连式存储(DAS:Direct Attached Storage)、网络连接式存储(NAS:Networ

2017-07-29 18:33:02 631

转载 Red Hat Linux、rhel 和 Fedora Core 以及 Centos 区别与联系

1. Red Hat Linuxlinux是GNU/Linux的缩写,通常指各种Linux发行版的通称,Red Hat Linux是redhat最早发行的个人版本的linux, 其1。0版本于1994年11月3日发行。虽然其历史不及其它linux发行版本悠久,但比起很多的Linux发行套件,Red Hat 的历史悠久得多。自从Red Hat 9。0版本发布后,RedHat 公司就不再开发桌

2017-07-29 18:22:54 697

转载 ltp测试流程及分析

1.LTP介绍    LTP--linut test project ,ltp套件是由Linux Test Project所开发 的一套系统 测试套件。它基于系统资源的利用率统计开发了一个测 试的组合,为系统提供足够的压力。    通过压力测试来判断系统的稳定性和可靠性。    压力测试是一种破坏性的测试,即系统在非正常的、超负荷的条件下的运行情况 。用来评估在超越最大负载的情

2017-07-29 18:21:28 5884

转载 linux稳定性测试 linux性能测试 ltp压力测试 ---IBM 的 linux test project

今天考虑如何将这个变态的系统(说它变态,一点都不过,因为是debian和Ubantu 杂交的,设计者都是这么说的)的功能测试程序化,结果论坛上有人建议考虑 IBM 的 Linux test project  下载下来,安装了十来分钟,最后运行时报错,安装不准确,糟糕的变量名等,奇怪呀,安装挺顺利的结果不能用,这系统,哎,就是特殊呀!不管了,IBM 的 linux test projec

2017-07-29 18:17:03 1697

空空如也

空空如也

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

TA关注的人

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