2026-10-27 23:39:51
解释:软件在正常情况下,出现不可控制的问题。
分类:
语法错误(Syntax Errors):
例子:变量或方法拼写错误。这类错误通常在编译阶段就能被检测到,因为编译器会检查代码的语法结构是否正确。
逻辑错误(Logical Errors):
例子:内存泄漏(指应用程序无法释放不再使用的内存,最常见的例子就是死循环语句)。这类错误在编译阶段无法被检测到,因为它们涉及到代码的逻辑执行过程,通常需要在运行时通过测试或监控来发现。
解释:软件在正常情况下,可能出现可控制的问题。
例子:文件读写操作。在进行文件读写时,可能会遇到文件不存在、权限不足等问题,这些问题可以通过异常处理机制来捕获并处理,从而避免程序崩溃。
软件应用进程类型CPU密集型(CPU Bound):
解释:软件应用主要依赖CPU计算速度。这类应用在进行大量计算时,会占用大量的CPU资源,导致CPU成为性能瓶颈。
I/O密集型(I/O Bound):
解释:软件应用主要依赖I/O(文件输入流/文件输出流)计算速度。这类应用在进行大量I/O操作时,会占用大量的I/O资源,导致I/O成为性能瓶颈。
注意:以上两种应用进程类型都受内存限制(Memory Bound),即内存也是影响它们性能的重要因素。
通用唯一识别码(Universally Unique Identifier,UUID)解释:用于计算机体系中以识别信息的一个128位标识符。
UUID如何保证唯一性:UUID通过一系列算法和随机数生成机制来确保每个生成的UUID都是唯一的。具体来说,UUID由五部分组成,包括时间戳、机器ID、进程ID、一个随机数以及一个命名空间标识符。这些组成部分的组合使得UUID在全局范围内具有极高的唯一性。
延伸:NanoId 是一种小巧的、安全的、URL友好的、独特的ID生成器。相对于UUID来讲,NanoId的代码量更小,重复率更低,生成ID的速度更快。NanoId通过一种更高效的算法来生成ID,同时保证了ID的唯一性和安全性。
解释:是一种软件关注分离的设计概念,将自己的对象与函数(业务逻辑)追加到软件框架中去,由软件框架作为主体去驱动软件,从而反转程序的控制流。即软件框架(库)控制应用程序的流程,而不是应用程序调用软件框架(库)。
优点:
缺点:
比喻:可以把软件框架比作浏览器,把对象与函数比作浏览器插件。浏览器通过加载不同的插件来实现更多的功能,而无需关心插件的具体实现细节。同样地,软件框架通过控制反转机制来管理不同的对象与函数,而无需关心它们的具体实现细节。
依赖注入(Dependency Injection,DI):
解释:是控制反转原则的实现方式之一,将创建对象的任务转移给其他人并直接使用依赖关系。
方法:
延伸:控制反转(IoC)、依赖关系反转原则(DIP)、依赖注入(DI)和IoC容器之间的关系图如下:

约定优于配置:
解释:目的按照约定的规范编程(约定软件目录结构,代码命名),减少软件开发人员需做决定的数量(大幅度减少配置的工作量),提高开发效率。
缺点:
C/S模式(Client/Server):
解释:客户端与服务器的结构模式。
特点:需要安装并运行客户端软件才能访问互联网服务,不支持跨平台。客户端维护成本高,但能处理较复杂、专业性高的业务能力,安全性较高,能减轻服务端运行压力。
例子:QQ、迅雷。
B/S模式(Browser/Server):
解释:浏览器与服务器的结构模式。
特点:仅使用浏览器就可以访问互联网服务,无需安装软件,即开即用,维护成本低。但安全性较低,服务端压力大。
例子:微博、百度搜索。
注意:随着浏览器的升级迭代,B/S模式与C/S模式的技术差距已经逐步缩小了。B/S模式几乎可以完全代替C/S模式,但唯一不足就是无法离线运行。