Rust 中的 | (竖线) 符号

Rust 中的 | 用途比较多,这里做一个简单的整理。

模式匹配中的“或”模式 (Pattern Alternatives)

在模式匹配(如 match 语句或 if let 表达式)中, | 可以用来表示多个模式的组合:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
fn process_keypress(&mut self) -> Result<(), std::io::Error> {
    let pressed_key = read_key()?;

    if let Key::Ctrl('q') | Key::Ctrl('x') = pressed_key {
        self.should_quit = true;
    }

    // 和下面这句等价:
    match pressed_key {
        Key::Ctrl('q') | Key::Ctrl('x') => self.should_quit = true,
        _ => (),
    }

    // ...

    Ok(())
}

闭包参数

在 Rust 的闭包中, 我们在两个 | 之间定义闭包的参数:

Doom Emacs 的基本用法

安装

1
2
git clone --depth 1 https://github.com/doomemacs/doomemacs ~/.config/emacs
~/.config/emacs/bin/doom install

环境变量

执行 doom env 命令,可以 dump 一份当前的 shell 环境变量,Doom 启动时会加载该环境变量。如果你的环境变量配置发生变化(例如修改了 PATH 配置),则应该重新执行一次该命令。

深度学习笔记:理论基础

深度学习和神经网络

深度学习是一种实现机器学习的技术,而神经网络是实现深度学习的基本结构。

具体来说:

  1. 神经网络:

    • 神经网络是一种模仿人脑处理信息方式的计算系统。它由大量的节点(神经元)组成,这些节点通过层次结构相互连接。
    • 神经网络可以是浅层的(少数层),也可以是深层的(多层)。浅层神经网络常用于较简单的模式识别和数据分类任务。
  2. 深度学习:

设计模式:创建型 (Creational)

设计模式总目录请参考:设计模式所支持的设计的可变方面

抽象工厂 (Abstract Factory)

意图

提供一个接口以创建一系列相关或相互依赖的对象,而无须指定它们具体的类。

案例

前面在依赖倒置原则中,其实已经举过一个贴纸的例子,其实就是抽象工厂模式的一个应用。

除了对 ProductFactory 进行抽象以外,抽象工厂方法还强调了​产品系列​的概念。比如《设计模式》一书中经典的例子,支持多种视感(look-and-feel)标准的用户界面,不同的视感风格为诸如滚动条、窗口和按钮等用户界面『窗口组件』定义不同的外观和行为。而某个特定视感风格下的一系列『窗口组件』,就是一个产品系列。我们不应该在 Motif 风格的窗口组件中,混入一个 PM 风格的窗口组件。