![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
golang学习专题
阿鹏哥哥01
这个作者很懒,什么都没留下…
展开
-
大话设计模式
大话设计模式。开发中使用设计模式原创 2022-06-14 09:53:12 · 244 阅读 · 0 评论 -
配置GOPRIVATE引用私有仓库
golang 引用私有仓库转载 2022-06-13 11:17:52 · 8275 阅读 · 0 评论 -
redis分布式锁与redsync库源码分析
redsync是redis官方推荐的go版本分布式锁实现,标准的官方redlock算法实现,阅读了下源码并顺便复习一下redis分布式锁原理。一. redlock算法单点场景首先来看单redis实例的场景,这是集群模式的基础。这种场景下实现分布式锁比较简单加锁各节点通过set key value nx ex即可,如果set执行成功,则表明加锁成功,否则失败,其中value为随机串,用来判断是否是当前应用实例加的锁;nx用来判断该key是否存在以实现排他特性,ex用来指定锁的过期时间,避免死锁转载 2021-07-07 17:54:54 · 363 阅读 · 0 评论 -
golang 字符串转成byte数组,会发生内存拷贝吗
问题字符串转成byte数组,会发生内存拷贝吗?怎么答字符串转成切片,会产生拷贝。严格来说,只要是发生类型强转都会发生内存拷贝。那么问题来了。频繁的内存拷贝操作听起来对性能不大友好。有没有什么办法可以在字符串转成切片的时候不用发生拷贝呢?代码实现package mainimport ( "fmt" "reflect" "unsafe")func main() { a :="aaa" ssh := *(*reflect.StringHeader)(unsafe.Poi原创 2021-07-05 11:53:58 · 972 阅读 · 1 评论 -
golang内存逃逸和内存分配
先说说golang中内存分配方式:主要是堆(heap)和栈(stack)分配两种。栈分配廉价,堆分配昂贵。栈分配:对于栈的操作只有入栈和出栈两种指令,属于静态资源分配。堆分配:堆中分配的空间,在结束使用之后需要垃圾回收器进行闲置空间回收,属于动态资源分配。使用栈分配:函数的内部中不对外开放的局部变量,只作用于函数中。使用堆分配:1.函数的内部中对外开放的局部变量。2.变量所需内存超出栈所提供最大容量。看下面这段代码:package mainimport( "fmt"..转载 2021-07-05 09:45:42 · 338 阅读 · 0 评论