自定义博客皮肤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)
  • 资源 (10)
  • 收藏
  • 关注

原创 执行ldconfig后遇到的问题

今天装了一个lib(./configure, make, make install),编译程序时,提示链接错误,找不到对应的.so文件,然后就在/etc/ld.so.conf.d下面增加了一个文件,内容为: /usr/local/lib,因为刚刚在自己的虚拟机上做过此过程,想都没想就执行了ldconfig,话说这些操作在开发过程中都很正常。  但是奇葩的事出现了,之后执行任何shell命令(确

2013-06-25 21:37:32 4906

原创 关于锁的自动释放

这种方案一直在用,但是一直没能领会到它的意图,也是在一个面试过程中,被问到一个此类问题,从而才想到的。    问题:当在一个函数中使用锁时,如果加锁后由于某种原因(疏忽,异常等),没有释放锁就直接退出了,那么将导致锁的状态错误,怎样解决这个问题?1、没有正常释放锁:就像下面的程序一样(这里仅作为示例,选用mutex):#include #include

2012-08-29 23:50:08 2281

转载 SSH远程会话管理工具

SSH远程会话管理工具VPS侦探在刚接触Linux时最怕的就是SSH远程登录Linux VPS编译安装程序时(比如安装lnmp)网络突然断开,或者其他情况导致不得不与远程SSH服务器链接断开,远程执行的命令也被迫停止,只能重新连接,重新运行。相信现在有些VPSer也遇到过这个问题,今天就给VPSer们介绍一款远程会话管理工具 - screen命令。一、screen命令是什么?

2012-08-20 13:02:36 1001

原创 Hadoop学习笔记

前段时间,学习了一下Hadoop MapReduce,这里进行简单的总结,主要来自于《Hadoop In Action》。        后续将按照Hadoop处理的顺序整理一些笔记,主要包括:                      (1)Hadoop预定义数据类型;                      (2)Hadoop InputFormat;

2012-07-12 13:47:55 6318

原创 平滑升级Nginx的Shell脚本

Nginx平滑升级说明,来自《Nginx Http Server - Updating Nginx gracefully》,这里不进行翻译了,原文如下:        There are many situations where you need to replace the Nginx binary, for example, when you compile a new versio

2012-06-28 15:36:09 1620

原创 levelDB源码分析-TableCache

Table相当于.sst文件在内存中的映像,它保存了.sst文件的Index Block数据。       TableCache相当于所有打开的.sst文件在内存中的管理结构,内部采用LRUCache,每个打开的.sst文件在LRUCache中都有一项:map {file, table}>    static void DeleteEntry(const Slice& key

2012-06-14 17:37:44 2277 1

原创 levelDB源码分析-SSTable:.sst文件构建与读取

.sst文件的构建是通过TableBuilder进行的,读取主要集中在TableBuilder操作(table_builder.cc)如下: struct TableBuilder::Rep { // TableBuilder内部使用的结构,记录当前的一些状态等 Options options; Options index_block_o

2012-06-14 17:35:47 5569 3

原创 levelDB源码分析-SSTable:Block

levelDB中涉及Block操作的接口机函数基本如下: class Block; // Block数据结构定义,主要通过Block::Iter操作 class Block::Iter : public Iterator ; // Block中每个entry的迭代器,内部使用DecodeEntry解析每个entry static

2012-06-14 17:32:55 4132 1

原创 levelDB源码分析-SSTable

SSTable是Bigtable中至关重要的一块,对于LevelDB来说也是如此,对LevelDB的SSTable实现细节的了解也有助于了解Bigtable中一些实现细节。    本节内容主要讲述SSTable的静态布局结构,SSTable文件形成了不同Level的层级结构,至于这个层级结构是如何形成的我们放在后面Compaction一节细说。本节主要介绍SSTable某个文件的物理布局和

2012-06-14 17:30:40 9359 2

原创 levelDB源码分析-Log文件

levelDB中log文件在LevelDb中的主要作用是系统故障恢复时,能够保证不会丢失数据。因为在将记录写入内存的Memtable之前,会先写入Log文件,这样即使系统发生故障,Memtable中的数据没有来得及Dump到磁盘的SSTable文件,LevelDB也可以根据log文件恢复内存的Memtable数据结构内容,不会造成系统丢失数据,在这点上LevelDb和Bigtable是一致的。

2012-06-14 17:22:40 5270 2

原创 levelDB源码分析-Memtable

本节讲述内存中LevelDB的数据结构Memtable,Memtable在整个体系中的重要地位也不言而喻。总体而言,所有KV数据都是存储在Memtable,Immutable Memtable和SSTable中的,Immutable Memtable从结构上讲和Memtable是完全一样的,区别仅仅在于其是只读的,不允许写入操作,而Memtable则是允许写入和读取的。当Memtable写入的数据

2012-06-14 16:36:42 2816

原创 levelDB源码分析-Cache(LRUCache、HashTable)

leveldb内部通过双向链表实现了一个LRUCache,利用双向链表实现LRUCache的算法在《操作系统》中描述的很清楚,这里和标准的LRUCache一样,这里不再描述。        LRUCache内部实现了一个Hashtable,用于快速查找key对应的双向链表节点。        Class Cache采用虚函数定义了Cache的接口,具体实现的LRUCache继承Ca

2012-06-14 16:31:59 5308 1

原创 levelDB源码分析-Skiplist

这里主要介绍levelDB中关于SkipList的实现,关于SkipList介绍请求参阅《SkipList》,这里不再引用了。        在levelDB中的使用:        levelDB中Memtable有一个核心的数据结构Skiplist,具体实现的代码稍有不同,但是基本原理是一致的。        levelDB中Skiplist定义为模板类:

2012-06-14 16:19:15 6253 3

原创 levelDB源码分析-Arena

Arena在leveldb中它是一个内存池,它所作的工作十分简单,申请内存时,将申请到的内存块放入std::vector blocks_中,在Arena的生命周期结束后,统一释放掉所有申请到的内存,内部结构如下图所示。       Arena定义为: class Arena { public: Arena();

2012-06-14 16:08:29 3614

原创 levelDB源码分析-Status

leveldb::Status表示levelDB的一个返回状态,通常的错误处理(如:errno)是返回一个错误号,然后根据错误号可以获得出错的描述信息。        leveldb将错误号和错误信息封装成Status类,来统一进行处理。         声明如下: class Status { public: // Create a

2012-06-14 15:54:08 3352

原创 levelDB源码分析-Slice

levelDB中Slice非常简单的数据结构,它包括length和一个指向外部字节数组的指针。为什么使用Slice,而不直接使用std::string呢?        1、相比返回string,返回Slice的开销会小的多(没有拷贝,Slice中没有实际数据,只有指向数据的指针,开销低)。         2、leveldb允许key和value包含'\0',不能返回以null结尾的

2012-06-14 15:44:16 5702

原创 levelDB源码分析-提纲

好久没有动静了,工作、加班、独自学习源码、整理资料 ...        接下来将发表一系列levelDB源码学习过程中记录下的东西,现已部分整理完毕,其中很多描述直接参照网上已经发布的关于levelDB实现原理及源码分析等相关资料,随后附上链接,并结合自己研读,附上代码注释,主要包括:                《levelDB源码分析-Slice》

2012-06-14 15:26:39 5078 1

原创 Source Insight宏 - CppUnit单元测试框架自动生成

一个好的开发工具能够极大的提高工作效率,而好的开发工具是智慧与努力的结晶。这里包括2个宏:CppUnitTest_CreateSuite和CppUnitTest_CreateMainCppUnitTest_CreateMain用来产生单元测试主框架,产生的文件为alltest.cpp,如下:#include #include int main(int argc, char**

2012-02-18 12:20:55 2257

原创 Source Insight宏 - 头文件与源文件切换(不限目录)

前面发布的帖子:Source Insight 宏 - 头文件与源文件切换用到的切换宏有一定的限制(要求在同一目录下),如源码结构为src、include、test时,include下头文件与src下源文件之间就不能实现切换,在使用过程中不免会产生一点影响,今天将其进行了修改,经测试可以达到不同目录下的文件切换,对目录再没有要求,但是同时如果源码中存在多个相同文件名(不同目录下)时,需要用户自己选择

2012-02-18 11:40:23 4755 1

原创 libmemcached1.0.2 C/C++ API使用实例、测试及修改

memcached是一个分布式的缓存系统,且其分布式是一种“轻量级”的分布式,完全依赖客户端库来实现,libmemcached就是一个开源的C/C++库。        使用libmemcached的C/C++ API客户端库资料及官方资料都很少,且网络上存在的C/C++ libmemcached实例都是采用的MOD的分布式算法,其缺点显而易见,当存在失效的memcached server

2012-01-18 13:42:31 12164 3

转载 linux epoll 模型介绍及程序实例

linux epoll模型介绍和程序实例1. epoll是何方神圣?        epoll是当前在Linux下开发大规模并发网络程序的热门人选,epoll 在Linux2.6内核中正式引入,和select相似,其实都I/O多路复用技术而已,并没有什么神秘的。        其实在Linux下设计并发网络程序,向来不缺少方法,比如典型的Apache模型(Process Per Con

2011-12-16 13:03:06 1368

原创 memcached源码学习-总结篇

研究memcached源码有段日子了,前面几篇文章把memcached主要模块进行了介绍,主要有:           memcached源码学习-内存管理机制slab allocator           memcached源码学习-hashtable           memcached源码学习-多线程模型           memcached源码

2011-12-07 17:03:44 1174

转载 memcached源码学习-daemon进程

memcached守护进程创建函数位于daemon.c中,创建方式同其它守护进程相同,这里只是作为备忘,特此设置转载。        首先引用《Linux 守护进程 daemon》中守护进程的创建过程,然后附上memcached的daemon.c源码说明。       Linux 守护进程编程守护进程最重要的特性是后台运行;其次守护进程必须与其运行前的环境隔离开来,这些环境包括

2011-12-07 16:34:12 1547

原创 memcached源码学习-items操作

今天主要总结items相关的操作,items的操作分布比较多,定义和实现在memcachd.h/c、thread.h/c、items.h/c都有,感觉完全可以放在items.h/c中。这里就对所有的这些操作(除去stats部分)进行一个简单的总结。        首先对数据结构、ITEM_*宏和一些变量进行一个简单的说明,这里先建立一个宏观的概念,理解了它们的用途对后续阅读程序有很大的帮助。

2011-12-07 10:53:58 1732 2

转载 [原创+转载] memcached源码学习-多线程模型

本来计划研究memcached的多线程模型,后来发现网上博文《Memcached源码分析(线程模型)》写的非常好,因此,也省去了我的大部分时间,这里并不打算自己再重新总结。        不过首先奉上我自己画的一张图,就称为memcached多线程交互的活动图吧,通过此图就基本掌握了main thread与单个worker thread的交互过程,图中序号表示基本的处理流程(图中driver_

2011-12-02 19:58:52 2080

原创 memcached源码学习-hashtable

今天来介绍memcached中hashtable部分的源码,hash部分的源码主要分布在assoc.h/c、hash.h/c中,总得来说代码比较简单,这里就稍微介绍一下。         hashtable通常包括哈希函数和解决冲突的方法两个最主要的因素,memcached使用的哈希函数为Bob Jenkins在1996年发明的,定义位于hash.h中,实现在hash.c中,作者与2006年时

2011-12-01 23:17:22 4486

原创 memcached源码学习-内存管理机制slab allocator

前端时间大致浏览了一下memcached的源码,但是并没有对相关的知识点进行总结和记录,所以很快就忘了,这次打算将memcached的源码再学习一遍,并进行总结归纳。    memcached模块化设计比较好,每个模块除了对外接口定义在头文件外,其它函数定义及实现都在源文件中,且定义为static类型,这样很好的降低了模块之间的耦合性。下面,浏览源码将按照功能模块进行划分,逐步学习总结。

2011-11-30 22:01:32 3648 5

原创 source insight与emacs之间中文乱码问题的解决方法

通过source insight编辑后的源码,在linux的emacs中查看时,中文显示总存在乱码;同样,在emacs中编辑后,在source insight中查看时,也是乱码。     经过多次试验,通过设置emacs的编码方式顺序,在~/.emacs中加入下面lisp,就可以正常显示了:         (prefer-coding-system 'gb2312)

2011-11-29 14:33:20 2257

原创 源码自动化管理系列一: Mercurial + Apache配置

这段时间一直想配置一套自动化的源码管理服务器,包括:源码版本管理,持续集成,自动进行编译、单元测试、源码测试覆盖率统计,文档生成,基本的冒烟测试和测试目标的发布等等。      基于当前工作,首先选择了Mercurial分布式版本管理工具,Apache Http服务器,Buildbot持续集成工具搭建源码管理服务器,自动编译、单元测试、源码覆盖率等放在后续过程中。     本文主要简单介绍

2011-11-18 17:45:40 2488 1

原创 [python] 解析源码中的structs,并建立它们之间的引用关系

阅读开源软件过程中,如果各数据结构(struct)之间引用关系比较简单时,很容易理解,但如果引用关系非常复杂后,将给我们的理解过程带来很大的挑战。     本文将引入一个python脚本,主要用来提取源码中的struct结构定义,建立相应的引用关系,然后通过一些图形化工具(这里采用了graphviz的dot工具),将引用关系图形化,这样对理解源码具有一定的帮助。     首先,看看具体的效

2011-11-16 12:45:10 2086 1

翻译 graphviz安装及使用

Graphviz是大名鼎鼎的贝尔实验室的几位牛人开发的一个画图工具,它提供了“所想即所得”的理念,通过dot语言来编写脚本并绘制图形,简单易懂。graphviz安装:         graphviz有多种安装方式,源码及发行包。         当前最新版源码下载:http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz

2011-11-16 09:47:45 22873 2

原创 Source Insight宏-格式化源文件

功能:对整个源码文件进行格式化,使得对齐错落有致,功能类似于VC6.0/VS2005/VS2008的Alt+F8功能。  因为设计功底较差,脚本写的较乱!/** 对文件进行排版,按格式对齐 作者:王丰亮 时间:2011-11-10*/macro files_formatting(){ hwnd = GetCurrentWnd() hbuf = GetCurrentBu

2011-11-10 22:59:42 1866 1

原创 Source Insight 宏 - 头文件与源文件切换

当前宏功能:1、.h/.hpp与.c/.cpp/.cx/.cxx/.cc等类型的呼唤,如果有其它对应的关系,也可以加入脚本中;2、同一目录下相同文件名,不同扩展名文件之间的切换。见脚本:/* cpp和hpp文件互换(当前只支持同一目录下的文件互换)*/macro switch_cpp_hpp(){ hwnd = GetCurrentWnd() hC

2011-11-08 19:29:18 3751

原创 Source Insight 宏-多行注释

上篇文章介绍了单行注释(“//”)宏的实现,这里介绍多行注释(“/**/”)宏的实现。    由于/* ... */ 的注释出现的情况较复杂,大家可以根据自己需要进行修改,这里只将第一非空行,且以“/*”开头的文本(忽略空格)视为要取消注释。脚本中: // while(line_index <= lnSelLast) // 对选中的内容进行操作 while(line_in

2011-11-08 19:19:51 3856

原创 Source Insight 宏-单行注释

以前用VS2005或是VS2008写代码,习惯了它的注释功能,使用Source Insight后发现没有提供相应的功能,只能自己写宏来实现,下面就是插入单行注释的宏脚本。   功能:对选中的内容进行单行注释(//)   使用:将下面宏脚本写到Source Insight的utils.em文件(Source Insight\Projects\Base下)或是新建一个*.em文件,并加入到Ba

2011-11-08 17:50:47 2372

原创 设置IP别名Shell脚本

功能:根据当前网络配置,在CentOS虚拟机中设置IP别名1)找出当前机器的网络接口名称,如:eth0,eth1,...;2)找到当前设置的IP,在其基础上增加IP地址;3)设置IP别名;脚本如下:

2011-10-29 10:01:29 740

原创 zlip静态库编译的问题

       最近写Zip压缩和解压程序,其中使用的是Zlib库(minizip接口),从官网下载的zlib-1.2.5.tar.gz源码,使用vs2008进行编译的,zlib动态库链接的时候没有问题,可是使用静态库,链接时产生如下错误:   error LNK2019: unresolved external symbol _fill_win32_filefunc64A referenced

2011-06-10 18:04:00 2445

转载 工厂方法与抽象工厂

工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类只能创建一个具体产品类的实例。抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类可以创建多个具体产品类的实例。 区别:工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。 工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工

2011-05-19 11:46:00 443

原创 德才兼备 知行合一

第一篇德才兼备 知行合一

2010-08-13 15:18:00 918

Source Insight宏 - CppUnit单元测试框架自动生成

Source Insight宏 - CppUnit单元测试框架自动生成,包括2个宏:CppUnitTest_CreateSuite和CppUnitTest_CreateMain CppUnitTest_CreateMain用来产生单元测试主框架; CppUnitTest_CreateSuite宏根据定义的类产生单元测试类

2012-02-18

Source Insight宏 - 头文件与源文件切换

头文件与源文件切换切换的SourceInsight宏,switch_cpp_hpp宏有一定的限制(要求在同一目录下),如源码结构为src、include、test时,include下头文件与src下源文件之间就不能实现切换。SwitchCppAndHpp宏对目录再没有要求,但是同时如果源码中存在多个相同文件名(不同目录下)时,需要用户自己选择相应的文件。

2012-02-18

libmemcached使用、测试及修改用例

内含: libmemcached c/c++ API的使用及测试用例(C/C++语言); libmemcached源码修改,以支持memcached dead server的“快速”自动隔离和超时自动重连; 在网络上查找了很久,基于C/C++的使用例子很少且简单,也并不能支持dead server的自动隔离和自动重连(源码存在些许“瑕疵”),对源码的修改涉及很少,对库的可靠性等并没有什么影响。

2012-01-18

Source Insight 3.5

SourceInsight查看源码利器,最新版3.5,附带sn

2011-10-20

ACE自适配通信环境中文技术文档.chm

ACE自适配通信环境中文技术文档.chm

2010-10-21

网络编程 卷2 基于ACE和框架的系统化复用

网络编程 卷2 基于ACE和框架的系统化复用.pdf 由于卷1较大,传不上来,如果需要,请联系。。。

2010-10-21

souceinsight工具

souceinsight工具,开发,浏览源码等非常方便的一款工具(带SN)

2008-12-10

boost release library

此资源为Boost编译后的Release的库(lib和dll),上传是因为配置和编译boost比较复杂和耗时,编译后就可以直接使用了,希望对编译和配置boost有困难的人有所帮助。 选项:windowsXP + vs2005 + release 版本:boost_1_37_0 这里只是编译后的库,头文件请自行下载Boost相应版本源码。

2008-12-10

空空如也

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

TA关注的人

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