Go语言中非接口的任意类型T都能调用*T的方法吗?反过来呢?

笔记  Go 

package mainimport "fmt"type Human struct {}func (h *Human) sayHello() {fmt.Println("sayHello")}func (h Human) sayHello2() {fmt.Pr

Go语言init函数执行时机

笔记  Go 

Go语言init函数执行时机在Go语言中,init函数是一种特殊的函数,用于在包被加载时执行初始化操作。以下是关于init函数执行时机的详细说明:1. 包加载时执行init函数会在包被首次导入时执行。这意味着,当一个包被导入到另一个包中时,该包的init函数会被调用。需要注意的是,如果一个包被多次导

golang defer

笔记  Go 

在Go语言中,defer语句会在当前函数返回之前执行被延迟的函数或方法。defer语句在声明时会捕获当前变量的值或引用,具体行为取决于变量的类型:值类型变量(如整数、浮点数、字符串等):defer会在声明时复制变量的当前值。之后对变量的修改不会影响defer捕获的值。引用类型变量(如slice、ma

ubuntu安装helm

笔记  Go 

curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/nullsudo apt-get install apt-transport-ht

minikube创建三个node并传入http代理环境变量,防止pullbackoff

笔记  Go 

#!/bin/zshminikube start --docker-env HTTP_PROXY=http://192.168.3.28:2080 \ --docker-env HTTPS_PROXY=http://192.168.3.28:2080 \

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

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

悲观锁和乐观锁

笔记  Go 

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