Archive for 八月, 2014

  • 事务的隔离性是数据库很重要的一个方面。它保证事务之间对相同数据库操作的正确性。常常用在多线程程序中,而保证隔离性又需要对资源的竞争,因此应对不同等级的要求,也对隔离性分为不同的等级。等级越低,对数据的保护性越差,但是对资源的竞争越小。需要对各种等级有所了解,才能在使用中找到平衡。 Degree1:Read Uncommitted 1.描述 隔离等级最低的一种,保证一个事务不会重写 另一个事务写过但是尚未commit 的数据。也就是write操作会加写锁,之后其它事务的write操作就会阻塞,一直等待前一个事务完成操作,将锁释放。但是read操作绝不会阻塞,如果事务read操作之前有其它事务的w […]

    BDB 事务隔离等级

    事务的隔离性是数据库很重要的一个方面。它保证事务之间对相同数据库操作的正确性。常常用在多线程程序中,而保证隔离性又需要对资源的竞争,因此应对不同等级的要求,也对隔离性分为不同的等级。等级越低,对数据的保护性越差,但是对资源的竞争越小。需要对各种等级有所了解,才能在使用中找到平衡。 Degree1:Read Uncommitted 1.描述 隔离等级最低的一种,保证一个事务不会重写 另一个事务写过但是尚未commit 的数据。也就是write操作会加写锁,之后其它事务的write操作就会阻塞,一直等待前一个事务完成操作,将锁释放。但是read操作绝不会阻塞,如果事务read操作之前有其它事务的w […]

    Continue Reading...

  • Pre: 在More Effective C++条款8中,介绍new operator的时候,说new operator是由两部分组成的,一部分是operator new,用来根据对象大小申请空间;另一部分是对象的构造函数,用来初始化对象。代码描述如下: //申请空间,用来存放string对象 void *memory = operator new(sizeof(string)); call string::string(

    无法触及的构造函数?

    Pre: 在More Effective C++条款8中,介绍new operator的时候,说new operator是由两部分组成的,一部分是operator new,用来根据对象大小申请空间;另一部分是对象的构造函数,用来初始化对象。代码描述如下: //申请空间,用来存放string对象 void *memory = operator new(sizeof(string)); call string::string("Memory Management") on memory; string *ps = static_cast<string*>(memory); 意思简单明了 […]

    Continue Reading...

  • 从去年开始,学习Berkeley DB 也有一段时间,因为没有找到比较好的中文书籍,一直断断续续看官方的英文文档,开着有道词典,不认识的单词就划词去查。开始速度很慢,后来熟了一些就能快一点。这两个礼拜正式投入使用,学习实验室INM数据库存储模块,完成了物化视图实例的存储接口。期间也对Berkeley DB的桶操作有了更深入一些的了解。 1.BDB简单存取 BDB是键值对存取,一个键值对叫做一个record,键和值使用相同的数据结构,C++ API中定义为Dbt,用数据的指针和数据的长度初始化Dbt对象。假设key值为“luffy”,value值为“op”。 char *pkey =

    Berkeley DB 的桶操作

    从去年开始,学习Berkeley DB 也有一段时间,因为没有找到比较好的中文书籍,一直断断续续看官方的英文文档,开着有道词典,不认识的单词就划词去查。开始速度很慢,后来熟了一些就能快一点。这两个礼拜正式投入使用,学习实验室INM数据库存储模块,完成了物化视图实例的存储接口。期间也对Berkeley DB的桶操作有了更深入一些的了解。 1.BDB简单存取 BDB是键值对存取,一个键值对叫做一个record,键和值使用相同的数据结构,C++ API中定义为Dbt,用数据的指针和数据的长度初始化Dbt对象。假设key值为“luffy”,value值为“op”。 char *pkey = "luff […]

    Continue Reading...