URL输入到页面加载的全过程分析

URL输入到页面加载的全过程分析当用户在浏览器中输入一个URL并按下回车键后,背后发生了一系列复杂的过程,最终呈现出用户想要的网页。总体来说,这一过程可以分为以下几个主要步骤:1. DNS解析2. TCP连接3. 发送HTTP请求4. 服务器处理请求并返回HTTP响应5. 浏览器解析渲染页面6. 连接结束 1. DNS解析DNS解析是将
阅读全文

Go语言之Context详解

1. 基本概念 1.1 什么是 Context上下文 `context.Context` 在 Go 语言中用来设置截止日期、同步信号,传递请求相关值的结构体。上下文与 Goroutine 有比较密切的关系,是 Go 语言中独特的设计,在其他编程语言中我们很少见到类似的概念。主要用于超时控制和多Goroutine间的数据传递。注:这里的数据传递主要指全局数据,如 链
阅读全文

WaitGroup底层原理

WaitGroup核心组件`WaitGroup` 结构体内部主要包含以下两个核心部分(在较新的 Go 版本中,实现有所优化,但基本思想一致):1. `counter` (计数器):这是一个整数,用来记录需要等待的 goroutine 的数量。 当我们调用 `Add(n)` 方法时,这个计数器会增加 `n`。 当我们调用 `Done()`
阅读全文

MySQL数据库事务和ACID特性

MySQL数据库事务和ACID特性 1. 概述本文将深入探讨数据库事务和ACID(原子性、一致性、隔离性、持久性)特性,并详细解释MySQL是如何实现这些特性的。结论: 一致性(Consistency)是最终目标; 原子性(Atomicity)、隔离性(Isolation)、持久性(Durability)是实现一致性的手段。MySQL通过以下方式实现ACI
阅读全文

Go语言之防缓存击穿利器 Singleflight

Go语言之防缓存击穿利器 Singleflight 1. 缓存击穿在日常开发中,为了提升性能和减轻数据库的压力,通常会对热点数据进行缓存。例如,使用 Redis 缓存用户请求的数据,如果缓存中有数据则直接返回,否则查询数据库并将结果写入缓存。但是,如果缓存失效了,在查询数据库和将数据再次写入缓存的过程中,其他请求也会出现缓存未命中的情况,导致大量请求直接打到数据库,给数据
阅读全文

Golang sync.Mutex源码解析

Golang sync.Mutex源码解析Go 语言在 `sync` 包中提供了用于同步的一些基本原语,`sync.Mutex` 就是其中最常用的一个。 1. 基本结构Go 语言的 `sync.Mutex` 由两个字段 `state` 和 `sema` 组成。其中 `state` 表示当前互斥锁的状态,而 `sema` 是用于控制锁状态的信号量。```go//
阅读全文

Golang Channel源码解析

Golang Channel源码解析 1. 概述Golang官方对 `chan` 的描述如下: A channel provides a mechanism for concurrently executing functions to communicate by sending and receiving values of a specified element t
阅读全文

Golang中的Map数据结构

Golang中的Map数据结构在Go语言中,`map`是一种非常强大的数据结构,它提供了键值对的存储和快速查找功能。本文将详细介绍Go语言中`map`的数据结构、实现原理和常见操作。 一、Map的数据结构Go语言中的`map`数据结构由`runtime/map.go`中的`hmap`定义:```gotype hmap struct { count
阅读全文

详解TCP、UDP和HTTP

详解TCP、UDP和HTTP在计算机网络中,TCP(传输控制协议)、UDP(用户数据报协议)和HTTP(超文本传输协议)是三种重要的协议。它们分别在不同的层次和场景中发挥着重要作用。本文将详细介绍这三种协议的工作原理、特点及其应用场景。 一、TCP(传输控制协议) 1.1 概述TCP(Transmission Control Protocol)是一种面向连接的、可
阅读全文

HTTP的三次握手和四次挥手

HTTP的三次握手和四次挥手在计算机网络中,TCP(传输控制协议)是一个至关重要的协议。为了确保数据的可靠传输,TCP采用了“三次握手”机制来建立连接,用“四次挥手”机制来断开连接。本文将详细介绍这两种机制的工作原理。 一、TCP三次握手TCP的三次握手(ThreeWay Handshake)是客户端和服务器在传输数据前建立连接的过程。其主要目的是确保双方都有能力发送和接
阅读全文