tantan的博客

Notes, ideas, and observations

#0. 摘要

Spanner 是 Google 公司研发的、可扩展的、多版本、全球分布式、同步复制数据库。它是第一个把数据分布在全球范围内的系统,并且支持外部一致性的分布式事务。本文描述了 Spanner 的架构、特性、不同设计决策的背后机理和一个新的时间 API,这个 API 可以暴露时钟的不确定性。这个 API 及其实现,对于支持外部一致性和许多强大特性而言,是非常重要的,这些强大特性包括:非阻塞的读、不采用锁机制的只读事务、原子模式变更。

本文转发自 推荐系统再思考:从机器学习到深度学习,作者 lessmore,时间:2023-03-12

再次回到推荐系统方向的工作, 相比几年前 2018/19 很多认知出现了变化,对我来说很有意义,写出来作为记录也分享给大家。

io_uring 是 Linux 内核 5.1 版本引入的异步 I/O 框架,

#原理

#类型修饰类

  • std::add_const_t<T>: 为类型 T 添加 const 修饰符。

  • std::add_volatile_t<T>: 为类型 T 添加 volatile 修饰符。

  • std::add_cv_t<T>: 为类型 T 添加 const 和 volatile 修饰符。

  • std::remove_const_t<T>: 移除类型 T 的 const 修饰符。

  • std::remove_volatile_t<T>: 移除类型 T 的 volatile 修饰符。

  • std::remove_cv_t<T>: 移除类型 T 的 const 和 volatile 修饰符。

  • std::add_lvalue_reference_t<T>: 为类型 T 添加左值引用修饰符。

  • std::add_rvalue_reference_t<T>: 为类型 T 添加右值引用修饰符。

  • std::remove_reference_t<T>: 移除类型 T 的引用修饰符。

  • std::remove_extent_t<T>: 移除类型 T 的数组维度。

  • std::remove_all_extents_t<T>: 移除类型 T 的所有数组维度。

  • std::remove_pointer_t<T>: 移除类型 T 的指针修饰符。

  • std::add_pointer_t<T>: 为类型 T 添加指针修饰符。

  • std::make_signed_t<T>: 将类型 T 转换为有符号类型。

  • std::make_unsigned_t<T>: 将类型 T 转换为无符号类型。

dlmalloc 是一个 C 语言实现的流行的内存分配器实现,由纽约州立大学 Oswego 分校计算机系教授 Doug Lea 在 1980 年代编写,许多人称之为 Doug Lea 的 malloc,或者简称 dlmalloc。

关于 Doug Lea

Doug Lea 是计算机科学领域的知名学者,尤其在内存管理和并发编程方面有着深厚的造诣。他的研究工作对操作系统、编程语言和计算机体系结构等领域产生了深远的影响。

Doug Lea 曾经是 JCP(Java Community Process)委员会委员,参与了 JSR 166(Java Concurrency Utilities)的设计和实现。他的工作为 Java 的并发编程模型奠定了基础。

今天来读经典。

Dynamo 是 Amazon 在 2007 年发表于 SOSP 的 K-V 存储系统。作为电商领域的巨头, Amazon 较早面临巨大业务规模带来的技术挑战。 Dynamo 的技术方案在当时的分布式系统中是非常前沿的, 其设计思想和实现细节对后来的 NoSQL 系统产生了深远的影响。

SPDK 是 Intel 提出的一套用户态 NVMe SSD I/O 软件栈,其核心是使用用户态的 SSD 驱动绕过上下文切换的开销。

因为驱动程序放在用户态,自然也没法使用 Linux 的 FS 接口,配套地,SPDK 提供了 Blobstore​​ 和 ​​BlobFS​​ 接口。支持对接 MySQL、RocksDB、Ceph 等。

0%