当前分类: Golang

在go协程中共享资源需要加锁处理

在go协程中共享资源需要加锁处理

2023-04-14 107 144
在go协程中共享资源需要加锁处理packagemain import( "fmt" "sync" ) //创建一个互斥锁 varmutex=&sync.Mutex{} //定义一个共享资源 varsharedResource=0 //定义一个等待组 varwg=sync.WaitGroup{} //定义一
go 的 Pool池对象 sync.Pool 创建mysql连接池

go 的 Pool池对象 sync.Pool 创建mysql连接池

2023-04-13 51 68
//在这个例子中,我们创建了一个sync.Pool,其中包含一个New函数,该函数创建一个MySQL连接 //在someFunction中,我们使用dbPool.Get()从池中获取一个MySQL连接 //然后我们使用连接进行一些操作,最后使用dbPool.Put()将连接放回池中 //我们可以通过设置dbPool的大小来初始化连接池中的连接数量 //例如,如果我们想要初始化10个连接,我
go 的 Pool池对象-sync.Pool

go 的 Pool池对象-sync.Pool

2023-04-10 100 135
packagemain import( "fmt" "strconv" "sync" ) //在go中,原生的池化数据结构为sync.Pool,有三个方法: //New字段为一个方法,定义为func()interface{},在新建Pool时,定义好New字段,以供后续从池中获取对象时,如果当前池中无对象,则使
go WaitGroup 的使用方法

go WaitGroup 的使用方法

2023-03-23 106 143
在 Go 中,sync 包下的 WaitGroup 能有助于我们控制协程之间的同步。当需要等待一组协程都执行完各自任务后,才能继续后续逻辑。这种场景,就非常适合使用它。WaitGroup 提供三个 API。Add(delta int) 函数提供了 WaitGroup 的任务计数,delta 的值可以为正也可以为负,通常在添加任务时使用。Done() 函数其实就是 Add(-1),在任务完成时调用。
Go 中 实现基于 channel 的简单 生产者 消费者模型

Go 中 实现基于 channel 的简单 生产者 消费者模型

2023-03-23 97 130
Go 中 实现基于 channel 的简单 生产者 消费者模型packagemain import( "fmt" "strconv" "sync" ) //生产者 funcproducer(chchan<-string,wg*sync.WaitGroup){ deferwg.Done() fo
go 结构体自实现构造函数

go 结构体自实现构造函数

2023-02-21 137 184
Go没有自带的构造函数,采用自实现方式1结构体不复杂,可以返回结构体类型,值拷贝性能开销小funcNewPerson(namestring,ageint8)Person{ returnPerson{ name:name, age:age, } }方式2结构体复杂,得返回结构体指针类型,避免值拷贝产生的性能开销funcNewPerson(namestring,ageint8)*Person
go 结构体和结构体指针

go 结构体和结构体指针

2023-02-21 161 217
结构体实例化//结构体实例化 //写法1 varaAnimal a.Name="小狗" a.Age=18 //写法2 a2:=Animal{ Name:"dog", Age:18, } fmt.Println(fmt.Sprintf("类型:%T-值:%v占用内存:%v",a,a,unsafe.Sizeof(a))
go语言生成ssl网站证书

go语言生成ssl网站证书

2023-02-14 301 406
在go的x509包下有go定义的证书的结构packagemain import( "crypto/ecdsa" "crypto/elliptic" "crypto/rand" "crypto/x509" "crypto/x509/pkix" "encoding
go 协程管理及传参处理

go 协程管理及传参处理

2022-10-18 805 1086
Go语言中的goroutine虽然相对于系统线程来说比较轻量级(初始栈大小仅2KB),(并且支持动态扩容),而正常采用java,c++等语言启用的线程一般都是内核态的占用的内存资源一般在4m左右,而假设我们的服务器CPU内存为4G,那么很明显才用的内核态线程的并发总数量也就是1024个,相反查看一下Go语言的协程则可以达到4*1024*1024/2=200w.这么一看就明白了为什么Go语言天生支持
go 封装 try 函数 go错误处理

go 封装 try 函数 go错误处理

2022-10-12 267 360
go 封装 try 函数 go错误处理