自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

专注【PostgreSQL源码学习&研究】

基于PostgreSQL V13.2版本,从源码角度,全方位、图文并茂地剖析各机制的背后设计、以及底层的实现原理

  • 博客(727)
  • 资源 (3)
  • 收藏
  • 关注

原创 C语言之结构体(struct)

文章目录1. 概述2. 结构体定义2.1 tag-nam、member-listt和variable-list必须同时存在两个2.2 结构体嵌套2.3 初始化结构体成员列表2.3.1 花括号“{}”的初始化列表2.3.2 指定初始化器2.3.3 初始化嵌套结构体2.3.4 结构体变量赋值结构体变量2.4 访问结构体成员2.4.1 成员运算符“.”2.4.2 箭头运算符“->”3. 结构体数组...

2020-02-21 22:21:31 1124

原创 【002】 mongoose V6.14源码剖析之创建管理句柄(二)

文章目录1. 概述2. 初始化Mongoose句柄2.1 Mngoose 三个基本数据结构2.1.1 struct mg_mgr 拥有所有活动的事件管理器2.1.2 struct mg_connection 连接2.1.3 struct mbuf 数据缓冲区(接收/发送的数据)2.22.31. 概述     关于Mongoose的功能、编译方式、适用平台等特性已在《Mongoose-6.1...

2020-02-13 16:36:33 976

原创 【005】 HTTP协议之报文格式

文章目录1. HTTP概述2. HTTP报文格式2.1 HTTP请求报文格式2.2 HTTP响应报文格式3. HTTP报文之URL组成3.1 HTTP协议URL和URI区别4. 总结1. HTTP概述          2. HTTP报文格式          2.1 HTTP请求报文格式          2.2 HTTP响应报文格式      ...

2020-01-20 15:33:21 688

原创 【002】 Wireshark之抓包文件保存

文章目录1. 概述2. Wireshark查看版本号3. Wireshark查看各种系统文件夹4. Wireshark抓包文件保存4.1 保存完整的数据包4.2 保存部分数据包4.2.1 保存经“显示过滤器”过滤后的数据包4.2.2 保存“两个标记数据包区域”范围的数据包4.2.3 保存“指定编号范围内”的数据包4.2.4 保存“带标记”的数据包4.2.5 保存“已选中”的数据包1. 概述...

2019-11-28 16:42:47 11055 2

原创 【001】 Wireshark之抓包原理剖析

1. 网卡     网卡是局域网(LAN,全称是:Local Area NetWork)中连接计算机和传输介质的接口,它工作在物理层(L1)。它是处于主机箱内的一块网络接口板,因为它的存在,从而使得本机能够与外部局域网进行连接通信。任何一台计算机,想要进行上网、通信功能,就必须使用网卡。网卡的书面语是网络适配器/网络接口卡。如图1所示,为Inter I250网卡示意图。           ...

2019-11-22 13:04:59 7791

原创 【001】 Mongoose V6.14源码剖析之基础篇

文章目录1 Mongoose介绍2 Mongoose1 Mongoose介绍     Mongoose 是一款嵌入式 web服务器。使用C语言编写,它可以很容易的嵌入到其他平台或是程序中,并为其提供了web接口,它具有很强的可移植性,而且对跨平台编译支持得非常出色。它是用于嵌入式网络编程的瑞士军刀。为客户端和服务器模式实现了用于TCP,UDP,HTTP,WebSocket,CoAP,MQTT的...

2019-10-26 10:25:09 2869 5

原创 【0042】源码编译安装PostgreSQL

