编程专业术语汇总及解释,持续更新...
2024.11.23 阅读量次API
API即Application Programming Interface,翻译过来是应用程序编程接口,它是一组定义了不同软件组件之间交互方式的规范和协议。 简而言之,API 就是软件系统的“接口”,它定义了其他程序如何与之交互。通过 API,开发者可以利用已有的服务或库,而不需要了解其内部实现细节。
B
CI/CD
CI(Continuous Integration)是持续集成的缩写,指频繁将代码变更合并到主分支中,并在每次集成后自动进行构建和测试。通过自动化的构建和测试流程,可以及早发现集成问题,减少集成成本。持续集成帮助团队更高效地管理代码变更,保证代码质量并防止错误积累。
CD(Continuous Delivery)是持续交付的缩写,在持续集成的基础上,自动将代码从开发环境部署到生产环境之前的各个阶段。通过自动化的测试、构建和部署流程,软件可以随时被交付到生产环境。持续交付提高了发布频率,优化了开发和发布流程,帮助团队快速响应市场需求。
Code Review
Code Review 翻译成中文是代码评审。Code Review 是一种通过复查代码提高代码质量的过程,通过这个机制我们可以对代码、测试过程和注释进行检查。
CDN
CDN即Content Delivery Network,即内容分发网络。通过将内容缓存在终端用户附近,使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
CND加速主要是加速静态资源,如网站上面上传的图片、媒体,以及引入的一些JS、CSS等文件。 CDN是只对网站的某一个具体的域名加速。如果同一个网站有多个域名,则访问加入CDN的域名获得加速效果,访问未加入CDN的域名,或者直接访问IP地址,则无法获得CDN效果。
CSS
CSS(Cascading Style Sheets)即层叠样式表,用于控制网页的样式和布局。通过 CSS,开发者可以为 HTML 元素设置颜色、字体、大小、边距、背景等样式,并实现响应式设计,使页面在不同设备上具有良好的显示效果。
CSS 提供了选择器的机制,可以对页面中的某些元素或元素组应用特定样式。其分层机制允许开发者在样式表中定义样式规则,并根据需要覆盖或调整优先级,达到灵活控制页面设计的目的。
CSS 是网页开发的核心技术之一,与 HTML 和 JavaScript 配合使用,可以让网页变得更加美观和用户友好。
DDD
DDD是Domain-Driven Design,翻译过来是领域驱动设计,是一种软件开发方法,专注于通过深入理解业务领域来创建软件系统。 由 Eric Evans 在他的著作《领域驱动设计:软件核心复杂性应对之道》中提出。它强调将业务逻辑与技术实现紧密结合,来提高系统质量和适应性。
DDD其实是面向对象方法论的一个升华。无外乎是通过划分领域(聚合根、实体、值对象)、领域行为封装到领域对象(充血模式)、内外交互封装到防腐层、职责封装到对应的模块和分层,从而实现了高内聚低耦合。
DTO
DTO即Data Transfer Object,译为数据传输对象,是一种用于在不同层之间传递数据的对象。 DTO的主要目的是将数据从一个子系统或层传递到另一个子系统或层,来减少方法调用的次数,避免直接暴露实体对象,并提升系统的安全性和灵活性。
DTO通常是一个简单的Java类,包含了需要传递的数据字段,通常不包含业务逻辑或方法。 字段通常对应于视图层或API调用所需要的数据格式,并不会完全反映底层数据库或业务实体的结构。
DAO
DAO全称Data Access Object译为数据访问对象,主要用于将数据访问逻辑与业务逻辑分离,从而实现代码的解耦和更好的维护性。
DAO模式的核心思想是通过创建一个数据访问对象来处理与数据库的所有交互。 这样,业务逻辑层不需要直接处理数据库的细节,如SQL查询、连接管理等,而是通过DAO来进行数据的获取、插入、更新和删除等操作。 通常,DAO模式会定义一个接口,如UserDAO,该接口定义了操作数据的方法,如getUserById、saveUser等。然后,通过一个具体的类,如UserDAOImpl来实现这些方法。
DNS
DNS是Domain Name System,译为域名系统,是将域名解析为IP地址的系统。
当用户在浏览器中输入一个域名时,浏览器首先查询本地缓存中是否有该域名的IP地址。如果没有则发起DNS查询。 DNS查询通常是递归的,即从本地DNS服务器开始,一步步向上级服务器查询,直到找到目标IP地址。 查询过程通常会经过根域名服务器、顶级域名服务器、权威域名服务器,找到IP地址后,DNS服务器将结果返回给用户的设备,然后用户的设备就可以使用该IP地址来访问对应的网站或资源。
Entity
Entity 是表示系统中持久化数据的对象,通常与数据库中的表对应。每个实体类包含与数据库表字段相关联的属性,这些属性用于存储、更新和查询数据。实体类不仅定义数据结构,还包括与数据库交互的映射规则,通常使用 ORM 框架自动完成数据持久化。开发者通过定义实体类,能够简化数据库操作,避免手动编写 SQL 语句。
实体类设计将数据和业务逻辑分离,提升系统的可维护性。实体类作为对象存在于内存中,通过 ORM 框架将其映射到数据库表结构。实体类和数据访问对象(DAO)层交互,完成数据库的增、删、改、查等操作,简化了数据库操作的复杂性。
F
GPT
GPT(Generative Pre-trained Transformer)是基于 Transformer 架构的自然语言处理模型。通过在大量语料库上进行预训练,GPT 能够理解并生成连贯的文本。它可以处理多种自然语言任务,包括对话生成、文本写作、翻译和问答。
GPT 通过根据输入提示生成符合上下文的文本,展现出强大的语言建模能力。它不仅能回答问题,还能进行多轮对话、生成文章或文本摘要。GPT 的应用广泛,涉及对话系统、文章生成、内容推荐等多个领域。它推动了自然语言处理技术在实际应用中的深入发展。
HTML
HTML(HyperText Markup Language)即超文本标记语言,是构建网页的基础语言。它使用标记标签定义网页的结构和内容,例如文本、图像、链接、表格和多媒体元素等。HTML 通过嵌套的层级结构组织页面信息,使浏览器能够正确地解析和显示内容。
HTML 是前端开发的核心语言,与 CSS 和 JavaScript 一起构成了现代网页开发的三大基础。通过 HTML,可以实现页面的基本框架,支持多种媒体和交互功能,为用户提供可视化的内容展示。
IDE
IDE(Integrated Development Environment)是集成开发环境,包含开发软件所需的各种工具和服务。它通常包括代码编辑器、编译器、调试器、版本控制工具和构建工具,目的是提升开发效率,简化软件开发过程。
IDE 的代码编辑器提供语法高亮、自动完成、代码提示等功能,帮助开发者更快速地编写和修改代码。调试器支持开发者在程序运行时进行调试,检查和修复错误。集成的构建工具让开发者可以方便地进行编译、打包和部署。现代 IDE 还支持与版本控制系统的集成,便于开发者管理代码版本和协作开发。常见的 IDE 如 IntelliJ IDEA、Eclipse 和 Visual Studio,提供了全面的功能,极大提高了开发人员的工作效率。
IO
IO(Input/Output)即输入/输出,表示计算机系统中数据的输入与输出操作。它是程序与外部环境(如文件系统、网络、设备)之间的交互过程。例如,从键盘获取用户输入属于输入操作,将数据写入文件属于输出操作。
IO 通常包括文件 IO 和网络 IO。文件 IO 用于对文件进行读取和写入操作,网络 IO 则用于在系统间通过网络传输数据。IO 性能是影响程序效率的重要因素,现代开发中常通过优化异步 IO 和缓存机制来提升性能。
在编程中,IO 操作相对较慢,因此在高并发场景下,非阻塞 IO 和异步 IO 是常用的优化手段。
JVM
JVM(Java Virtual Machine)是 Java 程序执行的虚拟机,负责运行已编译的字节码。JVM 赋予 Java 程序跨平台的能力,开发者编写的代码可以在任何支持 JVM 的平台上运行,无需进行修改。
JVM 的核心功能包括内存管理、垃圾回收和线程调度。内存管理涉及堆和栈的分配,而垃圾回收机制自动回收不再使用的内存,从而防止内存泄漏。JVM 通过即时编译(JIT)将字节码转换为机器代码,提升程序执行效率。作为 Java 生态系统的核心组件,JVM 使得程序能够高效运行,并有效利用计算资源。
JSON
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它采用键值对的结构,简单易读,广泛应用于客户端与服务器之间的数据传输,特别在 Web 开发和 API 交互中。JSON 支持字符串、数字、数组等基本数据类型,能够简洁地表示复杂的数据结构。
JSON 格式便于人类阅读,并且与多种编程语言兼容,机器解析和生成的效率较高。它通常在 Web 应用中作为数据交换格式,尤其适用于前后端分离架构中。由于 JSON 格式简单、灵活,它成为现代应用程序中常用的数据传输格式。
JS
JS即JavaScript 是一种轻量级、解释型的编程语言,广泛用于开发动态交互式网页。它可以在浏览器中运行,负责处理页面的行为和逻辑,例如表单验证、动态内容加载、动画效果等,使网页更加生动和用户友好。
JavaScript 支持事件驱动、函数式编程和面向对象编程,可以与 HTML 和 CSS 无缝结合,控制页面的结构和样式。此外,它还提供了丰富的 API,用于与浏览器、服务器或第三方服务交互,如操作 DOM、发起网络请求和存储数据。
现代 JavaScript 通过框架(如 React、Vue)和运行环境(如 Node.js),已经从前端扩展到后端,成为全栈开发的重要工具。
K
L
MVC
MVC(Model-View-Controller)是一种软件设计模式,通过将应用程序的不同部分分离,提升代码的可维护性和可扩展性。MVC 将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。
在 MVC 模式中,模型负责处理数据和业务逻辑,视图负责显示数据,控制器处理用户输入并协调模型和视图之间的交互。通过分离这些职责,MVC 使应用程序的各个组件能够独立开发和修改,降低了系统的复杂性。这种模式提升了应用的可测试性,能够更方便地扩展和维护。
N
ORM
ORM(Object-Relational Mapping)是一种技术,它将面向对象编程语言中的对象和关系型数据库的表进行映射。通过 ORM,开发者能够通过操作对象完成数据库操作,而不必直接编写 SQL 语句。
ORM 框架通过自动生成 SQL,将数据库中的数据映射到对象模型中,简化了数据库访问的过程。其主要优点是提升代码的可读性和可维护性。开发者不必关注具体的数据库实现,集中精力操作对象,简化了增、删、改、查等常见数据库操作。常见的 ORM 框架包括 Hibernate 和 JPA,它们通过简化数据库交互,使得开发者能够高效操作数据库。
PV
PV即Page View 的缩写,页面浏览量;用户每一次对网站中的每个页面访问均被记录1次。用户对同一页面的多次刷新,访问量累计。
PO
PO(Persistent Object)是持久化对象的缩写,指用于表示数据库中数据记录的对象。通常,PO 对象与数据库表中的一行记录对应,每个属性对应表中的一个字段。PO 类是用于存储数据的简单对象,通常不会包含复杂的业务逻辑。它的主要作用是作为数据传输的载体,方便与数据库进行交互。
PO 类通常被用于 ORM(对象关系映射)框架中,帮助将数据库中的数据映射为 Java 对象,并进行持久化操作。
POJO
POJO(Plain Old Java Object)是普通 Java 对象的缩写,指的是没有继承特定类,也没有实现特定接口的简单 Java 类。POJO 只包含属性和相应的 getter、setter 方法,不包含复杂的逻辑。POJO 主要用于封装数据,通常用于 Java 应用中的数据传输或与数据库交互。
POJO 强调简单、独立,通常不依赖于框架或其他外部库。它的设计目的在于提高代码的可读性和可维护性,避免过多的复杂性。
PR
PR(Pull Request)是版本控制系统中开发者向主分支或其他目标分支提交更改的请求。在 PR 中,开发者提交代码后,团队成员可以审查和讨论代码修改。通过这种方式,团队成员可以协作合并代码,同时保证代码质量。
PR 使得开发者可以更有效地管理代码变更,通过集体审查来减少缺陷和错误。GitHub 和 GitLab 等平台广泛使用 PR 进行代码合并。
QA
QA(Quality Assurance)指的是在软件开发过程中通过系统的活动保证软件质量的过程。QA 包括制定和执行测试计划、设计测试用例、进行功能和性能测试、定位和修复缺陷等活动。QA 目标是识别和消除软件中的问题,并通过一系列检查确保产品达到预期的质量标准。
QA 角色在开发过程中起到监控和评估的作用,通过持续的测试和反馈,提高产品的稳定性和用户体验。
QPS
QPS(Queries Per Second)即每秒查询率,表示服务器每秒能够处理的查询请求数量。它是衡量查询服务器性能的重要指标,通常用于评估系统在高并发环境下的处理能力。
QPS 反映了服务器的吞吐量,数值越高,说明系统能够在单位时间内处理更多请求。它常用于搜索引擎、数据库和 API 接口的性能测试和优化中,用于衡量系统是否能够满足实际业务需求。
RT
RT(Response Time)即响应时间,是指系统处理一次请求所需的时间,包括从客户端发送请求到接收到服务器返回结果的整个过程。RT 通常用于衡量系统的性能,尤其是在高并发场景下,低响应时间表明系统能够快速响应用户操作。
RT 的计算可以包含网络延迟、服务器处理时间和数据传输时间等因素,是评估用户体验和系统效率的重要指标
ROI
ROI即Return on Investment,也就是投资回报率(投入产出比),它是一个投资术语。ROI 对于工作而言,主要体现在:绩效晋升、技术能力。
RPS
RPS(Requests Per Second)即每秒请求数,表示系统每秒能够处理的请求数量。它通常用于衡量服务器在高并发情况下的处理能力,是评估系统性能的关键指标之一。
RPS 和 QPS(Queries Per Second)类似,但更通用。RPS 适用于各种类型的请求,而 QPS 更侧重于查询类请求。数值越高,说明系统能够在单位时间内响应更多请求,适合处理大规模流量的场景。
RPC
RPC 是 Remote Procedure Call,远程过程调用,是一种通过网络请求远程服务器方法或服务的技术。
当客户端需要访问远程服务时,它会通过RPC框架向服务端发送请求,RPC框架负责将请求的参数序列化并通过网络发送到远程服务器。服务端接收到请求后,会反序列化参数并调用对应的方法,然后将执行结果返回给客户端。
RESTful
RESTful 是一种基于 REST(Representational State Transfer)架构风格的设计规范,常用于设计网络应用的接口。它通过使用标准的 HTTP 方法(如 GET、POST、PUT、DELETE 等)和资源的 URI 表示方式,提供了一种简单而统一的接口风格。每个 URI 都表示一个资源,而通过不同的 HTTP 方法可以对资源进行操作。
RESTful 接口具有良好的可读性和扩展性,能够与多种语言和平台无缝集成,因此在现代 Web 服务和微服务架构中被广泛采用。
STW
STW(Stop The World)是指在垃圾回收过程中,JVM 停止所有应用程序线程的执行。垃圾回收器需要对堆内存进行清理和整理,而在 STW 期间,JVM 会暂停所有的应用线程,直到垃圾回收完成。STW 通常发生在“全停顿”型的垃圾回收中,尤其是在进行完全垃圾回收时,这会导致应用的暂停。
虽然 STW 停顿时间较短,但在高负载、高并发的系统中,它可能会对系统性能造成影响。
SPI
SPI(Service Provider Interface)是服务提供者接口,允许开发者通过标准接口来扩展或定制某个框架或库。SPI 定义了服务接口,允许不同的实现类提供不同的服务。通过 SPI,应用程序可以在运行时动态地加载和使用这些实现类,而不需要修改源代码。
SPI 通常用于大型框架(如 Java 的 JDBC)中,帮助实现灵活的扩展和定制功能。
Socket
Socket 即套接字,是一种网络通信的接口,用于实现计算机之间的数据传输。它提供了一个在网络中两台设备(如客户端和服务器)之间进行通信的通道,通过该通道,应用程序可以发送和接收数据。
Socket 基于客户端-服务器模型,通常有两种类型:流式套接字(TCP Socket)和数据报套接字(UDP Socket)。流式套接字用于可靠的、面向连接的数据传输,而数据报套接字则用于无连接的、快速的通信。
Socket 广泛应用于实现网络协议、即时通讯、远程登录和分布式系统等场景中。它为开发者提供了与网络层交互的便利接口,可以通过编程实现更高层次的定制化网络通信。
TDD
TDD(Test-Driven Development)是测试驱动开发的缩写,指在编写代码之前先编写测试用例。开发者首先创建一个失败的单元测试,然后编写最简洁的代码以通过测试,最后对代码进行重构。TDD 强调通过反复的测试-编码-重构循环来提升代码的质量,确保代码在开发过程中始终符合需求。
TDD 通过早期捕捉错误、提高代码的可测试性以及促进设计思维,帮助开发者编写高质量、可维护的代码。
TPS
TPS(Transactions Per Second)即每秒事务处理数,表示系统每秒钟能够处理的事务数量。事务通常指从客户端发送请求到服务器响应的整个过程。在计算 TPS 时,客户端发起请求时开始计时,收到响应后结束计时,从而得出事务处理的时间和数量。这一指标用于评估系统的处理能力和性能,尤其在高并发环境下,TPS 是衡量系统效率的重要标准。
TO
TO(Time Out)是指在规定时间内未完成某项操作或请求时,系统自动终止该操作并返回超时错误的过程。TO 通常用于网络请求、数据库连接等场景,以避免系统长时间等待某一操作的结果。当操作超出设定时间限制时,超时机制会启动,从而避免因阻塞或死锁造成系统性能下降。TO 是保证系统稳定性和响应速度的一个重要措施。
UV
UV即Unique visitor,独立访客,通过客户端的cookies实现。即同一页面,客户端多次点击只计算一次,访问量不累计。
URI
URI即Uniform Resource Identifier,统一资源标识符。 URI就是互联网上资源的地址,用来告诉你怎么找到那个资源。它包含了访问方式、资源所在的位置以及资源的具体路径,可以是网页、图片、文件,甚至是电子邮件地址。 它是一个通用概念,包含了URL(统一资源定位符)和URN(统一资源名称)。
URL
URL即Uniform Resource Locator,统一资源定位符。URL是一种特别的URI,用来定位互联网上的资源,通俗地说,URL就是我们常用的网页地址。
URN
URN即Uniform Resource Name,统一资源名称。 URN是一种URI,用于通过名称来唯一标识资源,但不包含资源的定位信息或访问方法。URN提供的是资源的名字而不是地址,所以它不会告诉你资源在哪里,也不会告诉你怎么访问它。
UI
UI(User Interface)即用户界面,指用户与系统或设备交互时所看到和接触到的界面。UI 包括视觉元素(如按钮、图标、颜色、字体等)以及交互设计(如导航方式、响应行为等)。良好的 UI 设计能够提升用户的使用体验,让系统更加直观和易用。
UI 是用户与软件或硬件之间的桥梁,直接影响用户对产品的感知和满意度。
VO
VO(Value Object)指的是值对象,通常用于在不同层之间传递数据。VO 包含的属性通常是对某些数据的封装,这些数据可能来自数据库或业务逻辑层。VO 只负责数据的存储和传递,不包含复杂的业务逻辑。
VO 常用于展示层,帮助在视图与后台逻辑之间传递信息,使数据结构更清晰、层次分明。
W
XML
XML(Extensible Markup Language)即可扩展标记语言,是一种用于存储和传输数据的格式。XML 通过使用自定义标签来描述数据结构,具有良好的可读性和跨平台特性。它常用于配置文件、数据交换、远程调用等场景。
XML 支持层次化的数据表示方式,能够很好地描述复杂的结构化信息,在很多系统中被广泛应用。
Y
Z
重构
“重构”指对现有系统、代码或结构进行修改、优化,而不改变其外部行为或功能。目标是改善代码的内部结构、提高可读性、降低复杂度或提升可维护性。重构通常在不影响系统功能的前提下进行,通过精简冗余代码、优化设计模式等方式,提升代码质量并使其更容易扩展和修改。
重构的目的是使软件更容易被理解和修改。可以在软件内部做很多修改,但必须对软件可观察的外部行为只造成很小的变化,甚至不造成变化。 在软件开发中,重构常用于不断优化已有代码,解决技术债务,从而提高系统的长期可维护性。
分布式系统
分布式系统是一种由多个独立计算节点(如服务器、计算机)组成的系统,这些节点通过网络连接并共同工作来完成任务。与传统的单机系统不同,分布式系统的各个节点通常分布在不同的地理位置,并通过通信协议进行数据交换和协作。
分布式系统的主要特点包括高可用性、可扩展性和容错性。它通过将计算任务分散到多个节点上,不仅能提高系统的处理能力,还能保证在部分节点故障时系统仍然能够正常运行。常见的分布式应用包括分布式数据库、微服务架构和云计算平台。 然而分布式系统的复杂性也较高,需要解决节点间的通信、数据一致性、负载均衡和故障恢复等问题。
熔断降级
熔断降级是一种在分布式系统中提高系统稳定性和可靠性的技术手段。当系统某个组件或服务出现故障,熔断机制会及时中止对故障服务的请求,避免故障进一步蔓延,从而保护系统免受更大范围的影响。
在熔断触发后,系统会进行降级处理,即将某些功能或服务以简化或备用的方式提供,确保系统仍然能够响应用户请求。熔断器会在一定时间后尝试恢复正常的服务,经过一段时间的稳定运行,再次开放对故障服务的请求。
熔断降级通常与监控、限流、重试机制等配合使用,是分布式系统中处理故障的常见策略。
吞吐量
系统的吞吐量与请求对CPU的消耗、外部接口、IO等等紧密关联。单个请求对CPU消耗越高,外部系统接口、IO速度越慢,系统吞吐能力越低,反之越高。
限流
限流是一种控制请求频率的技术,常用于防止系统过载或性能下降。当系统收到大量请求时,限流通过限制每秒或每单位时间内的请求数量,避免系统资源被过度占用。
常见的限流策略有固定窗口、滑动窗口、漏桶和令牌桶等。不同策略通过不同方式控制请求的流量,如令牌桶允许请求以一定速率提交,超过速率的请求将被拒绝或排队。
限流广泛应用于高并发系统、API 网关和微服务架构中,帮助系统保持稳定并避免因流量波动导致的崩溃。
一站式
“一站式”是一种服务理念或商业模式,指的是在一个平台或地点提供所有相关服务或产品,以满足用户的某类需求。用户可以在同一地点完成整个流程,无需在多个地方奔波。
这种模式通过整合各种服务来简化操作流程,提高效率,提升用户体验,使用户在获取所需服务时更加便捷。