易水风萧个人学习

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

Golang中sync-RWMutex详解

遇见梦中人之前,上天总会安排我们先遇见别的人。等到终于遇见对的那个,便该心存感激

sync.RWMutex 是 Go 标准库提供的读写互斥锁,它允许多个读操作并发进行,但写操作必须独占。理解它的关键在于:读锁是共享的,写锁是排他的。下面从核心方法、典型示例、适用场景和注意事项几个方面展开说明。 sync.RWMutex核心方法与作用sync.RWMutex 提供了两组锁方法,分别对应读和写: 读锁(共享锁) RLock():获取读锁。如果当前没有写锁被持有,多个 gor......

Golang中 context 包核心 API 详解

我们看得见城市的繁华,却再也摸不着从前的回忆

context 包用于在 goroutine 之间传递取消信号、超时信号以及请求范围内的数据。 Context 接口回顾所有 context 都实现同一个接口: type Context interface { Deadline() (deadline time.Time, ok bool) // 返回截止时间,没有则 ok=false Done() <-chan......

Golang中`database/sql`详解

时常忍不住幻想:若是你我的相遇可以从头再来,是否结局就会变得美好,不一样呢?假若宿命是能够穿越的门

database/sql 的定位与基本模型database/sql 是 Go 标准库对 SQL 数据库的通用接口层,它本身并不实现具体数据库协议,必须配合驱动使用(如 github.com/go-sql-driver/mysql、github.com/lib/pq 等)。驱动通过匿名导入完成注册: import ( "database/sql" _ "github.com/go-......

Golang中的select与休眠等待

眼泪是反重力的海,如果情绪有天气,那我困在雨天里

select:多路通道的调度器select 是 Go 为并发场景设计的控制结构,语法类似 switch,但所有 case 必须是 channel 的发送或接收操作。它的核心行为是:阻塞等待直到至少一个 case 就绪,然后执行那个就绪的分支;如果多个 case 同时就绪,则伪随机选择一个执行。 基本多路复用func main() { ch1 := make(chan stri......

Golang中make和new用法详解

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

一句话概括: new(T):分配一块零值内存,返回 *T,适用于任意类型。 make(T, args...):初始化 slice、map、channel 的内部数据结构,返回 T 本身,只适用于这三种引用类型。 内建函数签名与语义new(T) // 返回 *T,指向 T 的零值make(T, args...) // 返回 T,T 只能是 slice、map、c......

Golang中结构体详解

最大的遗憾,不是错过最好的人,而是遇见更好的人时,你已经把最好的自己用完了

结构体基础结构体是值类型,用于把一组字段组合成一个复合类型。 type User struct { ID int Name string Age int} 声明与初始化// 零值:所有字段取各自零值var u1 User // {0 "" 0}// 键值初始化,推荐,可只写部分字段u2 := User{ ID: ......

C语言宏与条件编译

白天迁就生活,夜晚打理灵魂

C 语言中的 #define、#ifdef、#endif、#else 都属于预处理指令。预处理发生在正式编译之前,由预处理器完成。它们不是 C 语句,因此通常行尾不加分号,以 # 开头,一条指令占一行,可以用反斜杠 \ 续行。 预处理概述预处理主要做这些事: 宏定义与宏替换:#define 取消宏:#undef 条件编译:#ifdef、#ifndef、#if、#elif、#else、#e......

RAT校验Profile安装

人永远不知道,谁哪次不经意的再见之后,就真的不会再见了

StoreMetadataRequest ::= [37] SEQUENCE { -- Tag 'BF25' iccid Iccid, serviceProviderName [17] UTF8String (SIZE(0..32)), -- Tag '91' profileName [18] UTF8String (SIZE(0..64)......

ASN.1 DER 编码的 Profile 安装包/Profile 实例

失去的东西,其实从来未曾真正地属于你,也不必惋惜,始终真心真意

ASN.1 DER 编码的 Profile 安装包/Profile 实例整体结构该二进制数据不是单个 ASN.1 根对象,而是多个 ProfileElement 的 TLV 流: ProfileElement ::= CHOICE { header ProfileHeader, genericFileManagement PE-GenericFileManag......

Profile互操作规范入门学习笔记

记忆像一张泛黄的照片,时光荏苒却依然清晰

PEHeader ::= SEQUENCE { mandated NULL OPTIONAL, -- if set, indicate that the support of this PE is mandatory 如果已设置,则表示此PE的支持是强制性的 identification UInt15 -- Identification number of this PE......