存档

2009年1月 的存档

多读多写多实践—给初学编程者的建议

2009年1月12日 davidzhao 2 条评论

今天偶尔翻出了大一时候使用的谭浩强《C语言程序设计习题集和上机指导》,发现里面的代码格式真的不敢恭维。原来我们就是看着这些书本来学习成长过来的,当然,他的《c语言程序设计》我觉得还很不错的,大一的时候,就是这本书带领我进入了程序设计的世界。这里我想强调的是,在学习编程的过程中,如果能阅读一些高质量的代码,那将是非常有益的。而高质量代码的一个最基本的特征,就是有非常规范的代码格式。 阅读全文…

分类: Berkeley DB, David Zhao, 程序设计 标签:

开源软件的优势

2009年1月12日 davidzhao 没有评论

今天看到一个文章,谈到Berkeley DB与eXtreamDB的性能对比,可惜两者的数据集不同,没多大可比性,以后有时间,我把那个程序修改一下,使用相同的数据集对比下,把结果贴出来给大家看看。我很有信心:Berkeley DB不会输给eXtreamDB. 看了官网才发现,eXtreamDB是如此的与Berkeley DB相似,但是它不是开源产品,所以从使用者的规模来看,我相信无法与Berkeley DB相比。 阅读全文…

Berkeley DB 概况(2)

2009年1月12日 davidzhao 没有评论

上一篇注释中提到Berkeley DB产品家族有三个产品,及核心版,Java版以及XML版,其中核心板用C语言开发,支持几乎所有的常用操作系统平台和很多嵌入式操作系统,拥有最悠久的历史和最高的使用量、知名度,如果不显式说明,人们提到Berkeley DB都是指核心版;Java版和XML版是后起之秀,Java版完全使用Java语言实现,它不基于核心版,是完全独立的纯Java嵌入式数据库,而XML版基于核心版,它的功能是让用户方便的存储和读取XML数据到数据库中。从下图可以看出三个产品的结构和相互关系。 阅读全文…

分类: Berkeley DB, David Zhao 标签:

Berkeley DB概况 (1)

2009年1月12日 davidzhao 没有评论

