kkdb 1 预览

1 基本介绍 要求 数据库基本原理 C语言 数据结构 操作系统 数据存储需求 数据存储方案 文件 excel 数据库 2 kkdb 成果展示 初始化 # 系统表 sys_class: 存储所有表 sys_attr: 存储所有列 dbinit ls ~/dbdata 基本语法 CREATE 输入:CREATE TABLE t1 (c1 INT, c2 TEXT); 语法解析:表名、列名、列数据类型 系统表:存储表信息、列信息 表文件:创建文件 INSERT 输入:INSERT INTO t1 VALUES (1, 'first') 语法解析:表名、列数据 数据处理:封装数据 表文件:写入数据 SELECT 输入:SELECT * FROM t1 语法解析:表名、列 表文件:读取数据 数据处理:解析数据 UPDATE DELETE DROP 并发访问 CS模式 服务器 dbserver start 客户端 dbclient 127.0.0.1 8888 SELECT * FROM t1; 服务器多线程 ...

January 21, 2025 · 2 min · 226 words · Me

tool.flex.词法解析工具

目录: 1 概述 2 flex 参考: 1 概述 需求 判断字符串,是否满足规定的规则。 示例 字符串: ‘abc’, ‘a1’, ‘a+’, … 规则: 字符串中只包含字母 编码: /* 省略 */ 问题: 复杂性:在字符串较长,规则繁多时,判断逻辑将会很复杂,编码工作量大 方案: 通过通用的正则表达式制定规则 通过很多开源或非开源的词法解析工具,实现判断逻辑。 正则表达式: [a-zA-Z]+ : 字符串中只包含字母 如此,我们仅需简单制定正则表达式,通过第三方词法解析工具实现判断逻辑。 2 flex 1 词法解析 词法解析工具有很多,本文仅介绍flex。 flex编写的规则文件,后缀为.l 2 编译流程 编写 [规则.l] 文件 通过flex,将 [规则.l] 文件,转换为 [规则.c] 文件 将 [规则.c] 文件,以其他文件一起,正常编译即可 3 文件格式 %{ /* include */ %} /* define */ %% rule {code();} %% void usercode() { yylex(); } 4 正则表达式 单字符 ...

January 21, 2025 · 2 min · 311 words · Me

tool.markdown.轻量级语言语法

