计算机术语速查手册
2542字约8分钟
2022-10-23
工作中时常会遇到产品或其他同学询问一些计算机术语,例如上次有个开发跟我对接某接口时,说给我传输了图片的 「base64编码」串,我需要先解码后使用...
我当然可以很熟练地在封装好的代码中直接输入Base64.getDecoder().decode(encodedString)
顺利交差,但是话说回来,base64到底是个啥玩意?如果遇到一个产品同学过来问我,我该如何用他能够理解的语言描述这个术语的含义呢?于是就想到,不妨编一个计算机术语速查手册,把我遇到的术语都记录下来吧。
提示:本手册的初衷是面向非专业人员介绍专业术语,所以会尽量描述得通俗,可能存在不严谨的地方,请谨慎参考。
计算机基础
句柄(handle)
其实就是英文「handle」的翻译,这个单词是「把手」的意思。本质上就是一个整数,用来表示某一个对象。“要控制哪个对象,就用哪一个把手”。在Windows编程中用得多,Unix编程中也称作文件描述符。
文件描述符(file descriptor)
跟句柄一样也是一个整数,概念上差不多。文件描述符其实就是用一个整数来表示一个文件。可以通过这个整数找到这个文件。
缺省(default)
等同于默认。
进程(Process)
可以简单理解为正在运行的程序,由操作系统控制。
线程(Thread)
一个进程内部可能有多个控制流(比如一个Web服务器可以同时接收处理两个用户的请求),通常这样一个控制流就是一个线程。线程是操作系统调度的最小单位。
并发(Concurrence)
宏观上同时执行,但微观上多个事件在时间间隔内(交替)发生。参考 操作系统漫游
并行(Parallel)
真正的同时执行。
base64编码
将二进制数据转成对应的文本数据的方法。在处理文本数据的场景中,用于表示、传输、存储一些二进制数据。广泛用于Web开发,例如将图片转成base64字符串,这样可以少发起一次http请求。
base64 用 6个 bit 来表示一个字符,总共有 2^6 = 64 种表示, 所以 base64 编码会有64个基础字符。
编码规则:3个字节为一组, 转化为4个字符表示
Hex编码
同样也是将二进制数据转成对应的文本数据的方法。但常用于安全领域(加解密)。
Hex 用 4个 bit 表示一个字符,即16进制表示。
编码规则:1个字节为一组, 转为2个字符表示
Web开发
base64url
将base64字符串放在url中进行传输,因为url中不能带有特殊字符,因此去除尾部的=
,把 +
替换成 -
、把 /
替换成 _
。
SPA(Single-page Application)
单页面应用。
SEO(Search Engine Optimization)
搜索引擎优化。利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名。一般前后端分离的动态网站,就不利于SEO。
SSO(Single Sign On)
单点登录。在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。而无需重复登录。
SOA(Service-oriented architecture)
面向服务的架构。
JWT(JSON Web Token)
本质是加密的 JSON 串,主要用来解决跨域用户认证问题。可参考 使用 JWT 进行认证
编程
指针(point)
一种指向其他数据结构的数据结构。本质是表示内存地址的整数。可参考 C/C++语言中的指针
协程(coroutine)
简单地理解,就是应用级线程。可以由应用程序自己控制和调度的执行流,但本质上脱离不了操作系统的线程。
CAS(compare-and-swap)
一种非阻塞并发算法。参考 Java并发编程之并发工具
闭包(closure)
在函数中定义另一函数,内部函数可以引用外部函数的参数和局部变量。当外部函数返回内部函数时,相关的参数和变量都保存在返回的内部函数中。这种程序结构,称为闭包。
异步编程
Promise 和 Future
不同的编程语言中,Promise 和 Future 的概念可能有差异。总的来说,Promise 正如这个单词的英文本意「承诺」,可以理解为“承诺将来会执行”的对象,针对的是写入。而 Future 指一个只读的值的容器,这个值可能立即可用,也可能在未来某个时间可用,针对的是读取。每个 Promise 关联一个 Future,对 Promise 的写入会令 Future 的值可用。
(以上解释参考了廖雪峰的javascript教程 和 Fu Zhe's Blog 的 Future 与 Promise,推荐阅读)
callback
回调。即被调用方执行结束后,通过调用某个方法的方式,将结果告诉原调用方。
async/await
部分编程语言中的语法糖。async 表明可异步执行,await 会等待 Future 结束,返回 Future 的值,将异步转成同步。
好处是语法上把异步编程的 callback 和 Promise,用接近于同步编程的习惯编写。
Monad
Monad 的概念最初来源于范畴论,在编程界中多见于函数式编程。
我看了不少文章,发现很难对Monad下一个精确的定义,建议参考下面文章并花上几天时间慢慢意会:
- 理解 Monad,一份 monad 的解惑指南
- 什么是 Monad (Functional Programming)?
- 详解函数式编程之 Monad
- 什么是 Monad (Functional Programming)?
信息安全
肉鸡
指被黑客远程控制的机器,黑客可以随意操纵它并利用它做任何事情。通常被用作DDOS攻击。
对称/非对称加密
对称加密(symmetric key cryptography)指的是加解密都用同一个密钥的方式。
非对称加密(asymmetric key cryptography)有公钥和私钥之分,加密和解密不是同一个密钥。
计算机网络
WAN
广域网。
LAN
局域网。
VLAN
虚拟局域网。可以理解为在软件层面抽象出来的局域网,这样,同一个子网下面可以有多组 VLAN,就像有多个局域网一样。
MESH
组网。例如我们说用多个路由器组MESH,解决无线网络覆盖死角问题。跟桥接、无线中继不是一回事。
软件工程
IoC(Inversion of Control)
控制反转,一种依赖倒置原则的编程设计思想。依赖注入(Dependency Inject,DI) 是Ioc思想的一种具体做法。DI把底层类作为参数传给上层,实现上层对下层的控制。
OOP(Object Oriented Program)
面向对象编程。
AOP(Aspect Oriented Program)
面向切面编程。
DDD(Domain-driven Design)
领域驱动设计。
TDD(Test-driven Design)
测试驱动设计。
数据库领域
OLTP(Online Transaction Processing)
在线事务处理,主要指对数据库中的数据进行增删改查,实时性高。
OLAP(Online Analytical processing)
在线分析处理,指通过分析数据库中的数据来得出一些结论性的东西,如报表。
计算机硬件
HDD(Hard Disk Drive)
机械硬盘
SSD(Solid State Drive)
固态硬盘
RAID(Redundant Array of Independent Disks)
用多个独立的磁盘组成在一起形成一个大的磁盘系统,从而实现比单块磁盘更好的存储性能和更高的可靠性
- RAID0:N块硬盘,将数据分成N份,并发读写,很快但不可靠
- RAID1:2块硬盘,数据分别写一次,相当于备份
- RAID5:N块磁盘(N>=3),将数据分成N份,并发写,同时还将数据的校验码信息也写入到这N块磁盘中(一旦某一块磁盘损坏了,就可以用剩下的数据和对应的奇偶校验码信息去恢复损坏的数据)
- RAID6:在RAID5的基础上,引入双重校验,数据的冗余性高,读好写差,用得少
- RAID10:RAID1与RAID0的合体,保障数据的同时读写速度也快,冗余50%
物联网
IoT(Internet of things)
物联网。物理设备嵌入传感器、软件和其他技术后,可以通过互联网与其他设备建立连接并交换数据,这种联网系统就是物联网。区别于互联网的只限制计算机设备,物联网可以是任何物理设备,如空调、冰箱、体重秤等。
人工智能
NLP(Natural language processing)
自然语言处理,一种机器学习技术,使计算机能够解读、处理和理解人类语言。
GPT(Generative Pre-trained Transformer)
一种深度学习预训练语言模型。基于大量语料数据上训练,生成类似于人类自然语言的文本。其应用如聊天机器人 ChatGPT。
LLM(Large Language model)
大语言模型,一种由大量的参数(十亿或更多)的神经网络组成的语言模型,使用无/半监督学习对大量样本进行训练。GPT是大语言模型的一种。
AIGC(Artificial Intelligence Generated Content)
使用人工智能根据用户输入的关键字或要求生成内容来辅助或替代手动内容生成。
互联网行业
UGC(User Generated Content)
用户生成内容。一般用户将自己原创的内容通过互联网平台进行展示或者提供给其他用户。
PGC(Professional Generated Content)
专业生产内容。跟UGC的区别是,PGC是由专业用户创造内容。
MCN(Multi-Channel Network)
为自媒体提供内容策划、宣传推广、粉丝管理、签约代理等服务的机构。