10 2012 档案
摘要:近期找工作的过程中,因为自己比较喜欢C/C++,对多线程以及网络方面比较熟悉, 所以下面的这些问题是这段时间在面试过程中被问到了,现在对这些问题进行了汇总!! 面试过程真的是一个非常好的学习过程,下面那些问题自己现在基本可以解决, 我的答案或者观点就不给出了,看到这篇文章的同学可以根据自己的情况,测试一下自己....哈哈... 也可以当成一次学习的过程,网上搜索出来的结果可能会更详细。。。动手吧。。。一、网络(主要是TCP/UDP)(1)、TCP的三次握手连接:两端主机状态(SYN_SEND,SYN_RECV,ESTABLISH),数据包类型(SYN,ACK),整体过程(2)、TC...
阅读全文
摘要:摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为四个部分。第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础。第二部分结合MySQL数据库中MyISAM和InnoDB数据存储引擎中索引的架构实现讨论聚集索引、非聚集索引及覆盖索引等话题。第三部分根据上面
阅读全文
摘要:内存管理是操作系统的核心之一,最近在研究内核的内存管理以及C运行时库对内存的分配和管理,涉及到进程在内存的布局,在此对进程的内存布局做一下总结:1. 32位模式下的linux内存布局图上的各个部分描述得比较清楚,不需再做过多的描述。从上图可以看到,栈至顶向下扩展,并且栈是有界的。堆至底向上扩展,mmap映射区域至顶向下扩展,mmap映射区域和堆相对扩展,直至耗尽虚拟地址空间中的剩余区域,这种结构便于C运行时库使用mmap映射区域和堆进行内存分配。上图的布局形式是在内核2.6.7以后才引入的,这是32位模式下的默认内存布局形式。看看cat命令在2.6.36上内存布局:08048000-08051
阅读全文
摘要:2006年的OSDI有两篇google的论文,分别是BigTable和Chubby。Chubby是一个分布式锁服务,基于Paxos算法;BigTable是一个用于管理结构化数据的分布式存储系统,构建在GFS、Chubby、SSTable等google技术之上。相当多的google应用使用了BigTable,比如Google Earth和Google Analytics,因此它和GFS、MapReduce并称为谷歌技术"三宝"。与GFS和MapReduce的论文相比,我觉得BigTable的论文难懂一些。一方面是因为自己对数据库不太了解,另一方面又是因为对数据库的理解局限于关
阅读全文
摘要:江湖传说永流传:谷歌技术有"三宝",GFS、MapReduce和大表(BigTable)!谷歌在03到06年间连续发表了三篇很有影响力的文章,分别是03年SOSP的GFS,04年OSDI的MapReduce,和06年OSDI的BigTable。SOSP和OSDI都是操作系统领域的顶级会议,在计算机学会推荐会议里属于A类。SOSP在单数年举办,而OSDI在双数年举办。那么这篇博客就来介绍一下MapReduce。1. MapReduce是干啥的因为没找到谷歌的示意图,所以我想借用一张Hadoop项目的结构图来说明下MapReduce所处的位置,如下图。Hadoop实际上就是谷歌
阅读全文
摘要:题记:初学分布式文件系统,写篇博客加深点印象。GFS的特点是使用一堆廉价的商用计算机支撑大规模数据处理。虽然"The Google File System "是03年发表的老文章了,但现在仍被广泛讨论,其对后来的分布式文件系统设计具有指导意义。然而,作者在设计GFS时,是基于过去很多实验观察的,并提出了很多假设作为前提,这等于给出了一个GFS的应用场景。所以我们自己在设计分布式系统时,一定要注意自己的应用场景是否和GFS相似,不能盲从GFS。GFS的主要假设如下:GFS的服务器都是普通的商用计算机,并不那么可靠,集群出现结点故障是常态。因此必须时刻监控系统的结点状态,当结点
阅读全文
摘要:内核地址空间分布直接映射区:线性空间中从3G开始最大896M的区间,为直接内存映射区,该区域的线性地址和物理地址存在线性转换关系:线性地址=3G+物理地址。动态内存映射区:该区域由内核函数vmalloc来分配,特点是:线性空间连续,但是对应的物理空间不一定连续。vmalloc分配的线性地址所对应的物理页可能处于低端内存,也可能处于高端内存。永久内存映射区:该区域可访问高端内存。访问方法是使用alloc_page(_GFP_HIGHMEM)分配高端内存页或者使用kmap函数将分配到的高端内存映射到该区域。固定映射区:该区域和4G的顶端只有4k的隔离带,其每个地址项都服务于特定的用途,如ACPI_
阅读全文
摘要:经常使用top命令了解进程信息,其中包括内存方面的信息。命令top帮助文档是这么解释各个字段的。VIRT , Virtual Image (kb)RES, Resident size (kb)SHR, Shared Mem size (kb)%MEM, Memory usage(kb)SWAP, Swapped size (kb)CODE, Code size (kb)DATA, Data+Stack size (kb)nFLT, Page Fault countnDRT, Dirty Pages count尽管有注释,但依然感觉有些晦涩,不知所指何意?进程内存空间正在运行的程序,叫进程。每个
阅读全文
摘要:linux和os:netstat tcpdump ipcs ipcrm (如果这四个命令没听说过或者不能熟练使用,基本上可以回家,通过的概率较小,这四个命令的熟练掌握程度基本上能体现面试者实际开发和调试程序的经验)cpu 内存 硬盘 等等与系统性能调试相关的命令必须熟练掌握,设置修改权限 tcp网络状态查看 各进程状态 抓包相关等相关命令 必须熟练掌握awk sed需掌握共享内存的使用实现原理(必考必问,然后共享内存段被映射进进程空间之后,存在于进程空间的什么位置?共享内存段最大限制是多少?)c 进程内存空间分布(注意各部分的内存地址谁高谁低,注意栈从高道低分配,堆从低到高分配)ELF是什么?
阅读全文
摘要:如今,但凡说精通网络的,第二个意思就是“精通TCP”,事实上,很多自称精通TCP的家伙们只是精通socket接口而已,对TCP行为精通的并不多,笔者也不算精通,但绝对是中等以上水平。如果你真的精通TCP行为,那么本文不读也罢,直接发邮件给我,我们切磋一下,如果只是了解socket接口,那么建议读本文,然后一定再看一下《TCP协议疑难杂症全景解析》0.UDP协议和TCP协议UDP是用户数据报协议的简称,对于分组交换网络,它实际上扮演了传统邮局的角色,而TCP则是扮演了电话运营商以及物流公司的角色,对于分组交换网络而言,UDP要比TCP更加基本一些,可以说,TCP则是实现一种基于流的通信过程,在I
阅读全文
摘要:说明:1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的3).针对对象:对TCP已经有了全面了解的人。因为本文不会解析TCP头里面的每一个字段或者3次握手的细节,也不会解释慢启动和快速重传的定义4).除了《TCP/IP详解》(卷一,卷二)以及《Unix网络编程》以及Linux源代码之外,学习网络更好的资源是RFC5).本文给出一个提纲,如果想了解细节,请直接查阅RFC6).翻来覆去,终于找到了这篇备忘,本文基于这篇备忘文档修改。1.网络协议设计ISO提出了OSI分层网络模型,这种分层模型是理论上的,
阅读全文
摘要:今天有点头晕,躺在床上,睡不着,所以开始思考人生,突然想到了未来系统的发展,便有了下面的构想!!不同意我这个构想的那就当我在胡说算了,哈哈,才大四,一些观点认识得还很疏浅。 我想未来的计算机系统应该朝着简单精小的方向发展,不像现在计算机系统不断的膨胀,开发得越来越大。我的构想是这样的,未来的系统只需一个浏览器就可以,系统是运行在云端,只需游览器连接云计算系统,便可以像现在的计算机一样的操作,上网,聊天。安装软件也安装的云计算机系统里,当然这样需要一个高网速高宽带,这个条件在未来应该不是问题。如果真的像所说的系统只需一个游览器,这样的系统可以做的很小,这样本地的计算机的配置也不需要...
阅读全文
摘要:源于网络1.如何判断单链表里面是否有环?设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。(当然,fast先行头到尾部为NULL,则为无环链表)程序如下:bool IsExitsLoop(slist *head){ slist *slow = head, *fast = head; while ( fast && fast->next ) { slow = slow->next; fast = fast->next->ne...
阅读全文

浙公网安备 33010602011771号