跳到主要内容

技术术语集

· 阅读需 5 分钟
XingHunm
Tech Enthusiast

本文档收录开发、网络技术相关的重要术语定义。

1. 向后兼容(Backward Compatibility)

定义: "后"指的是以前的(老的)系统、程序或数据格式。

向后兼容也就是新版本的软件或系统能够运行**(兼容)旧版本**的程序、处理旧数据、支持旧接口。

1.1 示例:新浏览器支持老代码

// 这是 10 多年前的老代码
var name = "Alice";
function sayHi() {
alert("Hi " + name);
}
sayHi();

这个老代码可以在最新版本的 Chrome、Firefox、Edge 等现代浏览器中完美运行,因为:

  • 新浏览器仍然支持 varfunction 声明
  • 保留了旧语法、旧 API 的行为

结果: 新环境支持老代码 → 没问题

一句话总结: 新版本兼容旧版本

2. 向前兼容(Forward Compatibility)

定义: "前"指的是新的系统、程序或数据格式。

向前兼容也就是旧版本的软件或系统能够运行**(兼容)未来(或更新版本)**生成的程序、数据或接口。

2.1 示例:老浏览器不支持新代码

// 现代 JS 新特性
const sayHi = (name = "world") => {
console.log(`Hello, ${name}!`);
};
sayHi();

如果你把这段代码放到 IE10 或 IE11 浏览器里运行,会出现:

SyntaxError: Unexpected token '=>'

原因:

  • 老浏览器不认识箭头函数(=>
  • 也不支持默认参数 name = "world"
  • 甚至可能连 const 都不支持

结果: 老环境跑不了新代码 → 报错、崩溃、空白页

说明: 向前兼容几乎是不可能的,因为向前兼容意味着无法引入新的特性,比如新版 JS 的箭头函数,老程序是无法识别的。

一句话总结: 旧版本兼容未来新版本 (通常做不到)

3. shebang

定义: shebang(读作:sha-bang)是指 Unix/Linux 脚本开头的那一行:

#!/bin/bash

它告诉操作系统:用哪个解释器来执行这个脚本。

3.1 没有 shebang 会怎样?

  • 直接执行脚本: ./myscript.sh - 必须要有 shebang,否则系统不知道用哪个解释器
  • 指定解释器执行: bash myscript.sh - 系统用你指定的解释器(bash),shebang 就没用

4. 领域模型

领域模型就是把现实生活中的业务和规则,用一个“模型”画出来或描述出来,帮助我们理解和开发系统。

4.1 举个例子

假设我们要做一个网购系统:

  • 用户(User):买东西的人
  • 商品(Product):卖的东西
  • 订单(Order):用户买的东西
  • 地址(Address):送货地址

领域模型就是把这些业务概念和它们之间的关系画出来,比如:

用户(User) --> 下订单(Order) 订单(Order) --> 包含商品(Product) 订单(Order) --> 配送到地址(Address)

它告诉你:

  • 系统里有哪些“东西”(实体/值对象)
  • 它们怎么联系
  • 它们能做什么(业务规则)

4.2 通俗总结

  • 领域模型不是代码,不是数据库表,它是思维工具。
  • 作用就是让开发者和业务人员看懂系统在干什么。
  • 它帮你理清头绪:谁做什么、怎么做、有什么关系。
+-----------+
| 用户 |
| User |
+-----------+
|
| 下订单
v
+-----------+
| 订单 |
| Order |
+-----------+
/ \
/ 包含商品 \ 配送到
v v
+-----------+ +-----------+
| 商品 | | 地址 |
| Product | | Address |
+-----------+ +-----------+

交叉编译(cross compile)

在一台电脑上编译,但编译出来的程序是给另一种架构/系统 运行的。 例:在 x86_64 的 Ubuntu 上用 ARM 工具链 编译,生成的程序是跑在 ARM 开发板(比如树莓派、嵌入式板子)上的。

所以,交叉编译就是 “编译环境 ≠ 运行环境”。

幂等性

幂等性(Idempotence) 指的是:一个操作执行一次和执行多次的效果完全相同。

核心概念

在数学中,幂等函数满足:f(f(x)) = f(x) 例如:abs(abs(x)) = abs(x)

常见应用

HTTP 方法的幂等性

HTTP 方法幂等性说明
GET查询操作,结果一致
PUT更新到指定状态
DELETE删除资源,多次删除效果相同
POST创建操作,每次产生新资源

数据库操作

幂等操作:

UPDATE user SET age = 18 WHERE id = 1; -- 设置固定值
DELETE FROM user WHERE id = 1; -- 删除操作

非幂等操作:

UPDATE user SET age = age + 1 WHERE id = 1; -- 递增操作
INSERT INTO user (name) VALUES ('Bob'); -- 普通插入

为什么需要

  • 容错性:网络重试不产生副作用
  • 用户体验:防止重复点击产生多次操作
  • 业务安全:避免重复扣款、重复下单

原子操作

原子操作(Atomic Operation)指的是在计算机中不可分割的最小操作单元,它要么全部完成,要么完全不执行,不会被其他线程或进程的操作所中断。

特点

  • 不可中断性:一旦开始执行,就不会被操作系统调度器切走,也不会被其他线程打断。

  • 一致性:执行完后,结果对所有线程可见。

  • 最小粒度:是并发编程中保证数据正确性的重要手段。

  • 非原子操作:

int a = 0;
a = a + 1; // 这个过程可能被分解为三步:
// 1. 读取 a
// 2. 计算 a+1
// 3. 写回 a

如果两个线程同时执行,可能会出现竞争条件(race condition),导致最终结果不是期望的 2。

  • 原子操作:
std::atomic<int> a(0);
a.fetch_add(1); // 原子加一

在这里 fetch_add 保证整个加一过程是原子的,不会被打断。多个线程并发执行也能保证结果正确。