PostgreSQL是一个对扩展和程序开发很友好的数据库,有很多的外部扩展接口,很易于扩展。本文使用PostgreSQL的C扩展编写扩展函数,并提供给触发器调用,本文的例子来源与官方文档。 PostgreSQL的扩展函数可以有“version-0”和“version-1”两种格式

阅读更多»

PostgreSQL可以支持多种存储过程语言,官方支持的除了PL/pgSQL,还有TCL,Perl,Python。 本文使用源码安装PL/Python过程语言支持,并简介PL/Python的一些简单的入门。如果是使用安装包安装的话,可以参考1。 参考PostgreSQL的官方文档

阅读更多»

默认情况下,PostgreSQL唯一默认会安装的存储过程语言就是PL/pgSQL。 创建PL/pgSQL的方法是在psql或者pgAdmin中输入创建语句,如下, 1234567891011121314151617181920CREATE or replace FUNCTION

阅读更多»

ASM字节码操作框架,是Java中用于字节码操作的很好用的一个库,是cglib等很多著名框架的基础,我们常用的Spring,Hibernate等都用到了cglib。ASM存在的基础是,JVM虚拟机未对Java的字节码(.class)文件做“只能是文件”的限制,只要是合法的字节码文

阅读更多»

每一个Java类在经过编译后,都会生成.class文件,作为JVM执行的输入。.class文件的结构分析和示例可以参考1,2,3。本文用Java代码分析.class文件的结构,获取类的定义,以及类中每一个域和方法的声明。 首先,.class文件是Java的字节码文件,需要逐个逐个

阅读更多»

UUID是用于提供全局唯一编码的程序,可以将其添加到PostgreSQL中,这里是UUID的主页。 下载最新版本uuid-1.6.2.tar.gz的源码,解压,configure,编译安装,与一般的程序安装并无很大差异。也可以使用yum install uuid uuid-dev

阅读更多»

Java的锁是多线程编程中必须理解的概念,其synchronized关键字本质上就是一个互斥锁的实现。 本文比较在Java中使用锁和使用atomic包中类型在多线程环境下的性能差异,并探讨JVM获取锁的一般步骤。 假设要对一个整数做++操作1000000次。在使用锁(本文使用的是

阅读更多»

本文以createuser和pg_dump两个过程为例,分析PostgreSQL的工具程序的一般设计方式。本文使用的是PostgreSQL 9.3.4版本。 所有这些工具过程的main函数代码都在源码目录的src\bin目录下面,例如,createuser和pg_dump就分别对

阅读更多»

本文主要使用Eclipse的MAT工具和JDK自带的jvisualvm工具来分析程序运行异常之后的堆dump文件,以找到程序出错的原因。 Eclipse的MAT(Memory Analyzer Tool) 是基于heap dumps来进行分析的,它的分析速度比jhat快,分析结果

阅读更多»

SUN JDK提供了一系列的运行时分析工具1可以用于分析运行时的JVM状况,这些工具包括jps、jstack、jstat、jinfo、jmap、jconsole、jvisualvm等。 本文使用其中的部分工具来检测运行时是否发生死锁。先写一个运行时会发生死锁的程序,其实最经典的哲

阅读更多»

欢迎来到Valleylord的博客!

本博的文章尽量原创。