Japin

登高必自卑,行远必自迩

在编译完成之后对 Greenplum 数据库进行安装测试时遇到如下问题,

1
psql: FATAL:  semctl(592740353, 7, SETVAL, 0) failed: Invalid argument (pg_sema.c:151)

从而导致数据库启动失败,从错误结果来看应该是与信号量相关。那么具体是怎么回事呢?

文献 [1] 中给出了关于这个错误的详细说明,问题是由 System V IPC 对象导致的。

配置文件 logind.conf 中的 RemoveIPC 参数控制着 System V IPC 对象是否在用户完全退出的情况下被清除(系统用户排除在外)。在 systemd 212 版本之后这个选项默认是开启的,即 RemoveIPC=yes。仍在被使用的共享内存段不会被清理,因此 systemd 不会去清理正在使用的共享内存段;但是信号量没有进程附加的概念,因此,当用户退出或进程终止时,即便该信号量正在被使用也会被清理(这里的理解不一定正确,建议直接看原文)。

阅读全文 »

表达式和运算符是组成 C 语言的基本组成部分,本文主要针对表达式和运算符进行讲解,涉及到赋值运算符、算术运算符、比较运算符和逻辑运算符等运算符以及条件表达式、成员访问表达式和函数调用表达式等一系列表达式。

阅读全文 »

本文主要介绍 C 语言中的类型及存储类限定符,C 语言中提高了两个类型限定符:constvolatile;类型限定符指明了变量的访问方式。存储类限定符则指定了变量在内存中的存储方式,C 语言提供了四种存储类限定符:autoregisterexternstatic

阅读全文 »

最近在 MacOS 上写代码,需要使用 gdb 进行调试,踩了一些坑,因此在这里做一个简要记录。稍微搜索一下我们就可以知道要在 MacOS 上使用 gdb 需要先创建一个自签名证书(看这里)。

但是我们在 Mojave 上按照文章给出的方式进行,还是出现下面的错误。

1
2
Unable to find Mach task port for process-id 432: (os/kern) failure (0x5).
(please check gdb is codesigned - see taskgated(8))

在这个过程中,我还遇到了不能创建系统证书的问题。

阅读全文 »

C 语言的数据类型可以分为七种,它们分别是原始类型(内建类型)、枚举类型、联合类型、结构体、数组、指针以及不完全类型。此外,本文还介绍了类型限定符、存储类型说明符以及类型重命名。

阅读全文 »

本文主要介绍 C 语言的词法元素,包括标识符、关键字、常量、操作符以及分隔符。其中关于操作符的一些更为详细的信息将在后续进行介绍。

阅读全文 »

PostgreSQL 采用 flex 进行词法分析,随后利用 yacc 进行语法分析,其词法与语法分析在 scan.l 和 gram.y 文件中实现。本文主要针对 PostgreSQL 的建表语句 CREATE TABLE 来分析 PostgreSQL 数据库的词法、语法分析,并简要介绍整个 PostgreSQL 数据库的执行过程。

阅读全文 »

PostgreSQL 数据库默认情况下是不支持跨数据库访问的。如果我们想要执行跨数据库的查询,我们需要借助 dblink 来实现,dblink 是 PostgreSQL 的一个模块,支持从数据库会话中连接到其他数据库。

阅读全文 »

最近在使用 LaTeX 撰写文档时需要重定义一个命令的,但是我想要知道该命令的原始定义时怎样的,经过查找发现 LaTeX 在这方面做得还是很不错的。目前,我知道有两种方式可以获取命令的定义:(a) 在文档中使用 \show\command;(b) 在命令行中使用 texdef command

阅读全文 »
0%