Latest Headlines
  • 本文首先大体讲一个内存上下文是干什么的,结构是怎么样的。然后具体介绍PG中现有的一套分配策略,并不详细分析源码的每一处(可以参考PG内核分析这本书),而是说说其中思路流程,如何调节参数进行优化。最后介绍如何使用C++重写其中的源码,让内存上下文不仅仅是PG中的一个特性,而是可以作为一个内存分配的库,供其它程序使用。并附上重写后的源码供大家参考。 大体概述 PostgreSQL 从7.1开始支持内存上下文,因为数据库在查询过程中需要不断申请内存空间,但是只有当查询结束后才能够释放内存,这执行之间,就有可能发生内存泄漏问题。内存对于数据库而言极其重要,为了避免内存泄漏,引入了内存上下文机制,所有的 […]

    PG 内存上下文

    本文首先大体讲一个内存上下文是干什么的,结构是怎么样的。然后具体介绍PG中现有的一套分配策略,并不详细分析源码的每一处(可以参考PG内核分析这本书),而是说说其中思路流程,如何调节参数进行优化。最后介绍如何使用C++重写其中的源码,让内存上下文不仅仅是PG中的一个特性,而是可以作为一个内存分配的库,供其它程序使用。并附上重写后的源码供大家参考。 大体概述 PostgreSQL 从7.1开始支持内存上下文,因为数据库在查询过程中需要不断申请内存空间,但是只有当查询结束后才能够释放内存,这执行之间,就有可能发生内存泄漏问题。内存对于数据库而言极其重要,为了避免内存泄漏,引入了内存上下文机制,所有的 […]

    Continue Reading...

  • 前一阵想着能不能挣点外块改善生活,就应聘当某在线教育的解题员,这是阿里几年前的一套笔试题,也是让我试着做的题。看了下,网上应该没有解答这么详细的,毕竟也花了一些功夫。至于应聘,觉得此公司有点混乱,就罢了。另外貌似也失去了改善生活的动力。不过好东西,还是要放出来~ 1. 有一个虚拟存储系统,若进程在内存中占3页(开始时内存为空),若采用先进先出(FIFO)页面淘汰算法,当执行如下访问页号序列后1,2,3,4,5,1,2,5,1,2,3,4,5,会发生多少缺页? A、7              B、8                            C、9                  […]

    一套笔试题

    前一阵想着能不能挣点外块改善生活,就应聘当某在线教育的解题员,这是阿里几年前的一套笔试题,也是让我试着做的题。看了下,网上应该没有解答这么详细的,毕竟也花了一些功夫。至于应聘,觉得此公司有点混乱,就罢了。另外貌似也失去了改善生活的动力。不过好东西,还是要放出来~ 1. 有一个虚拟存储系统,若进程在内存中占3页(开始时内存为空),若采用先进先出(FIFO)页面淘汰算法,当执行如下访问页号序列后1,2,3,4,5,1,2,5,1,2,3,4,5,会发生多少缺页? A、7              B、8                            C、9                  […]

    Continue Reading...

  • 使用MPI作为集群通信的工具已经有一段时间,一开始只是粗略的了解了一下它提供的消息传递接口,虽然可以解决大部分问题,但是使用不便,效率较低。这几天仔细看了看官方的文档,在MPI中提供了很多有用的函数接口,使用者完全可以在其上建立灵活的通信层。本文主要介绍集群点对点的通信。 首先看一个简单的例子,从一个节点发送一条message到另一个节点: #include <mpi.h> #include <iostream> #include <cstring> using namespace std; int main(int argc, char** argv) { […]

    MPI 中的点对点通信

    使用MPI作为集群通信的工具已经有一段时间,一开始只是粗略的了解了一下它提供的消息传递接口,虽然可以解决大部分问题,但是使用不便,效率较低。这几天仔细看了看官方的文档,在MPI中提供了很多有用的函数接口,使用者完全可以在其上建立灵活的通信层。本文主要介绍集群点对点的通信。 首先看一个简单的例子,从一个节点发送一条message到另一个节点: #include <mpi.h> #include <iostream> #include <cstring> using namespace std; int main(int argc, char** argv) { […]

    Continue Reading...

  • 趁着五一,劳动一下,把这篇酝酿已久的博客写了。这是去年做的东西,完成了一段时间,经过测试使用还可以,基本可以保证数据库的Durability,无论是突然断电还是磁盘坏了等等。文章的大部分内容都是之前完成的(为了交高级数据库这门课的课程报告….)。适合需要使用Berkeley DB或者其它存储引擎建立自己的备份系统的人阅读和参考。或者是想看看设计思路的~ 摘要 本文所述内容基于实验室的INM DBMS系统,原系统使用嵌入式开源数据库Berkeley DB为存储引擎,构建一种全新的语义数据模型。拥有自己的一套不同于SQL的数据库语言。原系统主要着眼于数据模型的构建,ACID的特性均交给 […]

    基于Berkeley DB的数据库备份系统

    趁着五一,劳动一下,把这篇酝酿已久的博客写了。这是去年做的东西,完成了一段时间,经过测试使用还可以,基本可以保证数据库的Durability,无论是突然断电还是磁盘坏了等等。文章的大部分内容都是之前完成的(为了交高级数据库这门课的课程报告….)。适合需要使用Berkeley DB或者其它存储引擎建立自己的备份系统的人阅读和参考。或者是想看看设计思路的~ 摘要 本文所述内容基于实验室的INM DBMS系统,原系统使用嵌入式开源数据库Berkeley DB为存储引擎,构建一种全新的语义数据模型。拥有自己的一套不同于SQL的数据库语言。原系统主要着眼于数据模型的构建,ACID的特性均交给 […]

    Continue Reading...

  • 前年寒假的时候,买了一套平凡的世界,买之前一点都不了解,仅仅是听了别人的推荐。为了省邮费,还要加一本,就买了effective c++,现在来看这两本书一样那么好看和精彩。 现在刚刚看完电视剧版的,重温了一遍平凡的感动,可能是因为两年之间生活也发生了改变,又有了一些不同的感受。看完书的时候是这样写的: 终于在临走的一天晚上看完了平凡的世界,要不还要把它带到学校去,三本大书,估计要累个半死。里面讲了大概一个村的人,从文化大革命时期到改革开放初期,这个村我分析了一下,还真有可能是黄堡和三原这一片,就算不是也不会离得很远。因为书中的地方叫黄原。书里面还出现了省城东大街口的骡马市,上上个学期回来还在哪 […]

    平凡的世界

    前年寒假的时候,买了一套平凡的世界,买之前一点都不了解,仅仅是听了别人的推荐。为了省邮费,还要加一本,就买了effective c++,现在来看这两本书一样那么好看和精彩。 现在刚刚看完电视剧版的,重温了一遍平凡的感动,可能是因为两年之间生活也发生了改变,又有了一些不同的感受。看完书的时候是这样写的: 终于在临走的一天晚上看完了平凡的世界,要不还要把它带到学校去,三本大书,估计要累个半死。里面讲了大概一个村的人,从文化大革命时期到改革开放初期,这个村我分析了一下,还真有可能是黄堡和三原这一片,就算不是也不会离得很远。因为书中的地方叫黄原。书里面还出现了省城东大街口的骡马市,上上个学期回来还在哪 […]

    Continue Reading...

  • 本文转载自 这里 ,是英文版的,有一份中文版在 这里,中文的不让转载,只好转英文的了。介绍了C++ 11的几个特性,写的超好,不转不快 ! This article discusses a series of features new to C++11 that all developers should learn and use. There are lots of new additions to the language and the standard library, and this article barely scratches the surface. However, I […]

    Ten C++11 Features Every C++ Developer Should Use

    本文转载自 这里 ,是英文版的,有一份中文版在 这里,中文的不让转载,只好转英文的了。介绍了C++ 11的几个特性,写的超好,不转不快 ! This article discusses a series of features new to C++11 that all developers should learn and use. There are lots of new additions to the language and the standard library, and this article barely scratches the surface. However, I […]

    Continue Reading...

  • 都不好意思开头了,又是选的课要提交报告,自我约束写文章确实不行。。希望文章不差就好。上课选分析的模块,拼了老命选上了存储部分,以为可以深入底层,变成高手,找到好工作,迎娶白富美,一看代码才发现,和存储没有半毛钱关系,虽然如此,源码写的确实很好,也是受益不少。PostgreSQL从9.2开始支持Json类型,把它当成标准类型一种,渐渐地提供了12个SQL函数。这篇文章先简单介绍一下Json,然后对于12个函数每一个给出一个执行的例子,最后根据一条SQL语句,从源码角度分析如何执行的。源码那部分跟着代码看效果可能会好很多。 一 Json 简介 JSON用于描述资料结构,有以下形式存在。 物件(ob […]

    PostgreSQL 中的 Json —从使用到源码

    都不好意思开头了,又是选的课要提交报告,自我约束写文章确实不行。。希望文章不差就好。上课选分析的模块,拼了老命选上了存储部分,以为可以深入底层,变成高手,找到好工作,迎娶白富美,一看代码才发现,和存储没有半毛钱关系,虽然如此,源码写的确实很好,也是受益不少。PostgreSQL从9.2开始支持Json类型,把它当成标准类型一种,渐渐地提供了12个SQL函数。这篇文章先简单介绍一下Json,然后对于12个函数每一个给出一个执行的例子,最后根据一条SQL语句,从源码角度分析如何执行的。源码那部分跟着代码看效果可能会好很多。 一 Json 简介 JSON用于描述资料结构,有以下形式存在。 物件(ob […]

    Continue Reading...

  • 这一段时间写博客的频率少了很多,一直在给实验室数据库写备份和恢复的功能,积攒了很多值得深入学习的点,之后会一一总结。这篇文章是选的课需要交一篇分析语言特性如何实现的结题报告,正好看完Inside the c++ object model 之后,就一直想总结一下c++是怎么实现面向对象的继承,多态等等特性的。这是上篇,主要分析类中的数据成员,也是主要部分,下篇介绍虚函数的实现情况。 c++ 与面向对象 传统的c语言是结构化程序设计语言的代表,由c语言完成的操作系统,数据库等大型软件如今仍然良好的运行在我们的电脑上。C语言效率高,更加接近底层,程序员在编程中可以掌握每一块内存,如何分配何时回收。c […]

    C++面向对象特性实现剖析 Data Member篇

    这一段时间写博客的频率少了很多,一直在给实验室数据库写备份和恢复的功能,积攒了很多值得深入学习的点,之后会一一总结。这篇文章是选的课需要交一篇分析语言特性如何实现的结题报告,正好看完Inside the c++ object model 之后,就一直想总结一下c++是怎么实现面向对象的继承,多态等等特性的。这是上篇,主要分析类中的数据成员,也是主要部分,下篇介绍虚函数的实现情况。 c++ 与面向对象 传统的c语言是结构化程序设计语言的代表,由c语言完成的操作系统,数据库等大型软件如今仍然良好的运行在我们的电脑上。C语言效率高,更加接近底层,程序员在编程中可以掌握每一块内存,如何分配何时回收。c […]

    Continue Reading...

  • 本文原作者为何伟平(laser),文章转载来自 www.pgsqldb.org PostgreSQL 简介 摘要 PostgreSQL 是一种非常先进的对象-关系型数据库管理系统(ORDBMS),目前功能最强大,特性最丰富和最先进的自由软件数据库系统。有些特性甚至连商业数据库都不具备。这个起源于伯克利(BSD)的数据库研究计划目前已经衍生成一项国际开发项目,并且有非常广泛的用户。本文是PostgreSQL长期用户何伟平(Laser/BITBIRD)的文章“PostgreSQL的昨天、今天和明天”的当前版本。 版本 本文是作者何伟平(Laser/BitBIRD)在经过了十余年的 PostgreS […]

    PostgreSQL 昨天,今天和明天

    本文原作者为何伟平(laser),文章转载来自 www.pgsqldb.org PostgreSQL 简介 摘要 PostgreSQL 是一种非常先进的对象-关系型数据库管理系统(ORDBMS),目前功能最强大,特性最丰富和最先进的自由软件数据库系统。有些特性甚至连商业数据库都不具备。这个起源于伯克利(BSD)的数据库研究计划目前已经衍生成一项国际开发项目,并且有非常广泛的用户。本文是PostgreSQL长期用户何伟平(Laser/BITBIRD)的文章“PostgreSQL的昨天、今天和明天”的当前版本。 版本 本文是作者何伟平(Laser/BitBIRD)在经过了十余年的 PostgreS […]

    Continue Reading...

  • 完成了关于Berkeley DB 整体介绍的PPT,弄懂了其中product的区别,仅用于大概了解,没有具体说怎么用。 发展历史 1991年,Berkeley DB的第一个版本发行(Linux系统也在这一年诞生),其最初的开发目的是以新的HASH访问算法来代替旧的hsearch函数和大量的Dbm库。 1992年,BSD UNIX第4.4发行版中包含了Berkeley DB 1.85版。基本上认为这是Berkeley DB的第一个正式版本。 1996年,Sleepycat软件公司成立,提供对Berkeley DB的商业支持。 2006年,Sleepycat被Oracle收购,当时最新版本是4.7 […]

    Berkeley DB 简简介

    完成了关于Berkeley DB 整体介绍的PPT,弄懂了其中product的区别,仅用于大概了解,没有具体说怎么用。 发展历史 1991年,Berkeley DB的第一个版本发行(Linux系统也在这一年诞生),其最初的开发目的是以新的HASH访问算法来代替旧的hsearch函数和大量的Dbm库。 1992年,BSD UNIX第4.4发行版中包含了Berkeley DB 1.85版。基本上认为这是Berkeley DB的第一个正式版本。 1996年,Sleepycat软件公司成立,提供对Berkeley DB的商业支持。 2006年,Sleepycat被Oracle收购,当时最新版本是4.7 […]

    Continue Reading...