Arganzheng's Blog

stay hungry, stay foolish

Groovy元编程——使用invokeMethod和闭包构建DSL和Builder

Since 1.0, Groovy supports the ability to intercept all method and property access via the invokeMethod and get/setProperty hooks. If you only want to intercept failed method/property access take a...

BDB中的共享区域

2009-5-23 星期六 雨天 1. 数据结构 环境数据结构 DB_ENV{} struct __db_env { int db_lorder; /* Byte order. */ /* Error message callback. */ void (*db_errcall) __P((const ch...

BDB中的共享区域──MPOOL

2009-5-23 星期六 大雨 1. 数据结构 首先是DB_ENV{}和REGLAYOUT{}对于所有贡献区域都是一样的,在前面已经介绍过了,这里就不赘述了。 我们直接来看MPOOL共享区域数据结构MPOOL{}定义: /* * MPOOL -- * Shared memory pool region. One of these is allocated in shared ...

BDB1.6中的初始化过程──MPOOL初始化

我们前面的讨论都是基于BDB2.7.7版本的,那时候的BDB已经是一个支持事务处理的相当复杂的模块了。现在让我们回过头来看一下BDB1.6版本的初始化过程,那时候的共享区域就只有MPOOL。 首先其入口函数是dbopen(…)函数: DB * dbopen(fname, flags, mode, type, openinfo) const char *fname; int...

BDB事务共享区域

最后我们来看一下事务共享区域。 首先仍然是每个进程都有的一个数据结构__db_txnmgr{}: /* * The transaction manager encapsulates the transaction system. It contains * references to the log and lock managers as well as the state that...

MPOOL共享内存

2009-5-6 星期三 晴朗 在BDB中所有的共享内存都定义为XXX_REGION{}结构。 比如MPOOL缓冲区,每一个进程有自己的缓存数据结构DB_MPOOL{}: /* * DB_MPOOL -- * Per-process memory pool structure. */ struct __db_mpool { /* These fields need to be pr...

BDB日志共享区域

这一次我们对日志共享区域进行分析。 每个进程都有一个DB_LOG{}数据结构: /* * DB_LOG * Per-process log structure. */ struct __db_log { /* These fields need to be protected for multi-threaded support. */ db_mutex_t *mut...

BDB锁共享区域

这一次我们以锁共享区域分析。 /* * The lock table is the per-process cookie returned from a lock_open call. */ struct __db_locktab { DB_ENV *dbenv; /* Environment. */ REGINFO reginf...

如何确保C库可以正确被C++客户端程序调用

上学期在Linux下打算用C写一个FTP,使用Stevents写的一些C库函数,结果发现在链接的时候老是说找不到那些C库函数,后来才发现我虽然用C来编写代码,但是我在编译的时候却是使用了C++编译器,结果由于Stevents的C库没有考虑给C++客户端使用,所以就找不到了。后来改成用C编译器就没有问题了。 gcc -g -O2 -D_REENTRANT -o ftpClient utili...