TCP 连接的三次握手和四次挥手 TCP 是面向连接的协议,所以使用 TCP 前必须先建立连接,建立连接是通过三次握手来进行的,断开连接是通过四次挥手来进行的,下面来简要分析一下建立和断开 TCP 连接的过程。 三次握手的流程 服务端主动监听某个端口,进入 LISTEN 状态。 客户端初始化序号(client_isn)并填入 TCP 报文首部的序号字段中,将 SYN 标志位设置为 1,然后向服务端发送 SYN 报文,客户端进入 2025-08-17 计算机网络
浅析 Java8 引入的 CompletableFuture 对于 Java 程序来说,Java 8 中引入的 CompletableFuture 可以帮助我们来做多个任务的编排,功能非常强大。 FutureFuture 类是异步思想的典型运用。我们可以将一个耗时的任务交给子线程去执行,等到执行完毕后我们可以直接通过 Future 类获取结果,这样一来便可显著提高工作效率。在 Java 中,Future 类只是一个泛型接口,位于 java.util.conc 2025-08-16 Java > Java基础
Docker 核心概念梳理 什么是 Docker Docker 是世界领先的软件容器平台。 Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核 提供的 CGroup 功能和 namespace 来实现的,以及 AUFS 类的 UnionFS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。 由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。 Docker 能够 2025-08-13 云原生
浅析 MySQL 的三种日志:RedoLog、UndoLog、BinLog MySQL 中存在着各种日志,如错误日志、查询日志、慢查询日志、事务日志、二进制日志等,这篇文章聊一下下面几种日志: Undo Log 回滚日志:InnoDB 存储引擎层生成的 UndoLog 用于记录事务修改前的数据状态,以便在事务回滚时恢复数据,实现了事务的 原子性。 Redo Log 重做日志:InnoDB 存储引擎层生成的 RedoLog 用于记录事务修改后的数据状态,保证在数据库崩溃时 2025-08-11 MySQL > 日志
梳理一下 Java 中 Obejct 类的相关知识 Java 中的 Object 类是所有类的父类。 == 和 equals() 的区别 类型 == equals() 基本类型 比较值是否相等(数据内容)。 不适用(基本类型没有 equals() 方法)。 引用类型 比较对象的引用(内存地址是否相同)。 比较对象的内容(通过 equals() 方法自定义比较)。 equals() 方法存在两种使用情况: 类没 2025-08-10 Java > Java基础
HTTP 和 HTTPS 到底有什么区别 HTTPS 协议相比于 HTTP 协议,在三次握手之后多了一个 SSL/TLS 握手的过程,这个过程能够解决 HTTP 不安全的缺陷(报文明文传输),保证了报文的加密传输。 HTTP 主要存在了三个问题:报文易被窃听;报文易被篡改;目标网站容易被冒充。 HTTPS 通过以下方式来分别解决这几个问题: 采用混合加密(对称加密和非对称加密)来对传输的报文进行加密,减少了传输信息被窃听的风 2025-08-08 计算机网络
MacOS 下解决端口占用问题 之前都是在 Windows 上解决端口占用的问题,最近因为工作需要,以及自己也买了一台 Macbook Air,所以现在的大部分工作都是在 Mac 下完成的了,简单记录如何解决 MacOS 的端口占用问题。 确定被占用端口这个其实很好确定,一般是在启动服务时会报端口被占用的错误: 如图就是8080端口被占用了。 确定占用端口的进程我们一般可以采用 lsof (List Open File) 命令 2025-08-08 命令行
Git 冲突是如何产生的 在多人协作的过程中,Git 冲突是不可避免的。当多个开发者在不同分支上同时修改同一部分代码时,Git 会无法自动合并这些修改,进而产生冲突。本文简要分析 Git 冲突的产生原因以及解决方法。 冲突的产生Git 冲突通常发生在合并(merge)或重放(rebase)操作时,尤其是在以下几种情况中: 同时修改了同一文件的同一部分: 当两个分支中的开发者对同一个文件的相同位置进行不同的修改时,Git 2025-08-05 Git
RBAC 权限模型梳理 什么是 RBAC 权限模型RBAC(Role-Based Access Control)即:基于角色的权限控制。通过角色关联用户,角色关联权限的方式间接赋予用户权限。RBAC 认为权限的过程可以抽象概括为:判断 Who 是否可以对 What 进行 How 的访问操作这个逻辑表达式的值是否为 True 的求解过程,即将权限问题转换为Who、What、How的问题。Who、What、How构成了访问权 2025-07-28 架构设计
Go 语言中的 sync 包 在并发编程中,同步原语(也就是我们通常说的锁)的主要作用是保证多个线程或者 goroutine在访问临界资源时不会出现线程安全问题,Go 语言中的 sync 包就提供了常用的同步源语,这里简单梳理一下不同同步源语的使用场景。 sync.Mutexsync.Mutex 实现了对临界资源的加锁访问: 12345mutex := &sync.Mutex{}mutex.Lock 2025-07-23 Go