More than code

More Than Code
The efficiency of your iteration of reading, practicing and thinking decides your understanding of the world.
未分类

async_simple Coroutine

async_simple Coroutine 简单看看async simple的coroutine的实现。 async_simple的coroutine是通过Lazy<T>实现的,即每一个Coroutine的返回值都是Lazy<T>,然后我们可以通过co_await Lazy来等待一个coroutine的返回值。 所以这里要关注的有两个点,一个是Lazy是怎么开始执行一个coroutine的,即关注Lazy的promise_type,另一个就是在coroutine内去co_await一个La…

2023年4月23日 0条评论 733点热度 5人点赞 sheep 阅读全文
rocksdb

RocksDB WAL概览

WAL 简单看一下RocksDB的WAL SyncWAL 接口处有一个叫SyncWAL的函数,作用是把当前的日志同步到盘上。 相关的数据结构有一个deque<LogWriterNumber>,以及一个锁叫做log_write_mutex_。 其中LogWriterNumber中保存了log filter number,log writer,一个标识当前日志正在进行Sync的标记,以及pre_sync_size,代表在调用Sync之前的已经写入当前日志的数据大小,这里注释是说这个值会被记录在Manifes…

2023年4月16日 0条评论 770点热度 0人点赞 sheep 阅读全文
未分类

async_simple Future/Promise 概览

async_simple Future/Promise 概览 简单看看async_simple的Future/Promise。注意这里不会关注coroutine/uthread部分 Future/Promise这块和folly,以及seastar的接口都是类似的,之后可以再写一下他们实现上的区别。 简单来说,就是Promise可以获取一个对应的Future,对应生产者和消费者。然后Future可以通过then(Func &&func)来创建一个continuation,表示在这个future获取到结…

2023年4月16日 0条评论 714点热度 0人点赞 sheep 阅读全文
rocksdb

RocksDB WritePath概览

RocksDB WritePath概览 简单过一遍RocksDB前台的写链路。 忽略这些,从下面的第一张写链路图开始看。。 DB::Put 没给CF的话会用DefaultCF 构造一个WriteBatch,把key,value,以及column family塞进去 这里有个Comparator的timestamp size,还不知道是干啥的 DBImpl::Write 先走到没有Callback的版本 然后有一堆InvalidArg的检查。disable memtable先不看,pipelined write先不看…

2023年4月5日 0条评论 548点热度 0人点赞 sheep 阅读全文
database

LevelDB Recover

LevelDB Recover 过一遍LevelDB的Recover流程。 DB::Open DBImpl::Recover 给当前的db上锁。防止有什么并发的OpenDB之类的。 看看有没有CurrentFile,没有的话打开一个新的DB。 VersionSet::Recover 读取Current,找到Manifest文件。 读取Manifest,重放VersionEdit。 如果Manifest过大,或者是重新将Manifest文件通过Append的方式打开的时候失败了,就会放弃Reuse Manifest。…

2023年4月4日 0条评论 508点热度 0人点赞 sheep 阅读全文
database

LevelDB Read

LevelDB Read 读链路主要分为两个,一个是点读,一个是RangeScan。 点读的接口是Get DBImpl::Get ref住当前的mem table,immmutable mem table,以及version 先读mem table,再读immutable memtable,最后调version->Get() 读完后更新统计信息,可能触发SeekCompaction Unref 读MemTable的时候会构建LookupKey。这是因为写入MemTable的时候会用一个varint作为leng…

2023年4月4日 0条评论 456点热度 0人点赞 sheep 阅读全文
database

LevelDB Compaction

LevelDB Compaction Compaction分为MinorCompaction和MajorCompaction。我们就直接叫Flush Memtable和Compaction SST。 LevelDB的Immutable memtable只能由一个。Flush Memtable优先级比较高,因为会影响前台写链路。 Flush memtable的调用点为CompactMemTable()。有两个调用点,不过都是后台线程做Compaction,所以不会出现并发Compaction的情况。 调用链路如下: …

2023年4月4日 0条评论 451点热度 0人点赞 sheep 阅读全文
rocksdb

RocksDB-1 HyperClockCache

RocksDB-1 HyperClockCache 接口 目前有两类Cache。分别是LRUCache,以及HyperClockCache。(还有一个CompressedSecondaryCache,注释中写是experimental的,就不看了。) 两种CacheOptions都会继承一个ShardedCacheOptions,说明都是分shard的cache 比较有意思的是RocksDB支持一个叫SecondaryCache的东西,是在In-memory Cache和磁盘层中间的又一层Cache,有点Cache…

2023年2月19日 0条评论 802点热度 1人点赞 sheep 阅读全文
其他

2022年终总结

年终总结这个玩意确实有点难写,有点写周报的感觉,站在年底往回看,基本回忆不出太多自己干了什么事,可能这也和干的事大多意义不大以及比较琐碎有关了。 这里从几个纬度回忆一下自己22年的经历,捋一捋脉络,看看22年自己在这些方面有什么变化,对比一下之前的做法,看看那里需要改进,也希望给23年找出一点启发了。 这过程有点类似梯度下降?设定好损失函数,就朝着这个目标不断优化自己,过程中也要加上点随机性,不然掉到了一些局部最优点自己也不知道,就呆在自己的舒适圈里自嗨了。所以抓住大体的方向,感觉到梯度不够的时候,可以适当的莽撞一…

2023年1月21日 4条评论 902点热度 3人点赞 sheep 阅读全文
database

Innodb-1 Linkbuf

Innodb-1 Linkbuf 代码主要在innobase/include/ut0link_buf.h中 link buf的作用在注释中有写到 Link buffer - concurrent data structure which allows: concurrent addition of links single-threaded tracking of connected path created by links limited size of window with holes (missing l…

2022年9月28日 0条评论 607点热度 0人点赞 sheep 阅读全文
1…7891011…29
分类
  • ARTS
  • C++
  • CSAPP
  • daily
  • database
  • leetcode
  • linux
  • ml
  • nlp
  • paper
  • rocksdb
  • rust
  • ScummVM
  • tech
  • 其他
  • 周报
  • 未分类
  • 笔记
  • 算法
  • 计算机图形学
归档
  • 2025 年 5 月
  • 2025 年 4 月
  • 2025 年 3 月
  • 2025 年 2 月
  • 2025 年 1 月
  • 2024 年 12 月
  • 2024 年 10 月
  • 2024 年 9 月
  • 2024 年 8 月
  • 2024 年 7 月
  • 2024 年 6 月
  • 2024 年 5 月
  • 2024 年 4 月
  • 2024 年 3 月
  • 2024 年 2 月
  • 2023 年 12 月
  • 2023 年 11 月
  • 2023 年 9 月
  • 2023 年 7 月
  • 2023 年 6 月
  • 2023 年 5 月
  • 2023 年 4 月
  • 2023 年 2 月
  • 2023 年 1 月
  • 2022 年 9 月
  • 2022 年 7 月
  • 2022 年 6 月
  • 2022 年 5 月
  • 2022 年 4 月
  • 2022 年 3 月
  • 2022 年 2 月
  • 2022 年 1 月
  • 2021 年 12 月
  • 2021 年 11 月
  • 2021 年 10 月
  • 2021 年 9 月
  • 2021 年 8 月
  • 2021 年 7 月
  • 2021 年 6 月
  • 2021 年 5 月
  • 2021 年 4 月
  • 2021 年 3 月
  • 2021 年 1 月
  • 2020 年 12 月

COPYRIGHT © 2021 heavensheep.xyz. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS