CRTP 在多继承中的妙用

多态是 C++ 面向对象编程的一个重要并且非常常用的特性,我们可能基于 Base 类实现了 Derived1 和 Derived2 类。根据开发的需求,我们可能继续分别派生 Derived1 和 Derived2 到 Derived1_A 和 Derived2_A 类。如果此时我们有了新的接口需求,但不能修改 Base 类(比如我们的开发准则不允许我们改动这部分代码,况且 Derived1 和 Derived2 也不需要这个接口),因此只能新增一个 Interface 接口类来为 Derived1_A 和 Derived2_A 提供新的接口。此时问题就出现了,如果 Interface 的实现中,我们可能需要访问到 Base 类中的成员变量,那么如何实现呢?最直观的想法是为 Derived1_A 和 Derived2_A 分别实现 Interface,但是有很多实现可以共用,我们没必要写重复的代码,但是 Interface 类本身又无法访问到 Base 类的成员(不能让 Interface 继承 Base,这样 Derived1_A 与 Derived2_A 多继承时就存在问题),该怎么办呢?此时 CRTP 就可以发挥它的妙用了。

发布于 编程开发

TiDB Flashback 之 MVCC Query 的实现思路

有幸和 @disking 与 @JmPotato 两位哥哥一同参加了今年(2021)TiDB 社区举办的 Hackthon。我们的项目简单来说就是基于 TiDB 的 MVCC 的特性实现一些新的功能。项目的 RFC 文档:https://github.com/Long-Live-the-DoDo/rfc 。

发布于 编程开发

TinySQL 实现笔记

原项目:https://github.com/tidb-incubator/tinysql 我的实现:https://github.com/RinChanNOWWW/tinysql-impl TInyKV 之外的另一个 PingCAP incubator 的项目,实现一个微型 TiDB,即 TinySQL。正好十月中旬要参加 OB 的比赛,做这个刚好可以了解了解数据库 SQL 层的一些东西,这些在 CMU 15-445 的实验中没怎么深入。虽然 TiDB 的存储层是 KV 的形式,但是总体上的思想应该都大同小异。与之前 TinyKV 一样,这个文章用来做个笔记。

发布于 编程开发

TinyKV 实现笔记

原项目:https://github.com/tidb-incubator/tinykv 我的实现:https://github.com/RinChanNOWWW/tinykv-impl PingCAP incubator 的项目,实现一个微型 TiKV(以及 PD)。在此文章中记录一下开发中的值得注意的点。 最后更新:2022-06-16

发布于 编程开发

ruborute 开发日志

作为一个 SDVX 玩家,有一天在水群的时候看到了一位群友发了一下自己做的统计得分数据的脚本,于是催生了自己做一个查分器的想法。于是就有了 ruborute 这个项目。它的读音为 “Are you 暴龍天(ぼるて, borute)?”。我打算用这个文章来记录我在开发过程中思路。

发布于 编程开发

C++ 类型萃取

最近在网上冲浪的时候注意到了 <cmath> 中 sqrt 这个求平方根的函数。与 C 语言中的不同,C++ 将它重定义为了模板函数。在使用过程中我发现,这个函数的模板特化只能用整数类型,如果是其他类型,则会编译报错。

发布于 编程开发

File System Access API:简化访问本地文件

原文章:https://web.dev/file-system-access/ 原作者:Thomas Steiner(@tomayac)已同意转载。

发布于 编程开发

使用 Chrome 浏览器连接 USB 设备

使用 Chrome 浏览器连接 USB 设备的一些总结。

发布于 编程开发