03 2022 档案
摘要:3.1 信号在网线和集线器中传输 所有的包在传输到目的地的过程中都是独立的, 相互之间没有任何关联 网卡中的 PHY( MAU) 模块负责将包转换成电信号, 信号通过 RJ-45 接口进入双绞线 ,然后到达集线器,(但是在传输的过程中信号会衰减,正是因为使用的是双绞线,才能抑制噪声)当信号到达集线器
阅读全文
摘要:2.1 创建套接字 像浏览器、 邮件等一般的应用程序都是使用 TCP 收发数据的, 而像 DNS 查询等收发较短的控制数据的时候则使用 UDP。 IP 协议控制网络包收发操作的部分 ICMP 用于告知网络包传送过程中产生的错误以及各种控制消息 ARP 用于根据 IP 地址查询相应的以太网 MAC 地
阅读全文
摘要:1、了解SQL 数据库是一个以某种有组织的方式存储的数据集合 ,保存有组织的数据的容器(通常是一个文 件或一组文件)。 表是一种结构化的文件,可用来存储某种特定类型的数据 模式(schema) 关于数据库和表的布局及特性的信息 主键(primary key) 一一列(或一组列),其值能够唯一区分表中
阅读全文
摘要:1.1 生成HTTP请求消息 URL实际上除了“http:”开头, 网址还可以以其他一些文字开头, 例如“ftp:”(下载和上传文件)“file:”(读取客户端计算机本地文件)“mailto:” (发送电子文件)等 浏览器要做的第一步工作就是对 URL 进行解析, 从而生成发送给 Web服务器的请求
阅读全文
摘要:一、comparator.c分析 抽象类,有两个类继承他BytewiseComparatorImpl、InternalKeyComparator 函数功能: FindShortestSeparator(std::string* start,const Slice& limit):如果*start<*
阅读全文
摘要:一、db_impl.cc分析 调用WriteLevel0Table把Memtable落盘,在VersionEdit存储新增文件信息 遍历Memtable,调用TableBuilder::Add把key_value写入文件 调用Finish 调用sync把缓冲区强制写入磁盘 生成SST文件 为新的SS
阅读全文
摘要:一、SST文件结构分析 其中data block/filter block/meta_index block称之为 x block index block:每个key_value表示一个index entry,指向一个data block,key为data block中最大的key,value为8字
阅读全文
摘要:一、log_writer.h分析 功能:可以将随机写的IO变成Append,极大提高了写磁盘速度;可以防止数据丢失 日志文件的名称由6位数字编号和log后缀组成 xx.log 日志文件格式: header放在buf中:crc(4字节)、length(2字节)、RecordType(1字节) 函数功能
阅读全文
摘要:〇、前置知识 写数据时分两步:1、将数据追加到日志中;2、将数据插入到内存数据库 sequenceNumber:leveldb数据存放形式是LSM,以追加的形式存储,相同key时以seqnumber来确定先后关系 write操作要记录到log文件中的格式为: 几种类型的key: user_key:用
阅读全文
摘要:一、skiplist.h(跳表)分析 用户只需要处理写冲突,leveldb跳表保证没有读写冲突。函数功能如下: Insert(): FindGreaterOrEqual():保存搜索的路径pre[],找到要插入的节点 KeyIsAfterNode():返回值bool,key是否大于n的数据 Rand
阅读全文
摘要:一、slice.h string都封装成了slice 支持的方法有:构造、拷贝构造、赋值、clear()、empty()、size() remove_prefix(n):指定长度前缀移除 starts_with(x):是否是以x开始 compare(x):返回值0/-1/1 二、hash.h 是Mu
阅读全文
摘要:一、概括 基本组件:接口方法、参数、数据存储、迭代器(遍历表)、string(自定义的,因为c++自带的拷贝花销大)、锁、状态信息(返回值) leveldb使用的是小端模式 功能:对外提供四个接口:put\delete\write\get 解决了什么问题:内容持久化、顺序读写 leveldb写流程:
阅读全文

浙公网安备 33010602011771号