- 博客(62)
- 资源 (2)
- 收藏
- 关注

原创 数据库修仙化神篇四——搭建自己的搜索引擎
使用elasticsearch和search-ui搭建自己的搜索引擎,快速查找资源和文件。如果对代码感兴趣,相关代码已在github上开源,欢迎代码。
2023-10-25 15:45:23
2216
原创 pandoc自定义过滤器
pandoc是一个强大的文本转换工具,可以实现各种文本格式的互相转换。在开发过程中常用的文档格式有rst、markdown、pdf、docx等,pandoc支持这些格式互转,但是对于一些特殊格式和排版支持不是太好,需要做一些适配和二次开发。常见的方式用过滤器方式、模板方式、使用高级参数等来进行调整适配。但要想达到高度定制,还是需要使用过滤器的方式。
2024-09-18 13:56:51
954
原创 docker搭建C语言开发环境
docker save 的应用场景:如果我们的应用是使用 docker-compose.yml 编排的多个镜像组合,查看code-server镜像大小,可以看到code-server的镜像挺大的,1.63GB。因而采用在基础镜像里安装code-server,安装完成后,我们再将其导出为我们需要的镜像。到这里,我们的容器已经制作完成了,已经有了一个基本开发环境,可以将其导出然后到其他地方使用。下载完成后记录下code-server的rpm包的安装目录,并将其映射到容器内部进行安装。
2023-10-27 14:23:28
910
原创 数据库修化神篇五——仅支持追加的单表内存数据库
我们将从更简单的东西开始。像B树一样,它会将行分组到页面中,但不是将这些页面排列为树,而是将它们排列为一个数组。我将页面大小设为 4 KB,因为它与大多数计算机体系结构的虚拟内存系统中使用的页面大小相同。这意味着我们数据库中的一页对应于操作系统使用的一个页面。当我们切换到树结构时,数据库的最大大小将仅受文件最大大小的限制。由于页面在内存中可能不会彼此相邻存在,为了使读取/写入行变得更加容易,我们假设行不应跨越页面边界。这是一个简单的架构,但它要求我们能够支持多种数据类型和多种大小的文本数据类型。
2023-06-28 09:30:00
127
原创 数据库修仙炼气篇二——postgresql基本操作与基本对象
postgresql是一个C/S架构的大型软件,提供数据存储索引和查询的功能。postgresql分为客户端和服务端,客户端叫作psql,或者其他语言基于odbc,jdbc,libpq开发的客户端程序,服务端叫作postgres,需要监听ip和端口,通过tcp网络协议与客户端进行通信。在网络通信之上,采用sql作为数据通信协议,支持增删改查。sql针对的是结构化数据,因而要先有数据结构,这里其实就是表。为了对表进行隔离,由将表划分到不同的数据库里。客户端和服务端通信需要验证,验证采用用户名和密码的方式。
2023-03-16 16:27:26
495
原创 数据库修仙筑基篇一——常用分布式解决方案
传统的存储也称为集中式存储, 从概念上可以看出来是具有集中性的,也就是整个存储是集中在一个系统中的,但集中式存储并不是一个单独的设备,是集中在一套系统当中的多个设备。集中式存储 最大的特点是有一个统一的入口,所有数据都要经过统一的入口。
2022-10-10 11:30:45
1080
原创 数据库修仙筑基篇四——zookeeper主备集群demo
使用zookeeper搭建主备集群,要求实现如下功能:搭建好zookeeper后,需要使用zookeeper 客户端来连接zookeeper,并在zookeeper中写入相关信息。
2022-06-20 16:08:52
548
原创 数据库修仙炼气篇十二——数据库数据完整性问题(块折断)
数据库数据完整性问题(块折断)数据库保证数据库完整性(解决块折断问题)当前主要有如下三种方式:操作日志加double write机制(mysql采用该机制);操作日志加full page write机制(postgresql同时采用这两种机制);混合方式,既支持操作日志加double write,又支持操作日志加full page write(openguass采用该机制);基本概念块折断数据库在将数据写入磁盘时一般是按page写入磁盘的,而page的大小一般与操作系统的文件块
2022-05-31 09:37:15
828
原创 数据库修仙金丹篇十三——缩短tcp超时时间的方法
缩短tcp超时时间的方法在tcp链路中,当网络异常时,缩短tcp超时时间一般有如下方法:TCP_USER_TIMEOUT(需要内核2.6.37及其以上版本)SIOCOUTQtcp_retries2应用层keepaliveTCP_USER_TIMEOUT需要内核2.6.37及其以上版本才支持该选项。TCP_USER_TIMEOUT选项是TCP层的socket选项,选项接受unsigned int类型的值。值为数据包被发送后未接收到ACK确认的最大时长,以毫秒为单位,例如设置为10000时
2022-05-26 09:35:52
2515
2
原创 数据库修仙炼气篇五——pg_walreceiver
pg_walreceiver启动流程启动receiver进程#mermaid-svg-pZwpfiroRFQyO6to {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-pZwpfiroRFQyO6to .error-icon{fill:#552222;}#mermaid-svg-pZwpfiroRFQyO6to .error-text{fill:#552222;str
2022-05-23 18:05:09
419
原创 数据库修仙炼气篇六——walsender
pg_walsender交互接口全局变量/* global state */extern PGDLLIMPORT bool am_walsender; // 是否是walsender进程extern PGDLLIMPORT bool am_cascading_walsender; // 是否是级联walsenderextern PGDLLIMPORT bool am_db_walsender; // 是否连接到数据库extern PGDLLIMPORT bool wake_wal_sender
2022-05-05 17:06:53
310
原创 数据库修仙炼气篇七——replication
pg_replication基本概念逻辑复制逻辑复制是将数据重新执行一次insert、update或delete。逻辑复制则允许在数据层面复制,并在安全性上提供更细粒度的控制。流复制(物理复制)实现方式是将wal日志中记录的内容按照确切的块地址逐字节的拷贝到备库,因此主备之间数据分布是一致的,这意味着在主备机器上,同一条记录的ctid是相同的。逻辑解码逻辑解码是提取数据库表的所有永久修改到一个连贯的、容易理解的格式 (不需要详细的数据库内部状态知识就可以解读)的过程。复制槽
2022-04-28 18:26:49
1359
原创 数据库修仙炼气篇四——WalWriter
WalWriter预写式日志WAL机制是对数据文件的修改必须是只能发生在这些修改已经记录到日志之后,即先写日志再写数据。WalWriter进程负责定期从WAL缓冲区写出日志,并确定写出日志的起点和终点来调用XlogWriter将日志写入到磁盘。参数配置wal_level控制wal存储的级别。wal_level确定有多少信息被写入到WAL。默认值是replica,它添加了WAL归档信息,包括只读服务器(流复制)所需的信息。还可以将其设置为minimal,即只写入从崩溃或立即关闭中恢复所需的信息。
2022-04-25 16:26:28
501
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人