这篇文章最早发布在我的百度博客上的( http://hi.baidu.com/dazhao%5Fdbblog ),现在把它贴过来。

说实话,在我进入Oracle之前一个月,也是拿到Oracle的Offer 5个月之后,我才得到我未来经理的电话通知(我不是怪他通知的晚,事实上我非常感谢他给我机会进入这个产品组—这纯属机缘巧合,让我来到一个崭新的世界),说我在Berkeley DB产品组,这之前我从来没听说过它,我的第一印象,Berkeley的DB不是postgresl吗?仔细一查,才知道它是Oracle的嵌入式数据库,而嵌入式数据库是什么样的呢?是不是用在嵌入式系统当中的数据库?或者那种移动设备上的,诸如智能手机、PDA之类?带着诸多疑问,我仔细看了Berkeley DB(注1)的产品介绍。 阅读全文…

分类: Berkeley DB, David Zhao 标签:

我的工作用到的软件

2009年1月12日 davidzhao 没有评论

做软件这行,我觉得如果刚去一家公司,有很多东西需要适应,其中很重要的一个方面就是工作过程中用到的软件。我刚来Oracle的时候,有不少软件是我从来没有用过的,花了一段时间才适应下来,现在感觉非常得心应手,那些原本觉得很不好用的软件,比如vi,现在是我每天必须使用的,包括现在在写的这篇文章,就是用vi编写的。所以我们就先从vi说起吧。下面提到的软件除了Visual Studio外,都是开源的,可以免费使用。你去google用本文的软件名做关键字可以很容易地搜索到这些软件,以及它们的文档和用户手册,来学习使用。它们是全世界乐于奉献的软件高手们智慧的结晶,好用不是吹的。 阅读全文…

分类: Berkeley DB, David Zhao 标签: ,

Berkeley DB的动态散列技术

2009年1月7日 davidzhao 2 条评论

这篇文章最早发布在我的百度博客上的( 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数据库中。 阅读全文…

分类: Berkeley DB, David Zhao 标签:

数据库通用基础实现技术—多进程共享信息

2009年1月7日 davidzhao 没有评论

这篇文章最早发布在我的百度博客上的( http://hi.baidu.com/dazhao%5Fdbblog ),现在把它贴过来。

Berkeley DB数据库以程序库的方式链接到应用程序中,而应用程序可以以多线程、多进程的方式访问同一个数据库环境中的所有数据库。注意,这里的数据库环境(Database Environment, DB_ENV)是Berkeley DB的一个术语,相当于关系数据库中的一个“数据库”,我们知道这个“数据库”中有很多个“关系表”。而Berkeley DB当中用“数据库”(”Database”)来指代大家所熟悉的“关系表”—记住这个术语的改变,否则后面就很难理解了。

在通常的关系数据库服务器中,通常也是有很多个进程在向客户连接提供数据,所以本文所描述的技术适用于所有的数据库系统。 阅读全文…

分类: Berkeley DB, David Zhao 标签:

编写可移植的C++ 模板代码

2009年1月7日 davidzhao 没有评论

这篇文章最早发布在我的百度博客上的( http://hi.baidu.com/dazhao%5Fdbblog ),现在把它贴过来。

MSVC8 对c++模板的支持,基本上遵循了c++标准的规定,不过在某些细节之处仍然超越了c++标准,多做了一些工作,从而一定程度上减轻了程序员编程的负担。但是这种简化,是一把双刃剑—当你使用MSVC8编程的时候你会感觉轻松而简便,你不知不觉中就陷入了MS的陷阱—当你需要把代码移植到使用gcc的*nix上时候,你将遇到很多头疼的问题,甚至不得不放弃,从而困在微软的小世界里面。为了防患于未燃,我们应该在编码之前,就知道如何编写可移植的c++模板代码,不要使用MSVC8的扩展。我把我工作中学到的经验列出来,供大家参考,这样大家就不会犯我曾经犯过的错误。要知道,为了修正这些不可移植的代码,我用去了整整一个星期。 阅读全文…

分类: David Zhao 标签:

Berkeley DB Java版直接持久层基础

2009年1月6日 chaohuang 10 条评论

Berkeley DB Java版直接持久层基础

概览

Berkeley DB Java 版是一套纯Java语言实现的嵌入式数据库。它提供的事务存储引擎不仅显著的减少了对象持久化开销,而且保持了对象-关系映射(ORM)解决方案的灵活性,速度和扩展性。Berkeley DB Java版3.0引入了直接持久层(DPL),旨在提供和与企业 Java Bean 3.0 (EJB3) 持久性相同好处:对象持久化时,不需要将对象转换成关系表。

更多请参见我在OTN上完整的中文翻译:http://www.oracle.com/technology/global/cn/products/berkeley-db/pdf/bdb-je-persistence-api-basics.pdf

英文原文:http://www.oracle.com/database/docs/BDB-JE-DPL-Basics-Whitepaper.pdf

Berkeley DB Java版简介

2009年1月6日 chaohuang 4 条评论

Berkeley DB Java版简介

起源

加州大学伯克利分校的BSD 4.3及以前的所有版本包含了专属于AT&T Unix代码,而当时从AT&T获得源码许可证是非常地昂贵。为了不受许可证的支配,当时BSD的开发者Keith Bostic提议,BSD系统中应该有更多的非AT&T部分,以Net/1的协议发布。随后,在1991年,Keith Bostic和Margo Seltzer 以及 Mike Olson一起着手开发了Berkeley DB以替换当时的Unix下经典的数据库引擎ndbm(New Database Manager, http://en.wikipedia.org/wiki/Ndbm)。这之后Berkeley DB迅速流行起来,并促成了Sleepycat Software公司(在2006年2月时,Sleepycat Software被甲骨文收购)。 时间进入到2004年,随着Java语言的大行其道以及其对多线程机制的良好支持,Berkeley DB的开发者们为Java开源社区带来一味大餐,这便是今天的Oracle Berkeley DB Java版(下文简称为 JE)。 阅读全文…

Դ