自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 PostgreSQL源码安装

由于我原来安装了PG14.0,因此这里需要屏蔽该版本的所有二进制命令,这里通过重命名原来的命令文件夹的方法进行屏蔽。

2023-04-05 11:22:24 1083

原创 PostgreSQL源码学习笔记(8)-事务管理

前面介绍,用户的每条查询语句都是一个原子操作,但实际上数据库能够管理的最小的原子单位是事务。因此在本节中,一个逻辑意义上(SQL语句的BEGIN到COMMIT的语句)执行流程被称为“事务”,而该执行流程中的每一条语句都被称为事务(无双引号)。PG实现了事务的ACID特性,同时允许事务的嵌套特性,嵌套特性的实现关键是事务块,事务块中含有多个事务。实际上,事务块是一个有限状态机,含有执行过程中事务的状态信息。事务块以及其内部的事务组成了传统意义上的“事务”。本文主要对PG的事务管理模块进行了简单的介绍。

2023-03-28 16:03:47 648

原创 PostgreSQL源码学习笔记(7)-查询执行

DDL是一种功能性语言,与普通的增删查改不同,DDL主要用于表格模式的创建修改与删除,权限的修改等 ,因此不同种类的数据定义语句,其实现会有所不同。在PG中,DDL都会通过调用函数ProcessUtility()实现。本节主要介绍该函数中会涉及的一些数据结构以及一些命令的具体执行过程。本章介绍了PG中对于SQL语句的执行过程。执行引擎将SQL语句分为两类,一类是DDL,主要由ProcessUtility模块实现;第二类是DML,主要由Executor实现。二者都被封装到一个Portal结构体当中。

2023-03-28 16:00:00 477

原创 PostgreSQL源码学习笔记(6)-查询编译

当PG的后台进程Postgres接收到查询命令后,需要先将其传递到查询分析模块,进行词法,语法与语义分析。对于用户的查询命令,比如SELECT,CREATE TABLE以及一些简写的命令如"\dt",“\d”(这些简单命令会首先被转化为SELECT的语句),PG需要为其构建一颗原始解析树,然后交给查询重写模块。查询重写模块根据解析树以及一些指定参数执行解析分析以及规则重写得到查询树,最后将查询树输入到计划模块得到计划树。

2023-03-28 15:55:14 545

原创 PostgreSQL-源码学习笔记(5)-索引

在数据库的使用中,常常需要查询某个字段为给定值的元组。由于PG在创建relation的时候并不会自动创建索引,这种查询常常需要遍历整个表格寻找所有匹配的元组。当表中含有的元组数据太多时,这种顺序遍历的方式不仅要扫描大量无关的元组,每次扫描都会带来大量的IO操作,搜索的效率也差强人意。而如果让数据库能够在该字段(或多个字段)维护一个索引用于快速定位目标元组,那么数据库就能够以很快的速度找到满足要求的元组,这会大大增加查询的效率。

2023-03-28 15:54:24 607

原创 PostgreSQL源码学习笔记(4)-存储管理

文章目录引言(Introduction)存储管理器的体系结构存储管理器的主要任务读写元组过程外存管理元组在页面中的布局磁盘管理器VFD(Virtual File Descriptor)空闲空间映射表(Free Space Map)FSM page layoutFSM pagesAddressing可见性映射表(Visibility Mapping Table)TOAST(The Oversized-Attribute Storage Technique)Out-of-Line, On-Disk TOAST

2023-03-28 15:49:44 537

原创 PostgreSQL源码学习笔记(3)-进程结构

文章目录引言(Introduction)进程结构Postmaster守护进程初始化内存上下文注册信号处理函数配置参数创建监听套接字辅助进程启动装载客户端认证文件循环等待客户连接请求辅助进程SysLogger系统日志进程BgWriter后台写进程WalWriter预写式日志写进程PgArch预写式日志归档进程AutoVacuum系统自动清理进程PgStat统计数据收集进程Postgres服务进程DML执行流程参考资料(References)引言(Introduction)经过前面initdb初始化数据集簇

