易水风萧个人学习

风萧萧兮易水寒,壮士一去兮不复还

ASN.1入门学习笔记

相遇总是猝不及防,而离别多是蓄谋已久,总有一些人会慢慢淡出你的生活,我们要学会接受而不是怀念

一 标签编码规则详解标签编码公式 标签的最终编码值通过以下公式计算:Tag = Tag Class + Primitive/Constructed + Tag Number在 ASN.1 中,标签(Tag) 的编码规则是基于 BER(Basic Encoding Rules) 或 DER(Distinguished Encoding Rules) 的。标签的编码由以下三部分组成: Tag ......

Go语言中消息总线和sync.WaitGroup的简单使用

世间万物都别等失去了,再来睹物思人

golang中消息总线EventBus 是 Go 语言中轻量级的事件总线库,核心用于实现组件间的解耦通信(发布 - 订阅模式),支持普通事件、异步事件和定时事件。 首先通过 go get 安装依赖,在终端执行以下命令: go get github.com/asaskevich/EventBus 核心使用步骤初始化 EventBus创建一个事件总线实例,有两种常用方式: 默认全局总线:直接使......

Go语言RWMutex及sync包其他函数的简单使用

生命里总有那么个人,惊艳了时光,让你念念不忘;哭红了眼眶,却还笑着原谅

sync.RWMutex(读写互斥锁)sync.RWMutex 是 Go 语言标准库 sync 包提供的一种读写锁。它是一种特殊的互斥锁,允许多个读操作并行进行,但写操作是完全独占的。 这意味着: 可以多个 Goroutine 同时持有「读锁」。 同时只能有一个 Goroutine 持有「写锁」。 写锁和读锁是互斥的。也就是说,当一个 Goroutine 持有写锁时,其他所有 Gorout......

Go 语言枚举实现全面指南:方法与最佳实践

曾说过的永远已经停在了当时的那个瞬间,不再向前

基础枚举实现方式使用 iota 实现基本枚举(最常用)package mainimport "fmt"// 1. 基础 iota 枚举const ( Sunday = iota // 0 Monday // 1 Tuesday // 2 Wednesday // 3 Thursday // 4 Frid......

Go 语言通道的全面指南:使用场景与最佳实践

想雨的时候,就是心事和忧伤积攒得很沉很重的时候,心情像枯渴的禾苗盼着雨的到来

通道遍历的多种方式基本 for-range 遍历func basicRange() { ch := make(chan int, 5) // 生产数据 go func() { for i := 1; i <= 5; i++ { ch <- i time.Sleep(2......

Go 语言错误处理全面指南

其实你心里早就有了答案,你就是不想承认,你就是不甘心爱了那么久的人,连个像样的交代都给不了你

基础错误处理方法返回错误值(最常用)func ReadFile(filename string) ([]byte, error) { file, err := os.Open(filename) if err != nil { return nil, err } defer file.Close() data,......

Go 语言中 defer 的使用指南

世间万物都别等失去了,再来睹物思人

基本特性与语法执行顺序(LIFO)多个defer按后进先出(LIFO)顺序执行: defer fmt.Println("A") // 最后执行defer fmt.Println("B") // 第二执行defer fmt.Println("C") // 最先执行/......

Go 语言中 context 包的深度解析与应用场景

所有的期待和失望都是因为你把自己看得太重要了

Context 基础概念Context 的核心作用 取消传播:在调用链中传递取消信号 超时控制:设置操作的截止时间 值传递:在调用链中安全传递请求范围数据 截止时间:设置操作的绝对过期时间点 创建 Context 的四种方式// 1. 创建根Contextctx := context.Background()// 2. 创建TODO占位Contextctx = context.TODO()......

Go 语言接口全面指南:实现方式、使用场景与最佳实践

人终究会被其年少 不可得之物困扰一生

在 Go 语言中,接口(interface)是一种核心特性,它提供了鸭子类型(duck typing)的实现方式。接口在 Go 中有着广泛的应用场景,从简单的抽象到复杂的系统设计。 接口基础概念接口定义与实现package mainimport "fmt"// 1. 基本接口定义type Writer interface { Write([]byte) (int, error......

Go 语言中 range 和 select 的深度解析与应用场景

慢慢就习惯了,情绪波动也没有那么大了,委屈了我就哭,我自己安慰自己,我不需要别人

range 关键字详解基本用法range 用于迭代各种集合类型: // 1. 切片迭代fruits := []string{"apple", "banana", "orange"}for i, fruit := range fruits { fmt.Printf("索引: %d, 值: %s\n", i, fruit)}// 2. 映射迭代age......