文章目录1、PostgreSQL概述2、PostgreSQL发展历史3、PostgreSQL安装准备3.1 源码安装3.24、PostgreSQL5、PostgreSQL数据库蔟目录介绍1、PostgreSQL概述     PostgreSQL是一种先进的、流行的对象-关系型数据库管理系统(Object-relational database management system,简称 ORDB...

2019-10-23 15:21:45 1457

原创 【0002】 postgresql.conf配置文件详解

# -----------------------------# PostgreSQL configuration file# -----------------------------## 此文件由以下几行组成:## name = value# ("="是可选的.)可以使用空格.注释是在一行的任何地方用"#"开头.参数名和允许值的完整列表可以在PostgreSQL文档中找到.#...

2019-10-21 21:59:28 7910

原创 Zookeeper事务日志控制100M范围测试

一、概述     本文档主要用于记录“测试Zookeeper服务其事务日志大小控制在100M范围内”的数据。Zookeeper分布式服务中,其日志共有3种类型,分别是:log日志、快照和事务日志。Zookeeper 3.4.0版本中,可以通过在配置文件(conf/zoo.cfg)中添加对应的选项从而达到自动清理事务日志的效果。     使用zookeeper提供的客户端工具(共有3种方式连接z...

2019-10-15 17:16:01 652

原创 【0172】cJSON开源库剖析

1. 概述     cJSON源码非常简单,即使是最新版本的cJSON,其 cJSON.c文件也仅有 750 多行的代码, cJSON.h文件 200 行代码不到。其.h文件和.c文件总代码量不超过 1000 行,非常简洁,阅读也很轻松。本文着重分析其设计框架和原理。                  ...

2019-09-25 15:53:27 1746

原创 cJSON组装与解析value为数组["a", "b", "c","d"]

1. 组装JSON中其value为数组的报文#include <stdio.h>#include <string.h>#include <stdlib.h>#include <assert.h>#include "util_cJSON.h"int main(){ char *serialBuf = NULL; cJSON *pRoo...

2019-09-12 21:38:30 1262

原创 解决Zookeeper无法启动问题

1. 概述      首先,zookeeper的配置(conf/zoo.cfg)是ok的。但是启动Zookeeper服务的时候,不报错,也没有任何提示。然而服务就是起不来,端口(默认2181)也不在线。     使用lsof 或是 netstat -apn | grep 2181查看端口的时候,可以看到zookeeper服务是没有起来的。接着我看了zookeeper.log 日志,可以看到一...

2019-09-03 09:50:32 4315 1

原创 c++11之静态断言(static_assert)

一、 断言概念     所谓“断言”,它是一种表现行为,亦是一种编程手段。它总是将需要“返回值为真的判别式”放到语句中,其所扮演的角色就是告知系统当程序的某个条件其值不为真的时候,退出程序,不再继续执行下去。需要知晓的是,断言并不是代码中必不可缺的部分,因为它是可替代的,比如用if(条件判断)、#error(预处理宏)来完成断言同样的效果。存在即合理,断言必然有它存在理由。它可以快速定位到程序出...

2019-08-19 15:05:23 3836

原创 数据类型在不同平台的存储字节大小总结

1. 概述     当用不同编译器编译的DLL交换数据时,以及在移植依赖于特定数据格式的C++代码时,数据表示的差异可能会导致程序间交换二进制数据文件时出现问题。表1 为显示不同对象用于不同编译器的存储字节数。                                                  表1 数据大小                     ...

2019-08-02 16:11:48 525

原创 操作系统、硬件平台、编译器预处理宏

    为了能够让写出的代码具有更强的移植性、跨平台等特性,我们需要在代码工程中加入大量的条件判断宏,以告知各平台下的编译器选择对应的分支宏代码进行(预处理、编译、汇编、链接)处理,并得到最终我们需要的成果物。不同的处理器、操作系统以及编译器都是有着其固定的宏,因此,我们所需做的在代码合适的地方添加对应的宏。     比如说,互斥锁在Linux平台与windows平台上面的定义、实现是不一样的,...

2019-08-01 22:08:22 1228

原创 【0030】 PostgreSQL报错:row number 0 is out of range 0..-1

一、PostgreSQL的C ++客户端中,若函数:GetResRow 获取的结果集为0,则其默认行为是:进程会直接宕掉,同时 stderr ,向终端打错误码,提示: row number 0 is out of range 0…-1。如下图所示: 。google一番,似乎该Bug在PG的9.1~9.3中都存在这样的问题。二、其API代码如下: int iType = HPR_Atoi32...

2019-04-08 20:28:10 2203

原创 #if defined 宏定义常用“与”、“或”、“非”判断

1.“与”判断 (即判断多个宏是否同时定义) #if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \ defined(__HP_aCC) || defined(__BORLANDC__) || defined(__LCC__) || \ defined(__POCC__) || defined(__S...

2018-12-07 14:19:20 14503

原创 Zookeeper编译动态库 libzookeeper_mt.so

一、Zookeeper下载 Zookeeper官网地址是:https://www.apache.org/dyn/closer.cgi/zookeeper/ [点击进入下载页面] 。选择合适的稳定版本下载。 将下载的文件(比如:zookeeper-3.4.12.tar.gz)上传到Linux服务器的某一个目录下。解压 tar -zxvf zookeeper-3.4.12.tar.gz...

2018-11-23 17:14:02 4241

原创 scp -r 提示:"ARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!"

1. Linux上的SCP 功能是:用于Linux之间复制文件和目录。scp是 secure copy的缩写, 它是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。下午重做了个镜像,然后启动服务器,使用scp 复制文件时,无法复制,打印如下: 提示:远程主机识别已经改变。/etc/ssh/ssh_config line 52: Unsupported option &quot;gssapiau...

2018-11-13 20:41:02 1168

原创 Linux线程之一次性初始化(pthread_once)

1.一次性初始化 在 Linux函数列表 中描述了Linux线程中的常用函数,这里详细讲解 pthread_once 函数的功能和使用。(1)为何有“一次性初始化概念”出现? 其实在开发中,很多事情都仅仅需要做一次,不管是什么。在主函数中并且在调用任何其他依赖于初始化的事物之前初始化应用是最为容易的,特别是在创建任何线程之前初始化它需要的数据,如 互斥量、条件变量、线程特定数据键等。...

2018-09-09 12:14:28 2835

原创 tar 解压文件报错:tar: Error is not recoverable: exiting now

1. 使用tar 解压 Zookeeper官网下载的zookeeper-3.4.10.tar.gz 时候,出现错误提示: gzip: stdin: unexpected end of file zookeeper-3.4.10/src/java/test/org/apache/zookeeper/test/LETest.java zookeeper-3.4.10/src/java/test/...

2018-08-08 01:06:06 68236 4

原创 C++11新特性之 “=default” 、“=delete”

1、 =default 和=delete 概述 任何事物的出现都必然有着其出现的理由,伴随着每一个新的概念产生都会带来一系列的便利和价值。C++在不断的演变与发展,与此同时,伴随着许多新的特性和功能产生。=default、=delete 是C++11的新特性,分别为:显式缺省(告知编译器生成函数默认的缺省版本)和显式删除(告知编译器不生成函数默认的缺省版本)。C++11中引进这两种新特性的目的是...

2018-07-18 00:03:42 30199 21

原创 KafkaOffsetMonitorji监控工具的配置及使用

一、 KafkaOffsetMonitor简述 KafkaOffsetMonitor,它是由Kafka开源社区提供的一款Web管理界面,是Kafka的一款客户端消费监控工具,用来实时监控Kafka服务的Consumer以及它们所在的Partition中的Offset,通过KafkaOffsetMonitor,我们可以很直观的知道,每个Partition的Message是否消费掉,有没有阻塞等。...

2018-07-10 03:25:36 3206 11

原创 C++ STL编译报错:error: error passing 'const' as 'this' argument

用C++ STL(标准模板库)编写仿函数的时候,编译报错: error: passing 'const FindNameOrAddress' as 'this' argument of 'bool FindNameOrAddress::operator()(std::string, std::string)' discards qualifiers [-fpermissive] 其中:Find...

2018-07-05 01:02:37 14440

原创 C++11 之 lambda函数的详细使用

1. lambda 函数概述 lambda 表达式是一种匿名函数,即没有函数名的函数;该匿名函数是由数学中的λ演算而来的。通常情况下,lambda函数的语法定义为: [capture] (parameters) mutable -&amp;amp;amp;amp;amp;gt;return-type {statement} 其中: [capture] :捕捉列表。捕捉列表总是作为lambda的开始,即出现于lambda的...

2018-07-03 22:38:42 40342 13

原创 Qt Creator支持C++11

1.Qt开发中,经常会用到 C++11 的新特性,为了Qt支持C++11的新特性,需要在 xxxx.pro 文件添加: QMAKE_CXXFLAGS += -std=c++11 或 CONFIG += c++11

2018-06-23 14:08:50 6424 2

原创 Linux下unzip解压文件时报错并提示: End-of-central-directory signature not found.

1. 使用unzip解压从rapidjosn官网下载的zip格式文件时,解压不成功,并给出其错误提示为: Archive: rapidjson-master.zip End-of-central-directory signature not found. Either this file is not a zipfile, or it constitutes one disk ...

2018-06-18 13:56:06 73318 11

原创 C/C++中关键字extern详解

1.extern功能详解C/C++中关键字extern不外乎有下面几个作用,只要记住了这几个规则就可以在项目中运用自如。 ①扩展外部变量的作用域(在同一个文件范围内) ②将外部变量的作用域扩展到其他文件 ③将外部函数(函数名前面没有加static关键字)的作用域扩展到其他文件 现在来对上面列举的3个功能做详细的讲解: 我们知道,在用C/C++进行编程时候,所以的变量或函数都...

2018-05-10 01:41:15 4252 4

原创 C++ vector、map中删除符合条件的元素

1. vector中常用的插入和删除操作insert(const_iterator pos, int count,ele);//迭代器指向位置pos插入count个元素ele. push_back(ele); //尾部插入元素elepop_back();//删除最后一个元素erase(const_iterator start, const_iterator end);//删除迭代器从start到

2017-09-30 15:49:41 22978 2

原创 【 039】 合并两个链表

1.实现将两个带头结点的链表L1和L2进行连接,连接后的链表仍然使用原来的存储空间;结果为链表L2连接到L1的末尾。思路:找到链表L1的尾节点,使其指针域指向下一个链表的头结点(同时将链表L2所占用的内存空间进行回收)。合并之前: 合并之后: #include&lt;stdlib.h&gt;#include &lt;stdio.h&gt;typedef int ElemType;typedef struct li

2017-03-10 15:25:33 28742 9

原创 c语言之枚举类型(enum)

I. enum枚举类型1 . 如果一个变量只有几种可能的值,则可以定义为“枚举类型”;所谓“枚举”就是把可能的值一一的列举出来,变量的值只限于列举出来的值的范围。如: 语法: enum 枚举类型{枚举成员列表}; //其中的枚举成员列表是以逗号“,”相分隔 如: enum Spectrum{red,balck,ye...

2017-02-23 21:23:13 33235 4

原创 C/C++:十进制转为二进制(n进制转为十进制)

I. 十进制转换为二进制1.在二进制中,奇数的末尾一定是1,而偶数的末尾一定是0. 一般而言,对于数字n,其二进制的最后一位是n%2;这里值得注意的是,计算的第一位数字其实是待输出的二进制数的最后一位,(所以这里可以定义一个数组来存放二进制数0或1;当然也可以采用函数递归来实现);要获得下一位数字,必须把原数字除以2。如果计算结果是偶数,那么二进制的下一位数就是0;如果是奇数,就是1.把上面的话

2016-12-05 23:13:33 41957

原创 【0332】Postgres内核 start background worker(s)

Postgres内核在 PostmasterMain() 函数中初始化 postmaster 守护进程时候,通过 maybe_start_bgworkers() 函数开始尝试启动 background worker(s)。我们对每次调用所启动的 workers数量加以限制,以防在有众多此类请求处于待处理状态时过长时间占用 postmaster 的注意力。在崩溃恢复过程中,在状态转变为恢复之外的状态之前,无需调用我们。目录下, 通过 gcc 预处理命令,将其中宏给展开,便于理解。

2024-09-20 11:29:18 132

原创 【0331】Postgres内核之 注册 background worker (以运行 logical replication launcher)

调用失败,稍后会再次尝试。postmaster 守护进程初始化(PostmasterMain()函数)过程中,在开启进入 ServerLoop() 主空闲循环函数前,会先注册 background worker(即应用启动器, apply launcher)进程,该过程由函数 ApplyLauncherRegister() 完成。请注意,在一个数据库中可能同时存在多个 worker,并且同一模块可能请求多个 worker 运行相同(或不同)的代码。是一个能够运行任意用户提供的代码,包括常规事务的进程。

2024-09-19 12:47:26 110

原创 【0330】 Postgres内核之 relation cache entry contents

数据类型是 一个关系表缓存项的内容。该结构定义于rel.h头文件中。

2024-09-18 12:38:39 95

原创 【0329】Postgres内核之 activeSearchPath

1. activeSearchPath 检索

2024-09-10 21:03:48 37

原创 【0328】Postgres内核之 “User ID state”

我们必须追踪与“用户ID(user ID)”概念相关的多个不同值。Postgres内核中有共有以下几个 User ID。✔✔✔✔。

2024-09-10 20:48:24 182

原创 【0327】Postgres内核之 VACUUM (FULL) 通过 namespace 查找 relations OID (17 - 1)

1. 查找 relations OID

2024-09-09 19:27:38 44

原创 【0326】Postgres内核之 VACUUM (FULL)构建所有要 VACUUM 的 relation(s) list(17)

0.1.2.

2024-09-09 17:23:32 336

原创 【0325】Postgres内核之 VACUUM(FULL) 创建 BufferAccessStrategy object(16)

这部分是属于Postgres内核中 “后端进程私有缓冲区环管理” 内容。函数 用于创建一个对象,该对象将在当前内存上下文中分配。这里先分别对和两个数据类型进行介绍。

2024-09-07 11:25:52 214

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除