2023-03-28 15:32:49 482

原创 PostgreSQL源码学习笔记(2)-initdb数据集簇初始化

在前面一节中知道,PostgreSQL具有许多系统表与系统视图,这些资源是PostgreSQL数据库系统运行控制信息的来源,是数据库的核心组成部分。但在拷贝并编译PostgreSQL源码之后,还需要通过运行initdb命令初始化数据库。initdb命令是源码中提供的初始化数据库的二进制可运行文件,可以直接运行。初始化的步骤需要生成系统表,模板数据库和相应的目录、文件信息。本节主要介绍initdb的初始化数据集簇的过程。

2023-03-28 15:16:02 427

原创 PostgreSQL源码学习笔记(1)-文件结构

PostgreSQL采用C/S(Client-Server)模式,并将客户端称为前端(Frontend),服务器端称为后端(Backend)。Postgresql是一个跨平台开源且性能良好的关系型数据库,支持标准SQL,多版本并发控制等特性。本人为了增加对数据库原理的认识,特于此地进行记载。bin目录下主要包含了pgsql,initdb等各种工具的代码,而interface里面则存放PostgreSQL的C语言的库libpq。比较核心的代码是backend,bin,interface。

2023-03-28 15:11:01 434

原创 cJSON Note(4):转换字符串

文章目录引言(Introduction)1. 实例(Example)2. 源码(Source code)总结(Conclusion)参考资料(Reference)引言(Introduction)写在文章开头的一句话,怕什么真理无穷,进一步有一步的惊喜。在第三篇的字符串解析中,介绍了cJSON的源码是如何实现解析字符串对象为一个json结构的。本文将介绍cJSON是如何实现将json结构转化为字符串的,因为该部分源码比较长,所以可能有些地方有些错误,还望纠正。1. 实例(Example)在分析源码之

2022-01-19 11:23:18 2949 1

原创 cJSON Note(3):字符串解析

文章目录引言(Introduction)1. 实例(Example)2. 源码(Source code)3. 总结(Conclusion)参考资料(Reference)引言(Introduction)写在文章开头的一句话,不积硅步,无以致千里;不积小流,无以成江海。第二部分应用篇对于普通的应用场景已经足够了,但是还是缺少了字符串解析的功能,并且字符串解析也是cJSON中非常重要的模块。解析字符串只有几个函数,并且函数内容也比较简单,所以本文更注重其源码的实现。1. 实例(Example)在分析源码

2022-01-18 10:26:28 610

原创 cJSON Note(2):应用篇

文章目录引言(Introduction)编译(Compile)1. 创建对象(Create object)2. 添加数据(Add Data)3. 删除数据(Delete Data)4. 查找数据(Search Data)5. 更改数据(Update Data)总结(Conclusion)参考资料(Reference)引言(Introduction)写在文章开头,非淡泊不以明志,非宁静无以致远。在了解了JSON数据类型之后,可以开始使用cJSON进行处理json数据类型了。本文主要讲解cJSON中的创建

2022-01-13 22:20:27 298

原创 cJSON Note(1):JSON数据结构

文章目录引言(Introduction)1.JSON总体结构(overall structure)2.JSON数值结构(value structure)3.例子(example)4.总结(Conclusion)参考资料(Reference)引言(Introduction)写在文章开头的一句话。本文内容的参考资料在网上都能够找得到,本文仅代表笔者关于json的学习笔记。在介绍cJSON的使用与源码之前,特地根据cJSON的Github的介绍,前往json数据格式的介绍网站学习了一下json数据结构。根据

2022-01-13 21:02:29 344

原创 Tinyhttpd 学习笔记

文章目录Tinyhttpd1. 概要(Abstract)2. 实例(Example)3. 源码剖析(Source Code)mainstartupaccept_requestexecute_cgicolor.cgiserver_fileget_linecatheaderscannot_executeunimplementednot_foundbad_requesterror_die4. Makefile总结TinyhttpdTinyhttpd是J. David Blackstone在1999年写的微型

