代码高亮与 Markdown 进阶排版

计算机专业术语对照 A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z A Word Meaning Abstract Factory 抽象工厂 Abstract Factory Pattern 抽象工厂模式 abstraction layer 抽象层 access 获取,存取 access modifier 访问修饰符 acoustic coupler 声音耦合器 Active Directory 活动目录 Acyclic Dependencies Principle 非循环依赖原则(ADP) acyclic digraph 有向无环图 Adapter 适配器 Adapter Pattern 适配器模式 Adaptive Code 自适应代码 Add Parameter 添加参数 ADSL Asymmetrical Dingital Subscriber Loop,非对称数字用户环线 affinity 绑定 affinity group 地缘组 agent 代理 agent-based interface 代理人界面 Aggregate 聚合 Aggregate Root 聚合根 Agile 敏捷方法论 agile practice 敏捷实践 agile process 敏捷流程 agility 敏捷性 AI Artificial Intelligence,人工智能 air waves 无线电波 algorithm 算法 Algorithm-of-Thought 思维算法(AoT) 6 analog 模拟的 animation 动画 annotation 注解,注释 answering machine 电话应答机 antenna 天线 anti-pattern 反模式 AoT 思维算法(Algorithm-of-Thought) 6 APM 异步编程模型(Asynchronous Programming Model) Apocalyptic defect 灾难缺陷 application 应用,应用程序,应用软件 application life cycle 应用程序生命周期 application pool 应用程序池 Application Programming Interface 应用程序编程接口(API),目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。 Application Service 应用服务 arbitrary error 任意错误 architecture 体系机构,结构 architecture decay 架构腐坏 Architecture Style 架构风格 ARPA Advanced Research Projects Agency,(美国国防部)高级研究计划署 ARPAnet ARPA 网 Arrange-Act-Assert 准备-执行-断言(AAA) artifact 构建物4 ASF Apache Software Foundation 的简写 Aspect-Oriented Programming 面向切面编程(AOP) aspect ratio 屏幕高宽比 assembly 程序集 associative array 关联数组 Asynchronous Programming Model 异步编程模型(APM) ATM asynchronous transfer mode,异步传输模式 atomic operation 原子操作 atomic transaction 原子事务 atomicity 原子性 attribute 特性(C#)、属性(Java 等) augmented reality 增强实现(AR) authentication 身份验证 authorization 授权 auto-generated properties 自动生成的属性 automated unit testing 自动化单元测试 automation 自动化 autonomous 独立性 auxiliary database 辅助数据库 availability 可用性 availability set 可用性集 AZs 可用性区域(Availability Zones,亚马逊 AWS 中数据中心的叫法)4 B Word Meaning BaaS Battery as a Service,电池即服务(电池租用商业模式) Backend as a Service 后端即服务(BaaS) backpane 底板 backward compatibility 向后兼容性 bandwidth 带宽 bar code 条形码 Base Class Library 基类库(BCL) baseline 准线 baud 波特 BCL 基类库(Base Class Library) bear 熊 behavior 行为 behavior preserving program transformations 行为保留式程序转换1 Behavioral Design Patterns 行为性设计模式 Behavioral error 行为错误 BERT Bidirectional Encoder Representations from Transformers,谷歌公司的 LLM,对 NLP 研究产生了重大影响。该模型使用双向方法从一个词的左右两边捕捉上下文,使得各种任务的性能提高,如情感分析和命名实体识别。 BFF 为前端服务的后端(Backends For Frontends)4 BFS 广度优先搜索 Big Ball of Mud 大泥球(BBM) big data 大数据 Big Design Up Front 大优先设计(BDUF) binary 二进制的 binochlar 双目并用的 bit 比特 Bit-field 位域 bitnik 比特族 blob BLOB block 阻断 block blob 块 BLOB Blockchain as a Service 区块链即服务(BaaS) bottleneck 瓶颈 bounded context 边界上下文、界限上下文4 box 装箱 bps bits per second,比特/秒 Brainstorming 头脑风暴(脑暴) BRD 商业需求文档(Business Requirements Document) breakpoint 断点 Bridge 桥接 Bridge Pattern 桥接模式 broadcast (无线电或电视)广播 Broken Hierarchy 支离破碎的层次结构2 Broken Modularization 拆散的模块化2 brownfield project 行进中项目 Browser Object Model 浏览器对象模型(BOM) browser-server 浏览器-服务器 bug 缺陷 Builder Pattern 建造者模式 built-in 内置的,内建的;嵌入的;内置 bulkhead 舱壁4 business intelligence 商业智能,将企业中现有的数据进行有效的整合,快速准确地提供报表并提出决策依据,帮助企业做出明智的业务经营决策。 business layer 业务层 business logic layer 业务逻辑层 Business Requirements Document 商业需求文档(BRD) busy (status) 忙(状态);繁忙(状态) byte 字节 C Word Meaning cable 电缆 Cache/Caching 缓存 call stack 调用堆栈 callout box 标注框 camelCase camel 大小写 canary releasing 金丝雀发布4 carbon copy 复写本,副本;抄送(CC) carriage return 回车 Cascading Style Sheets 层叠样式表(CSS) catastrophic failover 灾难性故障转移4 CD 持续交付(Continuous Delivery)4 CDC 消费者驱动的契约(Customer-Driven Contract)4 CDN 内容分发网络(Content Delivery Network) cell 单元 cellular telephone 移动电话 Central Processing Unit 中央处理器(CPU) certificate (数字)证书 Certificate Authority 证书认证机构 Chain of Responsibility 责任链 Chain of Responsibility Pattern 责任链模式 Chain-of-Thought 思维链(CoT) 6 Chain-of-Thought-Self-Consistency 思维链自洽性 6 Change Bidirectional Association to Unidirectional 将双向关联改为单向关联1 Change Point 修改点:需要往代码中引入修改的点 Change Reference to Value 将引用对象改为值对象1 Change Unidirectional Association to Bidirectional 将单向关联改为双向关联1 Change Value to Reference 将值对象改为引用对象1 channel 信道,频道 character 字符 Characterization test 特征测试:描述软件某部分的当前行为的测试,当你修改代码时能够用来保持行为 check in 签入 check out 签出 checksum 校验和 chip 芯片 choreography 协同 CI 持续集成(Continuous Integration)4 cipher 密码 claim 声明 class definition 类定义 Clean Object-oriented and Layered Architecture 整洁面向对象分层架构(COLA) CLI 公共语言基础结构(Common Language Infrastructure) client-server 客户端-服务器 clone 克隆,复制 cloud computing 云计算 cloud service 云服务 CLR 公共语言运行时(Common Language Runtime) CLS 公共语言规范(Common Language Specification) cluster 集群 clustered index 聚集索引 co-occurring smells 同时出现的坏味2 CoAP 受限应用协议 coaxial cable 同轴电缆 COBIT 信息和相关技术的控制目标,Control Objectives for Information and Related Technology4 CoC 更改开销(Cost of Change) code smell 代码味道 COLA 整洁面向对象分层架构,Clean Object-oriented and Layered Architecture Collapse Hierarchy 折叠继承关系1 comcurrency 并发 command 命令 Command Pattern 命令模式 command prompt 命令行提示 Command/Query Responsibility Segregation 命令/查询职责分离(CQRS) Command/Query Separation 命令/查询分离(CQS) commingled bits 混合的比特 communication 通信 community 社区 committed 已提交(的) Common Intermediate Language 公共中间语言 Common Language Infrastructure 公共语言基础结构(CLI) Common Language Runtime 公共语言运行时(CLR) Common Language Specification 公共语言规范(CLS) Common Type System 公共类型系统(CTS) common name 通用名称 compatibility 兼容性 Competing Consumer pattern 消费者竞争模式4 compile-time correctness checking 编译时正确性检查 Component Object Model 组件对象模型(COM) Composability 组合性 composite formatting 复合格式化 Composite Pattern 复合模式、组合模式 concurrency conflicts 并发冲突 concurrency mode 并发模式 conditional compilation 条件编译 conditional compilation statement 条件编译语句 configuration 配置,设置 connection string 连接字符串 Consolidate Conditional Expression 合并条件表达式1 Consolidate Duplicate Conditional Fragments 合并重复的条件片段1 consistency 一致性 constructor 构造函数 container 容器 Container As A Service 容器即服务(CaaS)4 content 内容 context 上下文 context map, 上下文映射图 上下文地图 5 Context Mapping 上下文映射 5 contextual keyword 上下文关键字 continuous integration 持续集成 contribute 贡献 Contributor License Agreement 贡献者许可协议 convention 约定 covariance 协变 contravariance 逆变 convert 转换 Convert Procedural Design to Objects 将过程化设计转化为对象设计1 cookie Cookie copy-on-write 写时复制 core 内核;....

2024年12月02日 · 17 min · Leanku

一个 HTTP 请求的并发链路:从 Web Server 到 MySQL

一个 HTTP 请求的并发链路:从 Web Server 到 MySQL 前面的文章分别讨论了并发是什么、进程线程协程如何执行请求、IO 多路复用如何管理大量连接,以及如何用 QPS、并发数和响应时间衡量系统。 但这些概念真正进入后端系统之后,会形成一条完整的链路: Client ↓ Web Server / Nginx ↓ Application ↓ Process / Thread / Coroutine ↓ Redis / RPC / MySQL ↓ Response ↓ Client 真正的高并发问题,通常也不是发生在某一个组件上,而是发生在整个链路的容量不匹配上。 例如: Web Server 可以接收 10000 个连接,应用可以运行 1000 个协程,但 MySQL 连接池只有 50 个连接。 这并不意味着系统只能处理 50 个 HTTP 请求,但意味着同时进行数据库操作的请求最多受到这 50 个连接的约束。 因此,理解高并发,不能只看 Web Server 或应用服务器,而要沿着一次请求完整地看下去。 1. 一个 HTTP 请求到底经过哪些组件? 假设用户访问: GET /api/orders/10001 一个典型后端系统可能经过: ┌──────────┐ │ Client │ └────┬─────┘ │ HTTP ▼ ┌──────────────┐ │ Nginx / Web │ │ Server │ └──────┬───────┘ │ ▼ ┌──────────────────┐ │ Application │ │ Hyperf / Java....

2024年07月10日 · 5 min · Leanku

高并发到底是什么?从 QPS、并发数到响应时间

高并发到底是什么?从 QPS、并发数到响应时间 什么才叫高并发? 很多时候我们会看到: 支持 1000 并发 支持 10000 QPS 支持百万级并发 这些数字看起来很直观,但实际上: 1000 并发 1000 QPS 1000 个连接 1000 TPS 完全不是同一个概念。 如果不区分这些指标,就很容易在性能测试和系统设计中得出错误结论。 1. “高并发”到底是什么意思? “高并发”并不是一个严格固定的数字。 例如: 1000 QPS 对于一个简单的内部管理系统,可能已经非常高。 但对于大型互联网服务,这个数字可能非常普通。 因此: 高并发是相对于系统规模、业务模型和资源能力而言的概念,而不是一个固定阈值。 更准确地说,高并发关注的是: 大量请求 ↓ 在较短时间内 ↓ 同时进入系统 ↓ 系统仍然能够稳定处理 这里至少涉及三个维度: 请求到达速度 请求同时存在的数量 请求完成速度 对应到性能指标,就是: QPS / RPS 并发数 响应时间 / 吞吐量 因此,讨论高并发时,不能只说: “我们的系统能扛 10 万并发。” 还应该继续问: 什么类型的请求? 多少 QPS? 平均 RT 多少? P99 多少? 请求是否访问 MySQL? 数据库连接池多大? CPU 利用率多少? 内存多少? 否则这个“10 万并发”几乎没有实际意义。...

2024年07月03日 · 5 min · Leanku

IO 多路复用:一个线程为什么可以同时处理大量 HTTP 请求?

IO 多路复用:一个线程为什么可以同时处理大量 HTTP 请求? 我们知道,一个 Web 服务同时面对大量 HTTP 请求时,并不一定需要: 1000 个请求 ↓ 1000 个线程 对于 IO 密集型服务,更常见的做法是让执行单元在等待网络 IO 时不要一直阻塞,然后利用事件机制处理其他连接。 这就引出了一个非常重要的概念: IO 多路复用(I/O Multiplexing)。 它是理解 Linux 网络服务器、Nginx、Node.js、Swoole、Hyperf 等高并发网络程序的基础。 1. 先从一个 Socket 开始 一个 HTTP 服务器,本质上需要处理大量网络连接。 例如服务器监听: 0.0.0.0:80 客户端建立 TCP 连接后,操作系统会为连接提供对应的 Socket。 可以简单理解为: Client A ─── Socket A ──┐ Client B ─── Socket B ──┤ Client C ─── Socket C ──┤ Client D ─── Socket D ──┤ ▼ Web Server 假设现在有: 10000 个 TCP 连接 服务器需要解决一个问题:...

2024年06月20日 · 6 min · Leanku

进程、线程、协程:后端服务到底是怎么处理并发请求的?

进程、线程、协程:后端服务到底是怎么处理并发请求的? 在上一篇 《理解并发:一个 HTTP 请求到后端到底发生了什么?》 我们从一个 HTTP 请求出发,理解了并发最基本的概念: HTTP 请求 ↓ Web Server ↓ 后端服务 ↓ CPU / IO ↓ MySQL / Redis / RPC ↓ HTTP 响应 但这里留下了一个非常重要的问题: 后端服务到底由谁来执行这些请求? 如果同时来了 1000 个 HTTP 请求,服务器是不是创建 1000 个进程? 如果不是,是不是创建 1000 个线程? 如果也不是,那么一个线程又是怎么处理大量请求的? 要回答这些问题,就必须理解后端程序最核心的三个执行概念: 进程 线程 协程 1. 先建立一个整体认识 可以先把三者理解成三个不同层次的概念: 进程 │ ├── 线程 │ │ │ ├── 协程 │ ├── 协程 │ └── 协程 │ └── 线程 但这里有一个需要特别注意的地方: 协程并不是操作系统进程或线程的同级概念。 进程和线程主要属于操作系统调度与资源管理层面;协程通常是由运行时、语言、框架或用户态库提供的更轻量级执行机制。 因此:...

2024年06月17日 · 5 min · Leanku

理解并发:一个 HTTP 请求到后端到底发生了什么?

理解并发:一个 HTTP 请求到后端到底发生了什么? 在开发后端系统时,我们经常会看到这样的描述: “这个接口支持 1000 并发。” 但“1000 并发”到底意味着什么? 是不是意味着服务器同时启动 1000 个线程? 是不是意味着 CPU 同时执行 1000 个请求? 如果一个请求正在等待 MySQL,CPU 又在做什么? 一个 PHP/Hyperf 服务为什么可以同时处理大量 HTTP 请求? 要真正理解高并发,不能一开始就从 QPS、限流、缓存这些概念入手,而应该先理解一个最基本的问题: 一个 HTTP 请求进入后端以后,到底发生了什么? 1. 先理解什么是并发 并发(Concurrency)描述的是: 多个任务在同一个时间段内处于进行状态,并且它们的执行过程存在交错。 并发和并行(Parallelism)不是同一个概念。 例如: 任务 A:████████ 任务 B: ████████ 两个任务都在进行,但可能只有一个 CPU 核心。 CPU 可以先执行 A: A A A A 然后因为 A 正在等待 IO,转而执行 B: A A → 等待 ↓ B B B B 这属于并发。 如果机器有多个 CPU 核心: CPU Core 1:A A A A CPU Core 2:B B B B 两个任务可以在同一时刻真正执行,这才是并行。...

2024年06月10日 · 5 min · Leanku

WebSocket 详解:实时双向通信是如何实现的?

WebSocket 详解:实时双向通信是如何实现的? 前面几篇分别介绍了 TCP/IP、Socket、HTTP 和 HTTPS。 到这里,一个问题自然出现了: HTTP 已经可以完成客户端和服务器之间的通信,为什么还需要 WebSocket? 因为传统 HTTP 的基本模型是: Client │ │ Request ▼ Server │ │ Response ▼ Client 如果服务器想主动通知客户端,就比较麻烦。 例如: 用户收到新消息 订单状态发生变化 股票价格发生变化 游戏状态发生变化 服务器有数据更新,但客户端没有主动发请求。 传统方案只能不断: Client → Server:有新消息吗? Server → Client:没有 Client → Server:有新消息吗? Server → Client:没有 Client → Server:有新消息吗? Server → Client:有 这就是轮询。 WebSocket 的目标就是解决这类问题: Client ⇄ Server 建立连接之后,双方都可以主动发送数据。 RFC 6455 将 WebSocket 定义为一种基于 TCP 的双向通信协议,协议由连接建立握手和数据帧传输两部分组成。 1. WebSocket 到底是什么? WebSocket 是一个应用层通信协议。 它建立在 TCP 之上:...

2023年09月16日 · 7 min · Leanku

HTTPS 详解:TLS 如何保护 HTTP 通信?

HTTPS 详解:TLS 如何保护 HTTP 通信? HTTP 解决的是: 客户端和服务器如何表达请求与响应。 但如果直接使用 HTTP: Client ─────── HTTP ───────> Server 网络上的中间节点理论上可以看到通信内容,甚至可能篡改数据。 例如登录请求: POST /login HTTP/1.1 Content-Type: application/json { "username": "tom", "password": "123456" } 如果通信没有加密,用户名、密码以及响应内容都可能暴露。 因此 Web 中通常使用: HTTPS = HTTP + TLS TLS 位于 HTTP 与底层传输之间,为上层应用提供安全通信能力。 TLS 的目标主要包括: 机密性 完整性 身份认证 TLS 1.3 规范明确将建立安全信道、认证通信对端以及保护应用数据作为核心目标。需要注意的是,TLS 1.3 的 RFC 8446 已被 RFC 9846 更新,因此实际学习和实现时应同时关注最新规范。 1. 为什么需要 HTTPS? 先看一个最简单的 HTTP 请求: Client │ │ HTTP │ username=tom │ password=123456 ▼ Server 假设客户端与服务器之间经过:...

2023年09月10日 · 6 min · Leanku

HTTP 详解:一次请求背后发生了什么?

HTTP 详解:一次请求背后发生了什么? 在 Web 开发中,HTTP 几乎无处不在。 浏览器访问一个页面,前端调用一个 API,PHP、Java、Go 服务之间进行 RPC,下载文件,提交表单,这些场景背后都可能使用 HTTP。 但很多开发者真正理解的 HTTP 只是: GET /users POST /login 200 OK Content-Type: application/json 如果继续往下追问: 浏览器输入一个 URL 后,到底发生了什么? 就会涉及 DNS、TCP、TLS、HTTP、连接复用、请求报文、响应报文、缓存等多个环节。 理解这些内容之后,很多常见问题都会变得容易: 为什么第一次请求比较慢? 为什么 HTTP/1.1 需要 Keep-Alive? HTTP/2 为什么能够同时处理多个请求? Cookie 和 Session 到底是什么关系? 304 是什么意思? 为什么 API 经常返回 401、403、404、409? HTTPS 到底保护了什么? HTTP 和 Socket、TCP 又是什么关系? 本文从一次实际请求开始,把这些概念串起来。 1. HTTP 到底是什么? HTTP(Hypertext Transfer Protocol,超文本传输协议)是一个应用层的请求/响应协议。 它的核心模型非常简单: Client │ │ HTTP Request ▼ Server │ │ HTTP Response ▼ Client 客户端发送 Request,服务端返回 Response。...

2023年08月01日 · 7 min · Leanku

Socket 详解:应用程序如何进行网络通信

Socket 详解:应用程序如何进行网络通信 上一篇《TCP/IP 详解:理解互联网通信的基础》文章介绍了 TCP/IP。 我们知道: 应用层 ↓ TCP / UDP ↓ IP ↓ 网络 TCP/IP 负责完成网络通信,但应用程序并不会直接操作 TCP 报文或者 IP 数据包。 应用程序通常通过操作系统提供的 Socket API 来使用网络能力。 因此,如果 TCP/IP 是网络通信的基础,那么 Socket 就是: 应用程序进入网络世界的接口。 对于后端开发来说,理解 Socket 非常重要。 HTTP Server、MySQL、Redis、RPC、WebSocket,以及各种 TCP 长连接服务,底层都离不开 Socket。 1. Socket 到底是什么? Socket 通常翻译为“套接字”。 它不是一个网络协议,而是一种网络通信接口和抽象。 应用程序可以通过 Socket: 创建通信端点 绑定地址 建立连接 发送数据 接收数据 关闭连接 例如 TCP 服务端的典型流程: socket() ↓ bind() ↓ listen() ↓ accept() ↓ read() / write() ↓ close() 客户端则通常是:...

2023年07月18日 · 6 min · Leanku