Golang wire依赖注入

笔记  Go 

基础概念wire有两个基础概念,Provider(构造器)和Injector(注入器)。Provider实际上就是创建函数,大家意会一下。我们上面InitMission就是Injector。每个注入器实际上就是一个对象的创建和初始化函数。在这个函数中,我们只需要告诉wire要创建什么类型的对象,这个

Golang闭包使用场景

笔记  Go 

Golang闭包使用场景保存中间态package mainimport "fmt"// 保存中间态func increment() func() int { count := 0 return func() int { count++ retu

HTTP3.0和HTTP2.0的不同

笔记 

HTTP3.0和HTTP2.0的不同QUIC协议简介:HTTP/3的核心——更快、更安全的互联网传输技术HTTP/2 是目前最新的网络传输协议(如上图左), - 掘金传输协议不同HTTP/2 基于TCP(传输控制协议)依赖TCP的可靠传输,但是tcp的队头阻塞问题会影响性能如果TCP数据包丢失或者延

HTTP1.0和HTTP2.0有什么区别


HTTP1.0和HTTP2.0有什么区别回答重点:HTTP1.0版本主要增加了以下几点:增加了HEAD和post等新方法增加了响应状态码引入了请求头和响应头在请求中加入了HTTP版本号引入了Content-Type 使得拆书的数据不再限于文本HTTP1.1版本主要增加以下几点:新增了连接管理即kee

Golang面试题收集

笔记  Go 

Golang面试题收集答: 不会for range在循环前已经获取了可迭代变量的可迭代次数了不会死循环,for range是golang的语法糖,在循环开始前会获取切片长度,然后再执行切片长度次数的循环如果for 循环select时候,通道关闭了,那么每次都会执行这个case如果select中的ca

Mysql为什么选择B+树作为索引结构?

mysql  笔记  Go 

参考: https://juejin.cn/post/7412893752090181642?from=search-suggestMysql为什么选择B+树作为索引结构?减少磁盘I/O次数B+树每个节点可以存储大量键值,使得树的高度极低数据库数据存储在磁盘上,每次查询磁盘I/O次数直接影响性能,B

HTTP状态码


1xx 状态码API 不需要1xx状态码,下面介绍其他四类状态码的精确含义。2xx 状态码200状态码表示操作成功,但是不同的方法可以返回更精确的状态码。GET: 200 OKPOST: 201 CreatedPUT: 200 OKPATCH: 200 OKDELETE: 204

悲观锁和乐观锁

笔记  Go 

悲观锁和乐观锁悲观锁核心思想假设并发冲突一定会发生,因此在访问共享资源的时候,先加锁,确保操作期间数据不会被其它线程修改。特点提前枷锁: 操作前获取锁,操作后释放锁阻塞等待: 如果锁被占用,其它线程会阻塞或者自旋等待,直到锁释放强一致性: 保证操作期间数据的独占性,适合写多少读多少的场景典型实现互斥

Golang基本同步原语sync.Pool

笔记  Go 

Golang基本同步原语sync.Poolsync.Pool 是 Go 标准库 sync 包中的一个结构,用于管理一组可重用的对象池。通过复用对象,减少内存分配和垃圾回收的开销,从而提升程序的性能和效率。以下是对 sync.Pool 的详细讲解,包括其使用案例和使用场景。sync.Pool 的大小是

Golang 基本同步原语sync.Once

笔记  Go 

Golang 基本同步原语sync.Onecesync.Once 是 Go 语言中一个简单但强大的同步原语,用于确保某个操作在并发场景下只执行一次。它常用于延迟初始化、单例模式、全局配置加载等场景基本用法sync.Once 的核心方法是 Do(f func()),传入的函数 f 只会执行一次,即使多