2022-01-12 19:41:18 650 1

原创 cMake简单示例

文章目录引言(Introduction)1. CMakeLists.txt2. An Example2.1 基础2.2 为项目添加版本号和可执行文件2.3 为工程添加链接库lib2.4 为库添加使用需求2.5 安装与测试2.6 系统自检2.7 增加用户命令并产生文件2.8 构建安装程序2.9 添加可视化仪表2.10 构建共享库总结(Conclusion)参考资料(Reference)引言(Introduction)根据百度百科的解释,CMake是跨平台的免费的开源的构建工具,可以用简单的语句来描述代码在

2022-01-10 21:33:52 2370

原创 第七章 进程环境

文章目录1. 引言(Introduction)2. 进程(Process)3. 进程在内存中(Process in Memory)4. 进程启动与终止(Process startup and terminate)4.1 进程启动(Startup)4.2 进程终止(Termination)5. 总结(Conclusion)参考资料(Reference)1. 引言(Introduction)本文是关于书籍《UNIX环境高级编程》(第三版)第7章关于进程环境的学习笔记,内容主要来源于《UNIX环境高级编程》

2021-09-18 11:15:31 170

原创 第六章 系统数据文件和信息

文章目录1. 引言(Introduction)2. 口令文件(Password File)3. 组文件(Group File)4. 其它文件(Other Files)5. 总结(Conclusion)参考资料(Reference)1. 引言(Introduction)本文是关于书籍《UNIX环境高级编程》(第三版)第6章关于系统数据文件和信息部分的学习。主要内容是关于UNIX系统中各个系统文件的相关信息。2. 口令文件(Password File)UNIX系统的口令文件也被称为用户数据库,主要用

2021-09-14 08:55:17 140

原创 第5章 标准IO库

