go WaitGroup 的使用方法
2023-03-23
106
143
在 Go 中,sync 包下的 WaitGroup 能有助于我们控制协程之间的同步。当需要等待一组协程都执行完各自任务后,才能继续后续逻辑。这种场景,就非常适合使用它。WaitGroup 提供三个 API。Add(delta int) 函数提供了 WaitGroup 的任务计数,delta 的值可以为正也可以为负,通常在添加任务时使用。Done() 函数其实就是 Add(-1),在任务完成时调用。
Go 中 实现基于 channel 的简单 生产者 消费者模型
2023-03-23
97
130
Go 中 实现基于 channel 的简单 生产者 消费者模型packagemain
import(
"fmt"
"strconv"
"sync"
)
//生产者
funcproducer(chchan<-string,wg*sync.WaitGroup){
deferwg.Done()
fo
go 协程管理及传参处理
2022-10-18
805
1086
Go语言中的goroutine虽然相对于系统线程来说比较轻量级(初始栈大小仅2KB),(并且支持动态扩容),而正常采用java,c++等语言启用的线程一般都是内核态的占用的内存资源一般在4m左右,而假设我们的服务器CPU内存为4G,那么很明显才用的内核态线程的并发总数量也就是1024个,相反查看一下Go语言的协程则可以达到4*1024*1024/2=200w.这么一看就明白了为什么Go语言天生支持
Go生成的动画GIF在Windows中打不开的问题
2022-07-21
543
733
Go语言标准库中图像包的使用,并使用这些图像包来创建一系列的位图图像,然后将位图序列编码为 GIF 动画。//Copyright©2016AlanA.A.Donovan&BrianW.Kernighan.
//License:https://creativecommons.org/licenses/by-nc-sa/4.0/
//Runwith"web"comm
go sync 包 WaitGroup 的使用
2022-06-09
429
579
sync包提供了基本的同步基元,如互斥锁。除了Once和WaitGroup类型,大部分都是适用于低水平程序线程,高水平的同步使用channel通信更好一些。packagemain
import(
"fmt"
"sync"
)
funcmain(){
varwgsync.WaitGroup
items:=[]int{1,2,3,4
go 定时任务timer和定时间隔任务ticker的使用
2022-06-04
610
823
go 定时任务timer和定时间隔任务ticker的使用Timer类型代表单次时间事件。当Timer到期时,当时的时间会被发送给CTicker类型代表多次时间事件。funcmain(){
log.Println(time.Now())
t2:=time.NewTimer(time.Millisecond*3000)
<-t2.C
log.Println(time.Now())
Go 切片面试真题八连问
2022-05-25
526
710
原文:https://mp.weixin.qq.com/s/Qo_DNAAcamXXwU9ihrY6jA前言哈喽,大家好,我是asong。最近没事在看八股文,总结了几道常考的切片八股文,以问答的方式总结出来,希望对正在面试的你们有用~本文题目不全,关于切片的面试真题还有哪些?欢迎评论区补充~01. 数组和切片有什么区别?Go语言中数组是固定长度的,不能动态扩容,在编译期就会确定大小,声明方式如下: