2023年2月16日
很多时候我们需要用到定时器,比如定期执行一段逻辑。Go语言中用到最多无外乎几种: time.Sleep() time.NewTimer() time.After() time.NewTicker() 这三种底层逻辑都是相通的。具体看网上的介绍。 Sleep和NewTimer 这两个方法类似,你可能会发现NewTimer的实现是放 ………
阅读全文
2023年1月3日
参考: https://www.cnblogs.com/erda/p/16427822.html https://www.dandelioncloud.cn/article/details/1534497725911691266 https://www.cnblogs.com/erda/p/16427822.html (完)……
阅读全文
2022年8月23日
推荐博客文章: 地址: https://www.jianshu.com/p/015aca3e11ae https://www.jianshu.com/p/340eb943be2e https://www.jianshu.com/p/50c9fbf4046c https://www.jianshu.com/p/ee0d2e7bef54 ………
阅读全文
2022年8月8日
Go中的字符串 Go中的字符串是 UTF-8 字符的一个序列(当字符为 ASCII 码时则占用 1 个字节,其它字符根据需要占用 2-4 个字节)。由于该编码对占用字节长度的不定性,Go 中的字符串里面的字符也可能根据需要占用 1 至 4 个字节,这与其它语言如 C++、Java 或者 Python 不同(Java 始终使用 2 个字 ………
阅读全文
2022年7月1日
go1.20 变化 Free Member 为了提高Go的广泛适用性,给少数极端场景预留更多可发挥的空间。新版Go可以由程序员自己管理内存了。谁申请,谁释放。 当然,目前还没在正式发布版本中支持,需要特殊参数启动选项。参考代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ………
阅读全文
2022年3月15日
参考说明: https://blog.csdn.net/qq_38038920/article/details/115229039……
阅读全文
2021年12月24日
标准库sync包中,内置了一些实用的数据结构,而且保证线程安全。比如:Mutex、RWMutex、WaitGroup、Once 、Cond、Map、Pool 。 参考阅读: https://zhuanlan.zhihu.com/p/138214620 sync.Pool Go自带了很多实用的标准库,其中sync.Pool就是用于提高内存使 ………
阅读全文
2021年11月3日
现代CPU一般具有三级缓存,目的是追求性价比。CPU在存取内存的时候存在缓存命中的问题,因此一般内存占用少的程序有更高的缓存命中率,一般性能会更好,但是内存占用的大小究竟对程序性能有多大影响呢?今天我们用WEB框架中常见数据结构的设计来分析一下性能。 Web框架中间件设计 在Web框架中常见的路由数据结构都是数,每个叶子节点代表一条路由, ………
阅读全文
2021年10月12日
Golang中GMP的介绍参考:/2020/12/27221039-008-gmp-model.html 操作系统会在物理处理器上调度线程来运行,而Go语言的运行时会在逻辑处理器P上调度goroutine来运行。每个逻辑处理器都分别绑定到单个操作系统线程M。在1.5版本以后,Go语言的运行时默认会为每个可用的物理处理器分配一个逻辑处理器。 ………
阅读全文
2021年8月31日
交叉编译 交叉编译主要是两个编译环境参数 $GOOS 和 $GOARCH 的设定。$GOOS代表编译的目标系统,$GOARCH代表编译的处理器体系结构。 $GOOS可选值如下: 1 2 3 4 5 6 7 8 9 darwin dragonfly freebsd linux netbsd openbsd plan9 solaris ………
阅读全文