摘要: #include #include #include using namespace std;#define FLT_EPSILON 1.192093e-007#define DBL_EPSILON 2.2204460492503131e-016#define FLOAT_EPSILON(a,b) ... 阅读全文
posted @ 2014-12-01 11:30 bizhu 阅读(868) 评论(0) 推荐(0) 编辑
摘要: 英文原文:Cache is the new RAM 这是一次在defrag 2014的演讲。 这是经过长时间地多次技术变革后的(多个)技术优势之一。你看到了实际上突破。如果你只是看到了其中的一部分,很难正确推断。你要么短期有进展,要么落后很远。令人惊讶的不是事物变化的速度,而是一点一滴长期工程实... 阅读全文
posted @ 2014-11-30 21:53 bizhu 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。静态成员的定义或声明要加个关键static。静态成员可以通过双冒号来使用即::。在C++中类... 阅读全文
posted @ 2014-11-19 16:20 bizhu 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 当父进程创建子进程时,子进程将继承父进程的内核对象。这时如果要控制子进程使用父进程的内核对象。可以使用SetHandleInformation设置。BOOL SetHandleInformation(HANDLE hObject, DWORD dwMask, DWORD dwFlags);改变句柄的... 阅读全文
posted @ 2014-11-16 11:18 bizhu 阅读(1320) 评论(0) 推荐(0) 编辑
摘要: 1、同步网络模型:就是服务端同步阻塞等待客户端的请求,然后继续操作后续处理,缺点是性能低。2、同步通讯+多线程模型:服务端为每个客户端分配线程,这个线程就负责这个客户端,同步通讯,同步处理这个客户端的请求, 缺点就是当客户端很多时,线程很多,CPU在却换线程的上下文时会消耗很多资源,最终会导致CPU... 阅读全文
posted @ 2014-11-16 11:17 bizhu 阅读(3095) 评论(0) 推荐(0) 编辑
摘要: #include#defineoffsetof(TYPE,m) (size_t)&reinterpret_cast((((TYPE*)0)->m))宏功能:获得一个结构体变量成员在此结构体中的偏移量。通过获取偏移量取得结构体的地址/* Takes a pointer to a member vari... 阅读全文
posted @ 2014-11-16 11:16 bizhu 阅读(940) 评论(0) 推荐(0) 编辑
摘要: GNU C的一大特色就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。关键字__attribute__ 也可以对结构体(struct )或... 阅读全文
posted @ 2014-11-16 11:13 bizhu 阅读(171) 评论(0) 推荐(0) 编辑
摘要: #define nn_fast(x) __builtin_expect ((x), 1)#define nn_slow(x) __builtin_expect ((x), 0)__builtin_expect目的是提供分支信息给编译器,让编译器优化代码,减少指令的跳转带了的性能下降。处理器里有很多处... 阅读全文
posted @ 2014-11-16 11:12 bizhu 阅读(481) 评论(0) 推荐(0) 编辑
摘要: 手把手叫你玩转网络编程系列之三 完成端口(Completion Port)详解----- By PiggyXP(小猪)前 言 本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何提笔,所以这篇文档总是在酝酿之中……酝酿了两年之后,终于决定开始动笔了,但愿还不算晚….. 这... 阅读全文
posted @ 2014-11-06 22:32 bizhu 阅读(436) 评论(0) 推荐(0) 编辑
摘要: 转自陈皓 (CSDN)概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。因为,makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,ma 阅读全文
posted @ 2013-04-24 00:34 bizhu 阅读(258) 评论(0) 推荐(0) 编辑
摘要: [介绍]gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步1.预处理,生成.i的文件[预处理器cpp]2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]4.连接目标代码,生成可执行程序[链接器ld][参数详解]-x language filename 设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定C语言的后缀名称是.c的,而C++的后缀名是.C或者.cpp,如果你很个性,决定你的C代码文件的后缀名是.pig 哈哈,那你就要用这个参 阅读全文
posted @ 2013-04-24 00:32 bizhu 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 一、ORACLE的启动和关闭1、在单机环境下要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下su - oraclea、启动ORACLE系统oracle>svrmgrlSVRMGR>connect internalSVRMGR>startupSVRMGR>quitb、关闭ORACLE系统oracle>svrmgrlSVRMGR>connect internalSVRMGR>shutdownSVRMGR>quit启动oracle9i数据库命令:$ sqlplus /nologSQL*Plus: Release 9.2.0.1.0 - 阅读全文
posted @ 2013-04-15 14:10 bizhu 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 1 //从注册表中读出tnsnames.ora路径并调用解析函数 2 procedure TfmLogin.GetServer; 3 var 4 reg : Tregistry; 5 regValue : TStrings; 6 values : string; 7 begin 8 reg := TRegistry.Create; 9 regValue := TStrings.Create;10 try11 reg.RootKey := HKEY_LOCAL_MACHINE;12 reg.OpenKeyReadOnly('SOFTWARE\ORACLE... 阅读全文
posted @ 2013-04-08 11:39 bizhu 阅读(1799) 评论(0) 推荐(1) 编辑
摘要: 1.TADOConnection,配置ConnectionString,连接到你的Oracle数据库上,测试通过后;2.TADOCommand,把这个组件换成TADOQuery,将该组件的Connection指向TADOConnection,在SQL中输入你的查询语句;3.TdataSource的DataSet指向TADOQuery;4.TDBGrid的DataSource指向TDataSource;5.将TADOConnection的Connected和TADOQuery的Active都设为True;---------------------------------------------- 阅读全文
posted @ 2013-03-30 15:53 bizhu 阅读(2436) 评论(0) 推荐(0) 编辑
摘要: 1、基础知识简介:ModalResult是指一个模式窗体(form.showmodal)的返回值,一般用于相应窗体上按钮的ModalResult属性; 显示完窗体(关闭)后,会返回此属性预设的值做为返回值。2、该属性可以使用的参数(默认值是mrNone):该属性可以设置为mrOk 、mrCancel...等等mrNone 0 None. Used as a default value before the user exits.mrOk 1 The user exited with OK button.mrCancel 2 The user ex... 阅读全文
posted @ 2013-03-30 15:04 bizhu 阅读(1832) 评论(0) 推荐(0) 编辑
摘要: 随着Linux企业应用的扩展,有大量的网络服务器使用Linux操作系统。Linux服务器的安全性能受到越来越多的关注,这里根据Linux服务器受到攻击的深度以级别形式列出,并提出不同的解决方案。 对Linux服务器攻击的定义是:攻击是一种旨在妨碍、损害、削弱、破坏Linux服务器安全的未授权行为。攻击的范围可以从服务拒绝直至完全危害和破坏Linux服务器。对Linux服务器攻击有许多种类,本文从攻击深度的角度说明,我们把攻击分为四级。攻击级别一:服务拒绝攻击(DoS)由于DoS攻击工具的泛滥,及所针对的协议层的缺陷短时无法改变的事实,DoS也就成为了流传最广、最难防范的攻击方式。服务拒绝攻击包 阅读全文
posted @ 2013-03-28 22:25 bizhu 阅读(333) 评论(0) 推荐(0) 编辑
摘要: 1 type 2 Pint = ^Integer; //Pint 为类型 = 号 3 var 4 i : Integer; 5 pi : PInteger; 6 Pintd : ^Integer; //Pintd为变量 : 号 7 begin 8 i := 100; 9 pi := @i;10 pi^ := 102;11 ShowMessage(IntToStr(pi^));12 Pintd := @i;13 Pintd^ := 104;14 ShowMessage(IntToStr(pi^));15 end;内存中的数据除了 0 便是 1, 你把它当作图片、字符、数字等等, 那是你的事, . 阅读全文
posted @ 2013-03-27 18:33 bizhu 阅读(508) 评论(0) 推荐(0) 编辑
摘要: 文件权限除了r、w、x外还有s、t、i、a权限:s:文件属主和组设置SUID和GUID,文件在被设置了s权限后将以root身份执行。在设置s权限时文件属主、属组必须先设置相应的x权限,否则s权限并不能正真生效(c h m o d命令不进行必要的完整性检查,即使不设置x权限就设置s权限,chmod也不会报错,当我们ls -l时看到rwS,大写S说明s权限未生效)。Linux修改密码的passwd便是个设置了SUID的程序,普通用户无读写/etc/shadow文件的权限确可以修改自己的密码。ls -al /usr/bin/passwd-rwsr-xr-x 1 root root 32988 200 阅读全文
posted @ 2013-03-21 12:31 bizhu 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 系统默认不安装telnet服务的,所有要安装的话,可以加载redhat 6.2光盘。我的操作是在VM上完成的vm加载系统光盘linux下打开终端,并进入超级用户,然后到media目录下,光盘加载以后就在这个目录下然后到光盘中的Packages文件夹下安装xinetd-2.3.14-33.el6.i686.rpm包rpm -ivhxinetd-2.3.14-33.el6.i686.rpm ;还要安装telnet服务包telnet-server-0.17-47.el6.i686.rpmrpm -ivhtelnet-server-0.17-47.el6.i686.rpm ;安装完后剩下的就是配置了1 阅读全文
posted @ 2013-03-18 18:45 bizhu 阅读(5506) 评论(0) 推荐(0) 编辑
摘要: Usage: vmstat [options] [delay [count]]Options: -a, --active active/inactive memory -f, --forks number of forks since boot -m, --slabs slabinfo -n, --one-header do not redisplay header -s, --stats event counter statistics -d, --disk disk s... 阅读全文
posted @ 2013-01-08 13:34 bizhu 阅读(1066) 评论(0) 推荐(0) 编辑
摘要: 一 安装ubntu-tweak,现在(2013.1.7)最新版本0.8.3下载:http://ubuntu-tweak.com/双击安装或者在终端输入:sudo dpkg -i ubuntu-tweak_0.8.3-1~precise1_all.deb二 A卡驱动安装我电脑显卡是AMD Radeon HD 4500,最新的A卡驱动12.12版本不支持AMD Radeon HD 2xxx-4xxx series系列的显卡,所以选择驱动12.6版本,驱动最后要安装,否则电脑的CPU散热风扇会一直狂转,安装前需要安装一些支持程序sudo apt-get install build-essential 阅读全文
posted @ 2013-01-07 17:32 bizhu 阅读(10886) 评论(4) 推荐(2) 编辑
摘要: PL/SQL笔记PL/SQL块中只能直接嵌入SELECT,DML(INSERT,UPDATE,DELETE)以及事务控制语句(COMMIT,ROLLBACK,SAVEPOINT),而不能直接嵌入DDL语句(CREATE,ALTER,DROP)和DCL语句(GRANT,REVOKE)1.检索单行数据 1.1使用标量变量接受数据 v_ename emp.ename%type; v_sal emp.sal%type; select ename,sal into v_ename,v_sal from emp where empno=&no; 1.2使用记录变量接受数据 type emp_rec 阅读全文
posted @ 2013-01-06 19:48 bizhu 阅读(9781) 评论(0) 推荐(0) 编辑
摘要: 工作这么久了,主要就是服务器端的开发,由于业务性质,对于性能的考虑是每天不得不面对的问题,每次出方案,都是以预估总pv、单机支持最大并发、预计机器资源。。。。。。等等一系列问题开始,所以程序运行中单个函数的耗时,上线后整体性能的观察都非常重要。经过一段时间的积累和同事的指点,把相关的内容记录下,也与有同样需求的同学分享,共同进步。一:首先,可已从如下四个方面观察你的服务器机器目前的性能情况:1,CPU2,内存3,磁盘I/O带宽4,网络I/O带宽二:其次,要对如何评估系统性能有个基本的标准,经过一段时间的观察,归纳如下:1,对于CPU,正常情况(非高峰期)下, user% + sys% < 阅读全文
posted @ 2012-12-31 13:47 bizhu 阅读(350) 评论(0) 推荐(0) 编辑
摘要: ubuntu安装A卡驱动1:sudo apt-get install build-essential cdbs dh-make dkms execstack dh-modaliases fakeroot libqtgui4;2:sudo apt-get install fglrx fglrx-amdcccle3:If you are using the x86_64 architecture (64 bit):sudo apt-get install ia32-libs-multiarch:i386 lib32gcc1 libc6-i386 sudo apt-get install ia32- 阅读全文
posted @ 2012-12-29 21:24 bizhu 阅读(2791) 评论(0) 推荐(0) 编辑
摘要: 题外话:高性能分布式计算与存储系统是我毕业后准备学习的方向,现在也正在积累各方面知识中,这篇文章的作者是刚毕业3年多了,感觉他的总结对我以后学习和发展都有指导性的意义,学习他人经验,也是自己在积累经验,感谢! (省略N个字) 我这两年,主要做的东西——高性能分布式计算与存储系统。 这个系统看名字十分牛比,所涉足的目前互联网最领先的技术领域。具体有什么用途? 在我之前供职的公司,它主要是作为中间层,给网站页面提供缓存服务的,并且,它对付的难题,是大数据、海量数据,相信,每一个日PV超过千万级的网站,都必须会有类似的系统存在,如果,你曾经看过,博客园里的《淘宝技术发展》等类似... 阅读全文
posted @ 2012-12-29 00:06 bizhu 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 1. 简介在Web应用程序体系架构中,数据持久层(通常是一个关系数据库)是关键的核心部分,它对系统的性能有非常重要的影响。MySQL是目前使用最多的开源数据库,但是MySQL数据库的默认设置性能非常的差,仅仅是一个玩具数据库。因此在产品中使用MySQL数据库必须进行必要的优化。优化是一个复杂的任务,本文描述MySQL相关的数据库设计和查询优化,服务器端优化,存储引擎优化。2. 数据库设计和查询优化在MySQL Server性能调优中,首先要考虑的就是Database Schema设计,这一点是非常重要的。一个糟糕的Schema设计即使在性能调优的MySQL Server上运行,也会表现出很差的 阅读全文
posted @ 2012-12-28 11:08 bizhu 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。1. 为查询缓存优化你的查询大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后 阅读全文
posted @ 2012-12-28 10:39 bizhu 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 序言这是一篇全面介绍 Webkit 和 Gecko 内部操作的入门文章,是以色列开发人员塔利·加希尔大量研究的成果。在过去的几年中,她查阅了所有公开发布的关于浏览器内部机制的数据(请参见资源),并花了很多时间来研读网络浏览器的源代码。她写道:在 IE 占据 90% 市场份额的年代,我们除了把浏览器当成一个“黑箱”,什么也做不了。但是现在,开放源代码的浏览器拥有了过半的市场份额,因此,是时候来揭开神秘的面纱,一探网络浏览器的内幕了。呃,里面只有数以百万行计的 C++ 代码...塔利在她的网站上公布了自己的研究成果,但是我们觉得它值得让更多的人来了解,所以我们在此重新整理并公布。作为一名 阅读全文
posted @ 2012-12-26 15:30 bizhu 阅读(5381) 评论(0) 推荐(1) 编辑
摘要: 前言最近,我在学习了解MySQL数据库架构相关的内容,从网上搜索了大量的相关资料和文章,粗粗阅览了一遍,发现架构相关的东西深不可测,需要非常丰富的知识阅历和实践经验。我的阅历和经验明显不够用,所以我把了解到的相关内容作了下分类整理,算作这次学习的一个大致总结吧!这篇文章的大部分内容都来自网络,由于我的水 平有限,整理的也并不准确,其中可能有很多错误之处,希望大家能不吝指正!希望这篇文章能抛砖引玉,帮助我们了解数据库架构相关的一些内容。1 数据切分方案当数据库比较庞大,读写操作特别是写入操作过于频繁,很难由一台服务器支撑的时候,我们就要考虑进行数据库的切分。所谓数据库的切分,就是我们按照 某些特 阅读全文
posted @ 2012-12-26 11:10 bizhu 阅读(1572) 评论(0) 推荐(0) 编辑
摘要: 当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等。 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细的实例讲解,内容较多,希望大家耐心看。也希望对大家的开发工作或者测试工作有所帮助。使用Fiddler工具非常方便地捕 获HTTP Request和HTTP Response, 关于Fiddler工具的用法,请看我另一篇博客[Fiddler 教程]阅读目录什么是HTTP协议Web服务器,浏览器,代理服务器URL详解HTTP协议是无状态的打开一个网页 阅读全文
posted @ 2012-12-24 16:02 bizhu 阅读(264) 评论(0) 推荐(0) 编辑
摘要: php.ini配置文件中文详细解释;;;;;;;;;;;; 警告 ;;;;;;;;;;;;; 此配置文件是对于新安装的PHP的默认设置.;; 此配置针对开发目的,并且*不是*针对生产环境; 基于一些安全方面的考虑,在你的网站上线之前,请考虑使用php.ini-recommended; 以及在线文档 http://php.net/manual/en/security.php.;;;;;;;;;;;;;;;;;;;; 关于 php.ini ;;;;;;;;;;;;;;;;;;;;; 此文件控制了PHP行为的很多方面. 为了让PHP能够读取它; 必须命名为 'php.ini'. PH 阅读全文
posted @ 2012-12-02 10:13 bizhu 阅读(1754) 评论(0) 推荐(0) 编辑
摘要: Web2.0网站,数据内容以几何级数增长,尤其是那些小文件,几K~几百K不等,数量巨多,传统的文件系统处理起来很是吃力,很多网站在scaling的过程中都遇到了这样的问题:磁盘IO过高;备份困难;单点问题,容量和读写无法水平扩展,还存在故障的可能。YouTube也碰到这样的问题,每一个视频有4个缩微图,这样的话缩微图数量是视频数量的四倍,想象一下YouTube有多少视频,看一下他们遇到的问题:大量的磁盘寻址,在操作系统层面出现inodes cache和page cache的问题单个目录文件数限制,尤其是Ext3文件系统,采用目录分级的做法,最新的Linux Kernel 2.6优化了Ext3文 阅读全文
posted @ 2012-11-29 11:14 bizhu 阅读(5501) 评论(0) 推荐(0) 编辑
摘要: 打算学习一下ZeroMQ,好好的研究研究其代码,所以转这篇文章作为学习的开始.......ZeroMQ是一个很有个性的项目,它原来是定位为“史上最快消息队列”,所以名字里面有“MQ”两个字母,但是后来逐渐演变发展,慢慢淡化了消息队列的身影,改称为消息内核,或者消息层了。从网络通信的角度看,它处于会话层之上,应用层之下,有了它,你甚至不需要自己写一行的socket函数调用就能完成复杂的网络通信工作。借用官方的例子:客户端(发送N个“Hello”消息到服务端,接受回应):123456789101112131415161718192021222324252627282930313233343536. 阅读全文
posted @ 2012-11-27 12:13 bizhu 阅读(7090) 评论(0) 推荐(2) 编辑
摘要: 原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~1. 首先嘛,你得在浏览器里输入要网址:2. 浏览器查找域名的IP地址导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下:浏览器缓存 –浏览器会缓存DNS记录一段时间。 有趣的是,操作系统没有告诉浏览 阅读全文
posted @ 2012-11-18 21:50 bizhu 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 目录 一、引言 二、个人网站 三、Oracle/支付宝/旺旺 四、淘宝技术发展(Java时代:脱胎换骨) 五、淘宝技术发展(Java时代:坚若磐石) 六、淘宝技术发展(Java时代:创造技术-TFS) 七、淘宝技术发展(分布式时代:服务化) 作者:赵超 一、引言 光棍节的狂欢 “时间到,开抢!”坐在电脑前早已等待多时的小美一看时间已到 2011 年 11 月 11 日零时,便迫不及待地投身于淘宝商城一年一度的大型网购促销活动 —— “淘宝双11购物狂欢节”。小美打开早已收藏好的宝贝 —— 某品牌的雪地靴,飞快的点击购买,付款,一回头发现 3000 双靴子已被抢购一空。 ... 阅读全文
posted @ 2012-11-17 00:24 bizhu 阅读(356) 评论(0) 推荐(0) 编辑
摘要: 近期找工作的过程中,因为自己比较喜欢C/C++,对多线程以及网络方面比较熟悉, 所以下面的这些问题是这段时间在面试过程中被问到了,现在对这些问题进行了汇总!! 面试过程真的是一个非常好的学习过程,下面那些问题自己现在基本可以解决, 我的答案或者观点就不给出了,看到这篇文章的同学可以根据自己的情况,测试一下自己....哈哈... 也可以当成一次学习的过程,网上搜索出来的结果可能会更详细。。。动手吧。。。一、网络(主要是TCP/UDP)(1)、TCP的三次握手连接:两端主机状态(SYN_SEND,SYN_RECV,ESTABLISH),数据包类型(SYN,ACK),整体过程(2)、TC... 阅读全文
posted @ 2012-10-22 23:45 bizhu 阅读(4668) 评论(22) 推荐(6) 编辑
摘要: 摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为四个部分。第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础。第二部分结合MySQL数据库中MyISAM和InnoDB数据存储引擎中索引的架构实现讨论聚集索引、非聚集索引及覆盖索引等话题。第三部分根据上面 阅读全文
posted @ 2012-10-20 00:16 bizhu 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 内存管理是操作系统的核心之一,最近在研究内核的内存管理以及C运行时库对内存的分配和管理,涉及到进程在内存的布局,在此对进程的内存布局做一下总结:1. 32位模式下的linux内存布局图上的各个部分描述得比较清楚,不需再做过多的描述。从上图可以看到,栈至顶向下扩展,并且栈是有界的。堆至底向上扩展,mmap映射区域至顶向下扩展,mmap映射区域和堆相对扩展,直至耗尽虚拟地址空间中的剩余区域,这种结构便于C运行时库使用mmap映射区域和堆进行内存分配。上图的布局形式是在内核2.6.7以后才引入的,这是32位模式下的默认内存布局形式。看看cat命令在2.6.36上内存布局:08048000-08051 阅读全文
posted @ 2012-10-17 12:31 bizhu 阅读(2405) 评论(0) 推荐(0) 编辑
摘要: 2006年的OSDI有两篇google的论文,分别是BigTable和Chubby。Chubby是一个分布式锁服务,基于Paxos算法;BigTable是一个用于管理结构化数据的分布式存储系统,构建在GFS、Chubby、SSTable等google技术之上。相当多的google应用使用了BigTable,比如Google Earth和Google Analytics,因此它和GFS、MapReduce并称为谷歌技术"三宝"。与GFS和MapReduce的论文相比,我觉得BigTable的论文难懂一些。一方面是因为自己对数据库不太了解,另一方面又是因为对数据库的理解局限于关 阅读全文
posted @ 2012-10-13 22:19 bizhu 阅读(2677) 评论(0) 推荐(0) 编辑
摘要: 江湖传说永流传:谷歌技术有"三宝",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实际上就是谷歌 阅读全文
posted @ 2012-10-13 22:16 bizhu 阅读(471) 评论(0) 推荐(0) 编辑