Moonike Blog
  • 首页
  • 归档
  • 分类
  • 关于
  • 友链

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
123…7

搜索

Copyright 2025 Moonike. All rights reserved.
Powed by Hexo Fluid
载入天数... 载入时分秒...
总访问量 次 总访客数 人