More than code

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

leveldb-4 Log

Log 这一次来看看日志,参考文章在这里 leveldb不提供事务,所以我们不必记录undo log来保证事务原子性。但是需要提供redo log来保证数据是持久化的。 每次写入write batch到memtable之前,要先将操作写入到日志中。保证写操作在之后是可以redo的。 在将memory db冻结成为immutable memory db后,对应的日志文件也会被冻结。然后通过minor compaction将immutable memory db写入成SSTable后,冻结的log就可以被删除。因为他对…

2022年6月18日 0条评论 648点热度 0人点赞 sheep 阅读全文
未分类

leveldb-3 Read

Read 这次参考的文档还是读写操作。主要看一下读的过程 在db_impl.cc中的Get是读的核心逻辑 如果选项中确定了要读的snapshot,我们就拿到这个sequence number,否则的话就获得最新的sequence number 目前还没有仔细看version的结构,但是根据代码大概可以看出来。我们拿到当前活跃的memtable,不可变的immtable。增加他们的refcnt。这样可以防止我们在访问这个数据结构的时候他被其他线程删除掉。 先尝试从memtable中读。如果成功的话就返回了。 否则的话…

2022年6月18日 0条评论 580点热度 0人点赞 sheep 阅读全文
未分类

leveldb-2 Write

Write 还是跟着leveldb handbook去看代码。这次主要是读写操作 主要是走马观花的看一下写操作的实现。 写操作对应的接口主要是Put和Delete 他们都对应了batch中的一个数据 Put会包含Key和Value,而Delete则只含有Key 他们都会调用Write来进行写入 leveldb同一时刻只允许一个写入操作将内容写入到日志以及数据库中。为了减少日志文件的写入,同时增加整体的写入性能。leveldb会将若干个小写入合并为一个大写入。 将当前的Write追加到writers中。然后等待。这里…

2022年6月17日 0条评论 607点热度 1人点赞 sheep 阅读全文
paper

Efficiently Compiling Efficient Query Plans for Modern Hardware

Efficiently Compiling Efficient Query Plans for Modern Hardware Abstract 这个Abstract写的很清楚。现有的iterator model在执行的时候对locality,以及instruction prediction利用率很差。导致执行性能比不上hand-written的代码。即便是有vectorized tuple processing,只能缓解这个问题,但是性能还是不够。 本文提出了一种基于LLVM框架的将query翻译成机器码的方法。…

2022年6月17日 0条评论 635点热度 0人点赞 sheep 阅读全文
未分类

leveldb-1 Overall

Overall 开始看leveldb的代码。leveldb整体代码量不多,所以读起来应该不会很困难。并且有比较完善的leveldb handbook。读得时候要多加考虑他的设计因素。 这次从doc中的index看一下整体的概念。文档在这里 #include <cassert> #include "leveldb/db.h" leveldb::DB* db; leveldb::Options options; options.create_if_missing = true; leveldb::Statu…

2022年6月16日 0条评论 631点热度 1人点赞 sheep 阅读全文
未分类

brpc-15 bthread_id

bthread_id 这里的bthread id不是标识bthread的identifier,而是用于同步的一种数据结构 我们之前在channel中看到过他,用来做同步的brpc brpc中也有相关的文档 这么看他的名字叫rpc id更合适一些 这里粘一下文档的东西 bthread_id包括两部分,一个是用户可见的64位id,另一个是对应的不可见的bthread::Id结构体。用户接口都是操作id的。从id映射到结构体的方式和brpc中的其他结构类似:32位是内存池的位移,32位是version。前者O(1)时间定…

2022年6月15日 1条评论 853点热度 2人点赞 sheep 阅读全文
daily

Daily C/C++ piecewise_construct

piecewise_construct 之前就被piecewise construct折磨住过。后来重新看一下发现其实在cppreference中写的很明白了 piecewise constuct实际上就是一个empty class tag,他的作用就是为函数添加一个可重载的参数,从而避免歧义 The overloads that do not use std::piecewise_construct_t assume that each tuple argument becomes the element of …

2022年6月14日 0条评论 640点热度 0人点赞 sheep 阅读全文
未分类

brpc-14 Channel

Channel 这一次看看channel 之前我就画过这个图。channel的作用就是从client向server发送请求。核心方法就是CallMethod。 然后请求到server的时候会被event dispatcher拿出来,然后调用Process,即切割数据并处理。 因为brpc是基于protobuf这个框架的,所以他的channel base是继承自protobuf的RpcChannel Weight表示的是权重。不同类型的channel有不用的权重 而protobuf的RpcChannel的定义则更为简…

2022年6月14日 0条评论 636点热度 0人点赞 sheep 阅读全文
未分类

brpc-13 Socket

Socket bthread相关的基本上结束了。这次重新看一下socket 在官方文档中有说,Socket的作用是让我们可以在多线程环境下使用fd。我个人的理解就是要多线程使用需要两点,引用计数+锁。SocketID的作用类似弱引用指针,我们可以通过SocketID来获取对应socket的unique ptr。并且SocketID可以作为epoll的data,而weak ptr不可以。并且shared ptr和weak ptr不能阻止后续的引用。如果一个server要退出时,不断的有请求到来,那么引用计数可能迟迟不…

2022年6月13日 0条评论 584点热度 0人点赞 sheep 阅读全文
未分类

brpc-12 ExecutionQueue

ExecutionQueue execution queue在brpc中已经有相关的文档。就在execution_queue.md中 可以看到这个execution queue最开始是实现多线程向同一个fd写数据。之前我们已经看到过他相关的机制了。就是通过原子交换来获得所有权。 execution queue的任务在另一个单独的线程中执行。并保证执行顺序和提交顺序一致。同时支持多线程并发提交任务。(这里的提交就是插入) 这个execution queue是泛型的,可以创建多个不同类型的execution queue…

2022年6月13日 0条评论 651点热度 0人点赞 sheep 阅读全文
1…1213141516…31
分类
  • Agent/RAG
  • ARTS
  • C++
  • CSAPP
  • daily
  • database
  • leetcode
  • linux
  • ml
  • nlp
  • paper
  • RL
  • rocksdb
  • rust
  • ScummVM
  • tech
  • 其他
  • 周报
  • 未分类
  • 笔记
  • 算法
  • 计算机图形学
归档
  • 2025 年 12 月
  • 2025 年 11 月
  • 2025 年 10 月
  • 2025 年 9 月
  • 2025 年 8 月
  • 2025 年 7 月
  • 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