基于ucontext的协程

ucontext是glibc下的组件,用来管理程序执行的上下文,重点是四个函数:

1
2
3
4
5
#include <ucontext.h>
int getcontext(ucontext_t *ucp);
int setcontext(const ucontext_t *ucp);
void makecontext(ucontext_t *ucp, void (*func)(),int argc, ...);
int swapcontext(ucontext_t *oucp, const ucontext_t *ucp);

在使用ucontext封装c++风格的轻量级协程的过程中,主要是干下面几件事:

Read more »

扁平事务

由begin开始,其中的操作是原子的,要么都执行,要么都回滚。

  • 缺点:代价大,若中间某个条件不满足,需要全部回滚。
    Read more »

表结构


如图所示,Innodb表结构由表空间,段,区,页组成。
默认所有数据在共享表空间ibdata1.

Read more »

B+树索引

  • 聚集索引
  • 非聚集索引(辅助索引)
  • Cardinality
    • 获取B+树叶子节点的数据,记为A
      随机获得B+树索引中8个叶子节点。统计每个页不同记录的个数,分别记为P1,P2…P8
      计算cardinality = (P1+P2+…P8)A/8
      Read more »

孤儿进程

  • 基本概念:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。
    Read more »

匿名管道

适用场景:在父子线程间传递信息。
核心是pipe函数,创建了全双工的两个文件描述符。下图来自APUE十五章。

Read more »