0%

实际工程中,可能会遇见这样的场景:

一个词典,在 C++ 里实现为一个 class。它的生命周期从进程启动开始到进程杀死结束。这个词典很大,所以在多线程工作的时候,希望在全局共享一份。

现在的问题是,进程可能持续跑很长时间,比如跑几个月。在进程执行过程中,这个词典可能会更新。于是我需要重新载入词典。要求线程安全并且高效地做这个重新载入的工作。

今天我们来设计一下,要怎样实现它。

阅读全文 »

单例模式是最简单的设计模式之一。在实际工程中,如果一个类的对象重复持有资源的成本很高,且对外接口是线程安全的,我们往往倾向于将其以单例模式管理。

此篇我们在 C++ 中实现正确的单例模式。

阅读全文 »

使用 macOS 时,Apple 自家的 XCode Command Line Tools 基本上很难绕开。比如你想用 Homebrew 安装点什么东西,它都会依赖 XCode CLT。

比较不幸地是,如果你更新了 macOS,那你就得重新安装 XCode。如果你重新安装 XCode,那么匹配版本的 CLT 也得重新安装。更为不幸的是,最近使用 xcode-select --install 安装 CLT,经常失败。遂起了手动安装的念头。

摸索后步骤如下:

  • Apple 家官网:https://developer.apple.com/download/more/
  • 以 Apple ID 登录
  • 在搜索框搜索 Command Line Tools
  • 打开你 macOS 上的 XCode,检查其版本号
  • 下载对应版本的 Command Line Tools 镜像(*.dmg
  • 从镜像里手工安装