文章目录1. 引言(Introduction)2. 标准I/O(Standard I/O)2.1 FILE,stream2.2 缓冲(buffer)2.3 打开流(Opening a stream)2.4 关闭流(Closing a stream)2.5 读和写流(Read and Write a stream)2.5.1 输入函数(Input function)2.5.2 输出函数(Output function)2.5.3 二进制I/O(Binary I/O)3. 文件I/O VS 标准I/O(File

2021-09-13 11:23:08 112

原创 第四章 文件和目录

文章目录1. 引言2. 文件类型3. 文件权限3.1 用户与组3.2 权限查看3.3 SUID,SGID3.4 进程访问文件权限的过程4. 文件系统4.1 文件系统的功能4.2 磁盘分区与挂载4.3 文件存储结构5. 总结参考资料1. 引言本文主要记载Unix文件类型与文件权限的相关内容,资料主要来源于《Unix环境高级编程》(第三版)与网上的一些资料。本文仅代表笔者对Unix文件类型与权限的浅薄认识,如有错误,欢迎指正。2. 文件类型“万物皆为文件”在Unix或者Linux中,几乎所有的东西

2021-09-13 07:46:13 120

原创 第三章 文件IO

文章目录Unix 文件I/O1. 引言(Introduction)2. 文件描述符(File Descriptor)3. I/O Functions3.1 open and openat Functions3.2 close Function3.3 lseek Function3.4 read Function3.5 write Function4. 文件共享(File Sharing)5. 其它函数(Other Functions)5.1 dup and dup2 Functions5.2 sync,fs

2021-09-08 09:01:01 105

原创 apue.3e环境配置

文章目录Unix环境高级编程(第3版)环境搭建1. 预准备2. 配置步骤3. 遇到的错误与解决方法3.1 -lbsd not find3.2 devrdev.c:(.text+0xc5): undefined reference to `minor'3.3 ‘FILE’ {aka ‘struct _IO_FILE’} has no member named ‘__pad’; did you mean ‘__pad5’?3.4 undefined reference to 'err_quit'3.5 注意事项

2021-09-08 08:52:57 1080

原创 C++错误之路:conversion from ...const_iterator ... to non-scalar type ... requested

目录Contents出错代码bug原因分析修改方法1修改方法2版权声明出错代码#include <vector>#include <map>#include <iterator>using namespace std;template <typename T>void print1DVec(const vector<T>& vec){ typedef typename vector<T>::iterat

2021-09-02 17:04:05 4730

原创 Anaconda常用命令

目录ContentsAnaconda常用命令1. 引言(Introduction)2. 管理conda3. 管理Python环境3. 管理Python包4. 参考资料版权声明Anaconda常用命令本文主要记载了Anaconda的常用命令,包括Anaconda的版本查询,虚环境创建等。1. 引言(Introduction)Anaconda是一个开源的Python发行版本,其包含了conda,Python等多个科学包及其依赖项。特别是Anaconda上虚环境的使用,能够很好地管理多个版本Pytho

2021-08-28 09:04:44 73

原创 GCN学习笔记

目录Contents图卷积网络(Graph Neural Networks)1. 引言(Introduction)2. 图的基础知识(Basic Theory)3. 频域图卷积(Spectral Convolution)3.1 拉普拉斯矩阵分解(Laplacian Matrix Decomposition)3.2 图的傅里叶变换(Graph Fourier Transform)3.3 图卷积之Spectral GCN3.4 图卷积之Chebyshev GCN3.5 图卷积之GCN4. 空间域图卷积(Spat

2021-08-19 18:09:30 426

原创 MySQL三大范式

设计数据库时需要遵从一定的规范,关系型数据库有六种规范,分别为第一范式(1NF),第二范式(2NF),第三范式(3NF),巴科-科德范式(BCNF),第四范式(4NF),第五范式(5NF)。通常遵从前三个范式就可以设计出比较规范的数据库了,所以这里只讲前面三种范式。第一范式:数据表中每一列都要保持其原子性,即列不能再分割;第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能只依赖主键的一部分(针对符合主键);第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖其它的非主键。...

2021-08-17 14:56:57 63

原创 MySQL索引

目录ContentsMySQL索引1. 引言2. 原理3. MySQL操作索引4. 索引的优缺点5. 总结版权声明MySQL索引本文主要记载了MySQL索引的原理与MySQL的索引使用,如有错误,欢迎纠正,共同进步。1. 引言索引是数据库表中一列或多列的值进行排序的一种结构,使用索引能够快速地访问数据库表的特定信息。索引的一个主要目标就是加快检索表格的数据。如果在没有添加索引,搜索特定的记录需要进行全表扫描,需要O(n)时间;而如果添加了索引,那么只需要lg(n)的时间。2. 原理索引的底层

2021-08-17 14:55:38 76

原创 MySQL事务

目录ContentsMySQL事务1. 引言2. 事务四大特性3. 事务三种模式4. 事务四大隔离5. MySQL操作事务6.总结版权声明MySQL事务本文主要讲述了MySQL事务的四大特性,三种工作模式与四大隔离级别,如有错误,欢迎纠正。1. 引言事务(Transaction)是一个最小的不可再分的工作单元,通常一个事务对应一个完整的业务逻辑,比如转账涉及两个账户的余额变化。一个完整的事务需要多个数据操作命令(DML)语句共同完成,并且只和DML有关。2. 事务四大特性事务具有四大特性(A

2021-08-17 14:45:14 46

原创 MySQL存储引擎

目录ContentsMySQL存储引擎1.引言2. MyISAM3. InnoDB4. MEMORY5. MySQL操作引擎6. 总结版权声明MySQL存储引擎本文主要记载了MySQL常用的三种存储引擎,如有错误,欢迎纠正。1.引言存储引擎(Storage Engine)是数据库在内容中存储数据(表)的一种技术。在SQL中使用到的存储引擎有9种,分别为MEMORY,MEG_MYISAM,CSV,FEDERATED,PERFORMANCE_SCHEMA,MyISAM,InnoDB,BLACKHOL

2021-08-17 14:40:09 74

原创 MySQL安装

目录Contents1. MySQL安装2. 初始化MySQL数据库3. 登录MySQL1. MySQL安装本文中安装的MySQL是在官网上下载的当时最新的版本(8.0.23)的压缩包。把压缩包解压,这里把压缩包解压到路径“E:\MySql”中,然后打开解压后文件夹“E:\MySql\mysql-8.0.23-winx64”,在该文件夹中创建my.ini 配置文件,编辑 my.ini 配置以下基本信息:[mysqld]port=3306basedir=C:\Program Files\MySQL

2021-08-17 11:15:18 58

原创 SQL命令模板

目录ContentsSQL命令模板1. 数据查询命令1.1 简单查询:1.2. 条件查询:1.3. 排序查询:1.4. 分组查询:1.5. 综合查询:1.6. 子查询(嵌套查询)1.7. 连接查询1.8. 其它语法1.9. 数据处理函数2. 数据定义命令2.1. 操作数据库、表格或用户2.2. 约束2.3. 添加索引3. 数据操作命令4. 数据控制命令5. SQL总结版权声明SQL命令模板MySQL是通过SQL来对数据库进行增删查改等操作的。SQL按照其功能可以划分为以下四种:DQL:数据查询语

2021-08-17 11:05:40 458

原创 关系型数据库与非关系型数据库的区别

目录Contents关系型数据库与非关系型数据库区别(SQL VS NoSQL)1. 引言(Introduction)2. 关系型数据库(NoSQL)2.1. 基本概念(Basic Concept)2.2. 优点(Advantage)2.3. 缺点(Disadvantage)2.4. 常见的关系型数据库(Normal SQL)3. 非关系型数据库(NoSQL)3.1. 基本概念(Basic Concept)3.2. 优点(Advantage)3.3. 缺点(Disadvantage)3.4. 常见的非关系数

2021-08-13 16:13:34 8733

原创 CNN学习笔记

目录ContentsCNN(Convolutional Neural Network)1. 引言(Introduction)2. 为什么使用CNN(Why CNN?)3. CNN组成模块(CNN Module)3.1 卷积层(Convolutional Layer)3.1.1 一般卷积(Normal Conv)3.1.2 扩张卷积(Padding Conv)3.1.3 转置卷积(Transpose Conv)3.1.4 可分离卷积(Separable Conv)3.1.5 空间卷积(3D Conv)3.1.

2021-08-11 10:46:42 300

原创 Why Deep笔记

目录ContentsWhy Deep?1. 前言(Introduction)2. 模型拟合(Model Fit)3.参数结构(Parameters Structure)4. 功能模块(Function Model)5. 总结(Conclusion)版权声明参考资料(Reference)Why Deep?本文是笔者关于机器学习中神经网络关于网络深度与广度的一个思考,同时也涉及了一些网络的可解释性的内容。本文只是笔者对于神经网络的浅薄认识,如有错误,欢迎指出,共同进步。1. 前言(Introducti

2021-08-09 23:10:29 247

原创 优化器学习笔记

目录ContentsOptimizer1. 前言(Introduction)2. 优化器(Optimizer)2.1 梯度下降(Gradient Descent,GD)2.2 批量梯度下降(Batch Gradient Descent,BGD)2.3 随机梯度下降(Stochastic Gradient Descent, SGD)2.4 小批量梯度下降(Mini-Batch Stocha Gradient Descent)2.5 动量梯度下降(SGD with Momentum, SGDM)2.6 Nest

2021-08-07 16:58:58 129

原创 回归函数学习笔记

目录ContentsRegression1.前言(Introduction)2.基本原理(Principle)3.建模(Model)4.模型评价(Model Estimation)5.模型修正(Model Modify)6.模型误差来源(Source of Model Error)7.总结(Conclusion)8.参考资料(Reference)Regression本文是笔者对机器学习中碰到的回归方法的一个总结,主要参考了网上的一些资料与李宏毅老师的视频。本文只是笔者对于回归问题的浅薄认识,如有错误,

2021-08-06 13:21:35 1176

空空如也

空空如也

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

TA关注的人

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