说明:原始markdow语法见本文底部 目录: 标题:1 标题:1.1 标题:1.1.1 标题:1.1.1.1 标题:1.1.1.1.1 标题:1.1.1.1.1.1 加粗:test 横线:test 斜体:test 标题:1 标题:1.1 标题:1.1.1 标题:1.1.1.1 标题:1.1.1.1.1 标题:1.1.1.1.1.1 $~~$缩进 节点: a b ba 序号: a b c d 分割线 链接:点我 链接:[id] something something 图片:[![desc](/path/to/img.png)](http://www.baidu.com/ "desc") 引用: line 1 line 2 ada 代码func(int a, int b) 代码块: def func(int a, int b) { return 0; } def func(a, b): c = "abc" return a + b 表格: c1 c2 c3 1 2 3 2 2 3 html转换: ♥ 分页符: [========] abc 目录: 标题:1标题:1.1标题:1.1.1标题:1.1.1.1标题:1.1.1.1.1标题:1.1.1.1.1.1 加粗:**test** 横线:~~test~~ 斜体:*test* # 标题:1 ## 标题:1.1 ### 标题:1.1.1 #### 标题:1.1.1.1 ##### 标题:1.1.1.1.1 ###### 标题:1.1.1.1.1.1 $~~$ 节点: - a - b - ba 序号: 1. a 2. b 1. c 2. d 分割线 ------------ 链接:[点我](http://www.baidu.com "点我") 链接:[[id]][linkid] something something [linkid]: http://www.baidu.com 图片: [![desc](../../1.PNG)](http://www.baidu.com "desc") 引用: > line 1 > line 2 ada 代码`func(int a, int b)` 代码块: def func(int a, int b) { return 0; } def func(a, b): c = "abc" return a + b 表格: | c1 | c2 | c3 | | :- | -: | :-: | | 1 | 2 | 3| | 2 | 2 |3| html转换: ♥ 分页符: [========] abc

January 21, 2025 · 1 min · 188 words · Me

tool.webssh.网页版SSH工具

感谢 开源项目:https://gitee.com/careyjike_173/webssh

January 21, 2025 · 1 min · 2 words · Me

tool.yacc.语法解析工具

目录: 1 概述 1 概述 需求 判断语法是否正确

January 21, 2025 · 1 min · 7 words · Me

操作系统 1 总结

目录 架构 CPU 内存管理 进程线程 文件系统 目录 1 CPU结构 1.1 CPU结构 1.2 CPU寻址 2 内存管理 2.1 内存申请 2.2 内存寻址 3 进程管理 3.1 进程结构 3.2 进程调度 一、中断和异常 二、中断处理 三、系统调用 3.2 进程通信 3.3 锁 4 文件管理 5 设备管理 1 CPU结构 1.1 CPU结构 1.2 CPU寻址 5种寻址方式 直接寻址 : [1] 寄存器间接寻址 [bx] 寄存器相对寻址 [bx + 1] 基址变址寻址 [bx + si] 相对基址变址寻址 [bx + si + 1] 2 内存管理 2.1 内存申请 libc内部free list libc申请新逻辑页 内核使用伙伴算法,分配物理页,插入页表 ...

January 21, 2025 · 2 min · 349 words · Me

操作系统 2 原理

目录 架构 CPU 内存管理 进程线程 文件系统 目录 0 架构 0.1 OS功能 0.2 OS特征 0.3 OS结构 0.4 OS分类 1 CPU 1.1 CPU 结构 1.2 寄存器 1.3 汇编指令 1.4 程序 1.5 操作系统 2 内存管理 结构 3 进程线程 1.1 概述 2 进程通信 2.1 分类 2.1 代码 一 信号 二 信号量 (Posix) 三 消息队列 四 管道 五 共享内存 六 套接字 2.3 命令 4 文件系统 0 架构 0.1 OS功能 从资源管理角度划分: 进程/线程管理 内存管理 文件管理 设备管理 用户接口 0.2 OS特征 并发 共享 虚拟 随机:不可预测的事件,状态随机 0.3 OS结构 整体架构: ...

January 21, 2025 · 9 min · 1758 words · Me

计算机网络 1 总结

目录 整体架构 物理层 链路层 传输层 应用层 socket编程 目录 0 概述 0.1 七层体系结构 0.2 报文基本原理 1 应用层 1.1 HTTP协议 1.1.1 HTTP 结构 1.1.2 HTTP 应用 1.2 DNS 协议 2 传输层 2.1 TCP 2.1.1 TCP 的结构 2.1.2 TCP 的应用 3 网络层 3.1 IP 3.1 IP 协议 3.1.2 IP 路由 3.2 ICMP 4 链路层 4.1 链路层背景 4.2 链路层结构 4.3 链路层功能 4.4 链路层设备 5 物理层 6 socket编程 6.1 基本接口 5.2 阻塞模型 场景 一 阻塞IO 二 非阻塞IO 三 IO多路复用 - select() 主动检查 四 信号驱动IO 五 异步IO 5.3 IO多路复用 5.3.1 select() 5.3.2 poll() 5.3.3 epoll() 0 概述 0.1 七层体系结构 计算机网络使用自顶向下的多层网络结构: ...

January 21, 2025 · 9 min · 1748 words · Me

海量 10 设计 SSL协议

1 TLS协议支持第三方流量审计 1.1 功能简述 【需求背景】 TLS协议,是保障通信安全的加密协议,可分为4个子功能: 密钥生成:通过密钥交换或密钥协商等协议,让双方生成相同的密钥 身份认证:在开始阶段,双方均向对方发送自己的证书。双方接收证书后,基于PKI体系,校验证书是否合法。 数据加密:发送方发生数据前,使用密钥加密数据,发送数据密文。接受方接受密文后,使用密钥解密,获取数据。 数据校验:在加密数据的同时,生成数据完整性校验码,与数据密文拼接在一起。(简单理解:生成数据的哈希值,并使用密钥加密哈希值)接收方解密数据后,同样生成数据完整性校验码,与接收的相比,判断是否一致。 开源软件libssl.so提供TLS功能,应用只需调用接口,即可实现TLS协议。同时,libssl.so提供100+算法套件,可让应用选择不同的参数组合,1个算法套件,包含4个关键参数: 密钥生成:密钥生成协议 身份认证:证书算法类型 数据加密:加密算法类型 数据校验:哈希算法类型 例如,libssl.so中,常用的算法套件为:ECDHE-RSA-AES128-SHA256,该套件中,参数的含义如下: 密钥生成协议:ECDHE协议。(常见协议类型:DHE、ECDHE、RSA等) 证书算法类型:RSA 加密算法类型:AES-128 哈希算法类型:SHA-256 【需求分析】 vastbase支持TLS协议,当vsql与vastbase通信时,双方可使用TLS模块,生成密钥,并使用密钥加密、解密通信数据,包括:SQL语句、SQL执行结果等。 客户可能采用第三方工具,截取网络流量,获取传输中的SQL等数据,进行流量审计。但是,在使用TLS协议的情况下,网络中的数据是密文形式,无法进行流量审计。 vastbase提供1个GUC参数ssl_ciphers,用于配置TLS协议采用的算法套件,旧版本,该参数的取值范围如下: ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 DHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-ECDSA-SM4-CBC-SM3 4个仅tassl支持的国密算法套件 上述7个套件中,密钥生成协议为:ECDHE、DHE,此类DH协议,无法让第三方工具获取密钥。 本版本,新增4个算法套件: AES128-SHA256 AES256-SHA256 AES128-GCM-SHA256 AES256-GCM-SHA384 上述4个套件,密钥生成协议为:RSA,该协议可让第三方工具获取密钥,使其可解密网络流量,获取SQL语句、SQL执行结果等。 【需求实现】 之前,vastbase限制ssl_ciphers的取值范围,仅放开7个算法套件,本版本,将新增放开4个算法套件。 实现时,仅修改ssl_ciphers的取值范围,新增支持4个算法套件[AES128-SHA256、AES256-SHA256、AES128-GCM-SHA256、AES256-GCM-SHA384],4个算法套件将直接传递给libssl.so,内核不做任何处理。 因此,本需求无复杂设计。本文主要介绍完整的TLS协议工作原理。 1.2 实现方案 一、ECDHE与RSA的区别 此处简化ECDHE与RSA的步骤与算法,提取最核心的原理,方便快速理解。 一、ECDHE密钥协商协议 第三方工具、攻击者完全无法获取密钥。 client server +-------------------------------------------+----------------------------------- | <---- 0. 双方随机约定一些公开参数 ------> | | 1. 生成随机私钥 client_priv | 2. 基于client_priv,计算公钥 client_pub | 3. 发送公钥 client_pub ------------> | 4. 接收公钥 client_pub | 5. 生成随机私钥 server_priv | 6. 基于server_priv,计算公钥 server_pub <------------ | 7. 发送公钥 server_pub | 8. 接收公钥 server_pub | 9. 基于client_priv,server_pub,计算密钥 | 10. 基于server_priv,client_pub,计算密钥 (第9步和第10步,可以计算出相同的密钥) 简单举个例子 client server +-------------------------------------------+----------------------------------- | <----- 0. generate and send (2,11) ----> | | 1. generate 8 | 2. caculate (8 * 2) % 11 = 5 | 3. send 5 ----------> | 4. receive 5 | 5. generate 10 | 6. caculate (10 * 2) % 11 = 9 <------------ | 7. send 9 | 8. receive 9 | 9. key = (8 * 9) % 11 = 6 | 10. key = (10 * 5) % 11 = 6 攻击者:截获网络流量,获取2,11,5,9,无法计算出密钥为6 二、RSA密钥交换协议 ...

September 9, 2025 · 3 min · 579 words · Me

海量 10 需求 SSL协议

1 简介 1.1 目的 在应用与数据库传输数据时,为避免攻击者对数据进行窃听、篡改、伪造、重放等攻击,Vastbase支持采用TLS协议保障数据机密性与完整性。 通过TLS协议,应用传输数据指至服务端路程如下: 建立连接:与数据建立TCP连接 生成密钥(TLS):采用TLS协议协商生成密钥(连接级) 加密数据(TLS):使用密钥加密数据(SQL等) 发送数据:通过TCP协议,发送数据密文至数据库 客户可能采用第三方工具,截取网络流量,获取传输中的SQL等数据,进行流量审计。但是,在使用TLS协议的情况下,网络中的数据是密文形式,无法进行流量审计。为解决该问题,本文介绍如何让第三方工具获取密钥,以解密网络中的数据密文。 1.2 适用范围 本文适用于3.0.8 psu4以之后版本。未来本需求将同步至2.2.15版本。 1.3 术语定义、首字母缩写词和缩略语 SSL: Secure Sockets Layer,于保障网络通信安全的加密协议,早期协议,存在设计缺陷,目前由TLS协议替代。但是,SSL也可不特指SSL协议,可泛指所有通信安全加密协议。同时,由于历史原因,以及前向兼容,数据库中的很多参数与接口采用SSL命令,实际使用的是TLS协议。无需纠结TLS与SSL差异,vastbase中SSL等于TLS。 TLS: Transport Layer Security,更安全的传输加密协议。早期版本1.0,1.1已不安全,主流版本为1.2,1.3。 1.3 参考资料 原始需求:https://www.tapd.cn/tapd_fe/60475194/story/detail/1160475194001084569 openssl支持的所有cipers: https://docs.openssl.org/3.0/man1/openssl-ciphers/ ssl与tls原理:博客写了一点点,没整理 2 TLS协议支持第三方流量审计 2.1 功能简述 【需求现状】 目前,大部分第三方流量审计工具,可在一些特定场景下,解密由TLS协议加密后的数据。以vastbase为例,使用TLS协议分为以下阶段: 生成证书、私钥文件 vastbase端配置证书、私钥文件 vsql端配置证书、私钥文件 vsql连接vastbase 4.1 建立tcp连接 4.2 使用证书校验对方身份 4.3 双发协商选择算法套件:包括密钥生成协议、加密算法等 4.4 双方协商生成密钥 vsql与vastbase传输数据 5.1 发送数据前,使用密钥加密数据 5.2 发送数据密文 在4.3步骤中,可配置不同的密钥生成协议,对于其中一部分协议,在步骤4.4中,第三方工具可获取密钥,第步骤5.2中,第三方工具截取数据密文后,即可解密数据。 但是,4.3步骤中,目前vastbase仅支持2种密钥生成协议,这2种协议都无法让第三方工具获取密钥。 【密钥生成协议】 此处介绍2类常见的密钥生成协议: 一、DHE密钥协商协议 Vastbase目前支持的2种协议,都属于此类协议 client server +-------------------------------------------+----------------------------------- | <-------- 0. 双方随机约定一些参数 ------> | | 1. 生成随机私钥 client_priv | 2. 基于client_priv,计算公钥 client_pub | 3. 发送公钥 client_pub ------------> | 4. 接收公钥 client_pub | 5. 生成随机私钥 server_priv | 6. 基于server_priv,计算公钥 server_pub <------------ | 7. 发送公钥 server_pub | 8. 接收公钥 server_pub | 9. 基于client_priv,server_pub,计算密钥 | 10. 基于server_priv,client_pub,计算密钥 (第9步和第10步,可以计算出相同的密钥) 简单举个例子 client server +-------------------------------------------+----------------------------------- | <----- 0. generate and send (2,11) ----> | | 1. generate 8 | 2. caculate (8 * 2) % 11 = 5 | 3. send 5 ----------> | 4. receive 5 | 5. generate 10 | 6. caculate (10 * 2) % 11 = 9 <------------ | 7. send 9 | 8. receive 9 | 9. key = (8 * 9) % 11 = 6 | 10. key = (10 * 5) % 11 = 6 攻击者:截获网络流量,获取2,11,5,9,无法计算出密钥为6 二、RSA密钥交换协议 该协议支持第三方工具解密流量,客户选择的工具已适配该协议。TLS还支持其他PSK、SRP等协议,但是,由于这些协议比较少见,且客户选择的工具未适配,本次不适配其他协议。 ...

September 3, 2025 · 6 min · 1164 words · Me
心情不好的时候可以点一下 🐱
×
🤖 Doubao AI ×
Hi! 我是你的技术助手。关于代码、架构或 Bug,随时问我!🚀