Sorry the format is poor, I will update it later. Or please see the same article on my blog at baidu which has a better format: http://hi.baidu.com/dazhao_dbblog/blog/item/a1f49efcee4fba1e09244d06.html
C++ template is really a powerful gun in the entire C++ artillery. It is an important part of the defining components that make C++ so powerful, yet so difficult to learn. There are many ways you can make mistakes when using C++, or using C++ templates, just like using any other powerful man-made systems. But if you make everything right, you can gain incredible power, flexibility, efficiency, performance, extendability and so on – anything you dream of in the software engineering world. So it is definitely worthwhile to make the effort to learn C++ well.
In this article I’d like to talk about how to implement the superset of interface mechanism using templates in C++ by using C++ templates, you can do a lot better than ordinary interface mechanism. 阅读全文…
本文通过分析Berkeley DB自带的示例程序来详细阐述了使用Berkeley Db基本功能的方法。这之后还将有更多这类文章,我认为通过学习好的例子和已有代码来学习使用berkeley db是很有效的。
阅读全文…
今天偶尔翻出了大一时候使用的谭浩强《C语言程序设计习题集和上机指导》,发现里面的代码格式真的不敢恭维。原来我们就是看着这些书本来学习成长过来的,当然,他的《c语言程序设计》我觉得还很不错的,大一的时候,就是这本书带领我进入了程序设计的世界。这里我想强调的是,在学习编程的过程中,如果能阅读一些高质量的代码,那将是非常有益的。而高质量代码的一个最基本的特征,就是有非常规范的代码格式。 阅读全文…
今天看到一个文章,谈到Berkeley DB与eXtreamDB的性能对比,可惜两者的数据集不同,没多大可比性,以后有时间,我把那个程序修改一下,使用相同的数据集对比下,把结果贴出来给大家看看。我很有信心:Berkeley DB不会输给eXtreamDB. 看了官网才发现,eXtreamDB是如此的与Berkeley DB相似,但是它不是开源产品,所以从使用者的规模来看,我相信无法与Berkeley DB相比。 阅读全文…
上一篇注释中提到Berkeley DB产品家族有三个产品,及核心版,Java版以及XML版,其中核心板用C语言开发,支持几乎所有的常用操作系统平台和很多嵌入式操作系统,拥有最悠久的历史和最高的使用量、知名度,如果不显式说明,人们提到Berkeley DB都是指核心版;Java版和XML版是后起之秀,Java版完全使用Java语言实现,它不基于核心版,是完全独立的纯Java嵌入式数据库,而XML版基于核心版,它的功能是让用户方便的存储和读取XML数据到数据库中。从下图可以看出三个产品的结构和相互关系。 阅读全文…
这篇文章最早发布在我的百度博客上的( http://hi.baidu.com/dazhao%5Fdbblog ),现在把它贴过来。
说实话,在我进入Oracle之前一个月,也是拿到Oracle的Offer 5个月之后,我才得到我未来经理的电话通知(我不是怪他通知的晚,事实上我非常感谢他给我机会进入这个产品组—这纯属机缘巧合,让我来到一个崭新的世界),说我在Berkeley DB产品组,这之前我从来没听说过它,我的第一印象,Berkeley的DB不是postgresl吗?仔细一查,才知道它是Oracle的嵌入式数据库,而嵌入式数据库是什么样的呢?是不是用在嵌入式系统当中的数据库?或者那种移动设备上的,诸如智能手机、PDA之类?带着诸多疑问,我仔细看了Berkeley DB(注1)的产品介绍。 阅读全文…
做软件这行,我觉得如果刚去一家公司,有很多东西需要适应,其中很重要的一个方面就是工作过程中用到的软件。我刚来Oracle的时候,有不少软件是我从来没有用过的,花了一段时间才适应下来,现在感觉非常得心应手,那些原本觉得很不好用的软件,比如vi,现在是我每天必须使用的,包括现在在写的这篇文章,就是用vi编写的。所以我们就先从vi说起吧。下面提到的软件除了Visual Studio外,都是开源的,可以免费使用。你去google用本文的软件名做关键字可以很容易地搜索到这些软件,以及它们的文档和用户手册,来学习使用。它们是全世界乐于奉献的软件高手们智慧的结晶,好用不是吹的。 阅读全文…
这篇文章最早发布在我的百度博客上的( http://hi.baidu.com/dazhao%5Fdbblog ),现在把它贴过来。
一个Berkeley DB数据库(也就是关系数据库中的一个表)存储的数据是key/data pair(键/值)对的集合,这些key/data pairs原本可以是任何结构、模式和意义的数据,Berkeley DB不理会它们的结构和意义,只把他们当作字节串来存取;但是从应用程序设计的角度看,一个数据库中最好是保存一类数据,比如在同一个Berkeley DB数据库中保存所有员工的信息,对于每一个key/data pair,以工号为key,以一个员工的全部信息为data。要存储部门信息时,把它保存到另一个Berkeley DB数据库中。 阅读全文…
这篇文章最早发布在我的百度博客上的( http://hi.baidu.com/dazhao%5Fdbblog ),现在把它贴过来。
Berkeley DB数据库以程序库的方式链接到应用程序中,而应用程序可以以多线程、多进程的方式访问同一个数据库环境中的所有数据库。注意,这里的数据库环境(Database Environment, DB_ENV)是Berkeley DB的一个术语,相当于关系数据库中的一个“数据库”,我们知道这个“数据库”中有很多个“关系表”。而Berkeley DB当中用“数据库”(”Database”)来指代大家所熟悉的“关系表”—记住这个术语的改变,否则后面就很难理解了。
在通常的关系数据库服务器中,通常也是有很多个进程在向客户连接提供数据,所以本文所描述的技术适用于所有的数据库系统。 阅读全文…
这篇文章最早发布在我的百度博客上的( http://hi.baidu.com/dazhao%5Fdbblog ),现在把它贴过来。
MSVC8 对c++模板的支持,基本上遵循了c++标准的规定,不过在某些细节之处仍然超越了c++标准,多做了一些工作,从而一定程度上减轻了程序员编程的负担。但是这种简化,是一把双刃剑—当你使用MSVC8编程的时候你会感觉轻松而简便,你不知不觉中就陷入了MS的陷阱—当你需要把代码移植到使用gcc的*nix上时候,你将遇到很多头疼的问题,甚至不得不放弃,从而困在微软的小世界里面。为了防患于未燃,我们应该在编码之前,就知道如何编写可移植的c++模板代码,不要使用MSVC8的扩展。我把我工作中学到的经验列出来,供大家参考,这样大家就不会犯我曾经犯过的错误。要知道,为了修正这些不可移植的代码,我用去了整整一个星期。 阅读全文…
最近评论