文章分类 -  GoLang

摘要:New 通过reflect.Type创建对应的对象,比如: func new(typ reflect.Type) (v reflect.Value) { if typ.Kind() == reflect.Ptr { v = reflect.New(typ.Elem()) } else { v = r 阅读全文
posted @ 2022-09-12 23:32 moon_orange 阅读(56) 评论(0) 推荐(0)
摘要:结论 在使用golang-jwt库来生成token时,常用如下代码: func GenAccessToken(userid int64) (aToken string, err error) { // 创建一个自定义的声明 c := MyClaims{ userid, jwt.StandardCla 阅读全文
posted @ 2022-02-03 16:27 moon_orange 阅读(1033) 评论(0) 推荐(0)
摘要:原始GC算法——标记删除 为去除STW所做的努力——三色标记 三色标记的优化——混合三色标记 阅读全文
posted @ 2022-01-19 21:32 moon_orange 阅读(42) 评论(0) 推荐(0)
摘要:语法 for-range golang中不能在for-range中将迭代器赋值。 内存泄漏 Slice slice的截取是会造成短暂性内存泄漏的,比如a := b[:1],两者会引用相同的底层数组,只有当a或者b扩容时,才会引发底层数组的重新分配,a和b才会引用不同的内存块。因此需要中间值进行替代: 阅读全文
posted @ 2022-01-05 01:34 moon_orange 阅读(102) 评论(0) 推荐(0)
摘要:对于通知一个goroutine结束它的工作,遵循goroutine之间通过管道传递消息的设计理念,我们可以使用channel传递一个信号,当goroutine检测到信号,结束工作即可: var wg sync.WaitGroup func work(exit <-chan struct{}) { L 阅读全文
posted @ 2021-11-26 21:43 moon_orange 阅读(163) 评论(0) 推荐(0)
摘要:golang中单例模式体现在很多地方, 比如init函数,当包被导入的时候只会被执行一次。实现单例模式有很多种方式,这里给出几种简单的实现: 互斥锁 对全局共享变量加锁,如果该变量不是nil,那么证明已经被创建了实例,直接返回它的值就好。 type singleton struct {} var ( 阅读全文
posted @ 2021-11-20 20:56 moon_orange 阅读(550) 评论(0) 推荐(0)
摘要:slice扩容代码在go/src/runtime/slice.go中,当前使用的使用的golang源码是GitHub中的master分支代码。时间是2021-10-11。 先抛出一个问题,你觉得应该是打印多少呢? var b = []int64{1, 1} b = append(b, 1, 1, 1 阅读全文
posted @ 2021-11-20 20:37 moon_orange 阅读(552) 评论(0) 推荐(0)
摘要:对齐规则 1、对于结构体成员变量: 某个成员的偏移量 = k * min(编译器对齐系数, 该成员类型长度) k >= 1 2、结构体完整大小也必须满足: min(k * max(编译器对齐系数, 最大成员类型长度)) k >= 1 编译器默认对齐长度和计算机一次处理的的位数有关,32位处理器对齐系 阅读全文
posted @ 2021-11-20 20:36 moon_orange 阅读(165) 评论(0) 推荐(0)
摘要:逃逸分析 我们知道往往声明一个变量或者申请内存空间时,是需要区分内存区域的,有的可以申请栈空间,有的申请堆空间。go语言中决定变量是分配到栈还是堆,取决于go编译器对程序的逃逸分析。 在程序编译时,如果发现一个变量需要后续一直使用,往往会将其分配到堆内存。看例子: func test02() *in 阅读全文
posted @ 2021-11-20 20:33 moon_orange 阅读(57) 评论(0) 推荐(0)
摘要:我们都知道go语言起一个线程是很简单的,但这其中也有很多问题(坑)。我在刚了解到并发时,常会思考以这样的方式达到两个线程之间的同步: var a string var done bool func setUp() { a = "hello world" done = true } func main 阅读全文
posted @ 2021-11-20 20:25 moon_orange 阅读(612) 评论(0) 推荐(0)