Calvin's Marbles


  • 首页

  • 关于

  • 归档

  • 标签

  • 搜索

Redis事务的实现

发表于 2021-03-23

本文详细介绍Redis事务的实现,以及涉及到主从复制的情况。由于持久化涉及Redis文件系统RIO,所以也会对RIO进行介绍。
这是Redis源码分析的系列文章的第四篇,前三篇分别是

  1. Redis底层对象实现原理分析
  2. Redis Sentinel实现原理分析
  3. Redis持久化机制实现
阅读全文 »

MySQL查询

发表于 2021-03-15

本文介绍MySQL InnoDB下索引、查询的实现以及优化。

阅读全文 »

MySQL锁

发表于 2021-03-14

本文介绍MySQL InnoDB下锁的实现以及优化。

【未完待续】

阅读全文 »

Redis持久化机制实现

发表于 2021-03-13

Redis持久化机制包括AOF和RDB两种:

  1. RDB保存二进制形式的数据库快照。
  2. AOF以协议文本的方式,记录数据库写入的指令。

本文详细介绍这两种方式的实现,以及涉及到主从复制的情况。由于持久化涉及Redis文件系统RIO,所以也会对RIO进行介绍。
作为Redis源码分析的系列文章,本文使用的版本和Redis底层对象实现原理分析、Redis Sentinel实现原理分析等文章是相同的。

阅读全文 »

长沙攻略

发表于 2021-01-12

长沙游记

阅读全文 »

Bash介绍

发表于 2021-01-06

介绍Bash

阅读全文 »

Paxos算法

发表于 2021-01-06

本文介绍Paxos算法,包含Basic Paxos,以及Raft作者提出的一个Multi Paxos的工程化实现方案。此外,我们还就Raft作者给出的Paxos习题进行探讨。

阅读全文 »

GCC 和 GLIBC编译

发表于 2020-12-13

GCC 是 C 和 C++ 的编译器,GLIBC 是 C 库,两个是不同的 Repo。编译顺序是先 GCC 再 GLIBC,这是因为编译 GLIBC 时对 GCC 的版本有要求。

阅读全文 »

pthread_rwlock库的实现

发表于 2020-12-11

pthread_rwlock系列函数是pthread库的读写锁函数。随着版本的不同,它的实现也不同。
本篇的组织是:

  1. 前置知识
    1. GCC的扩展内联汇编
    2. Futex
  2. 2.17和2.30两个版本的lowlevellock的实现
  3. 2.17和2.30两个版本的pthread_rwlock的实现
    我们的结论是:
    旧版GLIBC使用lowlevellock实现pthread_rwlock;
    新版GLIBC使用原子操作实现pthread_rwlock。
    因此具有不同的ABI
阅读全文 »

V8引擎编译

发表于 2020-11-21

本文介绍在一个较老的环境下编译V8引擎,并全静态地链接到既有的游戏服务上。原因是我们必需一个很新的JS引擎,从而能支持WebAssembly。经过调研,我们认为使用V8是最好的。
我们的游戏服务使用GCC4.4.6,这是一个非常老的版本,甚至不能完整支持C++11标准,而即使是很老版本的V8都需要完整的C++11支持(GCC 4.8+);进一步地最新版本的V8需要C++14标准的支持,这不仅体现在v8.h中出现了诸如std::remove_cv_t的C++14的标准库函数,还体现在C++14标准编译出来的库也没办法直接和原游戏的目标文件进行链接。因此我们的方案是将游戏中对V8强依赖的模块升级成C++14标准,主要步骤如下:

  1. 从源码构建GCC和GLIBC
  2. 从源码构建V8静态库v8_monolith.a
  3. 将V8静态库、libc++、GLIBC和游戏模块全静态链接
阅读全文 »
1…91011…26
Calvin Neo

Calvin Neo

253 日志
156 标签
RSS
GitHub Twitter Weibo
Links
  • xqq
  • wenwen
  • zyyyyy
© 2015 - 2025 Calvin Neo   Hosted by Coding Pages
版权声明
由 Hexo 强力驱动
主题 - NexT.Muse