随笔分类 -  Golang学习

写出的每一段代码都要优美、简练、高效
摘要:1.远端git新建仓库 2.初始化本地仓库 git clone https://github.com/XXX/goutils.git go mod init github.com/XXX/goutils 3.编写代码 新建包,例子初始化一个简单处理hash的函数 package hash impor 阅读全文
posted @ 2021-08-05 18:01 LeeJuly 阅读(300) 评论(0) 推荐(0) 编辑
摘要:G :goroutine协程 P :processor处理器,线程的执行上下文,P的数量决定了Golang的执行并发度,启动时环境变量$GOMAXPROCS或者是由runtime的方法GOMAXPROCS()决定 M:thread线程,可以认为是真正的计算资源,可以认为它是系统线程,当M绑定P时就可 阅读全文
posted @ 2021-03-22 17:08 LeeJuly 阅读(214) 评论(0) 推荐(0) 编辑
摘要:什么是内存逃逸? 本该在栈上分配空间的变量因为一些特别的原因,导致该变量最终在堆上分配空间,导致变量逃逸 内存逃逸的一些场景分析 1.闭包导致的内存逃逸: 在函数运行栈空间上分配的内存,由于闭包的关系,变量在函数的作用域之外使用 func closure() func() int { var a i 阅读全文
posted @ 2021-01-07 16:36 LeeJuly 阅读(606) 评论(0) 推荐(0) 编辑
摘要:https://blog.csdn.net/moxiaomomo/article/details/78529737 阅读全文
posted @ 2021-01-04 21:51 LeeJuly 阅读(841) 评论(0) 推荐(0) 编辑
摘要:垃圾回收(GC)是在后台运行一个守护线程,它的作用是在监控各个对象的状态,识别并且丢弃不再使用的对象来释放和重用资源。Golang底层采用标记-清除算法,简单描述就是先标记,再清除(清除涉及stw) Golang采用三色标记法是对标记阶段的改进 简单的标记-清除会有stw,三色标记通过将扫描的对象分 阅读全文
posted @ 2021-01-04 21:50 LeeJuly 阅读(473) 评论(0) 推荐(0) 编辑
摘要:Question: 1. sync.Map实现原理及适用的场景? Preface: 在Go 1.6之前, 内置的map类型是部分goroutine安全的,并发的读没有问题,并发的写可能有问题。自go 1.6之后, 并发地读写map会报错 func main() { a := map[int]int{ 阅读全文
posted @ 2020-12-22 11:40 LeeJuly 阅读(359) 评论(0) 推荐(0) 编辑
摘要:Array类型 数组在使用前必须声明长度,在golang中,数组属于值类型,在函数传递中,实际传递的是数组的拷贝并不是数组指针拷贝 Slice类型 是一种引用类型,它是不定长的,指向底层数组 Slice底层结构 type SliceHeader struct { Data uintptr #指向底层 阅读全文
posted @ 2020-12-22 11:33 LeeJuly 阅读(127) 评论(0) 推荐(0) 编辑
摘要:Golang中,通过哈希查找实现hash,通过链表解决hash冲突 map的内存模型 type hmap struct { count int // map 中的元素个数,必须放在 struct 的第一个位置,因为 内置的 len 函数会从这里读取 flags uint8 B uint8 // lo 阅读全文
posted @ 2020-11-30 21:10 LeeJuly 阅读(1407) 评论(0) 推荐(0) 编辑
摘要:1.闭包导致的内存泄漏,在内部函数中使用外部函数的值,导致该变量由栈空间逃逸到堆空间 2.子字符串导致: var s0 string// package-level变量 func f(s string){ s0 = s[:50] // s0与s共享相同的底层内存块。 // 虽然s现在不是活动的,但是 阅读全文
posted @ 2020-10-28 17:49 LeeJuly 阅读(786) 评论(0) 推荐(0) 编辑
摘要:有很多种方法来声明 errors: errors.New 声明简单的静态字符串错误信息 fmt.Errorf 声明格式化的字符串错误信息 为自定义类型实现 Error() 方法 通过 "pkg/errors".Wrap 包装错误类型 1.如何自定义错误类型? 客户需要检测并处理此错误吗?如果是,那应 阅读全文
posted @ 2020-10-28 14:25 LeeJuly 阅读(733) 评论(0) 推荐(0) 编辑
摘要:1.time.Time和time.Duration time.Time可以理解为时间单位,其中包含了一些对时间的处理方法,time.Now()返回就是time.Time类型 在处理时间的瞬时时使用time.Time,在比较、添加或减去时间时使用time.Time中的方法。 Bad Good func 阅读全文
posted @ 2020-10-28 12:09 LeeJuly 阅读(121) 评论(0) 推荐(0) 编辑
摘要:var定义,在不赋值会有默认空值 不同类型的空值 int空值是0 string空值是""而不是null或者nil Slice空值是长度为0的Slice而不是nil, map空值是nil, error空值是nil, struct空值是一个“所有成员都是空值”的空Struct而不是nil var 定义切 阅读全文
posted @ 2020-10-28 11:32 LeeJuly 阅读(131) 评论(0) 推荐(0) 编辑
摘要:Golang中接口的作用: 1. 可以作为函数和方法的参数或者返回值的使用,可以通过类型断言和switch方法 2. 多态的使用,在程序设计中,抽象出某些对象共同拥有的方法,多种类型实现同一接口,通过接口变量指向具体对象操作这些方法。 Golang接口的使用 interface 是方法或行为声明的集 阅读全文
posted @ 2020-10-27 17:51 LeeJuly 阅读(616) 评论(2) 推荐(0) 编辑
摘要:在不使用omitempty时,使用json包来对json数据进行处理 package main import ( "encoding/json" "fmt" ) type Stu struct { Name string `json:"name"` Age int Class *Class `jso 阅读全文
posted @ 2020-09-18 01:34 LeeJuly 阅读(2406) 评论(0) 推荐(0) 编辑
摘要:1.Go语言string最底层是byte数组 具体由一个结构体包装而成,其中包括了指向字节数组的指针和字节数组的长度 type StringHeader struct { Data uintptr Len int } 底层如何将string转换为[]byte func str2bytes(s str 阅读全文
posted @ 2020-09-18 01:31 LeeJuly 阅读(370) 评论(0) 推荐(0) 编辑
摘要:回调函数: 将函数B作为另一个函数A的参数,可以使得函数A的通用性更强,可以随意定义函数B,只要满足规则,函数A都可以去处理,这比较适合于回调函数。 sort包中的SliceStable()就是一个比较典型的用回调函数的应用 定制一个对数字按字符大小的排序: package main import 阅读全文
posted @ 2020-09-16 16:39 LeeJuly 阅读(196) 评论(0) 推荐(0) 编辑
摘要:package main import ( "fmt" "unsafe" ) func main() { empStruct() } //空结构体的实例和作用 func empStruct(){ //空结构体的特点:1、不占用内存;2、地址不变 var s struct{} var s1 struc 阅读全文
posted @ 2020-08-26 14:05 LeeJuly 阅读(276) 评论(0) 推荐(0) 编辑
摘要:1.runtime error: invalid memory address or nil pointer dereference 这个错误源于对空指针取值,用到指针的地方要判断是否为nil 2.import cycle not allowed 循环导入包 3.今天导入一个之前导入正常的项目一直报 阅读全文
posted @ 2020-08-11 16:41 LeeJuly 阅读(226) 评论(0) 推荐(0) 编辑
摘要:context(上下文)作用 golang中的context主要为了处理单个请求域与多个goroutine之间的数据共享,取消信号,截止时间等问题,在一个网络请求中,创建多个goroutine,就可以通过context去追踪所有的goroutine, context结构 type Context i 阅读全文
posted @ 2020-08-10 21:39 LeeJuly 阅读(314) 评论(0) 推荐(0) 编辑
摘要:占位符的具体使用 golang 图片处理,剪切,base64数据转换,文件存储 简单易错点 阅读全文
posted @ 2020-08-06 20:00 LeeJuly 阅读(157) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示