TiKV Coprocessor(1)

TiKV Coprocessor 和代码阅读 (报菜名)TiKV coprocessor 类似概念: MySQL 存储过程 HBase Coprocessor 的 Endpoint 以下参考这篇 blog 和对应的代码作出分析: TiDB 查询流程 TiDB table 存储格式 TiKV cop TiKV 源码 对于 TiKV 的 coprocessor,有下面两种概念: For Split, before the Region split requests are truly proposed, the split key needs to be checked if it

前端入门

现代前端入门SPA旧模式 服务端渲染 请求的是 Html 页面 用 jQuery 来完成对应的动态请求、页面操作 现代 SPA,加载的时候可能很耗时,但是切换页面的时候很快 Ajax 完成请求,通常是 JSON 格式 有框架,不需要手动对 DOM 操作,会把一定的东西加载到内存中,方便程序更改 ES5/ES6Js 新标准,可以用 babel 转化 (我打算直接学这个了 User Interface encourages that you write your HTML and CSS in your JavaScript instead. 声明式的转换状态,渲染组件 Function: p

协变和逆变

很多语言的类型系统都有子类型: C++ 允许 继承,但是并不是单根的对象结构 Java 和 C# 允许继承,默认从一个类似 Object 的对象开始继承 Rust 的生命周期有子关系 实际上这些说了跟白说一样,哈哈哈,那我们认真来说说: Variance类型有子类型的关系,但是这些关系涉及 容器、数组 这些东西的时候,事情肯定不太一样: Cat is an Animal 比如可以从 wiki 中找到: IEnumerable<Cat>是IEnumerable<Animal>的子类型,因为类型构造器IEnumerable<T>是协变的(covar

SOCY-151 Notes Lec-1 Introduction

Thomas Hobbes: 霍布斯 —> 利维坦英国人,牛津,受伽利略等人的科学影响,支持国王而反对国会,但是不讨喜。比较保守。 利维坦 1651年出版。 社会契约理论的奠基者、没有了政府的自然状态是“孤独、贫困、污秽、野蛮和短暂的” Main theme: in the state of nature people are evil. Order has to be imposed on them by all powerful sovereign, otherwise we would be in the state of war of every one against eve

LevelDB-Log

LevelDB 采取了 WAL 来做日志 在DBImpl::MakeRoomForWrite, 可以看到它也是与 memtable “伴生” 的: // REQUIRES: mutex_ is held// REQUIRES: this thread is currently at the front of the writer queueStatus DBImpl::MakeRoomForWrite(bool force) { mutex_.AssertHeld(); assert(!writers_.empty()); bool allow_delay = !force;

DataBase Notes: Storage

outline Relational Databases Storage Execution Concurrency Control Recovery Distributed databases Storage random sequential random read is important. mmap OK, some databases use it No, we cannot control the memory-disk ourself mmap + msync + madvise. IMDB, influxdb, sqlite, mongodb use it. Ag

.NET IL

这一个是同济大学-2019 .NET 程序设计的作业。 我们编写一个 Program.cs using System;namespace course_05{ // the function be applied to int delegate void FuncInt(int var); class Program { private int privateInt; public int publicInt; private static Program instance; event

Static Analyze Tool: Clang Static Analyze

这是同济大学 2019春软件测试的作业,我把涉及的东西放到这里。 Clang Static AnalyzerThis folder use clang analyze to do static code analyze. And we use both valgrind to test the correctness of clang analysis. The code is used to test the bug or code style, so the code maybe dirty, un-safe and obey the coding style. You can see

x86 和模拟

先放张 CMU 的 CSAPP 的图 这张图很好的讲了我们编程和机器即语言处理的东西的不同。我无意介绍 x86 的抽象。这里根据这个 slides 讲讲:https://pdos.csail.mit.edu/6.828/2018/lec/l-x86.pdf e一个 x86-64 的 CPU 包含 16个存储64bits的通用寄存器,我们通常拿这 64 bits 拆开了用: bits name 64 r_x 32 e_x 16 _x 8(高位) _h 8 _l CSAPP P120 有这个寄存器的表 cs ip 可以表示指令寄存器,call ret jmp

LevelDB的Low io

首先看看 include/leveldb/env.h 的描述 // An Env is an interface used by the leveldb implementation to access// operating system functionality like the filesystem etc. Callers// may wish to provide a custom Env object when opening a database to// get fine gain control; e.g., to rate limit file system opera